diff options
2 files changed, 40 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index b84e6e6f37cc..e7889286d195 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -416,7 +416,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb * dragging it and translation should be deferred {@see KeyguardBouncer#show(boolean, boolean)} */ public void showGenericBouncer(boolean scrimmed) { - if (mAlternateAuthInterceptor != null) { + if (shouldShowAltAuth()) { updateAlternateAuthShowing(mAlternateAuthInterceptor.showAlternateAuthBouncer()); return; } @@ -424,6 +424,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb showBouncer(scrimmed); } + private boolean shouldShowAltAuth() { + return mAlternateAuthInterceptor != null + && mKeyguardUpdateManager.isUnlockingWithBiometricAllowed(true); + } + /** * Hides the input bouncer (pin/password/pattern). */ @@ -479,7 +484,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb // If there is an an alternate auth interceptor (like the UDFPS), show that one instead // of the bouncer. - if (mAlternateAuthInterceptor != null) { + if (shouldShowAltAuth()) { if (!afterKeyguardGone) { mBouncer.setDismissAction(mAfterKeyguardGoneAction, mKeyguardGoneCancelAction); mAfterKeyguardGoneAction = null; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java index c5bdfed6082b..cc59b6c96fbc 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java @@ -389,6 +389,39 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { } @Test + public void testShowAltAuth_unlockingWithBiometricNotAllowed() { + // GIVEN alt auth exists, unlocking with biometric isn't allowed + mStatusBarKeyguardViewManager.setAlternateAuthInterceptor(mAlternateAuthInterceptor); + when(mBouncer.isShowing()).thenReturn(false); + when(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean())) + .thenReturn(false); + + // WHEN showGenericBouncer is called + final boolean scrimmed = true; + mStatusBarKeyguardViewManager.showGenericBouncer(scrimmed); + + // THEN regular bouncer is shown + verify(mBouncer).show(anyBoolean(), eq(scrimmed)); + verify(mAlternateAuthInterceptor, never()).showAlternateAuthBouncer(); + } + + @Test + public void testShowAltAuth_unlockingWithBiometricAllowed() { + // GIVEN alt auth exists, unlocking with biometric is allowed + mStatusBarKeyguardViewManager.setAlternateAuthInterceptor(mAlternateAuthInterceptor); + when(mBouncer.isShowing()).thenReturn(false); + when(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean())) + .thenReturn(true); + + // WHEN showGenericBouncer is called + mStatusBarKeyguardViewManager.showGenericBouncer(true); + + // THEN alt auth bouncer is shown + verify(mAlternateAuthInterceptor).showAlternateAuthBouncer(); + verify(mBouncer, never()).show(anyBoolean(), anyBoolean()); + } + + @Test public void testUpdateResources_delegatesToBouncer() { mStatusBarKeyguardViewManager.updateResources(); |