Merge "Update to use android:summary="%s" in ListPreference" into udc-dev am: b25a941609

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22162143

Change-Id: If14fcbfa4efa74e7551d192891033fe71ba1e371
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/res/xml/accessibility_tap_assistance.xml b/res/xml/accessibility_tap_assistance.xml
index 63adc9d..22667b4 100644
--- a/res/xml/accessibility_tap_assistance.xml
+++ b/res/xml/accessibility_tap_assistance.xml
@@ -24,6 +24,7 @@
         android:entries="@array/long_press_timeout_selector_list_titles"
         android:entryValues="@array/long_press_timeout_selector_values"
         android:key="select_long_press_timeout_preference"
+        android:summary="%s"
         android:persistent="false"
         android:title="@string/accessibility_long_press_timeout_preference_title"
         settings:controller="com.android.settings.accessibility.SelectLongPressTimeoutPreferenceController"/>
diff --git a/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceController.java b/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceController.java
index e6b49d0..ded8aca 100644
--- a/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceController.java
@@ -19,21 +19,30 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import androidx.annotation.IntDef;
 import androidx.preference.ListPreference;
 import androidx.preference.Preference;
 
-import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 
 import com.google.common.primitives.Ints;
 
-import java.util.Optional;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 
 /** Preference controller that controls the button or gesture in accessibility button page. */
 public class AccessibilityButtonGesturePreferenceController extends BasePreferenceController
         implements Preference.OnPreferenceChangeListener {
 
-    private Optional<Integer> mDefaultGesture = Optional.empty();
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({
+            Mode.BUTTON,
+            Mode.GESTURE,
+    })
+    private @interface Mode {
+        int BUTTON = 1;
+        int GESTURE = 2;
+    }
 
     public AccessibilityButtonGesturePreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
@@ -47,12 +56,9 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        final ListPreference listPreference = (ListPreference) preference;
         final Integer value = Ints.tryParse((String) newValue);
         if (value != null) {
-            Settings.Secure.putInt(mContext.getContentResolver(),
-                    Settings.Secure.ACCESSIBILITY_BUTTON_MODE, value);
-            updateState(listPreference);
+            putCurrentAccessibilityButtonMode(value);
         }
         return true;
     }
@@ -62,21 +68,17 @@
         super.updateState(preference);
         final ListPreference listPreference = (ListPreference) preference;
 
-        listPreference.setValue(getCurrentAccessibilityButtonMode());
+        listPreference.setValue(String.valueOf(getCurrentAccessibilityButtonMode()));
     }
 
-    private String getCurrentAccessibilityButtonMode() {
-        final int mode = Settings.Secure.getInt(mContext.getContentResolver(),
-                Settings.Secure.ACCESSIBILITY_BUTTON_MODE, getDefaultGestureValue());
-        return String.valueOf(mode);
+    @Mode
+    private int getCurrentAccessibilityButtonMode() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_BUTTON_MODE, Mode.BUTTON);
     }
 
-    private int getDefaultGestureValue() {
-        if (!mDefaultGesture.isPresent()) {
-            final String[] valuesList = mContext.getResources().getStringArray(
-                    R.array.accessibility_button_gesture_selector_values);
-            mDefaultGesture = Optional.of(Integer.parseInt(valuesList[0]));
-        }
-        return mDefaultGesture.get();
+    private void putCurrentAccessibilityButtonMode(@Mode int mode) {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_BUTTON_MODE, mode);
     }
 }
diff --git a/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceController.java b/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceController.java
index 167e08f..fc62be5 100644
--- a/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceController.java
+++ b/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceController.java
@@ -19,21 +19,30 @@
 import android.content.Context;
 import android.provider.Settings;
 
+import androidx.annotation.IntDef;
 import androidx.preference.ListPreference;
 import androidx.preference.Preference;
 
-import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 
 import com.google.common.primitives.Ints;
 
-import java.util.Optional;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 
 /** Preference controller that controls the preferred location in accessibility button page. */
 public class AccessibilityButtonLocationPreferenceController extends BasePreferenceController
         implements Preference.OnPreferenceChangeListener {
 
-    private Optional<Integer> mDefaultLocation = Optional.empty();
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({
+            Location.FLOATING_MENU,
+            Location.NAVIGATION_BAR,
+    })
+    private @interface Location {
+        int FLOATING_MENU = 1;
+        int NAVIGATION_BAR = 0;
+    }
 
     public AccessibilityButtonLocationPreferenceController(Context context, String preferenceKey) {
         super(context, preferenceKey);
@@ -47,12 +56,9 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        final ListPreference listPreference = (ListPreference) preference;
         final Integer value = Ints.tryParse((String) newValue);
         if (value != null) {
-            Settings.Secure.putInt(mContext.getContentResolver(),
-                    Settings.Secure.ACCESSIBILITY_BUTTON_MODE, value);
-            updateState(listPreference);
+            putCurrentAccessibilityButtonMode(value);
         }
         return true;
     }
@@ -62,21 +68,17 @@
         super.updateState(preference);
         final ListPreference listPreference = (ListPreference) preference;
 
-        listPreference.setValue(getCurrentAccessibilityButtonMode());
+        listPreference.setValue(String.valueOf(getCurrentAccessibilityButtonMode()));
     }
 
