From e9d2abca86ef3a83fb25b9562e206e459a5b4e2b Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Mon, 14 Dec 2015 18:03:54 -0800 Subject: [PATCH] [ScreenLock] Fix result code handling 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 | 13 ++++++------- .../android/settings/EncryptionInterstitial.java | 5 ++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 114637cf064..73f8c46c482 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -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(); diff --git a/src/com/android/settings/EncryptionInterstitial.java b/src/com/android/settings/EncryptionInterstitial.java index 5cd0508fc82..be75c87b964 100644 --- a/src/com/android/settings/EncryptionInterstitial.java +++ b/src/com/android/settings/EncryptionInterstitial.java @@ -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(); } }