Merge "Show the face lockout follow-up message after the screen fully turns on." into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-11-15 22:35:53 +00:00
committed by Android (Google) Code Review
2 changed files with 49 additions and 4 deletions

View File

@@ -198,7 +198,9 @@ public class KeyguardIndicationController {
public void onScreenTurnedOn() {
mHandler.removeMessages(MSG_RESET_ERROR_MESSAGE_ON_SCREEN_ON);
if (mBiometricErrorMessageToShowOnScreenOn != null) {
showBiometricMessage(mBiometricErrorMessageToShowOnScreenOn);
String followUpMessage = mFaceLockedOutThisAuthSession
? faceLockedOutFollowupMessage() : null;
showBiometricMessage(mBiometricErrorMessageToShowOnScreenOn, followUpMessage);
// We want to keep this message around in case the screen was off
hideBiometricMessageDelayed(DEFAULT_HIDE_DELAY_MS);
mBiometricErrorMessageToShowOnScreenOn = null;
@@ -1263,9 +1265,7 @@ public class KeyguardIndicationController {
}
private void handleFaceLockoutError(String errString) {
int followupMsgId = canUnlockWithFingerprint() ? R.string.keyguard_suggest_fingerprint
: R.string.keyguard_unlock;
String followupMessage = mContext.getString(followupMsgId);
String followupMessage = faceLockedOutFollowupMessage();
// Lockout error can happen multiple times in a session because we trigger face auth
// even when it is locked out so that the user is aware that face unlock would have
// triggered but didn't because it is locked out.
@@ -1283,6 +1283,12 @@ public class KeyguardIndicationController {
}
}
private String faceLockedOutFollowupMessage() {
int followupMsgId = canUnlockWithFingerprint() ? R.string.keyguard_suggest_fingerprint
: R.string.keyguard_unlock;
return mContext.getString(followupMsgId);
}
private static boolean isLockoutError(int msgId) {
return msgId == FaceManager.FACE_ERROR_LOCKOUT_PERMANENT
|| msgId == FaceManager.FACE_ERROR_LOCKOUT;

View File

@@ -38,6 +38,7 @@ import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewCont
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;
import static com.google.common.truth.Truth.assertThat;
@@ -1503,6 +1504,44 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase {
mContext.getString(R.string.keyguard_face_unlock_unavailable));
}
@Test
public void onBiometricError_screenIsTurningOn_faceLockedOutFpIsNotAvailable_showsMessage() {
createController();
screenIsTurningOn();
fingerprintUnlockIsNotPossible();
onFaceLockoutError("lockout error");
verifyNoMoreInteractions(mRotateTextViewController);
mScreenObserver.onScreenTurnedOn();
verifyIndicationShown(INDICATION_TYPE_BIOMETRIC_MESSAGE,
"lockout error");
verifyIndicationShown(INDICATION_TYPE_BIOMETRIC_MESSAGE_FOLLOW_UP,
mContext.getString(R.string.keyguard_unlock));
}
@Test
public void onBiometricError_screenIsTurningOn_faceLockedOutFpIsAvailable_showsMessage() {
createController();
screenIsTurningOn();
fingerprintUnlockIsPossible();
onFaceLockoutError("lockout error");
verifyNoMoreInteractions(mRotateTextViewController);
mScreenObserver.onScreenTurnedOn();
verifyIndicationShown(INDICATION_TYPE_BIOMETRIC_MESSAGE,
"lockout error");
verifyIndicationShown(INDICATION_TYPE_BIOMETRIC_MESSAGE_FOLLOW_UP,
mContext.getString(R.string.keyguard_suggest_fingerprint));
}
private void screenIsTurningOn() {
when(mScreenLifecycle.getScreenState()).thenReturn(SCREEN_TURNING_ON);
}
private void sendUpdateDisclosureBroadcast() {
mBroadcastReceiver.onReceive(mContext, new Intent());
}