Update Work Challenge check to take userId

Change-Id: I239bca2dc55066c717d74487105646df22768d93
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 2641ad2..65e6c27 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -486,6 +486,7 @@
             if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
                 mChooseLockSettingsHelper.utils().clearLock(mUserId);
                 mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId);
+                mLockPatternUtils.setSeparateProfileChallengeEnabled(mUserId, false);
                 removeAllFingerprintTemplatesAndFinish();
                 getActivity().setResult(Activity.RESULT_OK);
             } else {
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index eacf1ab..6739475 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -670,12 +670,11 @@
         private String mChosenPassword;
         private String mCurrentPassword;
         private int mRequestedQuality;
-        private int mUserId;
 
         public void start(LockPatternUtils utils, boolean required,
                 boolean hasChallenge, long challenge,
                 String chosenPassword, String currentPassword, int requestedQuality, int userId) {
-            prepare(utils, required, hasChallenge, challenge);
+            prepare(utils, required, hasChallenge, challenge, userId);
 
             mChosenPassword = chosenPassword;
             mCurrentPassword = currentPassword;
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index e20db93..93ffa95 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -671,12 +671,11 @@
         private List<LockPatternView.Cell> mChosenPattern;
         private String mCurrentPattern;
         private boolean mLockVirgin;
-        private int mUserId;
 
         public void start(LockPatternUtils utils, boolean credentialRequired,
                 boolean hasChallenge, long challenge,
                 List<LockPatternView.Cell> chosenPattern, String currentPattern, int userId) {
-            prepare(utils, credentialRequired, hasChallenge, challenge);
+            prepare(utils, credentialRequired, hasChallenge, challenge, userId);
 
             mCurrentPattern = currentPattern;
             mChosenPattern = chosenPattern;
diff --git a/src/com/android/settings/SaveChosenLockWorkerBase.java b/src/com/android/settings/SaveChosenLockWorkerBase.java
index a40871a..4d8964a 100644
--- a/src/com/android/settings/SaveChosenLockWorkerBase.java
+++ b/src/com/android/settings/SaveChosenLockWorkerBase.java
@@ -20,7 +20,6 @@
 import android.content.Intent;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.UserHandle;
 
 import com.android.internal.widget.LockPatternUtils;
 
@@ -38,6 +37,7 @@
     protected boolean mHasChallenge;
     protected long mChallenge;
     protected boolean mWasSecureBefore;
+    protected int mUserId;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -57,12 +57,15 @@
     }
 
     protected void prepare(LockPatternUtils utils, boolean credentialRequired,
-            boolean hasChallenge, long challenge) {
+            boolean hasChallenge, long challenge, int userId) {
         mUtils = utils;
+        mUserId = userId;
 
         mHasChallenge = hasChallenge;
         mChallenge = challenge;
-        mWasSecureBefore = mUtils.isSecure(UserHandle.myUserId());
+        // This will be a no-op for non managed profiles.
+        mUtils.setSeparateProfileChallengeEnabled(mUserId, true);
+        mWasSecureBefore = mUtils.isSecure(mUserId);
 
         mUtils.setCredentialRequiredToDecrypt(credentialRequired);
 
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 9ffa1f2..1221624 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -223,7 +223,7 @@
                     mProfileChallengeUserId = profile.id;
                 }
             }
-            if (LockPatternUtils.isSeparateWorkChallengeEnabled()) {
+            if (mLockPatternUtils.isSeparateProfileChallengeAllowed(mProfileChallengeUserId)) {
                 addPreferencesFromResource(R.xml.security_settings_profile);
             }
         }
@@ -776,11 +776,21 @@
             result.add(sir);
 
             final UserManager um = UserManager.get(context);
-            boolean hasChildProfile = um.getProfiles(UserHandle.myUserId()).size() > 1;
-            if (hasChildProfile && LockPatternUtils.isSeparateWorkChallengeEnabled()) {
-                sir = new SearchIndexableResource(context);
-                sir.xmlResId = R.xml.security_settings_profile;
-                result.add(sir);
+            List<UserInfo> profiles = um.getProfiles(UserHandle.myUserId());
+            int numProfiles = profiles.size();
+            if (numProfiles > 1) {
+                int profileUserId = -1;
+                for (int i = 0; i < numProfiles; ++i) {
+                    UserInfo profile = profiles.get(i);
+                    if (profile.id != UserHandle.myUserId()) {
+                        profileUserId = profile.id;
+                    }
+                }
+                if (lockPatternUtils.isSeparateProfileChallengeAllowed(profileUserId)) {
+                    sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.security_settings_profile;
+                    result.add(sir);
+                }
             }
 
             if (um.isAdminUser()) {