OSDN Git Service

Handle pattern cooldown correctly
authorPaul Lawrence <paullawrence@google.com>
Fri, 14 Mar 2014 16:20:24 +0000 (09:20 -0700)
committerPaul Lawrence <paullawrence@google.com>
Fri, 14 Mar 2014 16:20:24 +0000 (09:20 -0700)
We need to disable pattern control when in cooldown. We also need
to hide the back button completely in pattern mode.

Bug: 13329798
Change-Id: Idefea60d95db1810d340c69cc730a286011363db

src/com/android/settings/CryptKeeper.java

index d974d00..352fbd9 100644 (file)
@@ -174,6 +174,9 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
                 // Factory reset the device.
                 sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
             } else if ((failedAttempts % COOL_DOWN_ATTEMPTS) == 0) {
+                if (mLockPatternView != null) {
+                    mLockPatternView.clearPattern();
+                }
                 mCooldown = COOL_DOWN_INTERVAL;
                 cooldown();
             } else {
@@ -183,6 +186,9 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
                 if (mPasswordEntry != null) {
                     mPasswordEntry.setEnabled(true);
                 }
+                if (mLockPatternView != null) {
+                    mLockPatternView.setEnabled(true);
+                }
             }
         }
     }
@@ -373,6 +379,7 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
                 setContentView(R.layout.crypt_keeper_pin_entry);
             } else if (type == StorageManager.CRYPT_TYPE_PATTERN) {
                 setContentView(R.layout.crypt_keeper_pattern_entry);
+                setBackFunctionality(false);
             } else {
                 setContentView(R.layout.crypt_keeper_password_entry);
             }
@@ -498,8 +505,13 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
 
         if (mCooldown <= 0) {
             // Re-enable the password entry and back presses.
-            mPasswordEntry.setEnabled(true);
-            setBackFunctionality(true);
+            if (mPasswordEntry != null) {
+                mPasswordEntry.setEnabled(true);
+                setBackFunctionality(true);
+            }
+            if (mLockPatternView != null) {
+                mLockPatternView.setEnabled(true);
+            }
             status.setText(R.string.enter_password);
         } else {
             CharSequence template = getText(R.string.crypt_keeper_cooldown);
@@ -537,6 +549,7 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList
 
             @Override
             public void onPatternDetected(List<LockPatternView.Cell> pattern) {
+                mLockPatternView.setEnabled(false);
                 new DecryptTask().execute(LockPatternUtils.patternToString(pattern));
             }