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

Commit f3893000 authored by Andy Mast's avatar Andy Mast
Browse files

Keyguard: Show fallback after 2 failed auth attempts

Change-Id: Ifd73297d47dbb96351610401cf0e516d39c0ddb6
parent 6c2512c4
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
    private static final boolean DEBUG = KeyguardConstants.DEBUG;
    private static final boolean DEBUG_SIM_STATES = DEBUG || false;
    private static final int FAILED_BIOMETRIC_UNLOCK_ATTEMPTS_BEFORE_BACKUP = 3;
    private static final int FAILED_FINGERPRINT_UNLOCK_ATTEMPTS_BEFORE_BACKUP = 2;
    private static final int LOW_BATTERY_THRESHOLD = 20;

    private static final String ACTION_FACE_UNLOCK_STARTED
@@ -159,6 +160,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
    // Password attempts
    private int mFailedAttempts = 0;
    private int mFailedBiometricUnlockAttempts = 0;
    private int mFailedFingerprintAttempts = 0;

    private boolean mAlternateUnlockEnabled;

@@ -351,6 +353,16 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
        }
    }

    private void onFingerprintAttemptFailed() {
        mFailedFingerprintAttempts++;
        for (int i = 0; i < mCallbacks.size(); i++) {
            KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
            if (cb != null) {
                cb.onFingerprintAttemptFailed();
            }
        }
    }

    private void onFingerprintRecognized(int userId) {
        mUserFingerprintRecognized.put(userId, true);
        for (int i = 0; i < mCallbacks.size(); i++) {
@@ -367,6 +379,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
            FingerprintManager fpm =
                    (FingerprintManager) mContext.getSystemService(Context.FINGERPRINT_SERVICE);
            fpm.authenticate();
            onFingerprintAttemptFailed();
            return; // not a valid fingerprint
        }

@@ -1535,6 +1548,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
    public void clearFailedUnlockAttempts() {
        mFailedAttempts = 0;
        mFailedBiometricUnlockAttempts = 0;
        mFailedFingerprintAttempts = 0;
    }

    public void startFingerAuthIfUsingFingerprint() {
@@ -1577,6 +1591,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener {
        return mFailedBiometricUnlockAttempts >= FAILED_BIOMETRIC_UNLOCK_ATTEMPTS_BEFORE_BACKUP;
    }

    public boolean isMaxFingerprintAttemptsReached() {
        return mFailedFingerprintAttempts >= FAILED_FINGERPRINT_UNLOCK_ATTEMPTS_BEFORE_BACKUP;
    }

    public boolean isAlternateUnlockEnabled() {
        return mAlternateUnlockEnabled;
    }
+5 −0
Original line number Diff line number Diff line
@@ -198,6 +198,11 @@ public class KeyguardUpdateMonitorCallback {
     */
    public void onFingerprintRecognized(int userId) { }

    /**
     * Called when a fingerprint is recognized.
     */
    public void onFingerprintAttemptFailed() { }

    /**
     * Called when fingerprint is acquired but not yet recognized
     */
+8 −0
Original line number Diff line number Diff line
@@ -470,6 +470,14 @@ public class KeyguardViewMediator extends SystemUI {
        public void onFingerprintRecognized(int userId) {
            mViewMediatorCallback.keyguardDone(true);
        };

        @Override
        public void onFingerprintAttemptFailed() {
            if (mUpdateMonitor.isMaxFingerprintAttemptsReached()) {
                mStatusBarKeyguardViewManager.showBouncerHideNotifications();
            }
            userActivity();
        }
    };

    ViewMediatorCallback mViewMediatorCallback = new ViewMediatorCallback() {