summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ChooseLockPassword.java
diff options
context:
space:
mode:
authorXiyuan Xia <xiyuan@google.com>2015-05-05 16:04:00 -0700
committerXiyuan Xia <xiyuan@google.com>2015-05-13 15:32:45 +0000
commitbf9ac6b4fb6428d0194a5163181b30cccaedb8eb (patch)
tree107983f13fac415136f2234664934c85a8761c32 /src/com/android/settings/ChooseLockPassword.java
parentec36780b6aae94d5a23b2f635bd3ba811aef6ae0 (diff)
downloadpackages_apps_Settings-bf9ac6b4fb6428d0194a5163181b30cccaedb8eb.zip
packages_apps_Settings-bf9ac6b4fb6428d0194a5163181b30cccaedb8eb.tar.gz
packages_apps_Settings-bf9ac6b4fb6428d0194a5163181b30cccaedb8eb.tar.bz2
Migrate settings UI to use async security check
Bug: 20697812 Change-Id: Ieb0090ddb61198a60abb1e34ff9c6e8476c33789
Diffstat (limited to 'src/com/android/settings/ChooseLockPassword.java')
-rw-r--r--src/com/android/settings/ChooseLockPassword.java58
1 files changed, 48 insertions, 10 deletions
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 0817eeb..1338ac7 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -17,6 +17,7 @@
package com.android.settings;
import com.android.internal.logging.MetricsLogger;
+import com.android.internal.widget.LockPatternChecker;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.PasswordEntryKeyboardHelper;
import com.android.internal.widget.PasswordEntryKeyboardView;
@@ -28,6 +29,7 @@ import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.content.Intent;
import android.inputmethodservice.KeyboardView;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -134,6 +136,7 @@ public class ChooseLockPassword extends SettingsActivity {
private int mPasswordMinNumeric = 0;
private int mPasswordMinNonLetter = 0;
private LockPatternUtils mLockPatternUtils;
+ private AsyncTask<?, ?, ?> mPendingLockCheck;
private int mRequestedQuality = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC;
private ChooseLockSettingsHelper mChooseLockSettingsHelper;
private Stage mUiStage = Stage.Introduction;
@@ -312,12 +315,17 @@ public class ChooseLockPassword extends SettingsActivity {
public void onResume() {
super.onResume();
updateStage(mUiStage);
+ mPasswordEntry.setEnabled(true);
mKeyboardView.requestFocus();
}
@Override
public void onPause() {
mHandler.removeMessages(MSG_SHOW_ERROR);
+ if (mPendingLockCheck != null) {
+ mPendingLockCheck.cancel(false);
+ mPendingLockCheck = null;
+ }
super.onPause();
}
@@ -489,19 +497,12 @@ public class ChooseLockPassword extends SettingsActivity {
UserHandle.myUserId());
if (mHasChallenge) {
- Intent intent = new Intent();
- byte[] token = mLockPatternUtils.verifyPassword(pin, mChallenge,
- UserHandle.myUserId());
- intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
- getActivity().setResult(RESULT_FINISHED, intent);
+ startVerifyPassword(pin, wasSecureBefore);
+ return;
} else {
getActivity().setResult(RESULT_FINISHED);
}
- getActivity().finish();
- mDone = true;
- if (!wasSecureBefore) {
- startActivity(getRedactionInterstitialIntent(getActivity()));
- }
+ finishConfirmStage(wasSecureBefore);
} else {
CharSequence tmp = mPasswordEntry.getText();
if (tmp != null) {
@@ -515,6 +516,43 @@ public class ChooseLockPassword extends SettingsActivity {
}
}
+ private void startVerifyPassword(final String pin, final boolean wasSecureBefore) {
+ mPasswordEntry.setEnabled(false);
+ setNextEnabled(false);
+ if (mPendingLockCheck != null) {
+ mPendingLockCheck.cancel(false);
+ }
+
+ mPendingLockCheck = LockPatternChecker.verifyPassword(
+ mLockPatternUtils,
+ pin,
+ mChallenge,
+ UserHandle.myUserId(),
+ new LockPatternChecker.OnVerifyCallback() {
+ @Override
+ public void onVerified(byte[] token) {
+ mPasswordEntry.setEnabled(true);
+ setNextEnabled(true);
+ mPendingLockCheck = null;
+
+ Intent intent = new Intent();
+ intent.putExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN,
+ token);
+ getActivity().setResult(RESULT_FINISHED, intent);
+ finishConfirmStage(wasSecureBefore);
+ }
+ });
+ }
+
+ private void finishConfirmStage(boolean wasSecureBefore) {
+ getActivity().finish();
+ mDone = true;
+ if (!wasSecureBefore) {
+ startActivity(getRedactionInterstitialIntent(getActivity()));
+ }
+ }
+
protected void setNextEnabled(boolean enabled) {
mNextButton.setEnabled(enabled);
}