Merge "isUnlockingWithFaceAllowed checks lockout state" into tm-qpr-dev am: feb94ff444

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20588658

Change-Id: I48cc9fadf225e406a1000d9bec5f6969a1fdfa31
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
TreeHugger Robot
2022-12-01 17:00:13 +00:00
committed by Automerger Merge Worker
2 changed files with 61 additions and 7 deletions

View File

@@ -1394,16 +1394,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
&& !mFingerprintLockedOut; && !mFingerprintLockedOut;
} }
private boolean isUnlockingWithFaceAllowed() {
return mStrongAuthTracker.isUnlockingWithBiometricAllowed(false);
}
/** /**
* Whether fingerprint is allowed ot be used for unlocking based on the strongAuthTracker * Whether fingerprint is allowed ot be used for unlocking based on the strongAuthTracker
* and temporary lockout state (tracked by FingerprintManager via error codes). * and temporary lockout state (tracked by FingerprintManager via error codes).
*/ */
public boolean isUnlockingWithFingerprintAllowed() { public boolean isUnlockingWithFingerprintAllowed() {
return isUnlockingWithBiometricAllowed(true); return isUnlockingWithBiometricAllowed(FINGERPRINT);
} }
/** /**
@@ -1413,9 +1409,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
@NonNull BiometricSourceType biometricSourceType) { @NonNull BiometricSourceType biometricSourceType) {
switch (biometricSourceType) { switch (biometricSourceType) {
case FINGERPRINT: case FINGERPRINT:
return isUnlockingWithFingerprintAllowed(); return isUnlockingWithBiometricAllowed(true);
case FACE: case FACE:
return isUnlockingWithFaceAllowed(); return isUnlockingWithBiometricAllowed(false);
default: default:
return false; return false;
} }

View File

@@ -608,6 +608,64 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
verify(mFingerprintManager).detectFingerprint(any(), any(), anyInt()); verify(mFingerprintManager).detectFingerprint(any(), any(), anyInt());
} }
@Test
public void testUnlockingWithFaceAllowed_strongAuthTrackerUnlockingWithBiometricAllowed() {
// GIVEN unlocking with biometric is allowed
when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true);
// THEN unlocking with face and fp is allowed
Assert.assertTrue(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
BiometricSourceType.FACE));
Assert.assertTrue(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
BiometricSourceType.FINGERPRINT));
}
@Test
public void testUnlockingWithFaceAllowed_strongAuthTrackerUnlockingWithBiometricNotAllowed() {
// GIVEN unlocking with biometric is not allowed
when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(false);
// THEN unlocking with face is not allowed
Assert.assertFalse(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
BiometricSourceType.FACE));
}
@Test
public void testUnlockingWithFaceAllowed_fingerprintLockout() {
// GIVEN unlocking with biometric is allowed
when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true);
// WHEN fingerprint is locked out
fingerprintErrorLockedOut();
// THEN unlocking with face is not allowed
Assert.assertFalse(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
BiometricSourceType.FACE));
}
@Test
public void testUnlockingWithFpAllowed_strongAuthTrackerUnlockingWithBiometricNotAllowed() {
// GIVEN unlocking with biometric is not allowed
when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(false);
// THEN unlocking with fingerprint is not allowed
Assert.assertFalse(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
BiometricSourceType.FINGERPRINT));
}
@Test
public void testUnlockingWithFpAllowed_fingerprintLockout() {
// GIVEN unlocking with biometric is allowed
when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true);
// WHEN fingerprint is locked out
fingerprintErrorLockedOut();
// THEN unlocking with fingeprint is not allowed
Assert.assertFalse(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
BiometricSourceType.FINGERPRINT));
}
@Test @Test
public void testTriesToAuthenticate_whenBouncer() { public void testTriesToAuthenticate_whenBouncer() {
setKeyguardBouncerVisibility(true); setKeyguardBouncerVisibility(true);