Merge "Translate the float scale value to a nit value when transferring the short-term model" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
310e20565b
@@ -1056,10 +1056,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
}
|
||||
|
||||
float userLux = BrightnessMappingStrategy.NO_USER_LUX;
|
||||
float userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||
float userNits = -1;
|
||||
if (mInteractiveModeBrightnessMapper != null) {
|
||||
userLux = mInteractiveModeBrightnessMapper.getUserLux();
|
||||
userBrightness = mInteractiveModeBrightnessMapper.getUserBrightness();
|
||||
float userBrightness = mInteractiveModeBrightnessMapper.getUserBrightness();
|
||||
userNits = mInteractiveModeBrightnessMapper.convertToNits(userBrightness);
|
||||
}
|
||||
|
||||
final boolean isIdleScreenBrightnessEnabled = resources.getBoolean(
|
||||
@@ -1179,6 +1180,13 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
if (mAutomaticBrightnessController != null) {
|
||||
mAutomaticBrightnessController.stop();
|
||||
}
|
||||
float userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||
if (userNits >= 0) {
|
||||
userBrightness = mInteractiveModeBrightnessMapper.convertToFloatScale(userNits);
|
||||
if (userBrightness == PowerManager.BRIGHTNESS_INVALID_FLOAT) {
|
||||
userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||
}
|
||||
}
|
||||
mAutomaticBrightnessController = mInjector.getAutomaticBrightnessController(
|
||||
this, handler.getLooper(), mSensorManager, mLightSensor,
|
||||
mInteractiveModeBrightnessMapper, lightSensorWarmUpTimeConfig,
|
||||
|
||||
@@ -893,10 +893,11 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
}
|
||||
|
||||
float userLux = BrightnessMappingStrategy.NO_USER_LUX;
|
||||
float userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||
float userNits = -1;
|
||||
if (mInteractiveModeBrightnessMapper != null) {
|
||||
userLux = mInteractiveModeBrightnessMapper.getUserLux();
|
||||
userBrightness = mInteractiveModeBrightnessMapper.getUserBrightness();
|
||||
float userBrightness = mInteractiveModeBrightnessMapper.getUserBrightness();
|
||||
userNits = mInteractiveModeBrightnessMapper.convertToNits(userBrightness);
|
||||
}
|
||||
|
||||
final boolean isIdleScreenBrightnessEnabled = resources.getBoolean(
|
||||
@@ -1016,6 +1017,13 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
if (mAutomaticBrightnessController != null) {
|
||||
mAutomaticBrightnessController.stop();
|
||||
}
|
||||
float userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||
if (userNits >= 0) {
|
||||
userBrightness = mInteractiveModeBrightnessMapper.convertToFloatScale(userNits);
|
||||
if (userBrightness == PowerManager.BRIGHTNESS_INVALID_FLOAT) {
|
||||
userBrightness = BrightnessMappingStrategy.NO_USER_BRIGHTNESS;
|
||||
}
|
||||
}
|
||||
mAutomaticBrightnessController = mInjector.getAutomaticBrightnessController(
|
||||
this, handler.getLooper(), mSensorManager, mLightSensor,
|
||||
mInteractiveModeBrightnessMapper, lightSensorWarmUpTimeConfig,
|
||||
|
||||
@@ -21,11 +21,14 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyFloat;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.ArgumentMatchers.isA;
|
||||
import static org.mockito.ArgumentMatchers.isNull;
|
||||
import static org.mockito.Mockito.atLeastOnce;
|
||||
import static org.mockito.Mockito.clearInvocations;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -672,6 +675,7 @@ public final class DisplayPowerController2Test {
|
||||
|
||||
@Test
|
||||
public void testStopScreenOffBrightnessSensorControllerWhenDisplayDeviceChanges() {
|
||||
// New display device
|
||||
setUpDisplay(DISPLAY_ID, "new_unique_id", mHolder.display, mock(DisplayDevice.class),
|
||||
mock(DisplayDeviceConfig.class), /* isEnabled= */ true);
|
||||
|
||||
@@ -711,6 +715,56 @@ public final class DisplayPowerController2Test {
|
||||
verify(mHolder.animator, times(2)).animateTo(eq(newBrightness), anyFloat(), anyFloat());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShortTermModelPersistsWhenDisplayDeviceChanges() {
|
||||
float lux = 2000;
|
||||
float brightness = 0.4f;
|
||||
float nits = 500;
|
||||
when(mHolder.brightnessMappingStrategy.getUserLux()).thenReturn(lux);
|
||||
when(mHolder.brightnessMappingStrategy.getUserBrightness()).thenReturn(brightness);
|
||||
when(mHolder.brightnessMappingStrategy.convertToNits(brightness)).thenReturn(nits);
|
||||
when(mHolder.brightnessMappingStrategy.convertToFloatScale(nits)).thenReturn(brightness);
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1);
|
||||
clearInvocations(mHolder.injector);
|
||||
|
||||
// New display device
|
||||
setUpDisplay(DISPLAY_ID, "new_unique_id", mHolder.display, mock(DisplayDevice.class),
|
||||
mock(DisplayDeviceConfig.class), /* isEnabled= */ true);
|
||||
mHolder.dpc.onDisplayChanged(mHolder.hbmMetadata, Layout.NO_LEAD_DISPLAY);
|
||||
advanceTime(1);
|
||||
|
||||
verify(mHolder.injector).getAutomaticBrightnessController(
|
||||
any(AutomaticBrightnessController.Callbacks.class),
|
||||
any(Looper.class),
|
||||
eq(mSensorManagerMock),
|
||||
any(),
|
||||
eq(mHolder.brightnessMappingStrategy),
|
||||
anyInt(),
|
||||
anyFloat(),
|
||||
anyFloat(),
|
||||
anyFloat(),
|
||||
anyInt(),
|
||||
anyInt(),
|
||||
anyLong(),
|
||||
anyLong(),
|
||||
anyBoolean(),
|
||||
any(HysteresisLevels.class),
|
||||
any(HysteresisLevels.class),
|
||||
any(HysteresisLevels.class),
|
||||
any(HysteresisLevels.class),
|
||||
eq(mContextSpy),
|
||||
any(HighBrightnessModeController.class),
|
||||
any(BrightnessThrottler.class),
|
||||
isNull(),
|
||||
anyInt(),
|
||||
anyInt(),
|
||||
eq(lux),
|
||||
eq(brightness)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a mock and registers it to {@link LocalServices}.
|
||||
*/
|
||||
@@ -796,9 +850,9 @@ public final class DisplayPowerController2Test {
|
||||
final ScreenOffBrightnessSensorController screenOffBrightnessSensorController =
|
||||
mock(ScreenOffBrightnessSensorController.class);
|
||||
|
||||
TestInjector injector = new TestInjector(displayPowerState, animator,
|
||||
TestInjector injector = spy(new TestInjector(displayPowerState, animator,
|
||||
automaticBrightnessController, wakelockController, brightnessMappingStrategy,
|
||||
hysteresisLevels, screenOffBrightnessSensorController);
|
||||
hysteresisLevels, screenOffBrightnessSensorController));
|
||||
|
||||
final LogicalDisplay display = mock(LogicalDisplay.class);
|
||||
final DisplayDevice device = mock(DisplayDevice.class);
|
||||
@@ -816,7 +870,8 @@ public final class DisplayPowerController2Test {
|
||||
|
||||
return new DisplayPowerControllerHolder(dpc, display, displayPowerState, brightnessSetting,
|
||||
animator, automaticBrightnessController, wakelockController,
|
||||
screenOffBrightnessSensorController, hbmMetadata);
|
||||
screenOffBrightnessSensorController, hbmMetadata, brightnessMappingStrategy,
|
||||
injector);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -833,6 +888,8 @@ public final class DisplayPowerController2Test {
|
||||
public final WakelockController wakelockController;
|
||||
public final ScreenOffBrightnessSensorController screenOffBrightnessSensorController;
|
||||
public final HighBrightnessModeMetadata hbmMetadata;
|
||||
public final BrightnessMappingStrategy brightnessMappingStrategy;
|
||||
public final DisplayPowerController2.Injector injector;
|
||||
|
||||
DisplayPowerControllerHolder(DisplayPowerController2 dpc, LogicalDisplay display,
|
||||
DisplayPowerState displayPowerState, BrightnessSetting brightnessSetting,
|
||||
@@ -840,7 +897,9 @@ public final class DisplayPowerController2Test {
|
||||
AutomaticBrightnessController automaticBrightnessController,
|
||||
WakelockController wakelockController,
|
||||
ScreenOffBrightnessSensorController screenOffBrightnessSensorController,
|
||||
HighBrightnessModeMetadata hbmMetadata) {
|
||||
HighBrightnessModeMetadata hbmMetadata,
|
||||
BrightnessMappingStrategy brightnessMappingStrategy,
|
||||
DisplayPowerController2.Injector injector) {
|
||||
this.dpc = dpc;
|
||||
this.display = display;
|
||||
this.displayPowerState = displayPowerState;
|
||||
@@ -850,6 +909,8 @@ public final class DisplayPowerController2Test {
|
||||
this.wakelockController = wakelockController;
|
||||
this.screenOffBrightnessSensorController = screenOffBrightnessSensorController;
|
||||
this.hbmMetadata = hbmMetadata;
|
||||
this.brightnessMappingStrategy = brightnessMappingStrategy;
|
||||
this.injector = injector;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,11 +21,14 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyFloat;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.ArgumentMatchers.isA;
|
||||
import static org.mockito.ArgumentMatchers.isNull;
|
||||
import static org.mockito.Mockito.atLeastOnce;
|
||||
import static org.mockito.Mockito.clearInvocations;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -676,6 +679,7 @@ public final class DisplayPowerControllerTest {
|
||||
|
||||
@Test
|
||||
public void testStopScreenOffBrightnessSensorControllerWhenDisplayDeviceChanges() {
|
||||
// New display device
|
||||
setUpDisplay(DISPLAY_ID, "new_unique_id", mHolder.display, mock(DisplayDevice.class),
|
||||
mock(DisplayDeviceConfig.class), /* isEnabled= */ true);
|
||||
|
||||
@@ -715,6 +719,56 @@ public final class DisplayPowerControllerTest {
|
||||
verify(mHolder.animator, times(2)).animateTo(eq(newBrightness), anyFloat(), anyFloat());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testShortTermModelPersistsWhenDisplayDeviceChanges() {
|
||||
float lux = 2000;
|
||||
float brightness = 0.4f;
|
||||
float nits = 500;
|
||||
when(mHolder.brightnessMappingStrategy.getUserLux()).thenReturn(lux);
|
||||
when(mHolder.brightnessMappingStrategy.getUserBrightness()).thenReturn(brightness);
|
||||
when(mHolder.brightnessMappingStrategy.convertToNits(brightness)).thenReturn(nits);
|
||||
when(mHolder.brightnessMappingStrategy.convertToFloatScale(nits)).thenReturn(brightness);
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1);
|
||||
clearInvocations(mHolder.injector);
|
||||
|
||||
// New display device
|
||||
setUpDisplay(DISPLAY_ID, "new_unique_id", mHolder.display, mock(DisplayDevice.class),
|
||||
mock(DisplayDeviceConfig.class), /* isEnabled= */ true);
|
||||
mHolder.dpc.onDisplayChanged(mHolder.hbmMetadata, Layout.NO_LEAD_DISPLAY);
|
||||
advanceTime(1);
|
||||
|
||||
verify(mHolder.injector).getAutomaticBrightnessController(
|
||||
any(AutomaticBrightnessController.Callbacks.class),
|
||||
any(Looper.class),
|
||||
eq(mSensorManagerMock),
|
||||
any(),
|
||||
eq(mHolder.brightnessMappingStrategy),
|
||||
anyInt(),
|
||||
anyFloat(),
|
||||
anyFloat(),
|
||||
anyFloat(),
|
||||
anyInt(),
|
||||
anyInt(),
|
||||
anyLong(),
|
||||
anyLong(),
|
||||
anyBoolean(),
|
||||
any(HysteresisLevels.class),
|
||||
any(HysteresisLevels.class),
|
||||
any(HysteresisLevels.class),
|
||||
any(HysteresisLevels.class),
|
||||
eq(mContextSpy),
|
||||
any(HighBrightnessModeController.class),
|
||||
any(BrightnessThrottler.class),
|
||||
isNull(),
|
||||
anyInt(),
|
||||
anyInt(),
|
||||
eq(lux),
|
||||
eq(brightness)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a mock and registers it to {@link LocalServices}.
|
||||
*/
|
||||
@@ -799,9 +853,9 @@ public final class DisplayPowerControllerTest {
|
||||
final ScreenOffBrightnessSensorController screenOffBrightnessSensorController =
|
||||
mock(ScreenOffBrightnessSensorController.class);
|
||||
|
||||
DisplayPowerController.Injector injector = new TestInjector(displayPowerState, animator,
|
||||
DisplayPowerController.Injector injector = spy(new TestInjector(displayPowerState, animator,
|
||||
automaticBrightnessController, brightnessMappingStrategy, hysteresisLevels,
|
||||
screenOffBrightnessSensorController);
|
||||
screenOffBrightnessSensorController));
|
||||
|
||||
final LogicalDisplay display = mock(LogicalDisplay.class);
|
||||
final DisplayDevice device = mock(DisplayDevice.class);
|
||||
@@ -819,7 +873,7 @@ public final class DisplayPowerControllerTest {
|
||||
|
||||
return new DisplayPowerControllerHolder(dpc, display, displayPowerState, brightnessSetting,
|
||||
animator, automaticBrightnessController, screenOffBrightnessSensorController,
|
||||
hbmMetadata);
|
||||
hbmMetadata, brightnessMappingStrategy, injector);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -835,13 +889,17 @@ public final class DisplayPowerControllerTest {
|
||||
public final AutomaticBrightnessController automaticBrightnessController;
|
||||
public final ScreenOffBrightnessSensorController screenOffBrightnessSensorController;
|
||||
public final HighBrightnessModeMetadata hbmMetadata;
|
||||
public final BrightnessMappingStrategy brightnessMappingStrategy;
|
||||
public final DisplayPowerController.Injector injector;
|
||||
|
||||
DisplayPowerControllerHolder(DisplayPowerController dpc, LogicalDisplay display,
|
||||
DisplayPowerState displayPowerState, BrightnessSetting brightnessSetting,
|
||||
DualRampAnimator<DisplayPowerState> animator,
|
||||
AutomaticBrightnessController automaticBrightnessController,
|
||||
ScreenOffBrightnessSensorController screenOffBrightnessSensorController,
|
||||
HighBrightnessModeMetadata hbmMetadata) {
|
||||
HighBrightnessModeMetadata hbmMetadata,
|
||||
BrightnessMappingStrategy brightnessMappingStrategy,
|
||||
DisplayPowerController.Injector injector) {
|
||||
this.dpc = dpc;
|
||||
this.display = display;
|
||||
this.displayPowerState = displayPowerState;
|
||||
@@ -850,6 +908,8 @@ public final class DisplayPowerControllerTest {
|
||||
this.automaticBrightnessController = automaticBrightnessController;
|
||||
this.screenOffBrightnessSensorController = screenOffBrightnessSensorController;
|
||||
this.hbmMetadata = hbmMetadata;
|
||||
this.brightnessMappingStrategy = brightnessMappingStrategy;
|
||||
this.injector = injector;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user