From 08b2b6bfe2550b65c68ad7b4bef8283f1ff17561 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Fri, 14 Sep 2012 19:12:40 -0700 Subject: [PATCH] Fix keyguard timeout dialog messages This fixes an issue where the attempt count was incorrect. We now show the dialog *after* reporting the failed attempt. This also fixes an issue where the text wasn't being reset in the password dialog of keyguard. Fixes bugs 7170545 and 7120895 Change-Id: Iba2009705373758acca6e10bd670eb34744bece9 --- .../policy/impl/keyguard/KeyguardHostView.java | 9 +++++---- .../policy/impl/keyguard/KeyguardPasswordView.java | 13 +++++++++---- .../impl/keyguard/KeyguardStatusViewManager.java | 5 +++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java index 95f8500396cc2..955c2304d86dc 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java @@ -348,6 +348,7 @@ public class KeyguardHostView extends KeyguardViewBase { (failedAttemptsBeforeWipe - failedAttempts) : Integer.MAX_VALUE; // because DPM returns 0 if no restriction + boolean showTimeout = false; if (remainingBeforeWipe < LockPatternUtils.FAILED_ATTEMPTS_BEFORE_WIPE_GRACE) { // If we reach this code, it means the user has installed a DevicePolicyManager // that requests device wipe after N attempts. Once we get below the grace @@ -361,7 +362,7 @@ public class KeyguardHostView extends KeyguardViewBase { showWipeDialog(failedAttempts); } } else { - boolean showTimeout = + showTimeout = (failedAttempts % LockPatternUtils.FAILED_ATTEMPTS_BEFORE_TIMEOUT) == 0; if (usingPattern && mEnableFallback) { if (failedAttempts == failedAttemptWarning) { @@ -374,12 +375,12 @@ public class KeyguardHostView extends KeyguardViewBase { showTimeout = false; } } - if (showTimeout) { - showTimeoutDialog(); - } } monitor.reportFailedUnlockAttempt(); mLockPatternUtils.reportFailedPasswordAttempt(); + if (showTimeout) { + showTimeoutDialog(); + } } /** diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java index 7e9aa4370d0ee..01f7af3730273 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardPasswordView.java @@ -97,11 +97,17 @@ public class KeyguardPasswordView extends LinearLayout if (deadline != 0) { handleAttemptLockout(deadline); } else { - mNavigationManager.setMessage( - mIsAlpha ? R.string.kg_password_instructions : R.string.kg_pin_instructions); + resetState(); } } + private void resetState() { + mNavigationManager.setMessage( + mIsAlpha ? R.string.kg_password_instructions : R.string.kg_pin_instructions); + mPasswordEntry.setEnabled(true); + mKeyboardView.setEnabled(true); + } + @Override protected void onFinishInflate() { mLockPatternUtils = new LockPatternUtils(mContext); // TODO: use common one @@ -297,8 +303,7 @@ public class KeyguardPasswordView extends LinearLayout @Override public void onFinish() { - mPasswordEntry.setEnabled(true); - mKeyboardView.setEnabled(true); + resetState(); } }.start(); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java index e325f948ae59a..8d83484f89b49 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardStatusViewManager.java @@ -54,7 +54,7 @@ class KeyguardStatusViewManager { private static final int BATTERY_INFO = 15; private StatusMode mStatus; - private String mDateFormatString; + private CharSequence mDateFormatString; // Views that this class controls. // NOTE: These may be null in some LockScreen screens and should protect from NPE @@ -101,7 +101,8 @@ class KeyguardStatusViewManager { public KeyguardStatusViewManager(View view) { if (DEBUG) Log.v(TAG, "KeyguardStatusViewManager()"); mContainer = view; - mDateFormatString = getContext().getString(R.string.abbrev_wday_month_day_no_year); + mDateFormatString = getContext().getResources() + .getText(R.string.abbrev_wday_month_day_no_year); mLockPatternUtils = new LockPatternUtils(view.getContext()); mUpdateMonitor = KeyguardUpdateMonitor.getInstance(view.getContext());