summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ChooseLockPattern.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/ChooseLockPattern.java
parentec36780b6aae94d5a23b2f635bd3ba811aef6ae0 (diff)
downloadpackages_apps_Settings-bf9ac6b4fb6428d0194a5163181b30cccaedb8eb.tar.gz
packages_apps_Settings-bf9ac6b4fb6428d0194a5163181b30cccaedb8eb.tar.bz2
packages_apps_Settings-bf9ac6b4fb6428d0194a5163181b30cccaedb8eb.zip
Migrate settings UI to use async security check
Bug: 20697812 Change-Id: Ieb0090ddb61198a60abb1e34ff9c6e8476c33789
Diffstat (limited to 'src/com/android/settings/ChooseLockPattern.java')
-rw-r--r--src/com/android/settings/ChooseLockPattern.java55
1 files changed, 50 insertions, 5 deletions
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index 99e8d2490..5d2444967 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -19,6 +19,7 @@ package com.android.settings;
import com.android.internal.logging.MetricsLogger;
import com.google.android.collect.Lists;
import com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient;
+import com.android.internal.widget.LockPatternChecker;
import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView;
import com.android.internal.widget.LockPatternView.Cell;
@@ -30,6 +31,7 @@ import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.UserHandle;
import android.view.KeyEvent;
@@ -350,6 +352,7 @@ public class ChooseLockPattern extends SettingsActivity {
};
private ChooseLockSettingsHelper mChooseLockSettingsHelper;
+ private AsyncTask<?, ?, ?> mPendingLockCheck;
private static final String KEY_UI_STAGE = "uiStage";
private static final String KEY_PATTERN_CHOICE = "chosenPattern";
@@ -432,6 +435,21 @@ public class ChooseLockPattern extends SettingsActivity {
mDone = false;
}
+ @Override
+ public void onResume() {
+ super.onResume();
+ mLockPatternView.enableInput();
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ if (mPendingLockCheck != null) {
+ mPendingLockCheck.cancel(false);
+ mPendingLockCheck = null;
+ }
+ }
+
protected Intent getRedactionInterstitialIntent(Context context) {
return RedactionInterstitial.createStartIntent(context);
}
@@ -623,15 +641,42 @@ public class ChooseLockPattern extends SettingsActivity {
}
if (mHasChallenge) {
- Intent intent = new Intent();
- byte[] token = utils.verifyPattern(mChosenPattern, mChallenge,
- UserHandle.myUserId());
- intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
- getActivity().setResult(RESULT_FINISHED, intent);
+ startVerifyPattern(utils);
+ return;
} else {
getActivity().setResult(RESULT_FINISHED);
}
+ doFinish();
+ }
+
+ private void startVerifyPattern(LockPatternUtils utils) {
+ mLockPatternView.disableInput();
+ if (mPendingLockCheck != null) {
+ mPendingLockCheck.cancel(false);
+ }
+
+ mPendingLockCheck = LockPatternChecker.verifyPattern(
+ utils,
+ mChosenPattern,
+ mChallenge,
+ UserHandle.myUserId(),
+ new LockPatternChecker.OnVerifyCallback() {
+ @Override
+ public void onVerified(byte[] token) {
+ mLockPatternView.enableInput();
+ mPendingLockCheck = null;
+
+ Intent intent = new Intent();
+ intent.putExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);
+ getActivity().setResult(RESULT_FINISHED, intent);
+ doFinish();
+ }
+ });
+ }
+
+ private void doFinish() {
getActivity().finish();
mDone = true;
}