Update lock screen messages to match UX expectations.

Fixes: 248048347
Test: atest KeyguardIndicationControllerTest
Test: 1. manually, enter lockdown mode, see "Unlock for all features and data" message.
      2. Lock out FP, see swipe to open always on lockscreen.
Change-Id: I6648b7d770485a7bd8c9d34d90863c530c7a92f7
This commit is contained in:
Chandru
2022-11-15 14:05:17 +00:00
parent 4c8787ac94
commit 278272cd3b
3 changed files with 57 additions and 45 deletions

View File

@@ -375,7 +375,7 @@ public class KeyguardIndicationRotateTextViewController extends
public static final int INDICATION_TYPE_ALIGNMENT = 4;
public static final int INDICATION_TYPE_TRANSIENT = 5;
public static final int INDICATION_TYPE_TRUST = 6;
public static final int INDICATION_TYPE_RESTING = 7;
public static final int INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE = 7;
public static final int INDICATION_TYPE_USER_LOCKED = 8;
public static final int INDICATION_TYPE_REVERSE_CHARGING = 10;
public static final int INDICATION_TYPE_BIOMETRIC_MESSAGE = 11;
@@ -390,7 +390,7 @@ public class KeyguardIndicationRotateTextViewController extends
INDICATION_TYPE_ALIGNMENT,
INDICATION_TYPE_TRANSIENT,
INDICATION_TYPE_TRUST,
INDICATION_TYPE_RESTING,
INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE,
INDICATION_TYPE_USER_LOCKED,
INDICATION_TYPE_REVERSE_CHARGING,
INDICATION_TYPE_BIOMETRIC_MESSAGE,

View File

