Merge "Enforce min value on panel slices slider" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-04-16 21:18:05 +00:00
committed by Android (Google) Code Review
14 changed files with 108 additions and 30 deletions

View File

@@ -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() {

View File

@@ -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

View File

@@ -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);
}
} }

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);

View File

@@ -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)

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
} }
} }

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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