diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index e379d766f0caf..e0f9d3cb54b6f 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -2816,9 +2816,12 @@ public class KeyguardViewMediator extends CoreStartable implements Dumpable, } } - public void onWakeAndUnlocking() { - Trace.beginSection("KeyguardViewMediator#onWakeAndUnlocking"); - mWakeAndUnlocking = true; + /** + * Receive a wake event from outside this class (most likely bio auth). + */ + public void onWake(boolean withUnlock) { + Trace.beginSection("KeyguardViewMediator#onWake"); + mWakeAndUnlocking = withUnlock; keyguardDone(); Trace.endSection(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java index c1869e0575ed6..32803feea42a0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/BiometricUnlockController.java @@ -500,10 +500,12 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp mUpdateMonitor.awakenFromDream(); } mNotificationShadeWindowController.setNotificationShadeFocusable(false); - mKeyguardViewMediator.onWakeAndUnlocking(); + mKeyguardViewMediator.onWake(true /* withUnlock */); Trace.endSection(); break; case MODE_ONLY_WAKE: + mKeyguardViewMediator.onWake(false /* withUnlock */); + break; case MODE_NONE: break; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java index d6a2f0f22e5a9..5c60c70f6d5ba 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/BiometricsUnlockControllerTest.java @@ -180,11 +180,28 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase { mBiometricUnlockController.onBiometricAuthenticated(UserHandle.USER_CURRENT, BiometricSourceType.FINGERPRINT, true /* isStrongBiometric */); - verify(mKeyguardViewMediator).onWakeAndUnlocking(); + verify(mKeyguardViewMediator).onWake(true /* withUnlock */); assertThat(mBiometricUnlockController.getMode()) .isEqualTo(BiometricUnlockController.MODE_WAKE_AND_UNLOCK_PULSING); } + @Test + public void onBiometricAuthenticated_whenFingerprintAndInteractive_wakeWithoutUnlock() { + reset(mUpdateMonitor); + reset(mStatusBarKeyguardViewManager); + when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(false); + when(mUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true); + when(mDozeScrimController.isPulsing()).thenReturn(false); + // the value of isStrongBiometric doesn't matter here since we only care about the returned + // value of isUnlockingWithBiometricAllowed() + mBiometricUnlockController.onBiometricAuthenticated(UserHandle.USER_CURRENT, + BiometricSourceType.FINGERPRINT, true /* isStrongBiometric */); + + verify(mKeyguardViewMediator).onWake(false /* withUnlock */); + assertThat(mBiometricUnlockController.getMode()) + .isEqualTo(BiometricUnlockController.MODE_ONLY_WAKE); + } + @Test public void onBiometricAuthenticated_whenFingerprint_notifyKeyguardAuthenticated() { when(mUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true);