From 7402b2514358e02a0e0adde982b6deb8552dc28a Mon Sep 17 00:00:00 2001 From: Clara Bayarri Date: Wed, 20 Jan 2016 15:39:59 +0000 Subject: [PATCH] Fix bugs around unification when no password is set - When in a unified state, selecting the work lock to be "none" caused a security exception - When the work lock was set to "none", unifying didn't work - When in a unified state, the work lock type selection screen showed "none" as the current type instead of the device lock type Bug: 26577247 Change-Id: I853d77186e23b6a458eaa6c1047942a7eefddc9c --- .../android/settings/ChooseLockGeneric.java | 6 ++++-- .../ProfileChallengePreferenceFragment.java | 20 ++++++++++++++----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 3d35bc8ab0f..56c53d3fe36 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -316,10 +316,11 @@ public class ChooseLockGeneric extends SettingsActivity { } private String getKeyForCurrent() { - if (mLockPatternUtils.isLockScreenDisabled(mUserId)) { + final int credentialOwner = mUserManager.getCredentialOwnerProfile(mUserId); + if (mLockPatternUtils.isLockScreenDisabled(credentialOwner)) { return KEY_UNLOCK_SET_OFF; } - switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(mUserId)) { + switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(credentialOwner)) { case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: return KEY_UNLOCK_SET_PATTERN; case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: @@ -521,6 +522,7 @@ public class ChooseLockGeneric extends SettingsActivity { } if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { + mLockPatternUtils.setSeparateProfileChallengeEnabled(mUserId, true); mChooseLockSettingsHelper.utils().clearLock(mUserId); mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId); mLockPatternUtils.setSeparateProfileChallengeEnabled(mUserId, false); diff --git a/src/com/android/settings/ProfileChallengePreferenceFragment.java b/src/com/android/settings/ProfileChallengePreferenceFragment.java index 4e3fcfd20aa..676f61f3954 100644 --- a/src/com/android/settings/ProfileChallengePreferenceFragment.java +++ b/src/com/android/settings/ProfileChallengePreferenceFragment.java @@ -128,12 +128,16 @@ public class ProfileChallengePreferenceFragment extends SettingsPreferenceFragme public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == UNIFY_LOCK_METHOD_REQUEST && resultCode == Activity.RESULT_OK) { - mLockPatternUtils.clearLock(mProfileUserId); - mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileUserId, false); + unifyLocks(); return; } } + private void unifyLocks() { + mLockPatternUtils.clearLock(mProfileUserId); + mLockPatternUtils.setSeparateProfileChallengeEnabled(mProfileUserId, false); + } + @Override public void onResume() { super.onResume(); @@ -260,6 +264,8 @@ public class ProfileChallengePreferenceFragment extends SettingsPreferenceFragme @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Bundle args = getArguments(); + final ProfileChallengePreferenceFragment parentFragment = + ((ProfileChallengePreferenceFragment) getParentFragment()); return new AlertDialog.Builder(getActivity()) .setTitle(R.string.lock_settings_profile_unification_dialog_title) .setMessage(R.string.lock_settings_profile_unification_dialog_body) @@ -271,9 +277,13 @@ public class ProfileChallengePreferenceFragment extends SettingsPreferenceFragme R.string.lock_settings_profile_screen_lock_title); ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper( - getActivity(), getParentFragment()); - helper.launchConfirmationActivity(UNIFY_LOCK_METHOD_REQUEST, - title, true, args.getInt(ARG_USER_ID)); + getActivity(), parentFragment); + if (!helper.launchConfirmationActivity( + UNIFY_LOCK_METHOD_REQUEST, + title, true, args.getInt(ARG_USER_ID))) { + parentFragment.unifyLocks(); + parentFragment.createPreferenceHierarchy(); + } } } )