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