diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/keyguard/LockIconViewController.java | 31 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java | 22 |
2 files changed, 39 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java index 8071a5de1ce9..0887b220dee1 100644 --- a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java @@ -466,6 +466,17 @@ public class LockIconViewController extends ViewController<LockIconView> impleme } } + /** + * @return whether the userUnlockedWithBiometric state changed + */ + private boolean updateUserUnlockedWithBiometric() { + final boolean wasUserUnlockedWithBiometric = mUserUnlockedWithBiometric; + mUserUnlockedWithBiometric = + mKeyguardUpdateMonitor.getUserUnlockedWithBiometric( + KeyguardUpdateMonitor.getCurrentUser()); + return wasUserUnlockedWithBiometric != mUserUnlockedWithBiometric; + } + private StatusBarStateController.StateListener mStatusBarStateListener = new StatusBarStateController.StateListener() { @Override @@ -503,11 +514,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme @Override public void onBiometricsCleared() { - final boolean wasUserUnlockedWithBiometric = mUserUnlockedWithBiometric; - mUserUnlockedWithBiometric = - mKeyguardUpdateMonitor.getUserUnlockedWithBiometric( - KeyguardUpdateMonitor.getCurrentUser()); - if (wasUserUnlockedWithBiometric != mUserUnlockedWithBiometric) { + if (updateUserUnlockedWithBiometric()) { updateVisibility(); } } @@ -516,10 +523,8 @@ public class LockIconViewController extends ViewController<LockIconView> impleme public void onBiometricRunningStateChanged(boolean running, BiometricSourceType biometricSourceType) { final boolean wasRunningFps = mRunningFPS; - final boolean wasUserUnlockedWithBiometric = mUserUnlockedWithBiometric; - mUserUnlockedWithBiometric = - mKeyguardUpdateMonitor.getUserUnlockedWithBiometric( - KeyguardUpdateMonitor.getCurrentUser()); + final boolean userUnlockedWithBiometricChanged = + updateUserUnlockedWithBiometric(); if (biometricSourceType == FINGERPRINT) { mRunningFPS = running; @@ -537,8 +542,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme } } - if (wasUserUnlockedWithBiometric != mUserUnlockedWithBiometric - || wasRunningFps != mRunningFPS) { + if (userUnlockedWithBiometricChanged || wasRunningFps != mRunningFPS) { updateVisibility(); } } @@ -549,6 +553,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme @Override public void onUnlockedChanged() { mCanDismissLockScreen = mKeyguardStateController.canDismissLockScreen(); + updateUserUnlockedWithBiometric(); updateKeyguardShowing(); updateVisibility(); } @@ -566,9 +571,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme updateKeyguardShowing(); if (mIsKeyguardShowing) { - mUserUnlockedWithBiometric = - mKeyguardUpdateMonitor.getUserUnlockedWithBiometric( - KeyguardUpdateMonitor.getCurrentUser()); + updateUserUnlockedWithBiometric(); } updateVisibility(); } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java index b69491ed1096..b7d005957700 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/LockIconViewControllerTest.java @@ -284,4 +284,26 @@ public class LockIconViewControllerTest extends LockIconViewControllerBaseTest { // THEN the lock icon is shown verify(mLockIconView).setContentDescription(LOCKED_LABEL); } + + @Test + public void lockIconShows_afterUnlockStateChanges() { + // GIVEN lock icon controller is initialized and view is attached + init(/* useMigrationFlag= */false); + captureKeyguardStateCallback(); + captureKeyguardUpdateMonitorCallback(); + + // GIVEN user has unlocked with a biometric auth (ie: face auth) + // and biometric running state changes + when(mKeyguardUpdateMonitor.getUserUnlockedWithBiometric(anyInt())).thenReturn(true); + mKeyguardUpdateMonitorCallback.onBiometricRunningStateChanged(false, + BiometricSourceType.FACE); + reset(mLockIconView); + + // WHEN the unlocked state changes + when(mKeyguardUpdateMonitor.getUserUnlockedWithBiometric(anyInt())).thenReturn(false); + mKeyguardStateCallback.onUnlockedChanged(); + + // THEN the lock icon is shown + verify(mLockIconView).setContentDescription(LOCKED_LABEL); + } } |