diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 4523fee045f6b..44df02a9023ad 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -252,7 +252,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab @Override public void onStateChanged(int newState) { mStatusBarState = newState; - updateBiometricListeningState(); } @Override diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java index f779305b75ab2..29b44051f92d8 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java @@ -942,6 +942,34 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { assertThat(mKeyguardUpdateMonitor.shouldListenForFingerprint(true)).isEqualTo(false); } + @Test + public void testShouldNotUpdateBiometricListeningStateOnStatusBarStateChange() { + // GIVEN state for face auth should run aside from StatusBarState + when(mDevicePolicyManager.getKeyguardDisabledFeatures(null, + KeyguardUpdateMonitor.getCurrentUser())).thenReturn(0); + mStatusBarStateListener.onStateChanged(StatusBarState.SHADE_LOCKED); + setKeyguardBouncerVisibility(false /* isVisible */); + mKeyguardUpdateMonitor.dispatchStartedWakingUp(); + when(mKeyguardBypassController.canBypass()).thenReturn(true); + mKeyguardUpdateMonitor.onKeyguardVisibilityChanged(true); + + // WHEN status bar state reports a change to the keyguard that would normally indicate to + // start running face auth + mStatusBarStateListener.onStateChanged(StatusBarState.KEYGUARD); + assertThat(mKeyguardUpdateMonitor.shouldListenForFace()).isEqualTo(true); + + // THEN face unlock is not running b/c status bar state changes don't cause biometric + // listening state to update + assertThat(mKeyguardUpdateMonitor.isFaceUnlockRunning( + KeyguardUpdateMonitor.getCurrentUser())).isEqualTo(false); + + // WHEN biometric listening state is updated + mKeyguardUpdateMonitor.onKeyguardVisibilityChanged(true); + + // THEN face unlock is running + assertThat(mKeyguardUpdateMonitor.isFaceDetectionRunning()).isEqualTo(true); + } + @Test public void testRequireUnlockForNfc_Broadcast() { KeyguardUpdateMonitorCallback callback = mock(KeyguardUpdateMonitorCallback.class);