diff --git a/src/com/android/settings/widget/SeekBarPreference.java b/src/com/android/settings/widget/SeekBarPreference.java index 44def119ea2eb69b20cdbef3ad2f57e45b377bfd..bdd1ba944741884499041ea0e8654b2e9a8a030d 100644 --- a/src/com/android/settings/widget/SeekBarPreference.java +++ b/src/com/android/settings/widget/SeekBarPreference.java @@ -69,6 +69,13 @@ public class SeekBarPreference extends RestrictedPreference com.android.internal.R.layout.preference_widget_seekbar); a.recycle(); + a = context.obtainStyledAttributes( + attrs, com.android.internal.R.styleable.Preference, defStyleAttr, defStyleRes); + final boolean isSelectable = a.getBoolean( + com.android.settings.R.styleable.Preference_android_selectable, false); + setSelectable(isSelectable); + a.recycle(); + setLayoutResource(layoutResId); } @@ -93,7 +100,11 @@ public class SeekBarPreference extends RestrictedPreference @Override public boolean isSelectable() { - return isDisabledByAdmin(); + if(isDisabledByAdmin()) { + return true; + } else { + return super.isSelectable(); + } } @Override diff --git a/tests/robotests/res/xml-mcc998/seekbar_preference.xml b/tests/robotests/res/xml-mcc998/seekbar_preference.xml new file mode 100644 index 0000000000000000000000000000000000000000..e474c1e06bbd90ef06988873758bfe186a5dff0a --- /dev/null +++ b/tests/robotests/res/xml-mcc998/seekbar_preference.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/tests/robotests/res/xml-mcc999/seekbar_preference.xml b/tests/robotests/res/xml-mcc999/seekbar_preference.xml new file mode 100644 index 0000000000000000000000000000000000000000..77435e8d19841b01db77fe367e25a3d6e31cf411 --- /dev/null +++ b/tests/robotests/res/xml-mcc999/seekbar_preference.xml @@ -0,0 +1,24 @@ + + + + + + diff --git a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java index 0a1d5d80de58af0a63e572cb7131938581911050..f7dea225236c9da504384782298fd72a6a5b2888 100644 --- a/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/widget/SeekBarPreferenceTest.java @@ -22,16 +22,24 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; import android.content.Context; +import android.os.Bundle; import android.os.Parcelable; +import androidx.preference.PreferenceFragmentCompat; + +import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; +import org.robolectric.shadows.androidx.fragment.FragmentController; @RunWith(RobolectricTestRunner.class) +@Config(shadows = ShadowRestrictedLockUtilsInternal.class) public class SeekBarPreferenceTest { private static final int MAX = 75; @@ -73,9 +81,39 @@ public class SeekBarPreferenceTest { } @Test - public void isSelectable_notDisabledByAdmin_returnFalse() { - when(mSeekBarPreference.isDisabledByAdmin()).thenReturn(false); + @Config(qualifiers = "mcc998") + public void isSelectable_default_returnFalse() { + final PreferenceFragmentCompat fragment = FragmentController.of(new TestFragment(), + new Bundle()) + .create() + .start() + .resume() + .get(); + + final SeekBarPreference seekBarPreference = fragment.findPreference("seek_bar"); + + assertThat(seekBarPreference.isSelectable()).isFalse(); + } + + @Test + @Config(qualifiers = "mcc999") + public void isSelectable_selectableInXml_returnTrue() { + final PreferenceFragmentCompat fragment = FragmentController.of(new TestFragment(), + new Bundle()) + .create() + .start() + .resume() + .get(); + + final SeekBarPreference seekBarPreference = fragment.findPreference("seek_bar"); + + assertThat(seekBarPreference.isSelectable()).isTrue(); + } - assertThat(mSeekBarPreference.isSelectable()).isFalse(); + public static class TestFragment extends PreferenceFragmentCompat { + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + addPreferencesFromResource(com.android.settings.R.xml.seekbar_preference); + } } }