Loading packages/SystemUI/src/com/android/keyguard/KeyguardFaceListenModel.kt +4 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ data class KeyguardFaceListenModel( override var userId: Int = 0, override var listening: Boolean = false, // keep sorted var allowedDisplayState: Boolean = false, var allowedDisplayStateWhileAwake: Boolean = false, var alternateBouncerShowing: Boolean = false, var authInterruptActive: Boolean = false, var biometricSettingEnabledForUser: Boolean = false, Loading Loading @@ -58,7 +58,7 @@ data class KeyguardFaceListenModel( userId.toString(), listening.toString(), // keep sorted allowedDisplayState.toString(), allowedDisplayStateWhileAwake.toString(), alternateBouncerShowing.toString(), authInterruptActive.toString(), biometricSettingEnabledForUser.toString(), Loading Loading @@ -98,7 +98,7 @@ data class KeyguardFaceListenModel( userId = model.userId listening = model.listening // keep sorted allowedDisplayState = model.allowedDisplayState allowedDisplayStateWhileAwake = model.allowedDisplayStateWhileAwake alternateBouncerShowing = model.alternateBouncerShowing authInterruptActive = model.authInterruptActive biometricSettingEnabledForUser = model.biometricSettingEnabledForUser Loading Loading @@ -143,7 +143,7 @@ data class KeyguardFaceListenModel( "userId", "listening", // keep sorted "allowedDisplayState", "allowedDisplayStateWhileAwake", "alternateBouncerShowing", "authInterruptActive", "biometricSettingEnabledForUser", Loading packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +14 −8 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ import static com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_UPDATED_STARTED_WAK import static com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_UPDATED_STRONG_AUTH_CHANGED; import static com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_UPDATED_USER_SWITCHING; import static com.android.systemui.DejankUtils.whitelistIpcs; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_OPENED; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_UNKNOWN; Loading Loading @@ -163,6 +164,7 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpsysTableLogger; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.keyguard.domain.interactor.FaceAuthenticationListener; import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor; import com.android.systemui.keyguard.shared.constants.TrustAgentUiEvent; Loading Loading @@ -345,15 +347,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab return; } if (mDisplayTracker.getDisplay(mDisplayTracker.getDefaultDisplayId()).getState() if (mWakefulness.getWakefulness() == WAKEFULNESS_AWAKE && mDisplayTracker.getDisplay(mDisplayTracker.getDefaultDisplayId()).getState() == Display.STATE_OFF) { mAllowedDisplayStateForFaceAuth = false; mAllowedDisplayStateWhileAwakeForFaceAuth = false; updateFaceListeningState( BIOMETRIC_ACTION_STOP, FACE_AUTH_DISPLAY_OFF ); } else { mAllowedDisplayStateForFaceAuth = true; mAllowedDisplayStateWhileAwakeForFaceAuth = true; } } }; Loading @@ -377,7 +380,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private boolean mOccludingAppRequestingFp; private boolean mOccludingAppRequestingFace; private boolean mSecureCameraLaunched; private boolean mAllowedDisplayStateForFaceAuth = true; private boolean mAllowedDisplayStateWhileAwakeForFaceAuth = true; @VisibleForTesting protected boolean mTelephonyCapable; private boolean mAllowFingerprintOnCurrentOccludingActivity; Loading Loading @@ -426,6 +429,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private KeyguardFaceAuthInteractor mFaceAuthInteractor; private final TaskStackChangeListeners mTaskStackChangeListeners; private final IActivityTaskManager mActivityTaskManager; private final WakefulnessLifecycle mWakefulness; private final DisplayTracker mDisplayTracker; private final LockPatternUtils mLockPatternUtils; @VisibleForTesting Loading Loading @@ -2211,7 +2215,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab Trace.beginSection("KeyguardUpdateMonitor#handleStartedWakingUp"); Assert.isMainThread(); mAllowedDisplayStateForFaceAuth = true; mAllowedDisplayStateWhileAwakeForFaceAuth = true; updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE); if (mFaceWakeUpTriggersConfig.shouldTriggerFaceAuthOnWakeUpFrom(pmWakeReason)) { FACE_AUTH_UPDATED_STARTED_WAKING_UP.setExtraInfo(pmWakeReason); Loading Loading @@ -2368,7 +2372,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab FeatureFlags featureFlags, TaskStackChangeListeners taskStackChangeListeners, IActivityTaskManager activityTaskManagerService, DisplayTracker displayTracker) { DisplayTracker displayTracker, WakefulnessLifecycle wakefulness) { mContext = context; mSubscriptionManager = subscriptionManager; mUserTracker = userTracker; Loading Loading @@ -2416,6 +2421,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab .collect(Collectors.toSet()); mTaskStackChangeListeners = taskStackChangeListeners; mActivityTaskManager = activityTaskManagerService; mWakefulness = wakefulness; mDisplayTracker = displayTracker; if (mFeatureFlags.isEnabled(Flags.STOP_FACE_AUTH_ON_DISPLAY_OFF)) { mDisplayTracker.addDisplayChangeCallback(mDisplayCallback, mainExecutor); Loading Loading @@ -3230,7 +3236,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab && faceAndFpNotAuthenticated && !mGoingToSleep && isPostureAllowedForFaceAuth && mAllowedDisplayStateForFaceAuth; && mAllowedDisplayStateWhileAwakeForFaceAuth; // Aggregate relevant fields for debug logging. logListenerModelData( Loading @@ -3238,7 +3244,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab System.currentTimeMillis(), user, shouldListen, mAllowedDisplayStateForFaceAuth, mAllowedDisplayStateWhileAwakeForFaceAuth, mAlternateBouncerShowing, mAuthInterruptActive, biometricEnabledForUser, Loading packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +59 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,9 @@ import static com.android.keyguard.KeyguardUpdateMonitor.HAL_POWER_PRESS_TIMEOUT import static com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser; import static com.android.systemui.flags.Flags.FP_LISTEN_OCCLUDING_APPS; import static com.android.systemui.flags.Flags.STOP_FACE_AUTH_ON_DISPLAY_OFF; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_CLOSED; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_OPENED; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_UNKNOWN; Loading Loading @@ -146,6 +149,7 @@ import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlags; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.log.SessionTracker; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.settings.FakeDisplayTracker; Loading Loading @@ -283,6 +287,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { private TaskStackChangeListeners mTaskStackChangeListeners; @Mock private IActivityTaskManager mActivityTaskManager; @Mock private WakefulnessLifecycle mWakefulness; private List<FaceSensorPropertiesInternal> mFaceSensorProperties; private List<FingerprintSensorPropertiesInternal> mFingerprintSensorProperties; Loading Loading @@ -3084,8 +3090,57 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { // THEN face listening is stopped. verify(faceCancel).cancel(); verify(callback).onBiometricRunningStateChanged( eq(false), eq(BiometricSourceType.FACE)); // beverlyt eq(false), eq(BiometricSourceType.FACE)); } @Test public void onDisplayOff_whileAsleep_doesNotStopFaceAuth() throws RemoteException { enableStopFaceAuthOnDisplayOff(); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_ASLEEP); // GIVEN device is listening for face mKeyguardUpdateMonitor.setKeyguardShowing(true, false); mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_POWER_BUTTON); mTestableLooper.processAllMessages(); verifyFaceAuthenticateCall(); final CancellationSignal faceCancel = spy(mKeyguardUpdateMonitor.mFaceCancelSignal); mKeyguardUpdateMonitor.mFaceCancelSignal = faceCancel; KeyguardUpdateMonitorCallback callback = mock(KeyguardUpdateMonitorCallback.class); mKeyguardUpdateMonitor.registerCallback(callback); // WHEN the default display state changes to OFF triggerDefaultDisplayStateChangeToOff(); // THEN face listening is NOT stopped. verify(faceCancel, never()).cancel(); verify(callback, never()).onBiometricRunningStateChanged( eq(false), eq(BiometricSourceType.FACE)); } @Test public void onDisplayOff_whileWaking_doesNotStopFaceAuth() throws RemoteException { enableStopFaceAuthOnDisplayOff(); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_WAKING); // GIVEN device is listening for face mKeyguardUpdateMonitor.setKeyguardShowing(true, false); mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_POWER_BUTTON); mTestableLooper.processAllMessages(); verifyFaceAuthenticateCall(); final CancellationSignal faceCancel = spy(mKeyguardUpdateMonitor.mFaceCancelSignal); mKeyguardUpdateMonitor.mFaceCancelSignal = faceCancel; KeyguardUpdateMonitorCallback callback = mock(KeyguardUpdateMonitorCallback.class); mKeyguardUpdateMonitor.registerCallback(callback); // WHEN the default display state changes to OFF triggerDefaultDisplayStateChangeToOff(); // THEN face listening is NOT stopped. verify(faceCancel, never()).cancel(); verify(callback, never()).onBiometricRunningStateChanged( eq(false), eq(BiometricSourceType.FACE)); } private void triggerDefaultDisplayStateChangeToOn() { Loading Loading @@ -3393,6 +3448,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mFeatureFlags.set(STOP_FACE_AUTH_ON_DISPLAY_OFF, true); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mContext); setupBiometrics(mKeyguardUpdateMonitor); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_AWAKE); assertThat(mDisplayTracker.getDisplayCallbacks().size()).isEqualTo(1); } Loading Loading @@ -3473,7 +3529,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mPackageManager, mFaceManager, mFingerprintManager, mBiometricManager, mFaceWakeUpTriggersConfig, mDevicePostureController, Optional.of(mInteractiveToAuthProvider), mFeatureFlags, mTaskStackChangeListeners, mActivityTaskManager, mDisplayTracker); mTaskStackChangeListeners, mActivityTaskManager, mDisplayTracker, mWakefulness); setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker); } Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardFaceListenModel.kt +4 −4 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ data class KeyguardFaceListenModel( override var userId: Int = 0, override var listening: Boolean = false, // keep sorted var allowedDisplayState: Boolean = false, var allowedDisplayStateWhileAwake: Boolean = false, var alternateBouncerShowing: Boolean = false, var authInterruptActive: Boolean = false, var biometricSettingEnabledForUser: Boolean = false, Loading Loading @@ -58,7 +58,7 @@ data class KeyguardFaceListenModel( userId.toString(), listening.toString(), // keep sorted allowedDisplayState.toString(), allowedDisplayStateWhileAwake.toString(), alternateBouncerShowing.toString(), authInterruptActive.toString(), biometricSettingEnabledForUser.toString(), Loading Loading @@ -98,7 +98,7 @@ data class KeyguardFaceListenModel( userId = model.userId listening = model.listening // keep sorted allowedDisplayState = model.allowedDisplayState allowedDisplayStateWhileAwake = model.allowedDisplayStateWhileAwake alternateBouncerShowing = model.alternateBouncerShowing authInterruptActive = model.authInterruptActive biometricSettingEnabledForUser = model.biometricSettingEnabledForUser Loading Loading @@ -143,7 +143,7 @@ data class KeyguardFaceListenModel( "userId", "listening", // keep sorted "allowedDisplayState", "allowedDisplayStateWhileAwake", "alternateBouncerShowing", "authInterruptActive", "biometricSettingEnabledForUser", Loading
packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +14 −8 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ import static com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_UPDATED_STARTED_WAK import static com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_UPDATED_STRONG_AUTH_CHANGED; import static com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_UPDATED_USER_SWITCHING; import static com.android.systemui.DejankUtils.whitelistIpcs; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_OPENED; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_UNKNOWN; Loading Loading @@ -163,6 +164,7 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpsysTableLogger; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.keyguard.domain.interactor.FaceAuthenticationListener; import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor; import com.android.systemui.keyguard.shared.constants.TrustAgentUiEvent; Loading Loading @@ -345,15 +347,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab return; } if (mDisplayTracker.getDisplay(mDisplayTracker.getDefaultDisplayId()).getState() if (mWakefulness.getWakefulness() == WAKEFULNESS_AWAKE && mDisplayTracker.getDisplay(mDisplayTracker.getDefaultDisplayId()).getState() == Display.STATE_OFF) { mAllowedDisplayStateForFaceAuth = false; mAllowedDisplayStateWhileAwakeForFaceAuth = false; updateFaceListeningState( BIOMETRIC_ACTION_STOP, FACE_AUTH_DISPLAY_OFF ); } else { mAllowedDisplayStateForFaceAuth = true; mAllowedDisplayStateWhileAwakeForFaceAuth = true; } } }; Loading @@ -377,7 +380,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private boolean mOccludingAppRequestingFp; private boolean mOccludingAppRequestingFace; private boolean mSecureCameraLaunched; private boolean mAllowedDisplayStateForFaceAuth = true; private boolean mAllowedDisplayStateWhileAwakeForFaceAuth = true; @VisibleForTesting protected boolean mTelephonyCapable; private boolean mAllowFingerprintOnCurrentOccludingActivity; Loading Loading @@ -426,6 +429,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private KeyguardFaceAuthInteractor mFaceAuthInteractor; private final TaskStackChangeListeners mTaskStackChangeListeners; private final IActivityTaskManager mActivityTaskManager; private final WakefulnessLifecycle mWakefulness; private final DisplayTracker mDisplayTracker; private final LockPatternUtils mLockPatternUtils; @VisibleForTesting Loading Loading @@ -2211,7 +2215,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab Trace.beginSection("KeyguardUpdateMonitor#handleStartedWakingUp"); Assert.isMainThread(); mAllowedDisplayStateForFaceAuth = true; mAllowedDisplayStateWhileAwakeForFaceAuth = true; updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE); if (mFaceWakeUpTriggersConfig.shouldTriggerFaceAuthOnWakeUpFrom(pmWakeReason)) { FACE_AUTH_UPDATED_STARTED_WAKING_UP.setExtraInfo(pmWakeReason); Loading Loading @@ -2368,7 +2372,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab FeatureFlags featureFlags, TaskStackChangeListeners taskStackChangeListeners, IActivityTaskManager activityTaskManagerService, DisplayTracker displayTracker) { DisplayTracker displayTracker, WakefulnessLifecycle wakefulness) { mContext = context; mSubscriptionManager = subscriptionManager; mUserTracker = userTracker; Loading Loading @@ -2416,6 +2421,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab .collect(Collectors.toSet()); mTaskStackChangeListeners = taskStackChangeListeners; mActivityTaskManager = activityTaskManagerService; mWakefulness = wakefulness; mDisplayTracker = displayTracker; if (mFeatureFlags.isEnabled(Flags.STOP_FACE_AUTH_ON_DISPLAY_OFF)) { mDisplayTracker.addDisplayChangeCallback(mDisplayCallback, mainExecutor); Loading Loading @@ -3230,7 +3236,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab && faceAndFpNotAuthenticated && !mGoingToSleep && isPostureAllowedForFaceAuth && mAllowedDisplayStateForFaceAuth; && mAllowedDisplayStateWhileAwakeForFaceAuth; // Aggregate relevant fields for debug logging. logListenerModelData( Loading @@ -3238,7 +3244,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab System.currentTimeMillis(), user, shouldListen, mAllowedDisplayStateForFaceAuth, mAllowedDisplayStateWhileAwakeForFaceAuth, mAlternateBouncerShowing, mAuthInterruptActive, biometricEnabledForUser, Loading
packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +59 −2 Original line number Diff line number Diff line Loading @@ -41,6 +41,9 @@ import static com.android.keyguard.KeyguardUpdateMonitor.HAL_POWER_PRESS_TIMEOUT import static com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser; import static com.android.systemui.flags.Flags.FP_LISTEN_OCCLUDING_APPS; import static com.android.systemui.flags.Flags.STOP_FACE_AUTH_ON_DISPLAY_OFF; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE; import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_CLOSED; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_OPENED; import static com.android.systemui.statusbar.policy.DevicePostureController.DEVICE_POSTURE_UNKNOWN; Loading Loading @@ -146,6 +149,7 @@ import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FakeFeatureFlags; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.log.SessionTracker; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.settings.FakeDisplayTracker; Loading Loading @@ -283,6 +287,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { private TaskStackChangeListeners mTaskStackChangeListeners; @Mock private IActivityTaskManager mActivityTaskManager; @Mock private WakefulnessLifecycle mWakefulness; private List<FaceSensorPropertiesInternal> mFaceSensorProperties; private List<FingerprintSensorPropertiesInternal> mFingerprintSensorProperties; Loading Loading @@ -3084,8 +3090,57 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { // THEN face listening is stopped. verify(faceCancel).cancel(); verify(callback).onBiometricRunningStateChanged( eq(false), eq(BiometricSourceType.FACE)); // beverlyt eq(false), eq(BiometricSourceType.FACE)); } @Test public void onDisplayOff_whileAsleep_doesNotStopFaceAuth() throws RemoteException { enableStopFaceAuthOnDisplayOff(); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_ASLEEP); // GIVEN device is listening for face mKeyguardUpdateMonitor.setKeyguardShowing(true, false); mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_POWER_BUTTON); mTestableLooper.processAllMessages(); verifyFaceAuthenticateCall(); final CancellationSignal faceCancel = spy(mKeyguardUpdateMonitor.mFaceCancelSignal); mKeyguardUpdateMonitor.mFaceCancelSignal = faceCancel; KeyguardUpdateMonitorCallback callback = mock(KeyguardUpdateMonitorCallback.class); mKeyguardUpdateMonitor.registerCallback(callback); // WHEN the default display state changes to OFF triggerDefaultDisplayStateChangeToOff(); // THEN face listening is NOT stopped. verify(faceCancel, never()).cancel(); verify(callback, never()).onBiometricRunningStateChanged( eq(false), eq(BiometricSourceType.FACE)); } @Test public void onDisplayOff_whileWaking_doesNotStopFaceAuth() throws RemoteException { enableStopFaceAuthOnDisplayOff(); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_WAKING); // GIVEN device is listening for face mKeyguardUpdateMonitor.setKeyguardShowing(true, false); mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_POWER_BUTTON); mTestableLooper.processAllMessages(); verifyFaceAuthenticateCall(); final CancellationSignal faceCancel = spy(mKeyguardUpdateMonitor.mFaceCancelSignal); mKeyguardUpdateMonitor.mFaceCancelSignal = faceCancel; KeyguardUpdateMonitorCallback callback = mock(KeyguardUpdateMonitorCallback.class); mKeyguardUpdateMonitor.registerCallback(callback); // WHEN the default display state changes to OFF triggerDefaultDisplayStateChangeToOff(); // THEN face listening is NOT stopped. verify(faceCancel, never()).cancel(); verify(callback, never()).onBiometricRunningStateChanged( eq(false), eq(BiometricSourceType.FACE)); } private void triggerDefaultDisplayStateChangeToOn() { Loading Loading @@ -3393,6 +3448,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mFeatureFlags.set(STOP_FACE_AUTH_ON_DISPLAY_OFF, true); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mContext); setupBiometrics(mKeyguardUpdateMonitor); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_AWAKE); assertThat(mDisplayTracker.getDisplayCallbacks().size()).isEqualTo(1); } Loading Loading @@ -3473,7 +3529,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mPackageManager, mFaceManager, mFingerprintManager, mBiometricManager, mFaceWakeUpTriggersConfig, mDevicePostureController, Optional.of(mInteractiveToAuthProvider), mFeatureFlags, mTaskStackChangeListeners, mActivityTaskManager, mDisplayTracker); mTaskStackChangeListeners, mActivityTaskManager, mDisplayTracker, mWakefulness); setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker); } Loading