-    private String getCurrentAccessibilityButtonMode() {
-        final int mode = Settings.Secure.getInt(mContext.getContentResolver(),
-                Settings.Secure.ACCESSIBILITY_BUTTON_MODE, getDefaultLocationValue());
-        return String.valueOf(mode);
+    @Location
+    private int getCurrentAccessibilityButtonMode() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_BUTTON_MODE, Location.FLOATING_MENU);
     }
 
-    private int getDefaultLocationValue() {
-        if (!mDefaultLocation.isPresent()) {
-            final String[] valuesList = mContext.getResources().getStringArray(
-                    R.array.accessibility_button_location_selector_values);
-            mDefaultLocation = Optional.of(Integer.parseInt(valuesList[0]));
-        }
-        return mDefaultLocation.get();
+    private void putCurrentAccessibilityButtonMode(@Location int location) {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.ACCESSIBILITY_BUTTON_MODE, location);
     }
 }
diff --git a/src/com/android/settings/accessibility/CaptioningFontSizeController.java b/src/com/android/settings/accessibility/CaptioningFontSizeController.java
index 196117b..67a8e8a 100644
--- a/src/com/android/settings/accessibility/CaptioningFontSizeController.java
+++ b/src/com/android/settings/accessibility/CaptioningFontSizeController.java
@@ -16,14 +16,12 @@
 
 package com.android.settings.accessibility;
 
-import android.content.ContentResolver;
 import android.content.Context;
 import android.provider.Settings;
 import android.view.accessibility.CaptioningManager;
 
 import androidx.preference.ListPreference;
 import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.BasePreferenceController;
 
@@ -46,22 +44,20 @@
     }
 
     @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        final ListPreference listPreference = screen.findPreference(getPreferenceKey());
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        final ListPreference listPreference = (ListPreference) preference;
         final float fontSize = mCaptioningManager.getFontScale();
+
         listPreference.setValue(Float.toString(fontSize));
     }
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        final ListPreference listPreference = (ListPreference) preference;
-        final ContentResolver cr = mContext.getContentResolver();
         Settings.Secure.putFloat(
-                cr, Settings.Secure.ACCESSIBILITY_CAPTIONING_FONT_SCALE,
+                mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_CAPTIONING_FONT_SCALE,
                 Float.parseFloat((String) newValue));
-        listPreference.setValue((String) newValue);
         mCaptionHelper.setEnabled(true);
-        return false;
+        return true;
     }
 }
diff --git a/src/com/android/settings/accessibility/CaptioningTypefaceController.java b/src/com/android/settings/accessibility/CaptioningTypefaceController.java
index 3876d39..d8222fa 100644
--- a/src/com/android/settings/accessibility/CaptioningTypefaceController.java
+++ b/src/com/android/settings/accessibility/CaptioningTypefaceController.java
@@ -16,14 +16,12 @@
 
 package com.android.settings.accessibility;
 
-import android.content.ContentResolver;
 import android.content.Context;
 import android.provider.Settings;
 import android.view.accessibility.CaptioningManager.CaptionStyle;
 
 import androidx.preference.ListPreference;
 import androidx.preference.Preference;
-import androidx.preference.PreferenceScreen;
 
 import com.android.settings.core.BasePreferenceController;
 
@@ -44,23 +42,21 @@
     }
 
     @Override
-    public void displayPreference(PreferenceScreen screen) {
-        super.displayPreference(screen);
-        final ListPreference listPreference = screen.findPreference(getPreferenceKey());
-        final ContentResolver cr = mContext.getContentResolver();
-        final CaptionStyle attrs = CaptionStyle.getCustomStyle(cr);
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        final ListPreference listPreference = (ListPreference) preference;
+        final CaptionStyle attrs = CaptionStyle.getCustomStyle(mContext.getContentResolver());
         final String rawTypeface = attrs.mRawTypeface;
+
         listPreference.setValue(rawTypeface == null ? "" : rawTypeface);
     }
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        final ListPreference listPreference = (ListPreference) preference;
-        final ContentResolver cr = mContext.getContentResolver();
         Settings.Secure.putString(
-                cr, Settings.Secure.ACCESSIBILITY_CAPTIONING_TYPEFACE, (String) newValue);
-        listPreference.setValue((String) newValue);
+                mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_CAPTIONING_TYPEFACE,
+                (String) newValue);
         mCaptionHelper.setEnabled(true);
