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

Commit d75df52b authored by Piotr Wilczyński's avatar Piotr Wilczyński Committed by Android (Google) Code Review
Browse files

Merge "Fix auto-brightness state sent to HBMController" into udc-qpr-dev

parents 136a00dc d83c3e57
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -1590,12 +1590,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                mAllowAutoBrightnessWhileDozingConfig && Display.isDozeState(state);
        final boolean autoBrightnessEnabled = mUseAutoBrightness
                && (state == Display.STATE_ON || autoBrightnessEnabledInDoze)
                && Float.isNaN(brightnessState)
                && mAutomaticBrightnessController != null
                && mBrightnessReasonTemp.getReason() != BrightnessReason.REASON_FOLLOWER;
                && mBrightnessReasonTemp.getReason() != BrightnessReason.REASON_OVERRIDE
                && mAutomaticBrightnessController != null;
        final boolean autoBrightnessDisabledDueToDisplayOff = mUseAutoBrightness
                && !(state == Display.STATE_ON || autoBrightnessEnabledInDoze);
        final int autoBrightnessState = autoBrightnessEnabled
                    && mBrightnessReasonTemp.getReason() != BrightnessReason.REASON_FOLLOWER
                ? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
                : autoBrightnessDisabledDueToDisplayOff
                        ? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
@@ -1655,8 +1655,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                    mShouldResetShortTermModel);
            mShouldResetShortTermModel = false;
        }
        mBrightnessRangeController.setAutoBrightnessEnabled(mUseAutoBrightness
        mBrightnessRangeController.setAutoBrightnessEnabled(autoBrightnessEnabled
                ? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
                : autoBrightnessDisabledDueToDisplayOff
                        ? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
                        : AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);

        if (mBrightnessTracker != null) {
+6 −4
Original line number Diff line number Diff line
@@ -1296,7 +1296,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                mAutomaticBrightnessStrategy.isShortTermModelActive();
        mAutomaticBrightnessStrategy.setAutoBrightnessState(state,
                mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig(),
                brightnessState, mBrightnessReasonTemp.getReason(), mPowerRequest.policy,
                mBrightnessReasonTemp.getReason(), mPowerRequest.policy,
                mDisplayBrightnessController.getLastUserSetScreenBrightness(),
                userSetBrightnessChanged);

@@ -1306,9 +1306,11 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
                && (mAutomaticBrightnessStrategy.getAutoBrightnessAdjustmentChanged()
                || userSetBrightnessChanged);

        mBrightnessRangeController.setAutoBrightnessEnabled(mAutomaticBrightnessStrategy
                .shouldUseAutoBrightness()
        mBrightnessRangeController.setAutoBrightnessEnabled(
                mAutomaticBrightnessStrategy.isAutoBrightnessEnabled()
                ? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
                : mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff()
                        ? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
                        : AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);

        boolean updateScreenBrightnessSetting = false;
+13 −9
Original line number Diff line number Diff line
@@ -73,6 +73,9 @@ public class AutomaticBrightnessStrategy {
    // the user has enabled the auto-brightness from the settings, it is disabled because the
    // display is off
    private boolean mIsAutoBrightnessEnabled = false;
    // Indicates if auto-brightness is disabled due to the display being off. Needed for metric
    // purposes.
    private boolean mAutoBrightnessDisabledDueToDisplayOff;
    // If the auto-brightness model for the last manual changes done by the user.
    private boolean mIsShortTermModelActive = false;

@@ -96,24 +99,21 @@ public class AutomaticBrightnessStrategy {
     * AutomaticBrightnessController accounting for any manual changes made by the user.
     */
    public void setAutoBrightnessState(int targetDisplayState,
            boolean allowAutoBrightnessWhileDozingConfig,
            float brightnessState, int brightnessReason, int policy,
            boolean allowAutoBrightnessWhileDozingConfig, int brightnessReason, int policy,
            float lastUserSetScreenBrightness, boolean userSetBrightnessChanged) {
        final boolean autoBrightnessEnabledInDoze =
                allowAutoBrightnessWhileDozingConfig
                        && Display.isDozeState(targetDisplayState);
        mIsAutoBrightnessEnabled = shouldUseAutoBrightness()
                && (targetDisplayState == Display.STATE_ON || autoBrightnessEnabledInDoze)
                && (Float.isNaN(brightnessState)
                || brightnessReason == BrightnessReason.REASON_TEMPORARY
                || brightnessReason == BrightnessReason.REASON_BOOST)
                && mAutomaticBrightnessController != null
                && brightnessReason != BrightnessReason.REASON_FOLLOWER;
        final boolean autoBrightnessDisabledDueToDisplayOff = shouldUseAutoBrightness()
                && brightnessReason != BrightnessReason.REASON_OVERRIDE
                && mAutomaticBrightnessController != null;
        mAutoBrightnessDisabledDueToDisplayOff = shouldUseAutoBrightness()
                && !(targetDisplayState == Display.STATE_ON || autoBrightnessEnabledInDoze);
        final int autoBrightnessState = mIsAutoBrightnessEnabled
                    && brightnessReason != BrightnessReason.REASON_FOLLOWER
                ? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
                : autoBrightnessDisabledDueToDisplayOff
                : mAutoBrightnessDisabledDueToDisplayOff
                        ? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
                        : AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED;

@@ -125,6 +125,10 @@ public class AutomaticBrightnessStrategy {
        return mIsAutoBrightnessEnabled;
    }

    public boolean isAutoBrightnessDisabledDueToDisplayOff() {
        return mAutoBrightnessDisabledDueToDisplayOff;
    }

    /**
     * Updates the {@link BrightnessConfiguration} that is currently being used by the associated
     * display.
+149 −0
Original line number Diff line number Diff line
@@ -844,6 +844,155 @@ public final class DisplayPowerController2Test {
        verify(mHolder.screenOffBrightnessSensorController).stop();
    }

    @Test
    public void testAutoBrightnessEnabled_DisplayIsOn() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController)
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
    }

    @Test
    public void testAutoBrightnessEnabled_DisplayIsInDoze() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
        mContext.getOrCreateTestableResources().addOverride(
                com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
        mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_DOZE;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController)
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
    }

    @Test
    public void testAutoBrightnessDisabled_ManualBrightnessMode() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        // One triggered by the test, the other by handleBrightnessModeChange
        verify(mHolder.automaticBrightnessController, times(2)).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController, times(2))
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
    }

    @Test
    public void testAutoBrightnessDisabled_DisplayIsOff() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_OFF;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_OFF);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_OFF,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController).setAutoBrightnessEnabled(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
    }

    @Test
    public void testAutoBrightnessDisabled_DisplayIsInDoze() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
        mContext.getOrCreateTestableResources().addOverride(
                com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, false);
        mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_DOZE;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController).setAutoBrightnessEnabled(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
    }

    @Test
    public void testAutoBrightnessDisabled_FollowerDisplay() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
        mHolder.dpc.setBrightnessToFollow(0.3f, -1, 0, /* slowChange= */ false);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        // One triggered by the test, the other by handleBrightnessModeChange
        verify(mHolder.automaticBrightnessController, times(2)).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
                /* shouldResetShortTermModel= */ false
        );

        // HBM should be allowed for the follower display
        verify(mHolder.hbmController)
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
    }

    @Test
    public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
        float brightness = 0.3f;
+149 −0
Original line number Diff line number Diff line
@@ -849,6 +849,155 @@ public final class DisplayPowerControllerTest {
        verify(mHolder.screenOffBrightnessSensorController).stop();
    }

    @Test
    public void testAutoBrightnessEnabled_DisplayIsOn() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController)
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
    }

    @Test
    public void testAutoBrightnessEnabled_DisplayIsInDoze() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
        mContext.getOrCreateTestableResources().addOverride(
                com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
        mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_DOZE;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController)
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
    }

    @Test
    public void testAutoBrightnessDisabled_ManualBrightnessMode() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        // One triggered by the test, the other by handleBrightnessModeChange
        verify(mHolder.automaticBrightnessController, times(2)).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController, times(2))
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
    }

    @Test
    public void testAutoBrightnessDisabled_DisplayIsOff() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_OFF;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_OFF);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_OFF,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController).setAutoBrightnessEnabled(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
    }

    @Test
    public void testAutoBrightnessDisabled_DisplayIsInDoze() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
        mContext.getOrCreateTestableResources().addOverride(
                com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, false);
        mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_DOZE;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        verify(mHolder.automaticBrightnessController).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
                /* shouldResetShortTermModel= */ false
        );
        verify(mHolder.hbmController).setAutoBrightnessEnabled(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
    }

    @Test
    public void testAutoBrightnessDisabled_FollowerDisplay() {
        Settings.System.putInt(mContext.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS_MODE,
                Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
        mHolder.dpc.setBrightnessToFollow(0.3f, -1, 0, /* slowChange= */ false);

        DisplayPowerRequest dpr = new DisplayPowerRequest();
        dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
        when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
        mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
        advanceTime(1); // Run updatePowerState

        // One triggered by the test, the other by handleBrightnessModeChange
        verify(mHolder.automaticBrightnessController, times(2)).configure(
                AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
                /* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
                /* userChangedBrightness= */ false, /* adjustment= */ 0,
                /* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
                /* shouldResetShortTermModel= */ false
        );

        // HBM should be allowed for the follower display
        verify(mHolder.hbmController)
                .setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
    }

    @Test
    public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
        float brightness = 0.3f;
Loading