Don't show any trust granted message if passed an empty string

If the trustGranted call has flag DISPLAY_MESSAGE and
message is intentionally set to an empty string "", then
don't show ANY trust granted message. If the message is null
or DISPLAY_MESSAGE is not set when trust is granted,
then the device will show its default trust granted string.

Test: atest KeyguardIndicationControllerTest
Test: manually grantTrust with the FLAG_GRANT_TRUST_DISPLAY_MESSAGE
and an empty string. See that device has trust granted and doesn't
show any keyguard indication message.
Fixes: 243075236
Change-Id: Ic31a1758e9baa27b236f09ba8e656d15dd04e7f0
This commit is contained in:
Beverly
2022-09-01 18:23:21 +00:00
committed by Beverly Tai
parent 939a2a954d
commit 5dccdb24cf
5 changed files with 42 additions and 8 deletions

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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();
}

View File

@@ -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

View File

@@ -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());
}
}