diff options
author | Uriel Rodriguez <urodriguez@google.com> | 2011-10-15 08:44:21 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-10-15 08:44:21 -0700 |
commit | d814d4fa0c76a0384f7e32816e1ca36f237911c6 (patch) | |
tree | 066b76940b04b1de37596d4ff7b60f2da8daabca /policy | |
parent | f755a2e8aabfd6b26df4f3f56f0e9cdfb06cc173 (diff) | |
parent | fd2ed6910f932ce43b621d6296eff112e137fbf9 (diff) | |
download | frameworks_base-d814d4fa0c76a0384f7e32816e1ca36f237911c6.zip frameworks_base-d814d4fa0c76a0384f7e32816e1ca36f237911c6.tar.gz frameworks_base-d814d4fa0c76a0384f7e32816e1ca36f237911c6.tar.bz2 |
Merge "going directly to backup after face unlock fails 15 times" into ics-mr0
Diffstat (limited to 'policy')
-rw-r--r-- | policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java index 25355db..b91503b 100644 --- a/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java +++ b/policy/src/com/android/internal/policy/impl/LockPatternKeyguardView.java @@ -130,6 +130,10 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler // So the user has a consistent amount of time when brought to the backup method from FaceLock private final int BACKUP_LOCK_TIMEOUT = 5000; + // Needed to keep track of failed FaceUnlock attempts + private int mFailedFaceUnlockAttempts = 0; + private static final int FAILED_FACE_UNLOCK_ATTEMPTS_BEFORE_BACKUP = 15; + /** * The current {@link KeyguardScreen} will use this to communicate back to us. */ @@ -439,6 +443,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler } public void reportSuccessfulUnlockAttempt() { + mFailedFaceUnlockAttempts = 0; mLockPatternUtils.reportSuccessfulPasswordAttempt(); } }; @@ -553,7 +558,16 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler * FaceLock, but only if we're not dealing with a call */ private void activateFaceLockIfAble() { - if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE && !mHasOverlay) { + final boolean tooManyFaceUnlockTries = + (mFailedFaceUnlockAttempts >= FAILED_FACE_UNLOCK_ATTEMPTS_BEFORE_BACKUP); + final int failedBackupAttempts = mUpdateMonitor.getFailedAttempts(); + final boolean backupIsTimedOut = + (failedBackupAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT); + if (tooManyFaceUnlockTries) Log.i(TAG, "tooManyFaceUnlockTries: " + tooManyFaceUnlockTries); + if (mUpdateMonitor.getPhoneState() == TelephonyManager.CALL_STATE_IDLE + && !mHasOverlay + && !tooManyFaceUnlockTries + && !backupIsTimedOut) { bindToFaceLock(); // Show FaceLock area, but only for a little bit so lockpattern will become visible if // FaceLock fails to start or crashes @@ -1296,7 +1310,7 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler } // Stops the FaceLock UI and exposes the backup method without unlocking - // This means either the user has cancelled out or FaceLock failed to recognize them + // This means the user has cancelled out @Override public void cancel() { if (DEBUG) Log.d(TAG, "FaceLock cancel()"); @@ -1305,6 +1319,17 @@ public class LockPatternKeyguardView extends KeyguardViewBase implements Handler mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT); } + // Stops the FaceLock UI and exposes the backup method without unlocking + // This means FaceLock failed to recognize them + @Override + public void reportFailedAttempt() { + if (DEBUG) Log.d(TAG, "FaceLock reportFailedAttempt()"); + mFailedFaceUnlockAttempts++; + hideFaceLockArea(); // Expose fallback + stopFaceLock(); + mKeyguardScreenCallback.pokeWakelock(BACKUP_LOCK_TIMEOUT); + } + // Allows the Face Unlock service to poke the wake lock to keep the lockscreen alive @Override public void pokeWakelock() { |