Stop the screen off brightness sensor controller
This change was implemented in DPC1 in ag/20869684 but has not been implemented in DPC2. Bug: 269533295 Test: atest DisplayPowerControllerTest Test: atest DisplayPowerController2Test Change-Id: I57bfbef2830e30289368a0e0ad8df5ec46607e10
This commit is contained in:
@@ -885,7 +885,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
final boolean isInTransition = mLogicalDisplay.isInTransitionLocked();
|
||||
final String brightnessThrottlingDataId =
|
||||
mLogicalDisplay.getBrightnessThrottlingDataIdLocked();
|
||||
mHandler.post(() -> {
|
||||
mHandler.postAtTime(() -> {
|
||||
boolean changed = false;
|
||||
if (mDisplayDevice != device) {
|
||||
changed = true;
|
||||
@@ -916,7 +916,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
if (changed) {
|
||||
updatePowerState();
|
||||
}
|
||||
});
|
||||
}, mClock.uptimeMillis());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -940,10 +940,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mAutomaticBrightnessController.stop();
|
||||
}
|
||||
|
||||
if (mScreenOffBrightnessSensorController != null) {
|
||||
mScreenOffBrightnessSensorController.stop();
|
||||
}
|
||||
|
||||
if (mBrightnessSetting != null) {
|
||||
mBrightnessSetting.unregisterListener(mBrightnessSettingListener);
|
||||
}
|
||||
@@ -1190,6 +1186,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
|
||||
if (mScreenOffBrightnessSensorController != null) {
|
||||
mScreenOffBrightnessSensorController.stop();
|
||||
mScreenOffBrightnessSensorController = null;
|
||||
}
|
||||
loadScreenOffBrightnessSensor();
|
||||
int[] sensorValueToLux = mDisplayDeviceConfig.getScreenOffBrightnessSensorValueToLux();
|
||||
@@ -1311,6 +1308,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mPowerState.stop();
|
||||
mPowerState = null;
|
||||
}
|
||||
|
||||
if (mScreenOffBrightnessSensorController != null) {
|
||||
mScreenOffBrightnessSensorController.stop();
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePowerState() {
|
||||
|
||||
@@ -729,7 +729,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
final String brightnessThrottlingDataId =
|
||||
mLogicalDisplay.getBrightnessThrottlingDataIdLocked();
|
||||
|
||||
mHandler.post(() -> {
|
||||
mHandler.postAtTime(() -> {
|
||||
boolean changed = false;
|
||||
if (mDisplayDevice != device) {
|
||||
changed = true;
|
||||
@@ -761,7 +761,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
if (changed) {
|
||||
updatePowerState();
|
||||
}
|
||||
});
|
||||
}, mClock.uptimeMillis());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1028,6 +1028,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
mBrightnessEventRingBuffer =
|
||||
new RingBuffer<>(BrightnessEvent.class, RINGBUFFER_MAX);
|
||||
|
||||
if (mScreenOffBrightnessSensorController != null) {
|
||||
mScreenOffBrightnessSensorController.stop();
|
||||
mScreenOffBrightnessSensorController = null;
|
||||
}
|
||||
loadScreenOffBrightnessSensor();
|
||||
int[] sensorValueToLux = mDisplayDeviceConfig.getScreenOffBrightnessSensorValueToLux();
|
||||
if (mScreenOffBrightnessSensor != null && sensorValueToLux != null) {
|
||||
@@ -1133,6 +1137,10 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
mPowerState.stop();
|
||||
mPowerState = null;
|
||||
}
|
||||
|
||||
if (mScreenOffBrightnessSensorController != null) {
|
||||
mScreenOffBrightnessSensorController.stop();
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePowerState() {
|
||||
|
||||
@@ -64,6 +64,7 @@ import com.android.server.am.BatteryStatsService;
|
||||
import com.android.server.display.RampAnimator.DualRampAnimator;
|
||||
import com.android.server.display.brightness.BrightnessEvent;
|
||||
import com.android.server.display.color.ColorDisplayService;
|
||||
import com.android.server.display.layout.Layout;
|
||||
import com.android.server.display.whitebalance.DisplayWhiteBalanceController;
|
||||
import com.android.server.policy.WindowManagerPolicy;
|
||||
import com.android.server.testutils.OffsettableClock;
|
||||
@@ -240,12 +241,15 @@ public final class DisplayPowerController2Test {
|
||||
boolean isEnabled) {
|
||||
DisplayInfo info = new DisplayInfo();
|
||||
DisplayDeviceInfo deviceInfo = new DisplayDeviceInfo();
|
||||
deviceInfo.uniqueId = uniqueId;
|
||||
|
||||
when(logicalDisplayMock.getDisplayIdLocked()).thenReturn(displayId);
|
||||
when(logicalDisplayMock.getPrimaryDisplayDeviceLocked()).thenReturn(displayDeviceMock);
|
||||
when(logicalDisplayMock.getDisplayInfoLocked()).thenReturn(info);
|
||||
when(logicalDisplayMock.isEnabledLocked()).thenReturn(isEnabled);
|
||||
when(logicalDisplayMock.isInTransitionLocked()).thenReturn(false);
|
||||
when(logicalDisplayMock.getBrightnessThrottlingDataIdLocked()).thenReturn(
|
||||
DisplayDeviceConfig.DEFAULT_BRIGHTNESS_THROTTLING_DATA_ID);
|
||||
when(displayDeviceMock.getDisplayDeviceInfoLocked()).thenReturn(deviceInfo);
|
||||
when(displayDeviceMock.getUniqueId()).thenReturn(uniqueId);
|
||||
when(displayDeviceMock.getDisplayDeviceConfig()).thenReturn(displayDeviceConfigMock);
|
||||
@@ -626,6 +630,19 @@ public final class DisplayPowerController2Test {
|
||||
.setLightSensorEnabled(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStopScreenOffBrightnessSensorControllerWhenDisplayDeviceChanges() {
|
||||
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);
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.screenOffBrightnessSensorController).stop();
|
||||
}
|
||||
|
||||
private DisplayPowerControllerHolder createDisplayPowerController(int displayId,
|
||||
String uniqueId) {
|
||||
return createDisplayPowerController(displayId, uniqueId, /* isEnabled= */ true);
|
||||
@@ -662,8 +679,8 @@ public final class DisplayPowerController2Test {
|
||||
mBrightnessTrackerMock, brightnessSetting, () -> {},
|
||||
hbmMetadata, /* bootCompleted= */ false);
|
||||
|
||||
return new DisplayPowerControllerHolder(dpc, displayPowerState, brightnessSetting, animator,
|
||||
automaticBrightnessController, wakelockController,
|
||||
return new DisplayPowerControllerHolder(dpc, display, displayPowerState, brightnessSetting,
|
||||
animator, automaticBrightnessController, wakelockController,
|
||||
screenOffBrightnessSensorController, hbmMetadata);
|
||||
}
|
||||
|
||||
@@ -673,6 +690,7 @@ public final class DisplayPowerController2Test {
|
||||
*/
|
||||
private static class DisplayPowerControllerHolder {
|
||||
public final DisplayPowerController2 dpc;
|
||||
public final LogicalDisplay display;
|
||||
public final DisplayPowerState displayPowerState;
|
||||
public final BrightnessSetting brightnessSetting;
|
||||
public final DualRampAnimator<DisplayPowerState> animator;
|
||||
@@ -681,7 +699,7 @@ public final class DisplayPowerController2Test {
|
||||
public final ScreenOffBrightnessSensorController screenOffBrightnessSensorController;
|
||||
public final HighBrightnessModeMetadata hbmMetadata;
|
||||
|
||||
DisplayPowerControllerHolder(DisplayPowerController2 dpc,
|
||||
DisplayPowerControllerHolder(DisplayPowerController2 dpc, LogicalDisplay display,
|
||||
DisplayPowerState displayPowerState, BrightnessSetting brightnessSetting,
|
||||
DualRampAnimator<DisplayPowerState> animator,
|
||||
AutomaticBrightnessController automaticBrightnessController,
|
||||
@@ -689,6 +707,7 @@ public final class DisplayPowerController2Test {
|
||||
ScreenOffBrightnessSensorController screenOffBrightnessSensorController,
|
||||
HighBrightnessModeMetadata hbmMetadata) {
|
||||
this.dpc = dpc;
|
||||
this.display = display;
|
||||
this.displayPowerState = displayPowerState;
|
||||
this.brightnessSetting = brightnessSetting;
|
||||
this.animator = animator;
|
||||
|
||||
@@ -64,6 +64,7 @@ import com.android.server.am.BatteryStatsService;
|
||||
import com.android.server.display.RampAnimator.DualRampAnimator;
|
||||
import com.android.server.display.brightness.BrightnessEvent;
|
||||
import com.android.server.display.color.ColorDisplayService;
|
||||
import com.android.server.display.layout.Layout;
|
||||
import com.android.server.display.whitebalance.DisplayWhiteBalanceController;
|
||||
import com.android.server.policy.WindowManagerPolicy;
|
||||
import com.android.server.testutils.OffsettableClock;
|
||||
@@ -243,12 +244,15 @@ public final class DisplayPowerControllerTest {
|
||||
boolean isEnabled) {
|
||||
DisplayInfo info = new DisplayInfo();
|
||||
DisplayDeviceInfo deviceInfo = new DisplayDeviceInfo();
|
||||
deviceInfo.uniqueId = uniqueId;
|
||||
|
||||
when(logicalDisplayMock.getDisplayIdLocked()).thenReturn(displayId);
|
||||
when(logicalDisplayMock.getPrimaryDisplayDeviceLocked()).thenReturn(displayDeviceMock);
|
||||
when(logicalDisplayMock.getDisplayInfoLocked()).thenReturn(info);
|
||||
when(logicalDisplayMock.isEnabledLocked()).thenReturn(isEnabled);
|
||||
when(logicalDisplayMock.isInTransitionLocked()).thenReturn(false);
|
||||
when(logicalDisplayMock.getBrightnessThrottlingDataIdLocked()).thenReturn(
|
||||
DisplayDeviceConfig.DEFAULT_BRIGHTNESS_THROTTLING_DATA_ID);
|
||||
when(displayDeviceMock.getDisplayDeviceInfoLocked()).thenReturn(deviceInfo);
|
||||
when(displayDeviceMock.getUniqueId()).thenReturn(uniqueId);
|
||||
when(displayDeviceMock.getDisplayDeviceConfig()).thenReturn(displayDeviceConfigMock);
|
||||
@@ -630,6 +634,19 @@ public final class DisplayPowerControllerTest {
|
||||
.setLightSensorEnabled(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStopScreenOffBrightnessSensorControllerWhenDisplayDeviceChanges() {
|
||||
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);
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.screenOffBrightnessSensorController).stop();
|
||||
}
|
||||
|
||||
private DisplayPowerControllerHolder createDisplayPowerController(int displayId,
|
||||
String uniqueId) {
|
||||
return createDisplayPowerController(displayId, uniqueId, /* isEnabled= */ true);
|
||||
@@ -665,8 +682,9 @@ public final class DisplayPowerControllerTest {
|
||||
mBrightnessTrackerMock, brightnessSetting, () -> {},
|
||||
hbmMetadata, /* bootCompleted= */ false);
|
||||
|
||||
return new DisplayPowerControllerHolder(dpc, displayPowerState, brightnessSetting, animator,
|
||||
automaticBrightnessController, screenOffBrightnessSensorController, hbmMetadata);
|
||||
return new DisplayPowerControllerHolder(dpc, display, displayPowerState, brightnessSetting,
|
||||
animator, automaticBrightnessController, screenOffBrightnessSensorController,
|
||||
hbmMetadata);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -675,6 +693,7 @@ public final class DisplayPowerControllerTest {
|
||||
*/
|
||||
private static class DisplayPowerControllerHolder {
|
||||
public final DisplayPowerController dpc;
|
||||
public final LogicalDisplay display;
|
||||
public final DisplayPowerState displayPowerState;
|
||||
public final BrightnessSetting brightnessSetting;
|
||||
public final DualRampAnimator<DisplayPowerState> animator;
|
||||
@@ -682,13 +701,14 @@ public final class DisplayPowerControllerTest {
|
||||
public final ScreenOffBrightnessSensorController screenOffBrightnessSensorController;
|
||||
public final HighBrightnessModeMetadata hbmMetadata;
|
||||
|
||||
DisplayPowerControllerHolder(DisplayPowerController dpc,
|
||||
DisplayPowerControllerHolder(DisplayPowerController dpc, LogicalDisplay display,
|
||||
DisplayPowerState displayPowerState, BrightnessSetting brightnessSetting,
|
||||
DualRampAnimator<DisplayPowerState> animator,
|
||||
AutomaticBrightnessController automaticBrightnessController,
|
||||
ScreenOffBrightnessSensorController screenOffBrightnessSensorController,
|
||||
HighBrightnessModeMetadata hbmMetadata) {
|
||||
this.dpc = dpc;
|
||||
this.display = display;
|
||||
this.displayPowerState = displayPowerState;
|
||||
this.brightnessSetting = brightnessSetting;
|
||||
this.animator = animator;
|
||||
|
||||
Reference in New Issue
Block a user