OSDN Git Service

[ScreenLock] Fix result code handling
authorMaurice Lam <yukl@google.com>
Tue, 15 Dec 2015 02:03:54 +0000 (18:03 -0800)
committerMaurice Lam <yukl@google.com>
Tue, 15 Dec 2015 19:56:45 +0000 (11:56 -0800)
Modify the back stack and result code propagation in the screen lock
scenarios.

- EncryptionInterstitial now propagates the result of ChooseLock*
  request instead of always returning RESULT_OK.
- ChooseLockGeneric now treats CHOOSE_LOCK_REQUEST and
  ENABLE_ENCRYPTION_REQUEST the same (since encryption can be a proxy
  for ChooseLock*). This means ChooseLockGeneric will now stay on
  back stack when going back from ChooseLock*, just like the case
  (indirectly) through EncryptionInterstitial.

Bug: 26177240
Change-Id: Id7f1256dcbff00d552a3e7db60c285f53f1e63e6

src/com/android/settings/ChooseLockGeneric.java
src/com/android/settings/EncryptionInterstitial.java

index 114637c..73f8c46 100644 (file)
@@ -248,13 +248,12 @@ public class ChooseLockGeneric extends SettingsActivity {
                 mPasswordConfirmed = true;
                 mUserPassword = data.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
                 updatePreferencesOrFinish();
-            } else if (requestCode == ENABLE_ENCRYPTION_REQUEST
-                    && resultCode == Activity.RESULT_OK) {
-                getActivity().setResult(resultCode, data);
-                finish();
-            } else if (requestCode == CHOOSE_LOCK_REQUEST) {
-                getActivity().setResult(resultCode, data);
-                finish();
+            } else if (requestCode == CHOOSE_LOCK_REQUEST
+                    || requestCode == ENABLE_ENCRYPTION_REQUEST) {
+                if (resultCode != RESULT_CANCELED) {
+                    getActivity().setResult(resultCode, data);
+                    finish();
+                }
             } else {
                 getActivity().setResult(Activity.RESULT_CANCELED);
                 finish();
index 5cd0508..be75c87 100644 (file)
@@ -170,9 +170,8 @@ public class EncryptionInterstitial extends SettingsActivity {
         @Override
         public void onActivityResult(int requestCode, int resultCode, Intent data) {
             super.onActivityResult(requestCode, resultCode, data);
-            if (requestCode == CHOOSE_LOCK_REQUEST &&
-                    resultCode == RESULT_FIRST_USER) {
-                getActivity().setResult(RESULT_OK, data);
+            if (requestCode == CHOOSE_LOCK_REQUEST && resultCode != RESULT_CANCELED) {
+                getActivity().setResult(resultCode, data);
                 finish();
             }
         }