OSDN Git Service

Prevent saving credentials multiple times
authorAdrian Roos <roosa@google.com>
Wed, 24 Sep 2014 13:28:12 +0000 (15:28 +0200)
committerAdrian Roos <roosa@google.com>
Wed, 24 Sep 2014 13:28:12 +0000 (15:28 +0200)
Bug: 17610563
Change-Id: Ibb51889fc8085f8fad5e36481af2419576cda34a

src/com/android/settings/ChooseLockPassword.java
src/com/android/settings/ChooseLockPattern.java

index 84758d8..d04f6ac 100644 (file)
@@ -96,6 +96,7 @@ 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;
@@ -229,6 +230,7 @@ public class ChooseLockPassword extends SettingsActivity {
                     updateStage(mUiStage);
                 }
             }
+            mDone = false;
             if (activity instanceof SettingsActivity) {
                 final SettingsActivity sa = (SettingsActivity) activity;
                 int id = mIsAlphaMode ? R.string.lockpassword_choose_your_password_header
@@ -389,6 +391,8 @@ public class ChooseLockPassword extends SettingsActivity {
         }
 
         private void handleNext() {
+            if (mDone) return;
+
             final String pin = mPasswordEntry.getText().toString();
             if (TextUtils.isEmpty(pin)) {
                 return;
@@ -409,6 +413,7 @@ public class ChooseLockPassword extends SettingsActivity {
                     mLockPatternUtils.saveLockPassword(pin, mRequestedQuality, isFallback);
                     getActivity().setResult(RESULT_FINISHED);
                     getActivity().finish();
+                    mDone = true;
                     startActivity(RedactionInterstitial.createStartIntent(getActivity()));
                 } else {
                     CharSequence tmp = mPasswordEntry.getText();
index 9b3ce0a..c218c8d 100644 (file)
@@ -290,6 +290,7 @@ public class ChooseLockPattern extends SettingsActivity {
         }
 
         private Stage mUiStage = Stage.Introduction;
+        private boolean mDone = false;
 
         private Runnable mClearPatternRunnable = new Runnable() {
             public void run() {
@@ -363,6 +364,7 @@ public class ChooseLockPattern extends SettingsActivity {
                 }
                 updateStage(Stage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]);
             }
+            mDone = false;
             return view;
         }
 
@@ -519,6 +521,7 @@ public class ChooseLockPattern extends SettingsActivity {
         }
 
         private void saveChosenPatternAndFinish() {
+            if (mDone) return;
             LockPatternUtils utils = mChooseLockSettingsHelper.utils();
             final boolean lockVirgin = !utils.isPatternEverChosen();
 
@@ -533,6 +536,7 @@ public class ChooseLockPattern extends SettingsActivity {
 
             getActivity().setResult(RESULT_FINISHED);
             getActivity().finish();
+            mDone = true;
             startActivity(RedactionInterstitial.createStartIntent(getActivity()));
         }
     }