Merge "Change string of switchbar and installed service category title"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1f2add0..7f6ea05 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4685,7 +4685,7 @@
     <!-- Title for the accessibility preference category of interaction control services and settings. [CHAR LIMIT=50] -->
     <string name="interaction_control_category_title">Interaction controls</string>
     <!-- Title for the accessibility preference category of services downloaded by the user. [CHAR LIMIT=50] -->
-    <string name="user_installed_services_category_title">Downloaded services</string>
+    <string name="user_installed_services_category_title">Downloaded apps</string>
     <!-- Title for the accessibility preference category of settings considered to be experimental, meaning they might be changed or removed in the future. [CHAR LIMIT=50] -->
     <string name="experimental_category_title">Experimental</string>
     <!-- Title for feature flags dashboard where developers can turn on experimental features [CHAR LIMIT=50] -->
@@ -4809,7 +4809,7 @@
     <!-- Title for accessibility preference for configuring touch feedback vibrations. -->
     <string name="accessibility_touch_vibration_title">Touch feedback</string>
     <!-- Used in the acessibilty service settings to control turning on/off the service entirely -->
-    <string name="accessibility_service_master_switch_title">Use service</string>
+    <string name="accessibility_service_master_switch_title">Use <xliff:g id="accessibility_app_name" example="TalkBack">%1$s</xliff:g></string>
     <!-- Used in the Color correction settings screen to control turning on/off the feature entirely -->
     <string name="accessibility_daltonizer_master_switch_title">Use color correction</string>
     <!-- Used in the Captions settings screen to control turning on/off the feature entirely -->
diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
index 95a2b76..ab855bc 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
@@ -34,6 +34,7 @@
 
 import com.android.internal.accessibility.AccessibilityShortcutController;
 import com.android.settings.R;
+import com.android.settings.widget.SwitchBar;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settingslib.search.Indexable;
 import com.android.settingslib.accessibility.AccessibilityUtils;
@@ -126,6 +127,13 @@
         updatePreferences();
     }
 
+    @Override
+    protected void updateSwitchBarText(SwitchBar switchBar) {
+        final String switchBarText = getString(R.string.accessibility_service_master_switch_title,
+                getString(R.string.accessibility_global_gesture_preference_title));
+        switchBar.setSwitchBarText(switchBarText, switchBarText);
+    }
+
     private void updatePreferences() {
         ContentResolver cr = getContentResolver();
         Context context = getContext();
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index 1556bec..f30af54 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -44,6 +44,7 @@
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
 import com.android.settings.password.ConfirmDeviceCredentialActivity;
+import com.android.settings.widget.SwitchBar;
 import com.android.settings.widget.ToggleSwitch;
 import com.android.settings.widget.ToggleSwitch.OnBeforeCheckedChangeListener;
 import com.android.settingslib.accessibility.AccessibilityUtils;
@@ -211,6 +212,15 @@
         }
     }
 
+    @Override
+    protected void updateSwitchBarText(SwitchBar switchBar) {
+        final AccessibilityServiceInfo info = getAccessibilityServiceInfo();
+        final String switchBarText = (info == null) ? "" :
+                getString(R.string.accessibility_service_master_switch_title,
+                info.getResolveInfo().loadLabel(getPackageManager()));
+        switchBar.setSwitchBarText(switchBarText, switchBarText);
+    }
+
     private void updateSwitchBarToggleSwitch() {
         final boolean checked = AccessibilityUtils.getEnabledServicesFromSettings(getActivity())
                 .contains(mComponentName);
diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
index df72cff..45dd39e 100644
--- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
@@ -172,6 +172,13 @@
         return false;
     }
 
+    @Override
+    protected void updateSwitchBarText(SwitchBar switchBar) {
+        final String switchBarText = getString(R.string.accessibility_service_master_switch_title,
+                getString(R.string.accessibility_autoclick_preference_title));
+        switchBar.setSwitchBarText(switchBarText, switchBarText);
+    }
+
     /**
      * Converts seek bar preference progress value to autoclick delay associated with it.
      */
diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
index c5376eb..e02a74a 100644
--- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
@@ -105,8 +105,9 @@
 
     @Override
     protected void updateSwitchBarText(SwitchBar switchBar) {
-        switchBar.setSwitchBarText(R.string.accessibility_daltonizer_master_switch_title,
-                R.string.accessibility_daltonizer_master_switch_title);
+        final String switchBarText = getString(R.string.accessibility_service_master_switch_title,
+                getString(R.string.accessibility_display_daltonizer_preference_title));
+        switchBar.setSwitchBarText(switchBarText, switchBarText);
     }
 
     private void initPreferences() {
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index 314a577..a4b1878 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -58,10 +58,10 @@
 
         SettingsActivity activity = (SettingsActivity) getActivity();
         mSwitchBar = activity.getSwitchBar();
-        updateSwitchBarText(mSwitchBar);
         mToggleSwitch = mSwitchBar.getSwitch();
 
         onProcessArguments(getArguments());
+        updateSwitchBarText(mSwitchBar);
 
         // Show the "Settings" menu as if it were a preference screen
         if (mSettingsTitle != null && mSettingsIntent != null) {
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index ec3ebcc..c7269d1 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -228,6 +228,13 @@
     }
 
     @Override
+    protected void updateSwitchBarText(SwitchBar switchBar) {
+        final String switchBarText = getString(R.string.accessibility_service_master_switch_title,
+                getString(R.string.accessibility_screen_magnification_title));
+        switchBar.setSwitchBarText(switchBarText, switchBarText);
+    }
+
+    @Override
     protected void onProcessArguments(Bundle arguments) {
         super.onProcessArguments(arguments);
         if (arguments == null) {
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java
index 0dd59e6..de0d98b 100644
--- a/src/com/android/settings/widget/SwitchBar.java
+++ b/src/com/android/settings/widget/SwitchBar.java
@@ -77,14 +77,12 @@
     private TextView mTextView;
     private String mLabel;
     private String mSummary;
+    private String mOnText;
+    private String mOffText;
     @ColorInt
     private int mBackgroundColor;
     @ColorInt
     private int mBackgroundActivatedColor;
-    @StringRes
-    private int mOnTextId;
-    @StringRes
-    private int mOffTextId;
 
     private boolean mLoggingIntialized;
     private boolean mDisabledByAdmin;
@@ -178,14 +176,20 @@
     }
 
     public void setTextViewLabelAndBackground(boolean isChecked) {
-        mLabel = getResources().getString(isChecked ? mOnTextId : mOffTextId);
+        mLabel = isChecked ? mOnText : mOffText;
         setBackgroundColor(isChecked ? mBackgroundActivatedColor : mBackgroundColor);
         updateText();
     }
 
-    public void setSwitchBarText(int onText, int offText) {
-        mOnTextId = onText;
-        mOffTextId = offText;
+    public void setSwitchBarText(int onTextId, int offTextId) {
+        mOnText = getResources().getString(onTextId);
+        mOffText = getResources().getString(offTextId);
+        setTextViewLabelAndBackground(isChecked());
+    }
+
+    public void setSwitchBarText(String onText, String offText) {
+        mOnText = onText;
+        mOffText = offText;
         setTextViewLabelAndBackground(isChecked());
     }
 
diff --git a/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java b/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
index f186222..31cb966 100644
--- a/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
+++ b/tests/robotests/src/com/android/settings/widget/SwitchBarTest.java
@@ -85,6 +85,24 @@
     }
 
     @Test
+    public void setCheck_customLabelWithStringType_shouldUpdateTextAndBackground() {
+        final String onText = mContext.getString(
+                R.string.accessibility_service_master_switch_title);
+        final String offText = mContext.getString(
+                R.string.accessibility_service_master_switch_title);
+        final TextView switchBarTextView = ((TextView) mBar.findViewById(R.id.switch_text));
+
+        mBar.setSwitchBarText(onText, offText);
+
+        assertThat(switchBarTextView.getText()).isEqualTo(offText);
+
+        mBar.setChecked(true);
+
+        assertThat(mBar.getBackground()).isInstanceOf(ColorDrawable.class);
+        assertThat(switchBarTextView.getText()).isEqualTo(onText);
+    }
+
+    @Test
     public void disabledByAdmin_shouldDelegateToRestrictedIcon() {
         mBar.setDisabledByAdmin(new EnforcedAdmin());
         assertThat(mBar.getDelegatingView().getId()).isEqualTo(R.id.restricted_icon);