Fix Confirm/Choose Credentials strings related to profile

The messages in ConfirmDeviceCredentials have been updated to
inform the user that the pattern/pin/password to be entered is
the profile one.

The strings in the confirmation dialog when the user removes
the lock have also been updated.

Ideally we would have a parametrized approach to strings here,
but capitalization makes it a hard problem.

Bug: 26706338, 26709116
Change-Id: I9f5508d6f449f9e572d65e5b2dcb15cca23832b3
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7a5d768..9f3dddd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1042,6 +1042,8 @@
 
     <!-- Title of the dialog shown when the user removes the device lock [CHAR LIMIT=NONE] -->
     <string name="unlock_disable_frp_warning_title">Remove device protection?</string>
+    <!-- Title of the dialog shown when the user removes the profile lock [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_title_profile">Remove profile protection?</string>
 
     <!-- Content of the dialog shown when the user removes the device lock pattern [CHAR LIMIT=NONE] -->
     <string name="unlock_disable_frp_warning_content_pattern">"Device protection features will not work without your pattern."</string>
@@ -1060,6 +1062,23 @@
     <!-- Content of the dialog shown when the user removes the device lock of unknown type and the user has fingerprints enrolled [CHAR LIMIT=NONE] -->
     <string name="unlock_disable_frp_warning_content_unknown_fingerprint">"Device protection features will not work without your screen lock.<xliff:g id="empty_line">\n\n</xliff:g>Your saved fingerprints will also be removed from this device and you won't be able to unlock your phone, authorize purchases, or sign in to apps with them."</string>
 
+    <!-- Content of the dialog shown when the user removes the profile lock pattern [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_pattern_profile">"Profile protection features will not work without your pattern."</string>
+    <!-- Content of the dialog shown when the user removes the profile lock pattern and the user has fingerprints enrolled [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_pattern_fingerprint_profile">"Profile protection features will not work without your pattern.<xliff:g id="empty_line">\n\n</xliff:g>Your saved fingerprints will also be removed from this profile and you won't be able to unlock your profile, authorize purchases, or sign in to apps with them."</string>
+    <!-- Content of the dialog shown when the user removes the profile lock PIN [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_pin_profile">"Profile protection features will not work without your PIN."</string>
+    <!-- Content of the dialog shown when the user removes the profile lock PIN and the user has fingerprints enrolled [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_pin_fingerprint_profile">"Profile protection features will not work without your PIN.<xliff:g id="empty_line">\n\n</xliff:g>Your saved fingerprints will also be removed from this profile and you won't be able to unlock your profile, authorize purchases, or sign in to apps with them."</string>
+    <!-- Content of the dialog shown when the user removes the profile lock password [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_password_profile">"Profile protection features will not work without your password."</string>
+    <!-- Content of the dialog shown when the user removes the profile lock password and the user has fingerprints enrolled [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_password_fingerprint_profile">"Profile protection features will not work without your password.<xliff:g id="empty_line">\n\n</xliff:g>Your saved fingerprints will also be removed from this profile and you won't be able to unlock your profile, authorize purchases, or sign in to apps with them."</string>
+    <!-- Content of the dialog shown when the user removes the profile lock of unknown type [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_unknown_profile">"Profile protection features will not work without your screen lock."</string>
+    <!-- Content of the dialog shown when the user removes the profile lock of unknown type and the user has fingerprints enrolled [CHAR LIMIT=NONE] -->
+    <string name="unlock_disable_frp_warning_content_unknown_fingerprint_profile">"Profile protection features will not work without your screen lock.<xliff:g id="empty_line">\n\n</xliff:g>Your saved fingerprints will also be removed from this profile and you won't be able to unlock your profile, authorize purchases, or sign in to apps with them."</string>
+
     <!-- Affirmative action of the dialog shown when the user removes the device lock [CHAR LIMIT=25] -->
     <string name="unlock_disable_frp_warning_ok">Yes, remove</string>
 
@@ -2973,6 +2992,15 @@
     <!-- Message to be used to explain the user that he needs to enter his password to continue a
          particular operation. [CHAR LIMIT=70]-->
     <string name="lockpassword_confirm_your_password_generic">Enter your device password to continue.</string>
+    <!-- Message to be used to explain the user that he needs to enter his profile pattern to continue a
+         particular operation. [CHAR LIMIT=70]-->
+    <string name="lockpassword_confirm_your_pattern_generic_profile">Use your profile pattern to continue.</string>
+    <!-- Message to be used to explain the user that he needs to enter his profile PIN to continue a
+         particular operation. [CHAR LIMIT=70]-->
+    <string name="lockpassword_confirm_your_pin_generic_profile">Enter your profile PIN to continue.</string>
+    <!-- Message to be used to explain the user that he needs to enter his profile password to continue a
+         particular operation. [CHAR LIMIT=70]-->
+    <string name="lockpassword_confirm_your_password_generic_profile">Enter your profile password to continue.</string>
 
     <!-- Security & location settings screen, change security method screen instruction if user
          enters incorrect PIN [CHAR LIMIT=30] -->
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index c576897..0e6cf3b 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -581,28 +581,62 @@
             return R.string.help_url_choose_lockscreen;
         }
 
+        private int getResIdForFactoryResetProtectionWarningTitle() {
+            boolean isProfile = Utils.isManagedProfile(UserManager.get(getActivity()), mUserId);
+            return isProfile ? R.string.unlock_disable_frp_warning_title_profile
+                    : R.string.unlock_disable_frp_warning_title;
+        }
+
         private int getResIdForFactoryResetProtectionWarningMessage() {
             boolean hasFingerprints = mFingerprintManager.hasEnrolledFingerprints();
+            boolean isProfile = Utils.isManagedProfile(UserManager.get(getActivity()), mUserId);
             switch (mLockPatternUtils.getKeyguardStoredPasswordQuality(mUserId)) {
                 case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
-                    return hasFingerprints
-                            ? R.string.unlock_disable_frp_warning_content_pattern_fingerprint
-                            : R.string.unlock_disable_frp_warning_content_pattern;
+                    if (hasFingerprints && isProfile) {
+                        return R.string
+                                .unlock_disable_frp_warning_content_pattern_fingerprint_profile;
+                    } else if (hasFingerprints && !isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_pattern_fingerprint;
+                    } else if (isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_pattern_profile;
+                    } else {
+                        return R.string.unlock_disable_frp_warning_content_pattern;
+                    }
                 case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
                 case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
-                    return hasFingerprints
-                            ? R.string.unlock_disable_frp_warning_content_pin_fingerprint
-                            : R.string.unlock_disable_frp_warning_content_pin;
+                    if (hasFingerprints && isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_pin_fingerprint_profile;
+                    } else if (hasFingerprints && !isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_pin_fingerprint;
+                    } else if (isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_pin_profile;
+                    } else {
+                        return R.string.unlock_disable_frp_warning_content_pin;
+                    }
                 case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
                 case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
                 case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:
-                    return hasFingerprints
-                            ? R.string.unlock_disable_frp_warning_content_password_fingerprint
-                            : R.string.unlock_disable_frp_warning_content_password;
+                    if (hasFingerprints && isProfile) {
+                        return R.string
+                                .unlock_disable_frp_warning_content_password_fingerprint_profile;
+                    } else if (hasFingerprints && !isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_password_fingerprint;
+                    } else if (isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_password_profile;
+                    } else {
+                        return R.string.unlock_disable_frp_warning_content_password;
+                    }
                 default:
-                    return hasFingerprints
-                            ? R.string.unlock_disable_frp_warning_content_unknown_fingerprint
-                            : R.string.unlock_disable_frp_warning_content_unknown;
+                    if (hasFingerprints && isProfile) {
+                        return R.string
+                                .unlock_disable_frp_warning_content_unknown_fingerprint_profile;
+                    } else if (hasFingerprints && !isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_unknown_fingerprint;
+                    } else if (isProfile) {
+                        return R.string.unlock_disable_frp_warning_content_unknown_profile;
+                    } else {
+                        return R.string.unlock_disable_frp_warning_content_unknown;
+                    }
             }
         }
 
@@ -637,22 +671,26 @@
         }
 
         private void showFactoryResetProtectionWarningDialog(String unlockMethodToSet) {
+            int title = getResIdForFactoryResetProtectionWarningTitle();
             int message = getResIdForFactoryResetProtectionWarningMessage();
             FactoryResetProtectionWarningDialog dialog =
-                    FactoryResetProtectionWarningDialog.newInstance(message, unlockMethodToSet);
+                    FactoryResetProtectionWarningDialog.newInstance(
+                            title, message, unlockMethodToSet);
             dialog.show(getChildFragmentManager(), TAG_FRP_WARNING_DIALOG);
         }
 
         public static class FactoryResetProtectionWarningDialog extends DialogFragment {
 
+            private static final String ARG_TITLE_RES = "titleRes";
             private static final String ARG_MESSAGE_RES = "messageRes";
             private static final String ARG_UNLOCK_METHOD_TO_SET = "unlockMethodToSet";
 
-            public static FactoryResetProtectionWarningDialog newInstance(int messageRes,
-                    String unlockMethodToSet) {
+            public static FactoryResetProtectionWarningDialog newInstance(
+                    int titleRes, int messageRes, String unlockMethodToSet) {
                 FactoryResetProtectionWarningDialog frag =
                         new FactoryResetProtectionWarningDialog();
                 Bundle args = new Bundle();
+                args.putInt(ARG_TITLE_RES, titleRes);
                 args.putInt(ARG_MESSAGE_RES, messageRes);
                 args.putString(ARG_UNLOCK_METHOD_TO_SET, unlockMethodToSet);
                 frag.setArguments(args);
@@ -672,7 +710,7 @@
                 final Bundle args = getArguments();
 
                 return new AlertDialog.Builder(getActivity())
-                        .setTitle(R.string.unlock_disable_frp_warning_title)
+                        .setTitle(args.getInt(ARG_TITLE_RES))
                         .setMessage(args.getInt(ARG_MESSAGE_RES))
                         .setPositiveButton(R.string.unlock_disable_frp_warning_ok,
                                 new DialogInterface.OnClickListener() {
diff --git a/src/com/android/settings/ConfirmLockPassword.java b/src/com/android/settings/ConfirmLockPassword.java
index 00a68bf..f6347c1 100644
--- a/src/com/android/settings/ConfirmLockPassword.java
+++ b/src/com/android/settings/ConfirmLockPassword.java
@@ -26,6 +26,7 @@
 import android.os.CountDownTimer;
 import android.os.Handler;
 import android.os.SystemClock;
+import android.os.UserManager;
 import android.os.storage.StorageManager;
 import android.text.InputType;
 import android.text.TextUtils;
@@ -180,8 +181,16 @@
         }
 
         private int getDefaultDetails() {
-            return mIsAlpha ? R.string.lockpassword_confirm_your_password_generic
-                    : R.string.lockpassword_confirm_your_pin_generic;
+            boolean isProfile = Utils.isManagedProfile(
+                    UserManager.get(getActivity()), mEffectiveUserId);
+            if (mIsAlpha && !isProfile) {
+                return R.string.lockpassword_confirm_your_password_generic;
+            } else if (mIsAlpha && isProfile) {
+                return R.string.lockpassword_confirm_your_password_generic_profile;
+            } else if (!isProfile) {
+                return R.string.lockpassword_confirm_your_pin_generic;
+            }
+            return R.string.lockpassword_confirm_your_pin_generic_profile;
         }
 
         private int getErrorMessage() {
diff --git a/src/com/android/settings/ConfirmLockPattern.java b/src/com/android/settings/ConfirmLockPattern.java
index 087a0b9..5c72bd1 100644
--- a/src/com/android/settings/ConfirmLockPattern.java
+++ b/src/com/android/settings/ConfirmLockPattern.java
@@ -23,6 +23,7 @@
 import android.os.Bundle;
 import android.os.CountDownTimer;
 import android.os.SystemClock;
+import android.os.UserManager;
 import android.os.storage.StorageManager;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -279,9 +280,13 @@
                     }
                     if (mDetailsText != null) {
                         mDetailsTextView.setText(mDetailsText);
-                    } else {
+                    } else if (!Utils.isManagedProfile(
+                            UserManager.get(getActivity()), mEffectiveUserId)) {
                         mDetailsTextView.setText(
                                 R.string.lockpassword_confirm_your_pattern_generic);
+                    } else {
+                        mDetailsTextView.setText(
+                                R.string.lockpassword_confirm_your_pattern_generic_profile);
                     }
                     mErrorTextView.setText("");