[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
This commit is contained in:
Maurice Lam
2015-12-14 18:03:54 -08:00
parent ffb4535d3a
commit e9d2abca86
2 changed files with 8 additions and 10 deletions

View File

@@ -248,13 +248,12 @@ public class ChooseLockGeneric extends SettingsActivity {
mPasswordConfirmed = true; mPasswordConfirmed = true;
mUserPassword = data.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD); mUserPassword = data.getStringExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD);
updatePreferencesOrFinish(); updatePreferencesOrFinish();
} else if (requestCode == ENABLE_ENCRYPTION_REQUEST } else if (requestCode == CHOOSE_LOCK_REQUEST
&& resultCode == Activity.RESULT_OK) { || requestCode == ENABLE_ENCRYPTION_REQUEST) {
getActivity().setResult(resultCode, data); if (resultCode != RESULT_CANCELED) {
finish();
} else if (requestCode == CHOOSE_LOCK_REQUEST) {
getActivity().setResult(resultCode, data); getActivity().setResult(resultCode, data);
finish(); finish();
}
} else { } else {
getActivity().setResult(Activity.RESULT_CANCELED); getActivity().setResult(Activity.RESULT_CANCELED);
finish(); finish();

View File

@@ -170,9 +170,8 @@ public class EncryptionInterstitial extends SettingsActivity {
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CHOOSE_LOCK_REQUEST && if (requestCode == CHOOSE_LOCK_REQUEST && resultCode != RESULT_CANCELED) {
resultCode == RESULT_FIRST_USER) { getActivity().setResult(resultCode, data);
getActivity().setResult(RESULT_OK, data);
finish(); finish();
} }
} }