Merge "Enforce min value on panel slices slider" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
cef4e42dc2
@@ -44,7 +44,7 @@ public abstract class SliderPreferenceController extends BasePreferenceControlle
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the value of the Slider's position based on the range: [0, maxSteps).
|
* @return the value of the Slider's position based on the range: [min, max].
|
||||||
*/
|
*/
|
||||||
public abstract int getSliderPosition();
|
public abstract int getSliderPosition();
|
||||||
|
|
||||||
@@ -57,9 +57,14 @@ public abstract class SliderPreferenceController extends BasePreferenceControlle
|
|||||||
public abstract boolean setSliderPosition(int position);
|
public abstract boolean setSliderPosition(int position);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the number of steps supported by the slider.
|
* @return the maximum value supported by the slider.
|
||||||
*/
|
*/
|
||||||
public abstract int getMaxSteps();
|
public abstract int getMax();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the minimum value supported by the slider.
|
||||||
|
*/
|
||||||
|
public abstract int getMin();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getSliceType() {
|
public int getSliceType() {
|
||||||
|
@@ -55,7 +55,8 @@ public class NightDisplayIntensityPreferenceController extends SliderPreferenceC
|
|||||||
super.displayPreference(screen);
|
super.displayPreference(screen);
|
||||||
final SeekBarPreference preference = screen.findPreference(getPreferenceKey());
|
final SeekBarPreference preference = screen.findPreference(getPreferenceKey());
|
||||||
preference.setContinuousUpdates(true);
|
preference.setContinuousUpdates(true);
|
||||||
preference.setMax(getMaxSteps());
|
preference.setMax(getMax());
|
||||||
|
preference.setMin(getMin());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -75,10 +76,15 @@ public class NightDisplayIntensityPreferenceController extends SliderPreferenceC
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxSteps() {
|
public int getMax() {
|
||||||
return convertTemperature(ColorDisplayManager.getMinimumColorTemperature(mContext));
|
return convertTemperature(ColorDisplayManager.getMinimumColorTemperature(mContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMin() {
|
||||||
|
return ColorDisplayManager.getMinimumColorTemperature(mContext);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inverts and range-adjusts a raw value from the SeekBar (i.e. [0, maxTemp-minTemp]), or
|
* Inverts and range-adjusts a raw value from the SeekBar (i.e. [0, maxTemp-minTemp]), or
|
||||||
* converts an inverted and range-adjusted value to the raw SeekBar value, depending on the
|
* converts an inverted and range-adjusted value to the raw SeekBar value, depending on the
|
||||||
|
@@ -74,4 +74,8 @@ public class AudioHelper {
|
|||||||
public int getMaxVolume(int stream) {
|
public int getMaxVolume(int stream) {
|
||||||
return mAudioManager.getStreamMaxVolume(stream);
|
return mAudioManager.getStreamMaxVolume(stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getMinVolume(int stream) {
|
||||||
|
return mAudioManager.getStreamMinVolume(stream);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -160,7 +160,7 @@ public class RemoteVolumePreferenceController extends VolumeSeekBarPreferenceCon
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxSteps() {
|
public int getMax() {
|
||||||
if (mPreference != null) {
|
if (mPreference != null) {
|
||||||
return mPreference.getMax();
|
return mPreference.getMax();
|
||||||
}
|
}
|
||||||
@@ -171,6 +171,14 @@ public class RemoteVolumePreferenceController extends VolumeSeekBarPreferenceCon
|
|||||||
return playbackInfo != null ? playbackInfo.getMaxVolume() : 0;
|
return playbackInfo != null ? playbackInfo.getMaxVolume() : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMin() {
|
||||||
|
if (mPreference != null) {
|
||||||
|
return mPreference.getMin();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isSliceable() {
|
public boolean isSliceable() {
|
||||||
return TextUtils.equals(getPreferenceKey(), KEY_REMOTE_VOLUME);
|
return TextUtils.equals(getPreferenceKey(), KEY_REMOTE_VOLUME);
|
||||||
|
@@ -92,13 +92,21 @@ public abstract class VolumeSeekBarPreferenceController extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxSteps() {
|
public int getMax() {
|
||||||
if (mPreference != null) {
|
if (mPreference != null) {
|
||||||
return mPreference.getMax();
|
return mPreference.getMax();
|
||||||
}
|
}
|
||||||
return mHelper.getMaxVolume(getAudioStream());
|
return mHelper.getMaxVolume(getAudioStream());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMin() {
|
||||||
|
if (mPreference != null) {
|
||||||
|
return mPreference.getMin();
|
||||||
|
}
|
||||||
|
return mHelper.getMinVolume(getAudioStream());
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract int getAudioStream();
|
protected abstract int getAudioStream();
|
||||||
|
|
||||||
protected abstract int getMuteIcon();
|
protected abstract int getMuteIcon();
|
||||||
|
@@ -164,11 +164,12 @@ public class SliceBroadcastReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final SliderPreferenceController sliderController = (SliderPreferenceController) controller;
|
final SliderPreferenceController sliderController = (SliderPreferenceController) controller;
|
||||||
final int maxSteps = sliderController.getMaxSteps();
|
final int minValue = sliderController.getMin();
|
||||||
if (newPosition < 0 || newPosition > maxSteps) {
|
final int maxValue = sliderController.getMax();
|
||||||
|
if (newPosition < minValue || newPosition > maxValue) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Invalid position passed to Slider controller. Expected between 0 and "
|
"Invalid position passed to Slider controller. Expected between " + minValue
|
||||||
+ maxSteps + " but found " + newPosition);
|
+ " and " + maxValue + " but found " + newPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
sliderController.setSliderPosition(newPosition);
|
sliderController.setSliderPosition(newPosition);
|
||||||
|
@@ -326,7 +326,8 @@ public class SliceBuilderUtils {
|
|||||||
.setTitle(sliceData.getTitle())
|
.setTitle(sliceData.getTitle())
|
||||||
.setSubtitle(subtitleText)
|
.setSubtitle(subtitleText)
|
||||||
.setPrimaryAction(primaryAction)
|
.setPrimaryAction(primaryAction)
|
||||||
.setMax(sliderController.getMaxSteps())
|
.setMax(sliderController.getMax())
|
||||||
|
.setMin(sliderController.getMin())
|
||||||
.setValue(sliderController.getSliderPosition())
|
.setValue(sliderController.getSliderPosition())
|
||||||
.setInputAction(actionIntent))
|
.setInputAction(actionIntent))
|
||||||
.setKeywords(keywords)
|
.setKeywords(keywords)
|
||||||
|
@@ -41,7 +41,8 @@ public class SettingsSliderPreferenceControllerTest {
|
|||||||
"key");
|
"key");
|
||||||
|
|
||||||
mPreference.setContinuousUpdates(true);
|
mPreference.setContinuousUpdates(true);
|
||||||
mPreference.setMax(mSliderController.getMaxSteps());
|
mPreference.setMin(mSliderController.getMin());
|
||||||
|
mPreference.setMax(mSliderController.getMax());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -89,10 +90,15 @@ public class SettingsSliderPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxSteps() {
|
public int getMax() {
|
||||||
return MAX_STEPS;
|
return MAX_STEPS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMin() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return AVAILABLE;
|
return AVAILABLE;
|
||||||
|
@@ -88,10 +88,15 @@ public class SliderPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxSteps() {
|
public int getMax() {
|
||||||
return MAX_STEPS;
|
return MAX_STEPS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMin() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return AVAILABLE;
|
return AVAILABLE;
|
||||||
|
@@ -121,7 +121,12 @@ public class AdjustVolumeRestrictedPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxSteps() {
|
public int getMax() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMin() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -132,17 +132,31 @@ public class RemoteVolumePreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getMaxSteps_controllerNull_returnZero() {
|
public void getMinValue_controllerNull_returnZero() {
|
||||||
mController.mMediaController = null;
|
mController.mMediaController = null;
|
||||||
|
|
||||||
assertThat(mController.getMaxSteps()).isEqualTo(0);
|
assertThat(mController.getMin()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getMaxSteps_controllerExists_returnValue() {
|
public void getMinValue_controllerExists_returnValue() {
|
||||||
mController.mMediaController = mMediaController;
|
mController.mMediaController = mMediaController;
|
||||||
|
|
||||||
assertThat(mController.getMaxSteps()).isEqualTo(MAX_POS);
|
assertThat(mController.getMin()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxValue_controllerNull_returnZero() {
|
||||||
|
mController.mMediaController = null;
|
||||||
|
|
||||||
|
assertThat(mController.getMax()).isEqualTo(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMaxValue_controllerExists_returnValue() {
|
||||||
|
mController.mMediaController = mMediaController;
|
||||||
|
|
||||||
|
assertThat(mController.getMax()).isEqualTo(MAX_POS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -106,8 +106,10 @@ public class VolumeSeekBarPreferenceControllerTest {
|
|||||||
public void sliderMethods_handleNullPreference() {
|
public void sliderMethods_handleNullPreference() {
|
||||||
when(mHelper.getStreamVolume(mController.getAudioStream())).thenReturn(4);
|
when(mHelper.getStreamVolume(mController.getAudioStream())).thenReturn(4);
|
||||||
when(mHelper.getMaxVolume(mController.getAudioStream())).thenReturn(10);
|
when(mHelper.getMaxVolume(mController.getAudioStream())).thenReturn(10);
|
||||||
|
when(mHelper.getMinVolume(mController.getAudioStream())).thenReturn(1);
|
||||||
|
|
||||||
assertThat(mController.getMaxSteps()).isEqualTo(10);
|
assertThat(mController.getMax()).isEqualTo(10);
|
||||||
|
assertThat(mController.getMin()).isEqualTo(1);
|
||||||
assertThat(mController.getSliderPosition()).isEqualTo(4);
|
assertThat(mController.getSliderPosition()).isEqualTo(4);
|
||||||
|
|
||||||
mController.setSliderPosition(9);
|
mController.setSliderPosition(9);
|
||||||
@@ -123,11 +125,19 @@ public class VolumeSeekBarPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getMaxSteps_passesAlongValue() {
|
public void getMaxValue_passesAlongValue() {
|
||||||
when(mPreference.getMax()).thenReturn(6);
|
when(mPreference.getMax()).thenReturn(6);
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
assertThat(mController.getMaxSteps()).isEqualTo(6);
|
assertThat(mController.getMax()).isEqualTo(6);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getMinValue_passesAlongValue() {
|
||||||
|
when(mPreference.getMin()).thenReturn(1);
|
||||||
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
|
assertThat(mController.getMin()).isEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@@ -191,8 +191,8 @@ public class SliceBroadcastReceiverTest {
|
|||||||
.build();
|
.build();
|
||||||
final ContentResolver resolver = mock(ContentResolver.class);
|
final ContentResolver resolver = mock(ContentResolver.class);
|
||||||
doReturn(resolver).when(mContext).getContentResolver();
|
doReturn(resolver).when(mContext).getContentResolver();
|
||||||
final int position = FakeSliderController.MAX_STEPS - 1;
|
final int position = FakeSliderController.MAX_VALUE - 1;
|
||||||
final int oldPosition = FakeSliderController.MAX_STEPS;
|
final int oldPosition = FakeSliderController.MAX_VALUE;
|
||||||
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||||
insertSpecialCase(FakeSliderController.class, key);
|
insertSpecialCase(FakeSliderController.class, key);
|
||||||
|
|
||||||
@@ -310,8 +310,8 @@ public class SliceBroadcastReceiverTest {
|
|||||||
|
|
||||||
// Insert Fake Slider into Database
|
// Insert Fake Slider into Database
|
||||||
final String key = "key";
|
final String key = "key";
|
||||||
final int position = FakeSliderController.MAX_STEPS - 1;
|
final int position = FakeSliderController.MAX_VALUE - 1;
|
||||||
final int oldPosition = FakeSliderController.MAX_STEPS;
|
final int oldPosition = FakeSliderController.MAX_VALUE;
|
||||||
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
|
||||||
insertSpecialCase(FakeSliderController.class, key);
|
insertSpecialCase(FakeSliderController.class, key);
|
||||||
|
|
||||||
|
@@ -25,7 +25,7 @@ public class FakeSliderController extends SliderPreferenceController {
|
|||||||
|
|
||||||
public static final String AVAILABILITY_KEY = "fake_slider_availability_key";
|
public static final String AVAILABILITY_KEY = "fake_slider_availability_key";
|
||||||
|
|
||||||
public static final int MAX_STEPS = 9;
|
public static final int MAX_VALUE = 9;
|
||||||
|
|
||||||
private static final String SETTING_KEY = "fake_slider_key";
|
private static final String SETTING_KEY = "fake_slider_key";
|
||||||
|
|
||||||
@@ -44,8 +44,13 @@ public class FakeSliderController extends SliderPreferenceController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxSteps() {
|
public int getMax() {
|
||||||
return MAX_STEPS;
|
return MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getMin() {
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user