Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit feb94ff4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "isUnlockingWithFaceAllowed checks lockout state" into tm-qpr-dev

parents 2debfc7b dd9429a1
Loading
Loading
Loading
Loading
+3 −7
Original line number Diff line number Diff line
@@ -1394,16 +1394,12 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                && !mFingerprintLockedOut;
    }

    private boolean isUnlockingWithFaceAllowed() {
        return mStrongAuthTracker.isUnlockingWithBiometricAllowed(false);
    }

    /**
     * Whether fingerprint is allowed ot be used for unlocking based on the strongAuthTracker
     * and temporary lockout state (tracked by FingerprintManager via error codes).
     */
    public boolean isUnlockingWithFingerprintAllowed() {
        return isUnlockingWithBiometricAllowed(true);
        return isUnlockingWithBiometricAllowed(FINGERPRINT);
    }

    /**
@@ -1413,9 +1409,9 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            @NonNull BiometricSourceType biometricSourceType) {
        switch (biometricSourceType) {
            case FINGERPRINT:
                return isUnlockingWithFingerprintAllowed();
                return isUnlockingWithBiometricAllowed(true);
            case FACE:
                return isUnlockingWithFaceAllowed();
                return isUnlockingWithBiometricAllowed(false);
            default:
                return false;
        }
+58 −0
Original line number Diff line number Diff line
@@ -608,6 +608,64 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
        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
    public void testTriesToAuthenticate_whenBouncer() {
        setKeyguardBouncerVisibility(true);