[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
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 114637c..73f8c46 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -248,13 +248,12 @@
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 5cd0508..be75c87 100644
--- a/src/com/android/settings/EncryptionInterstitial.java
+++ b/src/com/android/settings/EncryptionInterstitial.java
@@ -170,9 +170,8 @@
@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();
}
}