Fix lockpattern weirdness
- Pass back correct result when pressing cancel.
- Make sure the start the interstitial activity after checking so
we don't preempt the async thread we are still running.
Bug: 21621918
Change-Id: I5558089abf02a00a268050fc48894cea86692fa0
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index ad76bfd..baee599 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -463,8 +463,6 @@
mLockPatternView.clearPattern();
updateStage(Stage.Introduction);
} else if (mUiStage.leftMode == LeftButtonMode.Cancel) {
- // They are canceling the entire wizard
- getActivity().setResult(RESULT_FINISHED);
getActivity().finish();
} else {
throw new IllegalStateException("left footer button pressed, but stage of " +
@@ -639,21 +637,18 @@
utils.setVisiblePatternEnabled(true, UserHandle.myUserId());
}
- if (!wasSecureBefore) {
- startActivity(getRedactionInterstitialIntent(getActivity()));
- }
-
if (mHasChallenge) {
- startVerifyPattern(utils);
- return;
+ startVerifyPattern(utils, wasSecureBefore);
} else {
+ if (!wasSecureBefore) {
+ startActivity(getRedactionInterstitialIntent(getActivity()));
+ }
getActivity().setResult(RESULT_FINISHED);
+ doFinish();
}
-
- doFinish();
}
- private void startVerifyPattern(LockPatternUtils utils) {
+ private void startVerifyPattern(LockPatternUtils utils, final boolean wasSecureBefore) {
mLockPatternView.disableInput();
if (mPendingLockCheck != null) {
mPendingLockCheck.cancel(false);
@@ -674,6 +669,10 @@
mLockPatternView.enableInput();
mPendingLockCheck = null;
+ if (!wasSecureBefore) {
+ startActivity(getRedactionInterstitialIntent(getActivity()));
+ }
+
Intent intent = new Intent();
intent.putExtra(
ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token);