@@ -36,7 +36,7 @@ import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewCont
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_DISCLOSURE;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_LOGOUT;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_OWNER_INFO;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_RESTING;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_TRUST;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_USER_LOCKED;
import static com.android.systemui.keyguard.ScreenLifecycle.SCREEN_ON;
@@ -161,7 +161,7 @@ public class KeyguardIndicationController {
private BroadcastReceiver mBroadcastReceiver;
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private String mRestingIndication;
private String mPersistentUnlockMessage;
private String mAlignmentIndication;
private CharSequence mTrustGrantedIndication;
private CharSequence mTransientIndication;
@@ -379,7 +379,7 @@ public class KeyguardIndicationController {
updateLockScreenTrustMsg(userId, getTrustGrantedIndication(), getTrustManagedIndication());
updateLockScreenAlignmentMsg();
updateLockScreenLogoutView();
updateLockScreenRestingMsg();
updateLockScreenPersistentUnlockMsg();
}
private void updateOrganizedOwnedDevice() {
@@ -485,7 +485,8 @@ public class KeyguardIndicationController {
}
private void updateLockScreenUserLockedMsg(int userId) {
if (!mKeyguardUpdateMonitor.isUserUnlocked(userId)) {
if (!mKeyguardUpdateMonitor.isUserUnlocked(userId)
|| mKeyguardUpdateMonitor.isEncryptedOrLockdown(userId)) {
mRotateTextViewController.updateIndication(
INDICATION_TYPE_USER_LOCKED,
new KeyguardIndication.Builder()
@@ -590,18 +591,17 @@ public class KeyguardIndicationController {
}
}
private void updateLockScreenRestingMsg() {
if (!TextUtils.isEmpty(mRestingIndication)
&& !mRotateTextViewController.hasIndications()) {
private void updateLockScreenPersistentUnlockMsg() {
if (!TextUtils.isEmpty(mPersistentUnlockMessage)) {
mRotateTextViewController.updateIndication(
INDICATION_TYPE_RESTING,
INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE,
new KeyguardIndication.Builder()
.setMessage(mRestingIndication)
.setMessage(mPersistentUnlockMessage)
.setTextColor(mInitialTextColorState)
.build(),
false);
true);
} else {
mRotateTextViewController.hideIndication(INDICATION_TYPE_RESTING);
mRotateTextViewController.hideIndication(INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE);
}
}
@@ -684,11 +684,8 @@ public class KeyguardIndicationController {
}
}
/**
* Sets the indication that is shown if nothing else is showing.
*/
public void setRestingIndication(String restingIndication) {
mRestingIndication = restingIndication;
private void setPersistentUnlockMessage(String persistentUnlockMessage) {
mPersistentUnlockMessage = persistentUnlockMessage;
updateDeviceEntryIndication(false);
}
@@ -1122,6 +1119,9 @@ public class KeyguardIndicationController {
public void onLockedOutStateChanged(BiometricSourceType biometricSourceType) {
if (biometricSourceType == FACE && !mKeyguardUpdateMonitor.isFaceLockedOut()) {
mFaceLockedOutThisAuthSession = false;
} else if (biometricSourceType == FINGERPRINT) {
setPersistentUnlockMessage(mKeyguardUpdateMonitor.isFingerprintLockedOut()
? mContext.getString(R.string.keyguard_unlock) : "");
}
}

View File

@@ -32,10 +32,9 @@ import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewCont
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_DISCLOSURE;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_LOGOUT;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_OWNER_INFO;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_RESTING;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_TRANSIENT;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_TRUST;
import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_USER_LOCKED;
import static com.android.systemui.keyguard.ScreenLifecycle.SCREEN_OFF;
import static com.android.systemui.keyguard.ScreenLifecycle.SCREEN_ON;
import static com.android.systemui.keyguard.ScreenLifecycle.SCREEN_TURNING_ON;
@@ -830,31 +829,6 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
mContext.getString(R.string.keyguard_suggest_fingerprint));
}
@Test
public void updateMonitor_listenerUpdatesIndication() {
createController();
String restingIndication = "Resting indication";
reset(mKeyguardUpdateMonitor);
mController.setVisible(true);
verifyIndicationMessage(INDICATION_TYPE_USER_LOCKED,
mContext.getString(com.android.internal.R.string.lockscreen_storage_locked));
reset(mRotateTextViewController);
when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(true);
when(mKeyguardUpdateMonitor.isUserUnlocked(anyInt())).thenReturn(true);
mController.setRestingIndication(restingIndication);
verifyHideIndication(INDICATION_TYPE_USER_LOCKED);
verifyIndicationMessage(INDICATION_TYPE_RESTING, restingIndication);
reset(mRotateTextViewController);
reset(mKeyguardUpdateMonitor);
when(mKeyguardUpdateMonitor.isUserUnlocked(anyInt())).thenReturn(true);
when(mKeyguardUpdateMonitor.getUserHasTrust(anyInt())).thenReturn(false);
mKeyguardStateControllerCallback.onUnlockedChanged();
verifyIndicationMessage(INDICATION_TYPE_RESTING, restingIndication);
}
@Test
public void onRefreshBatteryInfo_computesChargingTime() throws RemoteException {
createController();
@@ -1490,6 +1464,44 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
verifyIndicationShown(INDICATION_TYPE_BIOMETRIC_MESSAGE, "second lockout");
}
@Test
public void onFpLockoutStateChanged_whenFpIsLockedOut_showsPersistentMessage() {
createController();
mController.setVisible(true);
when(mKeyguardUpdateMonitor.isFingerprintLockedOut()).thenReturn(true);
mKeyguardUpdateMonitorCallback.onLockedOutStateChanged(BiometricSourceType.FINGERPRINT);
verifyIndicationShown(INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE,
mContext.getString(R.string.keyguard_unlock));
}
@Test
public void onFpLockoutStateChanged_whenFpIsNotLockedOut_showsPersistentMessage() {
createController();
mController.setVisible(true);
clearInvocations(mRotateTextViewController);
when(mKeyguardUpdateMonitor.isFingerprintLockedOut()).thenReturn(false);
mKeyguardUpdateMonitorCallback.onLockedOutStateChanged(BiometricSourceType.FINGERPRINT);
verifyHideIndication(INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE);
}
@Test
public void onVisibilityChange_showsPersistentMessage_ifFpIsLockedOut() {
createController();
mController.setVisible(false);
when(mKeyguardUpdateMonitor.isFingerprintLockedOut()).thenReturn(true);
mKeyguardUpdateMonitorCallback.onLockedOutStateChanged(BiometricSourceType.FINGERPRINT);
clearInvocations(mRotateTextViewController);
mController.setVisible(true);
verifyIndicationShown(INDICATION_TYPE_PERSISTENT_UNLOCK_MESSAGE,
mContext.getString(R.string.keyguard_unlock));
}
@Test
public void onBiometricError_whenFaceIsLocked_onMultipleLockOutErrors_showUnavailableMessage() {
createController();