-        return false;
+        return true;
     }
 }
diff --git a/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java b/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java
index 2f0f833..bd447be 100644
--- a/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java
+++ b/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java
@@ -22,7 +22,6 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.provider.Settings;
-import android.util.ArrayMap;
 
 import androidx.annotation.IntDef;
 import androidx.annotation.VisibleForTesting;
@@ -30,7 +29,6 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -52,9 +50,6 @@
     @VisibleForTesting
     ListPreference mPreference;
 
-    private final ArrayMap<String, String> mValueTitleMap = new ArrayMap<>();
-    private int mDefaultSize;
-
     @Retention(RetentionPolicy.SOURCE)
     @IntDef({
             Size.SMALL,
@@ -75,8 +70,6 @@
                 updateAvailabilityStatus();
             }
         };
-
-        initValueTitleMap();
     }
 
     @Override
@@ -94,11 +87,9 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        final ListPreference listPreference = (ListPreference) preference;
         final Integer value = Ints.tryParse((String) newValue);
         if (value != null) {
             putAccessibilityFloatingMenuSize(value);
-            updateState(listPreference);
         }
         return true;
     }
@@ -108,7 +99,7 @@
         super.updateState(preference);
         final ListPreference listPreference = (ListPreference) preference;
 
-        listPreference.setValue(String.valueOf(getAccessibilityFloatingMenuSize(mDefaultSize)));
+        listPreference.setValue(String.valueOf(getAccessibilityFloatingMenuSize()));
     }
 
     @Override
@@ -129,25 +120,10 @@
         mPreference.setEnabled(AccessibilityUtil.isFloatingMenuEnabled(mContext));
     }
 
-    private void initValueTitleMap() {
-        if (mValueTitleMap.size() == 0) {
-            final String[] values = mContext.getResources().getStringArray(
-                    R.array.accessibility_button_size_selector_values);
-            final String[] titles = mContext.getResources().getStringArray(
-                    R.array.accessibility_button_size_selector_titles);
-            final int mapSize = values.length;
-
-            mDefaultSize = Integer.parseInt(values[0]);
-            for (int i = 0; i < mapSize; i++) {
-                mValueTitleMap.put(values[i], titles[i]);
-            }
-        }
-    }
-
     @Size
-    private int getAccessibilityFloatingMenuSize(@Size int defaultValue) {
+    private int getAccessibilityFloatingMenuSize() {
         return Settings.Secure.getInt(mContentResolver,
-                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, defaultValue);
+                Settings.Secure.ACCESSIBILITY_FLOATING_MENU_SIZE, Size.SMALL);
     }
 
     private void putAccessibilityFloatingMenuSize(@Size int value) {
diff --git a/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceController.java b/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceController.java
index e5532c5..16ebe9d 100644
--- a/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceController.java
+++ b/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceController.java
@@ -50,11 +50,9 @@
         if (!(preference instanceof ListPreference)) {
             return false;
         }
-        final ListPreference listPreference = (ListPreference) preference;
         final int newValue = Integer.parseInt((String) object);
         Settings.Secure.putInt(mContext.getContentResolver(),
                 Settings.Secure.LONG_PRESS_TIMEOUT, newValue);
-        updateState(listPreference);
         return true;
 
     }
@@ -62,16 +60,9 @@
     @Override
     public void updateState(Preference preference) {
         super.updateState(preference);
-        if (!(preference instanceof ListPreference)) {
-            return;
-        }
         final ListPreference listPreference = (ListPreference) preference;
-        listPreference.setValue(getLongPressTimeoutValue());
-    }
 
-    @Override
-    public CharSequence getSummary() {
-        return mLongPressTimeoutValueToTitleMap.get(getLongPressTimeoutValue());
+        listPreference.setValue(getLongPressTimeoutValue());
     }
 
     private String getLongPressTimeoutValue() {
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceControllerTest.java
index da44228..3976056 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceControllerTest.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.accessibility;
 
-import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
 import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE;
 import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON;
 import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
@@ -93,13 +92,4 @@
         final String gestureValue = String.valueOf(ACCESSIBILITY_BUTTON_MODE_GESTURE);
         assertThat(mListPreference.getValue()).isEqualTo(gestureValue);
     }
