diff options
author | Paul Lawrence <paullawrence@google.com> | 2014-06-12 08:26:08 -0700 |
---|---|---|
committer | Paul Lawrence <paullawrence@google.com> | 2014-06-17 18:32:55 +0000 |
commit | f6cda3b176d097f8360b5c34c6ba746cd10b4004 (patch) | |
tree | 4689993616f7d4e2451f42da5875a183444978c7 /src/com/android/settings/CryptKeeper.java | |
parent | c91d4d93415b3dd0919595bb4119a44dc0a349e4 (diff) | |
download | packages_apps_Settings-f6cda3b176d097f8360b5c34c6ba746cd10b4004.zip packages_apps_Settings-f6cda3b176d097f8360b5c34c6ba746cd10b4004.tar.gz packages_apps_Settings-f6cda3b176d097f8360b5c34c6ba746cd10b4004.tar.bz2 |
Remove crypto pattern after two seconds
Currently pattern is left on after a failed attempt. This change removes
it after a timeout.
Change-Id: I77830510b17396f6e64a482816f6041af0fdc166
Diffstat (limited to 'src/com/android/settings/CryptKeeper.java')
-rw-r--r-- | src/com/android/settings/CryptKeeper.java | 76 |
1 files changed, 48 insertions, 28 deletions
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java index 4e20823..3c9411a 100644 --- a/src/com/android/settings/CryptKeeper.java +++ b/src/com/android/settings/CryptKeeper.java @@ -65,6 +65,8 @@ import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternView; import com.android.internal.widget.LockPatternView.Cell; +import static com.android.internal.widget.LockPatternView.DisplayMode; + import java.util.List; /** @@ -123,6 +125,15 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList /** Number of calls to {@link #notifyUser()} before we release the wakelock */ private int mReleaseWakeLockCountdown = 0; + // how long we wait to clear a wrong pattern + private static final int WRONG_PATTERN_CLEAR_TIMEOUT_MS = 1500; + + private Runnable mClearPatternRunnable = new Runnable() { + public void run() { + mLockPatternView.clearPattern(); + } + }; + /** * Used to propagate state through configuration changes (e.g. screen rotation) */ @@ -175,21 +186,29 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList } else if (failedAttempts == MAX_FAILED_ATTEMPTS) { // 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 { - final TextView status = (TextView) findViewById(R.id.status); - status.setText(R.string.try_again); - // Reenable the password entry - if (mPasswordEntry != null) { - mPasswordEntry.setEnabled(true); - } + // Wrong entry. Handle pattern case. if (mLockPatternView != null) { - mLockPatternView.setEnabled(true); + mLockPatternView.setDisplayMode(DisplayMode.Wrong); + mLockPatternView.removeCallbacks(mClearPatternRunnable); + mLockPatternView.postDelayed(mClearPatternRunnable, WRONG_PATTERN_CLEAR_TIMEOUT_MS); + } + if ((failedAttempts % COOL_DOWN_ATTEMPTS) == 0) { + mCooldown = COOL_DOWN_INTERVAL; + cooldown(); + } else { + final TextView status = (TextView) findViewById(R.id.status); + status.setText(R.string.try_again); + if (mLockPatternView != null) { + mLockPatternView.setDisplayMode(DisplayMode.Wrong); + } + // Reenable the password entry + if (mPasswordEntry != null) { + mPasswordEntry.setEnabled(true); + } + if (mLockPatternView != null) { + mLockPatternView.setEnabled(true); + } } } } @@ -583,25 +602,26 @@ public class CryptKeeper extends Activity implements TextView.OnEditorActionList } protected LockPatternView.OnPatternListener mChooseNewLockPatternListener = - new LockPatternView.OnPatternListener() { + new LockPatternView.OnPatternListener() { - @Override - public void onPatternStart() { - } + @Override + public void onPatternStart() { + mLockPatternView.removeCallbacks(mClearPatternRunnable); + } - @Override - public void onPatternCleared() { - } + @Override + public void onPatternCleared() { + } - @Override - public void onPatternDetected(List<LockPatternView.Cell> pattern) { - mLockPatternView.setEnabled(false); - new DecryptTask().execute(LockPatternUtils.patternToString(pattern)); - } + @Override + public void onPatternDetected(List<LockPatternView.Cell> pattern) { + mLockPatternView.setEnabled(false); + new DecryptTask().execute(LockPatternUtils.patternToString(pattern)); + } - @Override - public void onPatternCellAdded(List<Cell> pattern) { - } + @Override + public void onPatternCellAdded(List<Cell> pattern) { + } }; private void passwordEntryInit() { |