Merge "Ensure invalid brightness values aren't used" into udc-dev am: 0dd4898855 am: f4ff7f9d93
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23451196 Change-Id: I99605ceba2b8f88f131867fc032f30f8c3edbb82 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -335,11 +335,8 @@ public class AutomaticBrightnessController {
|
|||||||
// Initialize to active (normal) screen brightness mode
|
// Initialize to active (normal) screen brightness mode
|
||||||
switchToInteractiveScreenBrightnessMode();
|
switchToInteractiveScreenBrightnessMode();
|
||||||
|
|
||||||
if (userLux != BrightnessMappingStrategy.NO_USER_LUX
|
// Use the given short-term model
|
||||||
&& userBrightness != BrightnessMappingStrategy.NO_USER_BRIGHTNESS) {
|
setScreenBrightnessByUser(userLux, userBrightness);
|
||||||
// Use the given short-term model
|
|
||||||
setScreenBrightnessByUser(userLux, userBrightness);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -522,6 +519,10 @@ public class AutomaticBrightnessController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private boolean setScreenBrightnessByUser(float lux, float brightness) {
|
private boolean setScreenBrightnessByUser(float lux, float brightness) {
|
||||||
|
if (lux == BrightnessMappingStrategy.NO_USER_LUX
|
||||||
|
|| brightness == BrightnessMappingStrategy.NO_USER_BRIGHTNESS) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
mCurrentBrightnessMapper.addUserDataPoint(lux, brightness);
|
mCurrentBrightnessMapper.addUserDataPoint(lux, brightness);
|
||||||
mShortTermModel.setUserBrightness(lux, brightness);
|
mShortTermModel.setUserBrightness(lux, brightness);
|
||||||
return true;
|
return true;
|
||||||
@@ -1237,14 +1238,14 @@ public class AutomaticBrightnessController {
|
|||||||
// light.
|
// light.
|
||||||
// The anchor determines what were the light levels when the user has set their preference,
|
// The anchor determines what were the light levels when the user has set their preference,
|
||||||
// and we use a relative threshold to determine when to revert to the OEM curve.
|
// and we use a relative threshold to determine when to revert to the OEM curve.
|
||||||
private float mAnchor = -1f;
|
private float mAnchor = BrightnessMappingStrategy.NO_USER_LUX;
|
||||||
private float mBrightness;
|
private float mBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||||
private boolean mIsValid = true;
|
private boolean mIsValid = false;
|
||||||
|
|
||||||
private void reset() {
|
private void reset() {
|
||||||
mAnchor = -1f;
|
mAnchor = BrightnessMappingStrategy.NO_USER_LUX;
|
||||||
mBrightness = -1f;
|
mBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||||
mIsValid = true;
|
mIsValid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void invalidate() {
|
private void invalidate() {
|
||||||
|
|||||||
@@ -475,6 +475,42 @@ public class AutomaticBrightnessControllerTest {
|
|||||||
.addUserDataPoint(anyFloat(), anyFloat());
|
.addUserDataPoint(anyFloat(), anyFloat());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSwitchBetweenModesNoUserInteractions() throws Exception {
|
||||||
|
ArgumentCaptor<SensorEventListener> listenerCaptor =
|
||||||
|
ArgumentCaptor.forClass(SensorEventListener.class);
|
||||||
|
verify(mSensorManager).registerListener(listenerCaptor.capture(), eq(mLightSensor),
|
||||||
|
eq(INITIAL_LIGHT_SENSOR_RATE * 1000), any(Handler.class));
|
||||||
|
SensorEventListener listener = listenerCaptor.getValue();
|
||||||
|
|
||||||
|
// Sensor reads 123 lux,
|
||||||
|
listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 123));
|
||||||
|
when(mBrightnessMappingStrategy.getShortTermModelTimeout()).thenReturn(2000L);
|
||||||
|
when(mBrightnessMappingStrategy.getUserBrightness()).thenReturn(-1.0f);
|
||||||
|
when(mBrightnessMappingStrategy.getUserLux()).thenReturn(-1.0f);
|
||||||
|
|
||||||
|
// No user brightness interaction.
|
||||||
|
|
||||||
|
mController.switchToIdleMode();
|
||||||
|
when(mIdleBrightnessMappingStrategy.isForIdleMode()).thenReturn(true);
|
||||||
|
when(mIdleBrightnessMappingStrategy.getUserBrightness()).thenReturn(-1.0f);
|
||||||
|
when(mIdleBrightnessMappingStrategy.getUserLux()).thenReturn(-1.0f);
|
||||||
|
|
||||||
|
// Sensor reads 1000 lux,
|
||||||
|
listener.onSensorChanged(TestUtils.createSensorEvent(mLightSensor, 1000));
|
||||||
|
// Do not fast-forward time.
|
||||||
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
|
mController.switchToInteractiveScreenBrightnessMode();
|
||||||
|
// Do not fast-forward time
|
||||||
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
|
// Ensure that there are no data points added, since the user has never adjusted the
|
||||||
|
// brightness
|
||||||
|
verify(mBrightnessMappingStrategy, times(0))
|
||||||
|
.addUserDataPoint(anyFloat(), anyFloat());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSwitchToIdleMappingStrategy() throws Exception {
|
public void testSwitchToIdleMappingStrategy() throws Exception {
|
||||||
ArgumentCaptor<SensorEventListener> listenerCaptor =
|
ArgumentCaptor<SensorEventListener> listenerCaptor =
|
||||||
|
|||||||
Reference in New Issue
Block a user