diff --git a/res/xml/accessibility_tap_assistance.xml b/res/xml/accessibility_tap_assistance.xml index 63adc9d5365..22667b471ab 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 e6b49d01204..ded8acab327 100644 --- a/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceController.java +++ b/src/com/android/settings/accessibility/AccessibilityButtonGesturePreferenceController.java @@ -19,21 +19,30 @@ package com.android.settings.accessibility; 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 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 @@ public class AccessibilityButtonGesturePreferenceController extends BasePreferen @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 @@ public class AccessibilityButtonGesturePreferenceController extends BasePreferen 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 167e08faec7..fc62be589dc 100644 --- a/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceController.java +++ b/src/com/android/settings/accessibility/AccessibilityButtonLocationPreferenceController.java @@ -19,21 +19,30 @@ package com.android.settings.accessibility; 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 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 @@ public class AccessibilityButtonLocationPreferenceController extends BasePrefere @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 @@ public class AccessibilityButtonLocationPreferenceController extends BasePrefere 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 196117b132f..67a8e8aac2d 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 @@ public class CaptioningFontSizeController extends BasePreferenceController } @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 3876d391721..d8222fa0b50 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 @@ public class CaptioningTypefaceController extends BasePreferenceController } @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 2f0f833772e..bd447be1d1d 100644 --- a/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java +++ b/src/com/android/settings/accessibility/FloatingMenuSizePreferenceController.java @@ -22,7 +22,6 @@ import android.database.ContentObserver; 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.ListPreference; 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 @@ public class FloatingMenuSizePreferenceController extends BasePreferenceControll @VisibleForTesting ListPreference mPreference; - private final ArrayMap mValueTitleMap = new ArrayMap<>(); - private int mDefaultSize; - @Retention(RetentionPolicy.SOURCE) @IntDef({ Size.SMALL, @@ -75,8 +70,6 @@ public class FloatingMenuSizePreferenceController extends BasePreferenceControll updateAvailabilityStatus(); } }; - - initValueTitleMap(); } @Override @@ -94,11 +87,9 @@ public class FloatingMenuSizePreferenceController extends BasePreferenceControll @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 @@ public class FloatingMenuSizePreferenceController extends BasePreferenceControll super.updateState(preference); final ListPreference listPreference = (ListPreference) preference; - listPreference.setValue(String.valueOf(getAccessibilityFloatingMenuSize(mDefaultSize))); + listPreference.setValue(String.valueOf(getAccessibilityFloatingMenuSize())); } @Override @@ -129,25 +120,10 @@ public class FloatingMenuSizePreferenceController extends BasePreferenceControll 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 e5532c599a1..16ebe9dd34a 100644 --- a/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceController.java +++ b/src/com/android/settings/accessibility/SelectLongPressTimeoutPreferenceController.java @@ -50,11 +50,9 @@ public class SelectLongPressTimeoutPreferenceController extends BasePreferenceCo 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 @@ public class SelectLongPressTimeoutPreferenceController extends BasePreferenceCo @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 da442281e9e..39760566188 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 @@ public class AccessibilityButtonGesturePreferenceControllerTest { 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 4510d843ea9..53a33972075 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 @@ public class AccessibilityButtonLocationPreferenceControllerTest { 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 c20cf5dcb84..8aeb37ef44a 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 @@ public class CaptioningFontSizeControllerTest { 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 @@ public class CaptioningFontSizeControllerTest { } @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 0ca455caa17..4d33fb3be10 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 @@ public class CaptioningTypefaceControllerTest { 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 @@ public class CaptioningTypefaceControllerTest { } @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