diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-03-03 08:38:51 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-03-03 08:38:51 +0000 |
commit | 021348413aae54f091bedd283715bfec01c244b3 (patch) | |
tree | 7fa3efd0e4c31ef8489fd493de8af601dcb0896b | |
parent | e0e8eb75182553101cb0f4a89c8af41cf5c3d266 (diff) | |
parent | ee92df5c8035f8b8ea7de62a69d34757eaf62c2d (diff) | |
download | base-021348413aae54f091bedd283715bfec01c244b3.tar.gz |
Merge cherrypicks of ['googleplex-android-review.googlesource.com/21589328'] into tm-d3-release.
Change-Id: Iefc5f65ab315321278a7727dd84c0ae5110bb5a2
-rw-r--r-- | packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java | 3 | ||||
-rw-r--r-- | packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java | 36 |
2 files changed, 38 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 935c7c2d85a1..63a75c711ae2 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -2795,7 +2795,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab final boolean supportsDetect = !mFaceSensorProperties.isEmpty() && mFaceSensorProperties.get(0).supportsFaceDetection && canBypass && !mPrimaryBouncerIsOrWillBeShowing - && !isUserInLockdown(user); + && !isUserInLockdown(user) + && !isFingerprintLockedOut(); final boolean faceAuthAllowedOrDetectionIsNeeded = faceAuthAllowed || supportsDetect; // If the face or fp has recently been authenticated do not attempt to authenticate again. diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java index f5083a756d52..e67e80f85d58 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java @@ -17,6 +17,7 @@ package com.android.keyguard; import static android.app.StatusBarManager.SESSION_KEYGUARD; +import static android.hardware.biometrics.BiometricConstants.BIOMETRIC_LOCKOUT_TIMED; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_LOCKOUT; import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ERROR_LOCKOUT_PERMANENT; import static android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON; @@ -775,6 +776,41 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { } @Test + public void noFaceRun_whenFpLockout() { + // GIVEN bypass is enabled, face detection is supported and strong auth is required + lockscreenBypassIsAllowed(); + supportsFaceDetection(); + strongAuthRequiredEncrypted(); + keyguardIsVisible(); + // fingerprint is NOT running, UDFPS is NOT supported + + // GIVEN fp is locked out + when(mFingerprintManager.getLockoutModeForUser(eq(FINGERPRINT_SENSOR_ID), anyInt())) + .thenReturn(BIOMETRIC_LOCKOUT_TIMED); + mKeyguardUpdateMonitor.handleUserSwitchComplete(0); + assertThat(mKeyguardUpdateMonitor.isFingerprintLockedOut()).isEqualTo(true); + + // WHEN the device wakes up + mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_POWER_BUTTON); + mTestableLooper.processAllMessages(); + + // FACE detect is NOT triggered and face authenticate is NOT triggered + verify(mFaceManager, never()).detectFace(any(), any(), anyInt()); + verify(mFaceManager, never()).authenticate(any(), any(), any(), any(), anyInt(), + anyBoolean()); + + // WHEN bouncer becomes visible + setKeyguardBouncerVisibility(true); + clearInvocations(mFaceManager); + + // THEN face scanning is not run + mKeyguardUpdateMonitor.requestFaceAuth(FaceAuthApiRequestReason.UDFPS_POINTER_DOWN); + verify(mFaceManager, never()).authenticate(any(), any(), any(), any(), anyInt(), + anyBoolean()); + verify(mFaceManager, never()).detectFace(any(), any(), anyInt()); + } + + @Test public void noFaceDetect_whenStrongAuthRequiredAndBypass_faceDetectionUnsupported() { // GIVEN bypass is enabled, face detection is NOT supported and strong auth is required lockscreenBypassIsAllowed(); |