From 2e5e04e79da2194f6769eb08f2d4929f7c128f28 Mon Sep 17 00:00:00 2001 From: Hugh Chen Date: Fri, 5 Jun 2020 15:00:45 +0800 Subject: [PATCH] Add a new method to set state description - This CL add a new method setSeekBarStateDescription() to set the state of seek bar. Because in some case the description of seek bar is not align progress of seek bar. - Add test case Bug: 157629483 Test: make -j42 RunSettingsRoboTests Change-Id: I432e6f9deef59756b0a41244d50aaada1ddac6a9 --- .../settings/widget/SeekBarPreference.java | 16 ++++++++++++++++ .../settings/widget/SeekBarPreferenceTest.java | 8 ++++++++ 2 files changed, 24 insertions(+) diff --git a/src/com/android/settings/widget/SeekBarPreference.java b/src/com/android/settings/widget/SeekBarPreference.java index bdd1ba94474..ac2838271c4 100644 --- a/src/com/android/settings/widget/SeekBarPreference.java +++ b/src/com/android/settings/widget/SeekBarPreference.java @@ -51,6 +51,7 @@ public class SeekBarPreference extends RestrictedPreference private boolean mShouldBlink; private int mAccessibilityRangeInfoType = AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INT; private CharSequence mSeekBarContentDescription; + private CharSequence mSeekBarStateDescription; public SeekBarPreference( Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { @@ -124,6 +125,9 @@ public class SeekBarPreference extends RestrictedPreference } else if (!TextUtils.isEmpty(title)) { mSeekBar.setContentDescription(title); } + if (!TextUtils.isEmpty(mSeekBarStateDescription)) { + mSeekBar.setStateDescription(mSeekBarStateDescription); + } if (mSeekBar instanceof DefaultIndicatorSeekBar) { ((DefaultIndicatorSeekBar) mSeekBar).setDefaultProgress(mDefaultProgress); } @@ -304,6 +308,18 @@ public class SeekBarPreference extends RestrictedPreference } } + /** + * Specify the state description for this seek bar represents. + * + * @param stateDescription the state description of seek bar + */ + public void setSeekBarStateDescription(CharSequence stateDescription) { + mSeekBarStateDescription = stateDescription; + if (mSeekBar != null) { + mSeekBar.setStateDescription(stateDescription); + } + } + @Override protected Parcelable onSaveInstanceState() { /* diff --git a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java index f7dea225236..42ed0746417 100644 --- a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java @@ -19,6 +19,7 @@ package com.android.settings.widget; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; @@ -110,6 +111,13 @@ public class SeekBarPreferenceTest { assertThat(seekBarPreference.isSelectable()).isTrue(); } + @Test + public void testSetSeekBarStateDescription() { + mSeekBarPreference.setSeekBarStateDescription("test"); + + verify(mSeekBarPreference).setSeekBarStateDescription("test"); + } + public static class TestFragment extends PreferenceFragmentCompat { @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {