Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a32127e1 authored by Piotr Wilczyński's avatar Piotr Wilczyński
Browse files

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
parent 0d6161a3
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
+40 −1
Original line number Diff line number Diff line
@@ -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