Merge "Fix bugs around unification when no password is set"
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 3d35bc8..56c53d3 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -316,10 +316,11 @@
         }
 
         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 @@
             }
 
             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 4e3fcfd..676f61f 100644
--- a/src/com/android/settings/ProfileChallengePreferenceFragment.java
+++ b/src/com/android/settings/ProfileChallengePreferenceFragment.java
@@ -128,12 +128,16 @@
     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 @@
         @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 @@
                                             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();
+                                    }
                                 }
                             }
                     )