From 4688f3f642c58565f868f2b22a12de93af14b5c8 Mon Sep 17 00:00:00 2001 From: Elliot Sisteron Date: Tue, 1 Aug 2023 14:31:55 +0000 Subject: [PATCH] Fix entrerprise strings replacement for Safety Center. In ag/20641184, it looks like we changed the behavior to only replace titles when in fact some strings were replacing the summary. This causes some entries to have the summary as the title instead. Bug: 283743216 Test: Manual Change-Id: I7157fd04c32eebd89bdb825ccc3e8ef73c9075bf --- .../settings/SettingsPreferenceFragment.java | 4 +- .../privacy/PrivacyDashboardFragment.java | 11 +- .../MoreSecurityPrivacyFragment.java | 21 +-- .../safetycenter/SafetyCenterUtils.java | 152 +++++++----------- .../security/SecurityAdvancedSettings.java | 11 +- 5 files changed, 67 insertions(+), 132 deletions(-) diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java index 8c97f0244a7..278ede4b2e8 100644 --- a/src/com/android/settings/SettingsPreferenceFragment.java +++ b/src/com/android/settings/SettingsPreferenceFragment.java @@ -737,7 +737,7 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF overrideKey, () -> getString(resource))); } - protected void replaceEnterpriseStringSummary( + public void replaceEnterpriseStringSummary( String preferenceKey, String overrideKey, int resource) { Preference preference = findPreference(preferenceKey); if (preference == null) { @@ -750,7 +750,7 @@ public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceF () -> getString(resource))); } - protected void replaceEnterpriseStringTitle( + public void replaceEnterpriseStringTitle( String preferenceKey, String overrideKey, int resource) { Preference preference = findPreference(preferenceKey); if (preference == null) { diff --git a/src/com/android/settings/privacy/PrivacyDashboardFragment.java b/src/com/android/settings/privacy/PrivacyDashboardFragment.java index 4d762776a6a..04b10d2f3d1 100644 --- a/src/com/android/settings/privacy/PrivacyDashboardFragment.java +++ b/src/com/android/settings/privacy/PrivacyDashboardFragment.java @@ -28,7 +28,6 @@ import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.safetycenter.SafetyCenterManagerWrapper; import com.android.settings.safetycenter.SafetyCenterUtils; -import com.android.settings.safetycenter.SafetyCenterUtils.EnterpriseOverrideString; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -55,15 +54,7 @@ public class PrivacyDashboardFragment extends DashboardFragment { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - List privacyOverrideStrings = - SafetyCenterUtils.getEnterpriseOverrideStringForPrivacyEntries(); - for (int i = 0; i < privacyOverrideStrings.size(); i++) { - EnterpriseOverrideString overrideString = privacyOverrideStrings.get(i); - replaceEnterpriseStringTitle( - overrideString.getPreferenceKey(), - overrideString.getOverrideKey(), - overrideString.getResource()); - } + SafetyCenterUtils.replaceEnterpriseStringsForPrivacyEntries(this); } @Override diff --git a/src/com/android/settings/safetycenter/MoreSecurityPrivacyFragment.java b/src/com/android/settings/safetycenter/MoreSecurityPrivacyFragment.java index 69ec385f79c..34f8a535502 100644 --- a/src/com/android/settings/safetycenter/MoreSecurityPrivacyFragment.java +++ b/src/com/android/settings/safetycenter/MoreSecurityPrivacyFragment.java @@ -27,7 +27,6 @@ import android.provider.SearchIndexableResource; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.safetycenter.SafetyCenterUtils.EnterpriseOverrideString; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.security.LockUnificationPreferenceController; import com.android.settings.security.trustagent.TrustAgentListPreferenceController; @@ -73,24 +72,8 @@ public class MoreSecurityPrivacyFragment extends DashboardFragment { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - List privacyOverrideStrings = - SafetyCenterUtils.getEnterpriseOverrideStringForPrivacyEntries(); - for (int i = 0; i < privacyOverrideStrings.size(); i++) { - EnterpriseOverrideString overrideString = privacyOverrideStrings.get(i); - replaceEnterpriseStringTitle( - overrideString.getPreferenceKey(), - overrideString.getOverrideKey(), - overrideString.getResource()); - } - List securityOverrideStrings = - SafetyCenterUtils.getEnterpriseOverrideStringForSecurityEntries(); - for (int i = 0; i < securityOverrideStrings.size(); i++) { - EnterpriseOverrideString overrideString = securityOverrideStrings.get(i); - replaceEnterpriseStringTitle( - overrideString.getPreferenceKey(), - overrideString.getOverrideKey(), - overrideString.getResource()); - } + SafetyCenterUtils.replaceEnterpriseStringsForPrivacyEntries(this); + SafetyCenterUtils.replaceEnterpriseStringsForSecurityEntries(this); } /** see confirmPatternThenDisableAndClear */ diff --git a/src/com/android/settings/safetycenter/SafetyCenterUtils.java b/src/com/android/settings/safetycenter/SafetyCenterUtils.java index 5becbf91450..e0665302fbb 100644 --- a/src/com/android/settings/safetycenter/SafetyCenterUtils.java +++ b/src/com/android/settings/safetycenter/SafetyCenterUtils.java @@ -28,7 +28,6 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROF import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_SET_UNLOCK_LAUNCH_PICKER_TITLE; import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROFILE_UNIFY_LOCKS_SUMMARY; -import android.annotation.StringRes; import android.content.Context; import com.android.settings.R; @@ -47,26 +46,31 @@ import com.android.settingslib.core.AbstractPreferenceController; import java.util.ArrayList; import java.util.List; -/** - * A class with helper method used in logic involving safety center. - */ +/** A class with helper method used in logic involving safety center. */ public final class SafetyCenterUtils { + private static final String WORK_PROFILE_SECURITY_CATEGORY = "work_profile_category"; + private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "privacy_lock_screen_notifications"; + private static final String KEY_WORK_PROFILE_CATEGORY = + "privacy_work_profile_notifications_category"; + private static final String KEY_NOTIFICATION_WORK_PROFILE_NOTIFICATIONS = + "privacy_lock_screen_work_profile_notifications"; + /** - * Returns preference controllers related to advanced security entries. - * This is used in {@link MoreSecurityPrivacyFragment} and - * {@link com.android.settings.security.SecurityAdvancedSettings}. + * Returns preference controllers related to advanced security entries. This is used in {@link + * MoreSecurityPrivacyFragment} and {@link + * com.android.settings.security.SecurityAdvancedSettings}. */ public static List getControllersForAdvancedSecurity( Context context, - com.android.settingslib.core.lifecycle.Lifecycle lifecycle, DashboardFragment host) { - final String WORK_PROFILE_SECURITY_CATEGORY = "work_profile_category"; + com.android.settingslib.core.lifecycle.Lifecycle lifecycle, + DashboardFragment host) { final List controllers = new ArrayList<>(); controllers.add(new TrustAgentListPreferenceController(context, host, lifecycle)); final List profileSecurityControllers = new ArrayList<>(); - profileSecurityControllers.add(new ChangeProfileScreenLockPreferenceController( - context, host)); + profileSecurityControllers.add( + new ChangeProfileScreenLockPreferenceController(context, host)); profileSecurityControllers.add(new LockUnificationPreferenceController(context, host)); profileSecurityControllers.add(new FaceProfileStatusPreferenceController( context, lifecycle)); @@ -81,19 +85,15 @@ public final class SafetyCenterUtils { } /** - * Returns preference controllers for advanced privacy entries. - * This is used in {@link MoreSecurityPrivacyFragment} and {@link PrivacyDashboardFragment}. + * Returns preference controllers for advanced privacy entries. This is used in {@link + * MoreSecurityPrivacyFragment} and {@link PrivacyDashboardFragment}. */ public static List getControllersForAdvancedPrivacy( Context context, com.android.settingslib.core.lifecycle.Lifecycle lifecycle) { - final String KEY_LOCK_SCREEN_NOTIFICATIONS = "privacy_lock_screen_notifications"; - final String KEY_WORK_PROFILE_CATEGORY = - "privacy_work_profile_notifications_category"; - final String KEY_NOTIFICATION_WORK_PROFILE_NOTIFICATIONS = - "privacy_lock_screen_work_profile_notifications"; final List controllers = new ArrayList<>(); final LockScreenNotificationPreferenceController notificationController = - new LockScreenNotificationPreferenceController(context, + new LockScreenNotificationPreferenceController( + context, KEY_LOCK_SCREEN_NOTIFICATIONS, KEY_WORK_PROFILE_CATEGORY, KEY_NOTIFICATION_WORK_PROFILE_NOTIFICATIONS); @@ -104,84 +104,54 @@ public final class SafetyCenterUtils { return controllers; } - /** - * A class that stores the resource that will be overridden using preferenceKey and overrideKey. - */ - public static final class EnterpriseOverrideString { - private final String mPreferenceKey; - private final String mOverrideKey; - @StringRes private final int mResource; - - public EnterpriseOverrideString( - String preferenceKey, - String overrideKey, - @StringRes int resource) { - this.mPreferenceKey = preferenceKey; - this.mOverrideKey = overrideKey; - this.mResource = resource; - } - - @StringRes - public int getResource() { - return mResource; - } - - public String getPreferenceKey() { - return mPreferenceKey; - } - - public String getOverrideKey() { - return mOverrideKey; - } - } - - /** - * Returns a list of @{EnterpriseOverrideString} for the privacy entries. - */ - public static List getEnterpriseOverrideStringForPrivacyEntries() { - List enterpriseOverrideStrings = new ArrayList<>(); - enterpriseOverrideStrings.add( - new EnterpriseOverrideString("privacy_lock_screen_work_profile_notifications", - WORK_PROFILE_LOCKED_NOTIFICATION_TITLE, - R.string.locked_work_profile_notification_title)); - enterpriseOverrideStrings.add( - new EnterpriseOverrideString("interact_across_profiles_privacy", - CONNECTED_WORK_AND_PERSONAL_APPS_TITLE, - R.string.interact_across_profiles_title)); - enterpriseOverrideStrings.add( - new EnterpriseOverrideString("privacy_work_profile_notifications_category", - WORK_PROFILE_NOTIFICATIONS_SECTION_HEADER, - R.string.profile_section_header)); - enterpriseOverrideStrings.add(new EnterpriseOverrideString("work_policy_info", - WORK_PROFILE_PRIVACY_POLICY_INFO, R.string.work_policy_privacy_settings)); - enterpriseOverrideStrings.add(new EnterpriseOverrideString("work_policy_info", + /** Replaces relevant strings with their enterprise variants for the privacy entries. */ + public static void replaceEnterpriseStringsForPrivacyEntries( + DashboardFragment dashboardFragment) { + dashboardFragment.replaceEnterpriseStringTitle( + "privacy_lock_screen_work_profile_notifications", + WORK_PROFILE_LOCKED_NOTIFICATION_TITLE, + R.string.locked_work_profile_notification_title); + dashboardFragment.replaceEnterpriseStringTitle( + "interact_across_profiles_privacy", + CONNECTED_WORK_AND_PERSONAL_APPS_TITLE, + R.string.interact_across_profiles_title); + dashboardFragment.replaceEnterpriseStringTitle( + "privacy_work_profile_notifications_category", + WORK_PROFILE_NOTIFICATIONS_SECTION_HEADER, + R.string.profile_section_header); + dashboardFragment.replaceEnterpriseStringTitle( + "work_policy_info", + WORK_PROFILE_PRIVACY_POLICY_INFO, + R.string.work_policy_privacy_settings); + dashboardFragment.replaceEnterpriseStringSummary( + "work_policy_info", WORK_PROFILE_PRIVACY_POLICY_INFO_SUMMARY, - R.string.work_policy_privacy_settings_summary)); - return enterpriseOverrideStrings; + R.string.work_policy_privacy_settings_summary); } - /** - * Returns a list of @{EnterpriseOverrideString} for the security entries. - */ - public static List getEnterpriseOverrideStringForSecurityEntries() { - List enterpriseOverrideStrings = new ArrayList<>(); - enterpriseOverrideStrings.add(new EnterpriseOverrideString("unlock_set_or_change_profile", + /** Replaces relevant strings with their enterprise variants for the security entries. */ + public static void replaceEnterpriseStringsForSecurityEntries( + DashboardFragment dashboardFragment) { + dashboardFragment.replaceEnterpriseStringTitle( + "unlock_set_or_change_profile", WORK_PROFILE_SET_UNLOCK_LAUNCH_PICKER_TITLE, - R.string.unlock_set_unlock_launch_picker_title_profile)); - enterpriseOverrideStrings.add(new EnterpriseOverrideString("unification", + R.string.unlock_set_unlock_launch_picker_title_profile); + dashboardFragment.replaceEnterpriseStringSummary( + "unification", WORK_PROFILE_UNIFY_LOCKS_SUMMARY, - R.string.lock_settings_profile_unification_summary)); - enterpriseOverrideStrings.add(new EnterpriseOverrideString("fingerprint_settings_profile", + R.string.lock_settings_profile_unification_summary); + dashboardFragment.replaceEnterpriseStringTitle( + "fingerprint_settings_profile", FINGERPRINT_FOR_WORK, - R.string.security_settings_work_fingerprint_preference_title)); - enterpriseOverrideStrings.add(new EnterpriseOverrideString("manage_device_admin", - MANAGE_DEVICE_ADMIN_APPS, R.string.manage_device_admin)); - enterpriseOverrideStrings.add(new EnterpriseOverrideString("security_category_profile", - WORK_PROFILE_SECURITY_TITLE, R.string.lock_settings_profile_title)); - enterpriseOverrideStrings.add( - new EnterpriseOverrideString("enterprise_privacy", MANAGED_DEVICE_INFO, - R.string.enterprise_privacy_settings)); - return enterpriseOverrideStrings; + R.string.security_settings_work_fingerprint_preference_title); + dashboardFragment.replaceEnterpriseStringTitle( + "manage_device_admin", MANAGE_DEVICE_ADMIN_APPS, R.string.manage_device_admin); + dashboardFragment.replaceEnterpriseStringTitle( + "security_category_profile", + WORK_PROFILE_SECURITY_TITLE, + R.string.lock_settings_profile_title); + dashboardFragment.replaceEnterpriseStringTitle( + "enterprise_privacy", MANAGED_DEVICE_INFO, R.string.enterprise_privacy_settings); } private SafetyCenterUtils() {} diff --git a/src/com/android/settings/security/SecurityAdvancedSettings.java b/src/com/android/settings/security/SecurityAdvancedSettings.java index 61f0975e306..23265a7d3f0 100644 --- a/src/com/android/settings/security/SecurityAdvancedSettings.java +++ b/src/com/android/settings/security/SecurityAdvancedSettings.java @@ -27,7 +27,6 @@ import com.android.settings.dashboard.DashboardFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.safetycenter.SafetyCenterManagerWrapper; import com.android.settings.safetycenter.SafetyCenterUtils; -import com.android.settings.safetycenter.SafetyCenterUtils.EnterpriseOverrideString; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.security.trustagent.TrustAgentListPreferenceController; import com.android.settingslib.core.AbstractPreferenceController; @@ -54,15 +53,7 @@ public class SecurityAdvancedSettings extends DashboardFragment { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - List securityOverrideStrings = - SafetyCenterUtils.getEnterpriseOverrideStringForSecurityEntries(); - for (int i = 0; i < securityOverrideStrings.size(); i++) { - EnterpriseOverrideString overrideString = securityOverrideStrings.get(i); - replaceEnterpriseStringTitle( - overrideString.getPreferenceKey(), - overrideString.getOverrideKey(), - overrideString.getResource()); - } + SafetyCenterUtils.replaceEnterpriseStringsForSecurityEntries(this); } @Override