-
-    @Test
-    public void onPreferenceChange_a11yBtnModeFloatingMenu_floatingMenuValue() {
-        final String floatingMenuValue = String.valueOf(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU);
-
-        mController.onPreferenceChange(mListPreference, floatingMenuValue);
-
-        assertThat(mListPreference.getValue()).isEqualTo(floatingMenuValue);
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceControllerTest.java
index 4510d84..53a3397 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceControllerTest.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.accessibility;
 
-import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU;
 import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR;
 import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON;
 import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
@@ -94,13 +93,4 @@
         final String navigationBarValue = String.valueOf(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR);
         assertThat(mListPreference.getValue()).isEqualTo(navigationBarValue);
     }
-
-    @Test
-    public void onPreferenceChange_a11yBtnModeFloatingMenu_floatingMenuValue() {
-        final String floatingMenuValue = String.valueOf(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU);
-
-        mController.onPreferenceChange(mListPreference, floatingMenuValue);
-
-        assertThat(mListPreference.getValue()).isEqualTo(floatingMenuValue);
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptioningFontSizeControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptioningFontSizeControllerTest.java
index c20cf5d..8aeb37e 100644
--- a/tests/robotests/src/com/android/settings/accessibility/CaptioningFontSizeControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/CaptioningFontSizeControllerTest.java
@@ -64,6 +64,7 @@
         mPreference = new ListPreference(mContext);
         mPreference.setEntries(R.array.captioning_font_size_selector_titles);
         mPreference.setEntryValues(R.array.captioning_font_size_selector_values);
+        mPreference.setSummary("%s");
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         CaptioningManager captioningManager = mContext.getSystemService(CaptioningManager.class);
         mShadowCaptioningManager = Shadow.extract(captioningManager);
@@ -76,28 +77,19 @@
     }
 
     @Test
-    public void displayPreference_byDefault_shouldReturnDefault() {
-        mController.displayPreference(mScreen);
+    public void updateState_byDefault_shouldReturnDefault() {
+        mController.updateState(mPreference);
 
-        assertThat(mPreference.getEntry().toString()).isEqualTo("Medium");
+        assertThat(mPreference.getSummary().toString()).isEqualTo("Medium");
     }
 
     @Test
-    public void displayPreference_bySmallValue_shouldReturnSmall() {
+    public void updateState_bySmallValue_shouldReturnSmall() {
         mShadowCaptioningManager.setFontScale(0.5f);
 
-        mController.displayPreference(mScreen);
+        mController.updateState(mPreference);
 
-        assertThat(mPreference.getEntry().toString()).isEqualTo("Small");
-    }
-
-    @Test
-    public void onPreferenceChange_shouldReturnSmall() {
-        mController.displayPreference(mScreen);
-
-        mController.onPreferenceChange(mPreference, "0.5");
-
-        assertThat(mPreference.getEntry().toString()).isEqualTo("Small");
+        assertThat(mPreference.getSummary().toString()).isEqualTo("Small");
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/accessibility/CaptioningTypefaceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/CaptioningTypefaceControllerTest.java
index 0ca455c..4d33fb3 100644
--- a/tests/robotests/src/com/android/settings/accessibility/CaptioningTypefaceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/CaptioningTypefaceControllerTest.java
@@ -64,6 +64,7 @@
         mPreference = new ListPreference(mContext);
         mPreference.setEntries(R.array.captioning_typeface_selector_titles);
         mPreference.setEntryValues(R.array.captioning_typeface_selector_values);
+        mPreference.setSummary("%s");
         when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
         CaptioningManager captioningManager = mContext.getSystemService(CaptioningManager.class);
         mShadowCaptioningManager = Shadow.extract(captioningManager);
@@ -76,29 +77,20 @@
     }
 
     @Test
-    public void displayPreference_byDefault_shouldReturnDefault() {
-        mController.displayPreference(mScreen);
+    public void updateState_byDefault_shouldReturnDefault() {
+        mController.updateState(mPreference);
 
-        assertThat(mPreference.getEntry().toString()).isEqualTo("Default");
+        assertThat(mPreference.getSummary().toString()).isEqualTo("Default");
     }
 
     @Test
-    public void displayPreference_bySerif_shouldReturnSerif() {
+    public void updateState_bySerif_shouldReturnSerif() {
         Settings.Secure.putString(mContext.getContentResolver(),
                 Settings.Secure.ACCESSIBILITY_CAPTIONING_TYPEFACE, "serif");
 
-        mController.displayPreference(mScreen);
+        mController.updateState(mPreference);
 
-        assertThat(mPreference.getEntry().toString()).isEqualTo("Serif");
-    }
-
-    @Test
-    public void onPreferenceChange_bySerif_shouldReturnSerif() {
-        mController.displayPreference(mScreen);
-
-        mController.onPreferenceChange(mPreference, "serif");
-
-        assertThat(mPreference.getEntry().toString()).isEqualTo("Serif");
+        assertThat(mPreference.getSummary().toString()).isEqualTo("Serif");
     }
 
     @Test