diff options
| author | 2024-07-01 15:53:46 +0000 | |
|---|---|---|
| committer | 2024-07-01 15:58:22 +0000 | |
| commit | a32127e1887426d690f91b32f8a7ff84534def5f (patch) | |
| tree | 3fcc2a10a00b6c26fab28a01b1fb35543d8b05dc | |
| parent | 0d6161a3ea95fa7c5027edf41be01d78465d28f7 (diff) | |
Don't store doze manual brightness in setting
This bug is only visible with the refactor DPC flag enabled - that's because the FallbackStrategy is used and it sets updateScreenBrightnessSetting to true, even though it later gets overridden with a different brightness strategy.
Bug: 349296625
Flag: EXEMPT bugfix
Test: atest DisplayPowerControllerTest
Change-Id: Ica2a345658059394b454a5b13dd5d9e8606b837c
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayPowerController.java | 1 | ||||
| -rw-r--r-- | services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java | 41 |
2 files changed, 41 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index c298bbf5a551..7f826d2c76dd 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1485,6 +1485,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call || !mAutomaticBrightnessStrategy.shouldUseAutoBrightness())) { rawBrightnessState = getDozeBrightnessForOffload(); brightnessState = clampScreenBrightness(rawBrightnessState); + updateScreenBrightnessSetting = false; mBrightnessReasonTemp.setReason(BrightnessReason.REASON_DOZE_MANUAL); mTempBrightnessEvent.setFlags( mTempBrightnessEvent.getFlags() | BrightnessEvent.FLAG_DOZE_SCALE); diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java index bb774eec9d4e..9a719bcb2811 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java @@ -1938,7 +1938,7 @@ public final class DisplayPowerControllerTest { } @Test - public void testDozeManualBrightness() { + public void testDozeManualBrightness_DpcRefactorDisabled() { when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true); mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession); Settings.System.putInt(mContext.getContentResolver(), @@ -1968,6 +1968,45 @@ public final class DisplayPowerControllerTest { /* ignoreAnimationLimits= */ anyBoolean()); assertEquals(brightness * DOZE_SCALE_FACTOR, mHolder.dpc.getDozeBrightnessForOffload(), /* delta= */ 0); + // This brightness shouldn't be stored in the setting + verify(mHolder.brightnessSetting, never()).setBrightness(brightness * DOZE_SCALE_FACTOR); + } + + @Test + public void testDozeManualBrightness_DpcRefactorEnabled() { + when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true); + when(mDisplayManagerFlagsMock.isRefactorDisplayPowerControllerEnabled()).thenReturn(true); + mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID); + mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession); + Settings.System.putInt(mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_MODE, + Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); + float brightness = 0.277f; + when(mHolder.displayPowerState.getColorFadeLevel()).thenReturn(1.0f); + when(mHolder.brightnessSetting.getBrightness()).thenReturn(brightness); + when(mHolder.hbmController.getCurrentBrightnessMax()) + .thenReturn(PowerManager.BRIGHTNESS_MAX); + when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE); + + DisplayPowerRequest dpr = new DisplayPowerRequest(); + dpr.policy = DisplayPowerRequest.POLICY_DOZE; + mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false); + advanceTime(1); // Run updatePowerState, initialize + + ArgumentCaptor<BrightnessSetting.BrightnessSettingListener> listenerCaptor = + ArgumentCaptor.forClass(BrightnessSetting.BrightnessSettingListener.class); + verify(mHolder.brightnessSetting).registerListener(listenerCaptor.capture()); + BrightnessSetting.BrightnessSettingListener listener = listenerCaptor.getValue(); + listener.onBrightnessChanged(brightness); + advanceTime(1); // Send messages, run updatePowerState + + verify(mHolder.animator).animateTo(eq(brightness * DOZE_SCALE_FACTOR), + /* linearSecondTarget= */ anyFloat(), /* rate= */ anyFloat(), + /* ignoreAnimationLimits= */ anyBoolean()); + assertEquals(brightness * DOZE_SCALE_FACTOR, mHolder.dpc.getDozeBrightnessForOffload(), + /* delta= */ 0); + // This brightness shouldn't be stored in the setting + verify(mHolder.brightnessSetting, never()).setBrightness(brightness * DOZE_SCALE_FACTOR); } @Test |