summaryrefslogtreecommitdiffstats
path: root/policy/src/com/android
diff options
context:
space:
mode:
authorAdrian Roos <roosa@google.com>2014-03-18 13:17:12 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2014-03-18 13:17:12 -0700
commitd3da8f711ec642322e497a493985bed5c43f597b (patch)
tree7c922c642f844ede87446b50b1bb0e6eb85b26d7 /policy/src/com/android
parent468e8e9873d764c090576d70aebf658e3e89bbfe (diff)
parentecba937b005b07d72eadfaf93a200e0b14af2980 (diff)
downloadframeworks_base-d3da8f711ec642322e497a493985bed5c43f597b.zip
frameworks_base-d3da8f711ec642322e497a493985bed5c43f597b.tar.gz
frameworks_base-d3da8f711ec642322e497a493985bed5c43f597b.tar.bz2
am ecba937b: DO NOT MERGE - Fix keyguard pattern lockout bug
* commit 'ecba937b005b07d72eadfaf93a200e0b14af2980': DO NOT MERGE - Fix keyguard pattern lockout bug
Diffstat (limited to 'policy/src/com/android')
-rw-r--r--policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java23
1 files changed, 12 insertions, 11 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java
index e114b78..82a5cdf 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPatternView.java
@@ -59,8 +59,8 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
// how many cells the user has to cross before we poke the wakelock
private static final int MIN_PATTERN_BEFORE_POKE_WAKELOCK = 2;
- private int mFailedPatternAttemptsSinceLastTimeout = 0;
- private int mTotalFailedPatternAttempts = 0;
+ private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+
private CountDownTimer mCountdownTimer = null;
private LockPatternUtils mLockPatternUtils;
private LockPatternView mLockPatternView;
@@ -101,6 +101,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
public KeyguardPatternView(Context context, AttributeSet attrs) {
super(context, attrs);
+ mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext);
}
public void setKeyguardCallback(KeyguardSecurityCallback callback) {
@@ -203,7 +204,8 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
if (mCallback.isVerifyUnlockOnly()) {
updateFooter(FooterMode.VerifyUnlocked);
} else if (mEnableFallback &&
- (mTotalFailedPatternAttempts >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT)) {
+ (mKeyguardUpdateMonitor.getFailedUnlockAttempts()
+ >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT)) {
updateFooter(FooterMode.ForgotLockPattern);
} else {
updateFooter(FooterMode.Normal);
@@ -212,7 +214,7 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
}
private void displayDefaultSecurityMessage() {
- if (KeyguardUpdateMonitor.getInstance(mContext).getMaxBiometricUnlockAttemptsReached()) {
+ if (mKeyguardUpdateMonitor.getMaxBiometricUnlockAttemptsReached()) {
mSecurityMessageDisplay.setMessage(R.string.faceunlock_multiple_failures, true);
} else {
mSecurityMessageDisplay.setMessage(R.string.kg_pattern_instructions, false);
@@ -263,20 +265,20 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
if (mLockPatternUtils.checkPattern(pattern)) {
mCallback.reportSuccessfulUnlockAttempt();
mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Correct);
- mTotalFailedPatternAttempts = 0;
mCallback.dismiss(true);
} else {
if (pattern.size() > MIN_PATTERN_BEFORE_POKE_WAKELOCK) {
mCallback.userActivity(UNLOCK_PATTERN_WAKE_INTERVAL_MS);
}
mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong);
- if (pattern.size() >= LockPatternUtils.MIN_PATTERN_REGISTER_FAIL) {
- mTotalFailedPatternAttempts++;
- mFailedPatternAttemptsSinceLastTimeout++;
+ boolean registeredAttempt =
+ pattern.size() >= LockPatternUtils.MIN_PATTERN_REGISTER_FAIL;
+ if (registeredAttempt) {
mCallback.reportFailedUnlockAttempt();
}
- if (mFailedPatternAttemptsSinceLastTimeout
- >= LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT) {
+ int attempts = mKeyguardUpdateMonitor.getFailedUnlockAttempts();
+ if (registeredAttempt &&
+ 0 == (attempts % LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT)) {
long deadline = mLockPatternUtils.setLockoutAttemptDeadline();
handleAttemptLockout(deadline);
} else {
@@ -364,7 +366,6 @@ public class KeyguardPatternView extends LinearLayout implements KeyguardSecurit
mLockPatternView.setEnabled(true);
displayDefaultSecurityMessage();
// TODO mUnlockIcon.setVisibility(View.VISIBLE);
- mFailedPatternAttemptsSinceLastTimeout = 0;
if (mEnableFallback) {
updateFooter(FooterMode.ForgotLockPattern);
} else {