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 @@ -161,6 +162,7 @@ import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpsysTableLogger; 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 @@ -342,15 +344,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 @@ -374,7 +377,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 @@ -422,6 +425,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 @@ -2207,7 +2211,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 @@ -2363,7 +2367,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab Optional<FingerprintInteractiveToAuthProvider> interactiveToAuthProvider, TaskStackChangeListeners taskStackChangeListeners, IActivityTaskManager activityTaskManagerService, DisplayTracker displayTracker) { DisplayTracker displayTracker, WakefulnessLifecycle wakefulness) { mContext = context; mSubscriptionManager = subscriptionManager; mUserTracker = userTracker; Loading Loading @@ -2410,6 +2415,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab .collect(Collectors.toSet()); mTaskStackChangeListeners = taskStackChangeListeners; mActivityTaskManager = activityTaskManagerService; mWakefulness = wakefulness; mDisplayTracker = displayTracker; mDisplayTracker.addDisplayChangeCallback(mDisplayCallback, mainExecutor); Loading Loading @@ -3214,7 +3220,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab && faceAndFpNotAuthenticated && !mGoingToSleep && isPostureAllowedForFaceAuth && mAllowedDisplayStateForFaceAuth; && mAllowedDisplayStateWhileAwakeForFaceAuth; // Aggregate relevant fields for debug logging. logListenerModelData( Loading @@ -3222,7 +3228,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 +63 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWE import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL; import static android.telephony.SubscriptionManager.DATA_ROAMING_DISABLE; import static android.telephony.SubscriptionManager.NAME_SOURCE_CARRIER_ID; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN; Loading @@ -38,11 +39,17 @@ import static com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_STATE_CANCELL import static com.android.keyguard.KeyguardUpdateMonitor.DEFAULT_CANCEL_SIGNAL_TIMEOUT; import static com.android.keyguard.KeyguardUpdateMonitor.HAL_POWER_PRESS_TIMEOUT; import static com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser; 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; import static com.google.common.truth.Truth.assertThat; import static junit.framework.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; Loading Loading @@ -139,6 +146,7 @@ import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; 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 @@ -275,6 +283,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 @@ -2998,8 +3008,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 @@ -3306,6 +3365,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { clearInvocations(mStatusBarStateController); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mContext); setupBiometrics(mKeyguardUpdateMonitor); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_AWAKE); assertThat(mDisplayTracker.getDisplayCallbacks().size()).isEqualTo(1); } Loading Loading @@ -3386,7 +3446,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mPackageManager, mFaceManager, mFingerprintManager, mBiometricManager, mFaceWakeUpTriggersConfig, mDevicePostureController, Optional.of(mInteractiveToAuthProvider), 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 @@ -161,6 +162,7 @@ import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpsysTableLogger; 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 @@ -342,15 +344,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 @@ -374,7 +377,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 @@ -422,6 +425,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 @@ -2207,7 +2211,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 @@ -2363,7 +2367,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab Optional<FingerprintInteractiveToAuthProvider> interactiveToAuthProvider, TaskStackChangeListeners taskStackChangeListeners, IActivityTaskManager activityTaskManagerService, DisplayTracker displayTracker) { DisplayTracker displayTracker, WakefulnessLifecycle wakefulness) { mContext = context; mSubscriptionManager = subscriptionManager; mUserTracker = userTracker; Loading Loading @@ -2410,6 +2415,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab .collect(Collectors.toSet()); mTaskStackChangeListeners = taskStackChangeListeners; mActivityTaskManager = activityTaskManagerService; mWakefulness = wakefulness; mDisplayTracker = displayTracker; mDisplayTracker.addDisplayChangeCallback(mDisplayCallback, mainExecutor); Loading Loading @@ -3214,7 +3220,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab && faceAndFpNotAuthenticated && !mGoingToSleep && isPostureAllowedForFaceAuth && mAllowedDisplayStateForFaceAuth; && mAllowedDisplayStateWhileAwakeForFaceAuth; // Aggregate relevant fields for debug logging. logListenerModelData( Loading @@ -3222,7 +3228,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 +63 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWE import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_UDFPS_OPTICAL; import static android.telephony.SubscriptionManager.DATA_ROAMING_DISABLE; import static android.telephony.SubscriptionManager.NAME_SOURCE_CARRIER_ID; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN; Loading @@ -38,11 +39,17 @@ import static com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_STATE_CANCELL import static com.android.keyguard.KeyguardUpdateMonitor.DEFAULT_CANCEL_SIGNAL_TIMEOUT; import static com.android.keyguard.KeyguardUpdateMonitor.HAL_POWER_PRESS_TIMEOUT; import static com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser; 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; import static com.google.common.truth.Truth.assertThat; import static junit.framework.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; Loading Loading @@ -139,6 +146,7 @@ import com.android.systemui.biometrics.AuthController; import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; 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 @@ -275,6 +283,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 @@ -2998,8 +3008,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 @@ -3306,6 +3365,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { clearInvocations(mStatusBarStateController); mKeyguardUpdateMonitor = new TestableKeyguardUpdateMonitor(mContext); setupBiometrics(mKeyguardUpdateMonitor); when(mWakefulness.getWakefulness()).thenReturn(WAKEFULNESS_AWAKE); assertThat(mDisplayTracker.getDisplayCallbacks().size()).isEqualTo(1); } Loading Loading @@ -3386,7 +3446,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { mPackageManager, mFaceManager, mFingerprintManager, mBiometricManager, mFaceWakeUpTriggersConfig, mDevicePostureController, Optional.of(mInteractiveToAuthProvider), mTaskStackChangeListeners, mActivityTaskManager, mDisplayTracker); mTaskStackChangeListeners, mActivityTaskManager, mDisplayTracker, mWakefulness); setStrongAuthTracker(KeyguardUpdateMonitorTest.this.mStrongAuthTracker); } Loading