diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/settings/ChooseLockPassword.java | 63 | ||||
-rw-r--r-- | src/com/android/settings/ChooseLockPattern.java | 58 |
2 files changed, 74 insertions, 47 deletions
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java index 64aaaca..cb924cb 100644 --- a/src/com/android/settings/ChooseLockPassword.java +++ b/src/com/android/settings/ChooseLockPassword.java @@ -128,6 +128,7 @@ public class ChooseLockPassword extends SettingsActivity { private static final String KEY_CURRENT_PASSWORD = "current_password"; private String mCurrentPassword; + private String mChosenPassword; private boolean mHasChallenge; private long mChallenge; private TextView mPasswordEntry; @@ -145,7 +146,6 @@ public class ChooseLockPassword extends SettingsActivity { private int mRequestedQuality = DevicePolicyManager.PASSWORD_QUALITY_NUMERIC; private ChooseLockSettingsHelper mChooseLockSettingsHelper; private Stage mUiStage = Stage.Introduction; - private boolean mDone = false; private TextView mHeaderText; private String mFirstPin; private KeyboardView mKeyboardView; @@ -302,7 +302,6 @@ public class ChooseLockPassword extends SettingsActivity { mCurrentPassword = savedInstanceState.getString(KEY_CURRENT_PASSWORD); } } - mDone = false; if (activity instanceof SettingsActivity) { final SettingsActivity sa = (SettingsActivity) activity; int id = mIsAlphaMode ? R.string.lockpassword_choose_your_password_header @@ -478,37 +477,54 @@ public class ChooseLockPassword extends SettingsActivity { return null; } - public void handleNext() { - if (mDone) return; + private class SaveChosenPasswordAndFinish extends AsyncTask<Void, Void, Void> { + boolean mWasSecureBefore; + + @Override + public void onPreExecute() { + mWasSecureBefore = mLockPatternUtils.isSecure(UserHandle.myUserId()); + final boolean required = getActivity().getIntent().getBooleanExtra( + EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true); + mLockPatternUtils.setCredentialRequiredToDecrypt(required); + } + + @Override + public Void doInBackground(Void... v) { + mLockPatternUtils.saveLockPassword(mChosenPassword, mCurrentPassword, mRequestedQuality, + UserHandle.myUserId()); + return null; + } - final String pin = mPasswordEntry.getText().toString(); - if (TextUtils.isEmpty(pin)) { + @Override + public void onPostExecute(Void v) { + if (mHasChallenge) { + startVerifyPassword(mChosenPassword, mWasSecureBefore); + return; + } else { + getActivity().setResult(RESULT_FINISHED); + } + finishConfirmStage(mWasSecureBefore); + } + } + + + public void handleNext() { + mChosenPassword = mPasswordEntry.getText().toString(); + if (TextUtils.isEmpty(mChosenPassword)) { return; } String errorMsg = null; if (mUiStage == Stage.Introduction) { - errorMsg = validatePassword(pin); + errorMsg = validatePassword(mChosenPassword); if (errorMsg == null) { - mFirstPin = pin; + mFirstPin = mChosenPassword; mPasswordEntry.setText(""); updateStage(Stage.NeedToConfirm); } } else if (mUiStage == Stage.NeedToConfirm) { - if (mFirstPin.equals(pin)) { - boolean wasSecureBefore = mLockPatternUtils.isSecure(UserHandle.myUserId()); - final boolean required = getActivity().getIntent().getBooleanExtra( - EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true); - mLockPatternUtils.setCredentialRequiredToDecrypt(required); - mLockPatternUtils.saveLockPassword(pin, mCurrentPassword, mRequestedQuality, - UserHandle.myUserId()); - - if (mHasChallenge) { - startVerifyPassword(pin, wasSecureBefore); - return; - } else { - getActivity().setResult(RESULT_FINISHED); - } - finishConfirmStage(wasSecureBefore); + if (mFirstPin.equals(mChosenPassword)) { + setNextEnabled(false); + new SaveChosenPasswordAndFinish().execute(); } else { CharSequence tmp = mPasswordEntry.getText(); if (tmp != null) { @@ -557,7 +573,6 @@ public class ChooseLockPassword extends SettingsActivity { private void finishConfirmStage(boolean wasSecureBefore) { getActivity().finish(); - mDone = true; if (!wasSecureBefore) { Intent intent = getRedactionInterstitialIntent(getActivity()); if (intent != null) { diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java index 087a23e..026fd46 100644 --- a/src/com/android/settings/ChooseLockPattern.java +++ b/src/com/android/settings/ChooseLockPattern.java @@ -346,7 +346,6 @@ public class ChooseLockPattern extends SettingsActivity { } private Stage mUiStage = Stage.Introduction; - private boolean mDone = false; private Runnable mClearPatternRunnable = new Runnable() { public void run() { @@ -435,7 +434,6 @@ public class ChooseLockPattern extends SettingsActivity { } updateStage(Stage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]); } - mDone = false; } @Override @@ -483,7 +481,7 @@ public class ChooseLockPattern extends SettingsActivity { throw new IllegalStateException("expected ui stage " + Stage.ChoiceConfirmed + " when button is " + RightButtonMode.Confirm); } - saveChosenPatternAndFinish(); + new SaveChosenPatternAndFinish().execute(); } else if (mUiStage.rightMode == RightButtonMode.Ok) { if (mUiStage != Stage.HelpScreen) { throw new IllegalStateException("Help screen is only mode with ok button, " @@ -623,34 +621,49 @@ public class ChooseLockPattern extends SettingsActivity { mLockPatternView.postDelayed(mClearPatternRunnable, WRONG_PATTERN_CLEAR_TIMEOUT_MS); } - private void saveChosenPatternAndFinish() { - if (mDone) return; - LockPatternUtils utils = mChooseLockSettingsHelper.utils(); - final boolean lockVirgin = !utils.isPatternEverChosen(UserHandle.myUserId()); + private class SaveChosenPatternAndFinish extends AsyncTask<Void,Void,Void> { + boolean mLockVirgin; + LockPatternUtils mUtils; + boolean mWasSecureBefore; - boolean wasSecureBefore = utils.isSecure(UserHandle.myUserId()); + @Override + protected void onPreExecute(){ + setRightButtonEnabled(false); + mUtils = mChooseLockSettingsHelper.utils(); + mLockVirgin = !mUtils.isPatternEverChosen(UserHandle.myUserId()); - final boolean required = getActivity().getIntent().getBooleanExtra( + mWasSecureBefore = mUtils.isSecure(UserHandle.myUserId()); + + final boolean required = getActivity().getIntent().getBooleanExtra( EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true); - utils.setCredentialRequiredToDecrypt(required); - utils.saveLockPattern(mChosenPattern, mCurrentPattern, UserHandle.myUserId()); + mUtils.setCredentialRequiredToDecrypt(required); + } - if (lockVirgin) { - utils.setVisiblePatternEnabled(true, UserHandle.myUserId()); + @Override + protected Void doInBackground(Void... params){ + mUtils.saveLockPattern(mChosenPattern, mCurrentPattern, UserHandle.myUserId()); + return null; } - if (mHasChallenge) { - startVerifyPattern(utils, wasSecureBefore); - } else { - if (!wasSecureBefore) { - Intent intent = getRedactionInterstitialIntent(getActivity()); - if (intent != null) { - startActivity(intent); + @Override + protected void onPostExecute(Void param) { + if (mLockVirgin) { + mUtils.setVisiblePatternEnabled(true, UserHandle.myUserId()); + } + + if (mHasChallenge) { + startVerifyPattern(mUtils, mWasSecureBefore); + } else { + if (!mWasSecureBefore) { + Intent intent = getRedactionInterstitialIntent(getActivity()); + if (intent != null) { + startActivity(intent); + } } + getActivity().setResult(RESULT_FINISHED); + doFinish(); } - getActivity().setResult(RESULT_FINISHED); - doFinish(); } } @@ -693,7 +706,6 @@ public class ChooseLockPattern extends SettingsActivity { private void doFinish() { getActivity().finish(); - mDone = true; } } } |