Add missing settings strings.

Also re-enable and fix tests.

Test: manual
Fixes: 226183482
Fixes: 218799125
Fixes: 219375624

Change-Id: I9605f1f4e2e834baf63e015e96639567c5481b5f
diff --git a/src/com/android/settings/MonitoringCertInfoActivity.java b/src/com/android/settings/MonitoringCertInfoActivity.java
index eadebc1..5c15eb3 100644
--- a/src/com/android/settings/MonitoringCertInfoActivity.java
+++ b/src/com/android/settings/MonitoringCertInfoActivity.java
@@ -16,12 +16,16 @@
 
 package com.android.settings;
 
+import static android.app.admin.DevicePolicyResources.Strings.Settings.DEVICE_OWNER_INSTALLED_CERTIFICATE_AUTHORITY_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_INSTALLED_CERTIFICATE_AUTHORITY_WARNING;
+
 import android.app.Activity;
 import android.app.admin.DevicePolicyManager;
 import android.content.DialogInterface;
 import android.content.DialogInterface.OnClickListener;
 import android.content.DialogInterface.OnDismissListener;
 import android.content.Intent;
+import android.icu.text.MessageFormat;
 import android.os.Bundle;
 import android.os.UserHandle;
 import android.provider.Settings;
@@ -30,6 +34,10 @@
 
 import com.android.settingslib.RestrictedLockUtils;
 
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
 /**
  * Activity that shows a dialog explaining that a CA cert is allowing someone to monitor network
  * traffic. This activity should be launched for the user into which the CA cert is installed
@@ -71,12 +79,30 @@
         builder.setOnDismissListener(this);
 
         if (dpm.getProfileOwnerAsUser(mUserId) != null) {
-            builder.setMessage(getResources().getQuantityString(R.plurals.ssl_ca_cert_info_message,
-                    numberOfCertificates, dpm.getProfileOwnerNameAsUser(mUserId)));
+            MessageFormat msgFormat = new MessageFormat(
+                    dpm.getResources().getString(
+                            WORK_PROFILE_INSTALLED_CERTIFICATE_AUTHORITY_WARNING,
+                            () -> getString(R.string.ssl_ca_cert_info_message)),
+                    Locale.getDefault());
+
+            Map<String, Object> arguments = new HashMap<>();
+            arguments.put("numberOfCertificates", numberOfCertificates);
+            arguments.put("orgName", dpm.getProfileOwnerNameAsUser(mUserId));
+
+            builder.setMessage(msgFormat.format(arguments));
         } else if (dpm.getDeviceOwnerComponentOnCallingUser() != null) {
-            builder.setMessage(getResources().getQuantityString(
-                    R.plurals.ssl_ca_cert_info_message_device_owner, numberOfCertificates,
-                    dpm.getDeviceOwnerNameOnAnyUser()));
+            MessageFormat msgFormat = new MessageFormat(
+                    dpm.getResources()
+                            .getString(DEVICE_OWNER_INSTALLED_CERTIFICATE_AUTHORITY_WARNING,
+                                    () -> getResources().getString(
+                                            R.string.ssl_ca_cert_info_message_device_owner)),
+                    Locale.getDefault());
+
+            Map<String, Object> arguments = new HashMap<>();
+            arguments.put("numberOfCertificates", numberOfCertificates);
+            arguments.put("orgName", dpm.getDeviceOwnerNameOnAnyUser());
+
+            builder.setMessage(msgFormat.format(arguments));
         } else  {
             // Consumer case.  Show scary warning.
             builder.setIcon(android.R.drawable.stat_notify_error);
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index d3e1c49..8c97f02 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.app.Dialog;
+import android.app.admin.DevicePolicyManager;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -70,6 +71,7 @@
 
     private static final int ORDER_FIRST = -1;
 
+    protected DevicePolicyManager mDevicePolicyManager;
     private SettingsDialogFragment mDialogFragment;
     // Cache the content resolver for async callbacks
     private ContentResolver mContentResolver;
@@ -135,6 +137,7 @@
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
+        mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class);
         if (icicle != null) {
             mPreferenceHighlighted = icicle.getBoolean(SAVE_HIGHLIGHTED_KEY);
         }
@@ -728,4 +731,35 @@
         final Activity activity = getActivity();
         return activity == null || activity.isFinishing() || activity.isDestroyed();
     }
+
+    protected void replaceEnterprisePreferenceScreenTitle(String overrideKey, int resource) {
+        getActivity().setTitle(mDevicePolicyManager.getResources().getString(
+                overrideKey, () -> getString(resource)));
+    }
+
+    protected void replaceEnterpriseStringSummary(
+            String preferenceKey, String overrideKey, int resource) {
+        Preference preference = findPreference(preferenceKey);
+        if (preference == null) {
+            Log.d(TAG, "Could not find enterprise preference " + preferenceKey);
+            return;
+        }
+
+        preference.setSummary(
+                mDevicePolicyManager.getResources().getString(overrideKey,
+                        () -> getString(resource)));
+    }
+
+    protected void replaceEnterpriseStringTitle(
+            String preferenceKey, String overrideKey, int resource) {
+        Preference preference = findPreference(preferenceKey);
+        if (preference == null) {
+            Log.d(TAG, "Could not find enterprise preference " + preferenceKey);
+            return;
+        }
+
+        preference.setTitle(
+                mDevicePolicyManager.getResources().getString(overrideKey,
+                        () -> getString(resource)));
+    }
 }
diff --git a/src/com/android/settings/accounts/ManagedProfileSettings.java b/src/com/android/settings/accounts/ManagedProfileSettings.java
index 001a2cd..9c4d855 100644
--- a/src/com/android/settings/accounts/ManagedProfileSettings.java
+++ b/src/com/android/settings/accounts/ManagedProfileSettings.java
@@ -18,6 +18,7 @@
 
 import static android.app.admin.DevicePolicyResources.Strings.Settings.CROSS_PROFILE_CALENDAR_SUMMARY;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.CROSS_PROFILE_CALENDAR_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_PROFILE_SETTINGS_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONTACT_SEARCH_SUMMARY;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_CONTACT_SEARCH_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SETTING;
@@ -84,6 +85,8 @@
         super.onCreate(icicle);
         mManagedProfileBroadcastReceiver = new ManagedProfileBroadcastReceiver();
         mManagedProfileBroadcastReceiver.register(getActivity());
+        replaceEnterprisePreferenceScreenTitle(
+                MANAGED_PROFILE_SETTINGS_TITLE, R.string.managed_profile_settings_title);
         replaceEnterpriseStringTitle("work_mode",
                 WORK_PROFILE_SETTING, R.string.work_mode_label);
         replaceEnterpriseStringTitle("contacts_search",
diff --git a/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java b/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java
index cb8b73d..a130bb2 100644
--- a/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java
+++ b/src/com/android/settings/applications/autofill/PasswordsPreferenceController.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.applications.autofill;
 
+import static android.app.admin.DevicePolicyResources.Strings.Settings.AUTO_SYNC_PERSONAL_DATA;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.AUTO_SYNC_WORK_DATA;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.service.autofill.AutofillService.EXTRA_RESULT;
 
@@ -114,6 +116,11 @@
         super.displayPreference(screen);
         final PreferenceGroup group = screen.findPreference(getPreferenceKey());
         addPasswordPreferences(screen.getContext(), getUser(), group);
+
+        replaceEnterpriseStringTitle(screen, "auto_sync_personal_account_data",
+                AUTO_SYNC_PERSONAL_DATA, R.string.account_settings_menu_auto_sync_personal);
+        replaceEnterpriseStringTitle(screen, "auto_sync_work_account_data",
+                AUTO_SYNC_WORK_DATA, R.string.account_settings_menu_auto_sync_work);
     }
 
     private void addPasswordPreferences(
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java
index 3819124..2258bf1 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminSettings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.applications.specialaccess.deviceadmin;
 
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGE_DEVICE_ADMIN_APPS;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.NO_DEVICE_ADMINS;
 
 import android.app.settings.SettingsEnums;
@@ -37,7 +38,8 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        // TODO: Replace PreferenceScreen title manage_device_admin/MANAGE_DEVICE_ADMIN_APPS
+        replaceEnterprisePreferenceScreenTitle(
+                MANAGE_DEVICE_ADMIN_APPS, R.string.manage_device_admin);
         replaceEnterpriseStringTitle("device_admin_footer",
                 NO_DEVICE_ADMINS, R.string.no_device_admins);
     }
diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java
index e316125..b59928f 100644
--- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java
+++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesDetails.java
@@ -18,6 +18,7 @@
 import static android.app.admin.DevicePolicyResources.Strings.Settings.APP_CAN_ACCESS_PERSONAL_DATA;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.APP_CAN_ACCESS_PERSONAL_PERMISSIONS;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECTED_APPS_SHARE_PERMISSIONS_AND_DATA;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECTED_WORK_AND_PERSONAL_APPS_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECT_APPS_DIALOG_SUMMARY;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.CONNECT_APPS_DIALOG_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.HOW_TO_DISCONNECT_APPS;
@@ -81,7 +82,6 @@
 
     private Context mContext;
     private CrossProfileApps mCrossProfileApps;
-    private DevicePolicyManager mDevicePolicyManager;
     private UserManager mUserManager;
     private RestrictedSwitchPreference mSwitchPref;
     private LayoutPreference mHeader;
@@ -101,7 +101,6 @@
 
         mContext = getContext();
         mCrossProfileApps = mContext.getSystemService(CrossProfileApps.class);
-        mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
         mUserManager = mContext.getSystemService(UserManager.class);
         mPackageManager = mContext.getPackageManager();
 
@@ -115,6 +114,8 @@
 
         addPreferencesFromResource(R.xml.interact_across_profiles_permissions_details);
 
+        replaceEnterprisePreferenceScreenTitle(CONNECTED_WORK_AND_PERSONAL_APPS_TITLE,
+                R.string.interact_across_profiles_title);
         replaceEnterpriseStringSummary("interact_across_profiles_summary_1",
                 CONNECTED_APPS_SHARE_PERMISSIONS_AND_DATA,
                 R.string.interact_across_profiles_summary_1);
@@ -147,19 +148,6 @@
         logPageLaunchMetrics();
     }
 
-    private void replaceEnterpriseStringSummary(
-            String preferenceKey, String overrideKey, int resource) {
-        Preference preference = findPreference(preferenceKey);
-        if (preference == null) {
-            Log.d(TAG, "Could not find enterprise preference " + preferenceKey);
-            return;
-        }
-
-        preference.setSummary(
-                mDevicePolicyManager.getResources().getString(overrideKey,
-                        () -> getString(resource)));
-    }
-
     private void maybeShowExtraSummary() {
         Preference extraSummary = findPreference(INTERACT_ACROSS_PROFILE_EXTRA_SUMMARY_KEY);
         if (extraSummary == null) {
diff --git a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
index 6ce0869..ba0d9af 100644
--- a/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
+++ b/src/com/android/settings/applications/specialaccess/interactacrossprofiles/InteractAcrossProfilesSettings.java
@@ -53,7 +53,6 @@
     private Context mContext;
     private PackageManager mPackageManager;
     private UserManager mUserManager;
-    private DevicePolicyManager mDevicePolicyManager;
     private CrossProfileApps mCrossProfileApps;
     private IconDrawableFactory mIconDrawableFactory;
 
@@ -66,7 +65,6 @@
         mUserManager = mContext.getSystemService(UserManager.class);
         mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
         mCrossProfileApps = mContext.getSystemService(CrossProfileApps.class);
-        mDevicePolicyManager = mContext.getSystemService(DevicePolicyManager.class);
     }
 
     @Override
@@ -76,6 +74,9 @@
         final PreferenceScreen screen = getPreferenceScreen();
         screen.removeAll();
 
+        replaceEnterprisePreferenceScreenTitle(CONNECTED_WORK_AND_PERSONAL_APPS_TITLE,
+                R.string.interact_across_profiles_title);
+
         final ArrayList<Pair<ApplicationInfo, UserHandle>> crossProfileApps =
                 collectConfigurableApps(mPackageManager, mUserManager, mCrossProfileApps);
 
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index aaa9b3d..378d55e 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -79,7 +79,6 @@
     private DashboardTilePlaceholderPreferenceController mPlaceholderPreferenceController;
     private boolean mListeningToCategoryChange;
     private List<String> mSuppressInjectedTileKeys;
-    private DevicePolicyManager mDevicePolicyManager;
 
     @Override
     public void onAttach(Context context) {
@@ -154,7 +153,6 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        mDevicePolicyManager = getSystemService(DevicePolicyManager.class);
         // Set ComparisonCallback so we get better animation when list changes.
         getPreferenceManager().setPreferenceComparisonCallback(
                 new PreferenceManager.SimplePreferenceComparisonCallback());
@@ -548,30 +546,4 @@
             resolver.unregisterContentObserver(observer);
         });
     }
-
-    protected void replaceEnterpriseStringTitle(
-            String preferenceKey, String overrideKey, int resource) {
-        Preference preference = findPreference(preferenceKey);
-        if (preference == null) {
-            Log.d(TAG, "Could not find enterprise preference " + preferenceKey);
-            return;
-        }
-
-        preference.setTitle(
-                mDevicePolicyManager.getResources().getString(overrideKey,
-                        () -> getString(resource)));
-    }
-
-    protected void replaceEnterpriseStringSummary(
-            String preferenceKey, String overrideKey, int resource) {
-        Preference preference = findPreference(preferenceKey);
-        if (preference == null) {
-            Log.d(TAG, "Could not find enterprise preference " + preferenceKey);
-            return;
-        }
-
-        preference.setSummary(
-                mDevicePolicyManager.getResources().getString(overrideKey,
-                        () -> getString(resource)));
-    }
 }
diff --git a/src/com/android/settings/display/TimeoutListPreference.java b/src/com/android/settings/display/TimeoutListPreference.java
index 0b2d18f..5079cca 100644
--- a/src/com/android/settings/display/TimeoutListPreference.java
+++ b/src/com/android/settings/display/TimeoutListPreference.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.display;
 
+import static android.app.admin.DevicePolicyResources.Strings.Settings.OTHER_OPTIONS_DISABLED_BY_ADMIN;
+
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
 import android.app.Dialog;
@@ -24,7 +26,9 @@
 import android.content.DialogInterface;
 import android.util.AttributeSet;
 import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.View;
+import android.widget.TextView;
 
 import androidx.appcompat.app.AlertDialog.Builder;
 
@@ -52,13 +56,26 @@
             DialogInterface.OnClickListener listener) {
         super.onPrepareDialogBuilder(builder, listener);
         if (mAdmin != null) {
-            builder.setView(R.layout.admin_disabled_other_options_footer);
-            // TODO: replace Text on textview with admin_disabled_other_options
+            updateTextOnDialog(builder);
         } else {
             builder.setView(null);
         }
     }
 
+    private void updateTextOnDialog(Builder builder) {
+        LayoutInflater inflater = getContext().getSystemService(LayoutInflater.class);
+        DevicePolicyManager devicePolicyManager = getContext()
+                .getSystemService(DevicePolicyManager.class);
+        View v = inflater.inflate(R.layout.admin_disabled_other_options_footer, null);
+        builder.setView(v);
+        TextView textView = v.findViewById(R.id.admin_disabled_other_options_text);
+        String replacementText = devicePolicyManager.getResources().getString(
+                OTHER_OPTIONS_DISABLED_BY_ADMIN, () -> null);
+        if (replacementText != null) {
+            textView.setText(replacementText);
+        }
+    }
+
     @Override
     protected void onDialogCreated(Dialog dialog) {
         super.onDialogCreated(dialog);
diff --git a/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java b/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
index e5484db..cf1b8a3 100644
--- a/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
+++ b/src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
@@ -52,7 +52,8 @@
     }
 
     private String getEnterprisePrivacyNone() {
-        return mContext.getSystemService(DevicePolicyManager.class).getResources()
+        return ((DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
+                .getResources()
                 .getString(ADMIN_ACTION_NONE,
                         () -> mContext.getString(R.string.enterprise_privacy_none));
     }
diff --git a/src/com/android/settings/enterprise/ApplicationListFragment.java b/src/com/android/settings/enterprise/ApplicationListFragment.java
index a82789b..38a5c6f 100644
--- a/src/com/android/settings/enterprise/ApplicationListFragment.java
+++ b/src/com/android/settings/enterprise/ApplicationListFragment.java
@@ -16,6 +16,8 @@
 
 package com.android.settings.enterprise;
 
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_APPS_COUNT_ESTIMATED;
+
 import android.Manifest;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
@@ -47,6 +49,10 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+
+        replaceEnterpriseStringTitle("enterprise_privacy_apps_footer",
+                ADMIN_ACTION_APPS_COUNT_ESTIMATED,
+                R.string.enterprise_privacy_apps_count_estimation_info);
     }
 
     @Override
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
index 1aad544..92e4f4a 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
@@ -16,11 +16,39 @@
 
 package com.android.settings.enterprise;
 
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_ACCESS_CAMERA;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_ACCESS_LOCATION;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_ACCESS_MICROPHONE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_APPS_INSTALLED;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_SET_CURRENT_INPUT_METHOD;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_SET_DEFAULT_APPS;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_ACTION_SET_HTTP_PROXY;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_LOCK_DEVICE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_APPS_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_BUG_REPORT_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_NETWORK_LOGS_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_SECURITY_LOGS_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_USAGE_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_SEE_WORK_DATA_WARNING;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CAN_WIPE_DEVICE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_DEVICE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_WORK_PROFILE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ALWAYS_ON_VPN_WORK_PROFILE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CA_CERTS_PERSONAL_PROFILE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CA_CERTS_WORK_PROFILE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.CHANGES_BY_ORGANIZATION_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.ENTERPRISE_PRIVACY_FOOTER;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.INFORMATION_SEEN_BY_ORGANIZATION_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGED_DEVICE_INFO;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.YOUR_ACCESS_TO_THIS_DEVICE_TITLE;
+
 import android.app.settings.SettingsEnums;
 import android.content.Context;
+import android.os.Bundle;
 import android.provider.SearchIndexableResource;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.settings.R;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
@@ -46,6 +74,70 @@
     }
 
     @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        replaceEnterprisePreferenceScreenTitle(
+                MANAGED_DEVICE_INFO, R.string.enterprise_privacy_settings);
+
+        replaceEnterpriseStringTitle("exposure_category",
+                INFORMATION_SEEN_BY_ORGANIZATION_TITLE,
+                R.string.enterprise_privacy_exposure_category);
+        replaceEnterpriseStringTitle("enterprise_privacy_enterprise_data",
+                ADMIN_CAN_SEE_WORK_DATA_WARNING, R.string.enterprise_privacy_enterprise_data);
+        replaceEnterpriseStringTitle("enterprise_privacy_installed_packages",
+                ADMIN_CAN_SEE_APPS_WARNING, R.string.enterprise_privacy_installed_packages);
+        replaceEnterpriseStringTitle("enterprise_privacy_usage_stats",
+                ADMIN_CAN_SEE_USAGE_WARNING, R.string.enterprise_privacy_usage_stats);
+        replaceEnterpriseStringTitle("network_logs",
+                ADMIN_CAN_SEE_NETWORK_LOGS_WARNING, R.string.enterprise_privacy_network_logs);
+        replaceEnterpriseStringTitle("bug_reports",
+                ADMIN_CAN_SEE_BUG_REPORT_WARNING, R.string.enterprise_privacy_bug_reports);
+        replaceEnterpriseStringTitle("security_logs",
+                ADMIN_CAN_SEE_SECURITY_LOGS_WARNING, R.string.enterprise_privacy_security_logs);
+        replaceEnterpriseStringTitle("exposure_changes_category",
+                CHANGES_BY_ORGANIZATION_TITLE,
+                R.string.enterprise_privacy_exposure_changes_category);
+        replaceEnterpriseStringTitle("number_enterprise_installed_packages",
+                ADMIN_ACTION_APPS_INSTALLED,
+                R.string.enterprise_privacy_enterprise_installed_packages);
+        replaceEnterpriseStringTitle("enterprise_privacy_number_location_access_packages",
+                ADMIN_ACTION_ACCESS_LOCATION, R.string.enterprise_privacy_location_access);
+        replaceEnterpriseStringTitle("enterprise_privacy_number_microphone_access_packages",
+                ADMIN_ACTION_ACCESS_MICROPHONE, R.string.enterprise_privacy_microphone_access);
+        replaceEnterpriseStringTitle("enterprise_privacy_number_camera_access_packages",
+                ADMIN_ACTION_ACCESS_CAMERA, R.string.enterprise_privacy_camera_access);
+        replaceEnterpriseStringTitle("number_enterprise_set_default_apps",
+                ADMIN_ACTION_SET_DEFAULT_APPS,
+                R.string.enterprise_privacy_enterprise_set_default_apps);
+        replaceEnterpriseStringTitle("always_on_vpn_managed_profile",
+                ALWAYS_ON_VPN_WORK_PROFILE, R.string.enterprise_privacy_always_on_vpn_work);
+        replaceEnterpriseStringTitle("input_method",
+                ADMIN_ACTION_SET_CURRENT_INPUT_METHOD, R.string.enterprise_privacy_input_method);
+        replaceEnterpriseStringTitle("global_http_proxy",
+                ADMIN_ACTION_SET_HTTP_PROXY, R.string.enterprise_privacy_global_http_proxy);
+        replaceEnterpriseStringTitle("ca_certs_current_user",
+                CA_CERTS_PERSONAL_PROFILE, R.string.enterprise_privacy_ca_certs_personal);
+        replaceEnterpriseStringTitle("ca_certs_managed_profile",
+                CA_CERTS_WORK_PROFILE, R.string.enterprise_privacy_ca_certs_work);
+        replaceEnterpriseStringTitle("device_access_category",
+                YOUR_ACCESS_TO_THIS_DEVICE_TITLE,
+                R.string.enterprise_privacy_device_access_category);
+        replaceEnterpriseStringTitle("enterprise_privacy_lock_device",
+                ADMIN_CAN_LOCK_DEVICE, R.string.enterprise_privacy_lock_device);
+        replaceEnterpriseStringTitle("enterprise_privacy_wipe_device",
+                ADMIN_CAN_WIPE_DEVICE, R.string.enterprise_privacy_wipe_device);
+        replaceEnterpriseStringTitle("failed_password_wipe_current_user",
+                ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_DEVICE,
+                R.string.enterprise_privacy_failed_password_wipe_device);
+        replaceEnterpriseStringTitle("failed_password_wipe_managed_profile",
+                ADMIN_CONFIGURED_FAILED_PASSWORD_WIPE_WORK_PROFILE,
+                R.string.enterprise_privacy_failed_password_wipe_work);
+        replaceEnterpriseStringTitle("enterprise_privacy_footer",
+                ENTERPRISE_PRIVACY_FOOTER, R.string.enterprise_privacy_header);
+    }
+
+    @Override
     public void onDetach() {
         mPrivacySettingsPreference = null;
         super.onDetach();
diff --git a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
index 1c024e3..1ede911 100644
--- a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
@@ -18,6 +18,8 @@
 
 import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
 import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.LOCK_SCREEN_HIDE_WORK_NOTIFICATION_CONTENT;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.LOCK_SCREEN_SHOW_WORK_NOTIFICATION_CONTENT;
 
 import android.app.admin.DevicePolicyManager;
 import android.content.ContentResolver;
@@ -158,8 +160,13 @@
         ArrayList<CharSequence> entries = new ArrayList<>();
         ArrayList<CharSequence> values = new ArrayList<>();
 
-        String summaryShowEntry = mContext.getString(
-                R.string.lock_screen_notifications_summary_show_profile);
+        DevicePolicyManager devicePolicyManager =
+                mContext.getSystemService(DevicePolicyManager.class);
+
+        String summaryShowEntry = devicePolicyManager
+                .getResources().getString(LOCK_SCREEN_SHOW_WORK_NOTIFICATION_CONTENT,
+                        () -> mContext.getString(
+                                R.string.lock_screen_notifications_summary_show_profile));
         String summaryShowEntryValue = Integer.toString(
                 R.string.lock_screen_notifications_summary_show_profile);
         entries.add(summaryShowEntry);
@@ -168,8 +175,10 @@
                 KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
 
         if (mSecureProfile) {
-            String summaryHideEntry = mContext.getString(
-                    R.string.lock_screen_notifications_summary_hide_profile);
+            String summaryHideEntry = devicePolicyManager
+                    .getResources().getString(LOCK_SCREEN_HIDE_WORK_NOTIFICATION_CONTENT,
+                            () -> mContext.getString(
+                                    R.string.lock_screen_notifications_summary_hide_profile));
             String summaryHideEntryValue = Integer.toString(
                     R.string.lock_screen_notifications_summary_hide_profile);
             entries.add(summaryHideEntry);
diff --git a/src/com/android/settings/notification/RedactionInterstitial.java b/src/com/android/settings/notification/RedactionInterstitial.java
index d6cf0c6..f243250 100644
--- a/src/com/android/settings/notification/RedactionInterstitial.java
+++ b/src/com/android/settings/notification/RedactionInterstitial.java
@@ -18,11 +18,14 @@
 
 import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
 import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.LOCK_SCREEN_HIDE_WORK_NOTIFICATION_CONTENT;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.LOCK_SCREEN_SHOW_WORK_NOTIFICATION_CONTENT;
 import static android.provider.Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS;
 import static android.provider.Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS;
 
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
+import android.app.admin.DevicePolicyManager;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.Intent;
@@ -115,6 +118,7 @@
         @Override
         public void onViewCreated(View view, Bundle savedInstanceState) {
             super.onViewCreated(view, savedInstanceState);
+            DevicePolicyManager devicePolicyManager = getSystemService(DevicePolicyManager.class);
             mRadioGroup = (RadioGroup) view.findViewById(R.id.radio_group);
             mShowAllButton = (RestrictedRadioButton) view.findViewById(R.id.show_all);
             mRedactSensitiveButton =
@@ -126,9 +130,15 @@
             if (UserManager.get(getContext()).isManagedProfile(mUserId)) {
                 ((TextView) view.findViewById(R.id.sud_layout_description))
                         .setText(R.string.lock_screen_notifications_interstitial_message_profile);
-                mShowAllButton.setText(R.string.lock_screen_notifications_summary_show_profile);
+                mShowAllButton.setText(devicePolicyManager
+                        .getResources().getString(LOCK_SCREEN_SHOW_WORK_NOTIFICATION_CONTENT,
+                                () -> getString(
+                                        R.string.lock_screen_notifications_summary_show_profile)));
                 mRedactSensitiveButton
-                        .setText(R.string.lock_screen_notifications_summary_hide_profile);
+                        .setText(devicePolicyManager.getResources().getString(
+                                LOCK_SCREEN_HIDE_WORK_NOTIFICATION_CONTENT,
+                                () -> getString(
+                                        R.string.lock_screen_notifications_summary_hide_profile)));
 
                 ((RadioButton) view.findViewById(R.id.hide_all)).setVisibility(View.GONE);
             }
diff --git a/src/com/android/settings/notification/SoundWorkSettings.java b/src/com/android/settings/notification/SoundWorkSettings.java
index eb7f05e..2cb4215 100644
--- a/src/com/android/settings/notification/SoundWorkSettings.java
+++ b/src/com/android/settings/notification/SoundWorkSettings.java
@@ -19,6 +19,7 @@
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_ALARM_RINGTONE_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_NOTIFICATION_RINGTONE_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_RINGTONE_TITLE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SOUND_SETTINGS_SECTION_HEADER;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_USE_PERSONAL_SOUNDS_SUMMARY;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_USE_PERSONAL_SOUNDS_TITLE;
 
@@ -70,6 +71,8 @@
                 mRequestPreference = findPreference(selectedPreference);
             }
         }
+        replaceEnterprisePreferenceScreenTitle(
+                WORK_PROFILE_SOUND_SETTINGS_SECTION_HEADER, R.string.sound_work_settings);
         replaceEnterpriseStringTitle("work_use_personal_sounds",
                 WORK_PROFILE_USE_PERSONAL_SOUNDS_TITLE, R.string.work_use_personal_sounds_title);
         replaceEnterpriseStringSummary("work_use_personal_sounds",
@@ -79,7 +82,7 @@
                 WORK_PROFILE_RINGTONE_TITLE, R.string.work_ringtone_title);
         replaceEnterpriseStringTitle("work_alarm_ringtone",
                 WORK_PROFILE_ALARM_RINGTONE_TITLE, R.string.work_alarm_ringtone_title);
-        replaceEnterpriseStringTitle("work_notification",
+        replaceEnterpriseStringTitle("work_notification_ringtone",
                 WORK_PROFILE_NOTIFICATION_RINGTONE_TITLE,
                 R.string.work_notification_ringtone_title);
     }
diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java
index 841d1f9..e340b50 100644
--- a/src/com/android/settings/password/ChooseLockGeneric.java
+++ b/src/com/android/settings/password/ChooseLockGeneric.java
@@ -22,6 +22,7 @@
 import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_LOW;
 import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_MEDIUM;
 import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.LOCK_SETTINGS_NEW_PROFILE_LOCK_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_IT_ADMIN_CANT_RESET_SCREEN_LOCK;
 import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SCREEN_LOCK_SETUP_MESSAGE;
 
@@ -347,7 +348,9 @@
                 if (updateExistingLock) {
                     getActivity().setTitle(R.string.lock_settings_picker_update_profile_lock_title);
                 } else {
-                    getActivity().setTitle(R.string.lock_settings_picker_new_profile_lock_title);
+                    getActivity().setTitle(mDpm.getResources().getString(
+                            LOCK_SETTINGS_NEW_PROFILE_LOCK_TITLE,
+                            () -> getString(R.string.lock_settings_picker_new_profile_lock_title)));
                 }
             } else {
                 updateExistingLock = mLockPatternUtils.isSecure(mUserId);
diff --git a/src/com/android/settings/password/ForgotPasswordActivity.java b/src/com/android/settings/password/ForgotPasswordActivity.java
index 657139e..d9db335 100644
--- a/src/com/android/settings/password/ForgotPasswordActivity.java
+++ b/src/com/android/settings/password/ForgotPasswordActivity.java
@@ -17,6 +17,7 @@
 package com.android.settings.password;
 
 import static android.app.admin.DevicePolicyResources.Strings.Settings.FORGOT_PASSWORD_TEXT;
+import static android.app.admin.DevicePolicyResources.Strings.Settings.FORGOT_PASSWORD_TITLE;
 
 import android.app.Activity;
 import android.app.admin.DevicePolicyManager;
@@ -64,6 +65,9 @@
                         .build()
         );
 
+        layout.setHeaderText(devicePolicyManager.getResources().getString(
+                FORGOT_PASSWORD_TITLE, () -> getString(R.string.forgot_password_title)));
+
         UserManager.get(this).requestQuietModeEnabled(
                 false, UserHandle.of(userId), UserManager.QUIET_MODE_DISABLE_DONT_ASK_CREDENTIAL);
     }
diff --git a/src/com/android/settings/security/SecurityAdvancedSettingsController.java b/src/com/android/settings/security/SecurityAdvancedSettingsController.java
index 904141d..22a482d 100644
--- a/src/com/android/settings/security/SecurityAdvancedSettingsController.java
+++ b/src/com/android/settings/security/SecurityAdvancedSettingsController.java
@@ -16,6 +16,9 @@
 
 package com.android.settings.security;
 
+import static android.app.admin.DevicePolicyResources.Strings.Settings.MORE_SECURITY_SETTINGS_WORK_PROFILE_SUMMARY;
+
+import android.app.admin.DevicePolicyManager;
 import android.content.Context;
 import android.content.pm.CrossProfileApps;
 
@@ -29,11 +32,13 @@
 public class SecurityAdvancedSettingsController extends BasePreferenceController {
 
     private final CrossProfileApps mCrossProfileApps;
+    private final DevicePolicyManager mDevicePolicyManager;
 
     public SecurityAdvancedSettingsController(Context context, String preferenceKey) {
         super(context, preferenceKey);
 
         mCrossProfileApps = context.getSystemService(CrossProfileApps.class);
+        mDevicePolicyManager = context.getSystemService(DevicePolicyManager.class);
     }
 
     @Override
@@ -44,8 +49,10 @@
     @Override
     public CharSequence getSummary() {
         return isWorkProfilePresent()
-                ? mContext.getResources().getString(
-                        R.string.security_advanced_settings_work_profile_settings_summary)
+                ? mDevicePolicyManager.getResources().getString(
+                        MORE_SECURITY_SETTINGS_WORK_PROFILE_SUMMARY,
+                    () -> mContext.getResources().getString(
+                            R.string.security_advanced_settings_work_profile_settings_summary))
                 : mContext.getResources().getString(
                         R.string.security_advanced_settings_no_work_profile_settings_summary);
     }