diff --git a/core/java/android/service/trust/TrustAgentService.java b/core/java/android/service/trust/TrustAgentService.java index 559313a30dfaa..41345e0154eef 100644 --- a/core/java/android/service/trust/TrustAgentService.java +++ b/core/java/android/service/trust/TrustAgentService.java @@ -141,7 +141,9 @@ public class TrustAgentService extends Service { * * Without this flag, the message passed to {@code grantTrust} is only used for debugging * purposes. With the flag, it may be displayed to the user as the reason why the device is - * unlocked. + * unlocked. If this flag isn't set OR the message is set to null, the device will display + * its own default message for trust granted. If the TrustAgent intentionally doesn't want to + * show any message, then it can set this flag AND set the message to an empty string. */ public static final int FLAG_GRANT_TRUST_DISPLAY_MESSAGE = 1 << 3; diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 167d8af5ce795..01375cb489bb9 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -440,8 +440,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab final boolean userHasTrust = getUserHasTrust(userId); if (userHasTrust && trustGrantedMessages != null) { for (String msg : trustGrantedMessages) { - if (!TextUtils.isEmpty(msg)) { - message = msg; + message = msg; + if (!TextUtils.isEmpty(message)) { break; } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index 47dc5c2a5513e..2bf1800311250 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -687,11 +687,11 @@ public class KeyguardIndicationController { /** * Returns the indication text indicating that trust has been granted. * - * @return {@code null} or an empty string if a trust indication text should not be shown. + * @return an empty string if a trust indication text should not be shown. */ @VisibleForTesting String getTrustGrantedIndication() { - return TextUtils.isEmpty(mTrustGrantedIndication) + return mTrustGrantedIndication == null ? mContext.getString(R.string.keyguard_indication_trust_unlocked) : mTrustGrantedIndication.toString(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java index 798f47d2d6cbd..433c3b2cf06c9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java @@ -994,14 +994,14 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { } @Test - public void onTrustGrantedMessageDoesShowsOnTrustGranted() { + public void onTrustGrantedMessageShowsOnTrustGranted() { createController(); mController.setVisible(true); // GIVEN trust is granted when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(true); - // WHEN the showTrustGranted message is called + // WHEN the showTrustGranted method is called final String trustGrantedMsg = "testing trust granted message"; mController.getKeyguardCallback().showTrustGrantedMessage(trustGrantedMsg); @@ -1011,6 +1011,38 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { trustGrantedMsg); } + @Test + public void onTrustGrantedMessage_nullMessage_showsDefaultMessage() { + createController(); + mController.setVisible(true); + + // GIVEN trust is granted + when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(true); + + // WHEN the showTrustGranted method is called with a null message + mController.getKeyguardCallback().showTrustGrantedMessage(null); + + // THEN verify the default trust granted message shows + verifyIndicationMessage( + INDICATION_TYPE_TRUST, + getContext().getString(R.string.keyguard_indication_trust_unlocked)); + } + + @Test + public void onTrustGrantedMessage_emptyString_showsNoMessage() { + createController(); + mController.setVisible(true); + + // GIVEN trust is granted + when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(true); + + // WHEN the showTrustGranted method is called with an EMPTY string + mController.getKeyguardCallback().showTrustGrantedMessage(""); + + // THEN verify NO trust message is shown + verifyNoMessage(INDICATION_TYPE_TRUST); + } + @Test public void coEx_faceSuccess_showsPressToOpen() { // GIVEN bouncer isn't showing, can skip bouncer, udfps is supported, no a11y enabled diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index 80ce70de2138c..3707c8e42e048 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -1211,7 +1211,7 @@ public class TrustManagerService extends SystemService { if (info.userId == userId && info.agent.isTrusted() && info.agent.shouldDisplayTrustGrantedMessage() - && !TextUtils.isEmpty(info.agent.getMessage())) { + && info.agent.getMessage() != null) { trustGrantedMessages.add(info.agent.getMessage().toString()); } }