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

Commit 6d2b06b1 authored by Chen Bai's avatar Chen Bai Committed by Android (Google) Code Review
Browse files

Merge "brightness: apply bedtime mode specific curve" into main

parents cf8ca8c8 4be80650
Loading
Loading
Loading
Loading
+34 −10
Original line number Original line Diff line number Diff line
@@ -507,6 +507,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    // The time of inactivity after which the stylus can be assumed to be no longer in use.
    // The time of inactivity after which the stylus can be assumed to be no longer in use.
    private long mIdleStylusTimeoutMillisConfig = 0;
    private long mIdleStylusTimeoutMillisConfig = 0;


    // Whether wear bedtime mode is enabled in the settings.
    private boolean mIsWearBedtimeModeEnabled;

    /**
    /**
     * Creates the display power controller.
     * Creates the display power controller.
     */
     */
@@ -563,6 +566,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        mBrightnessTracker = brightnessTracker;
        mBrightnessTracker = brightnessTracker;
        mOnBrightnessChangeRunnable = onBrightnessChangeRunnable;
        mOnBrightnessChangeRunnable = onBrightnessChangeRunnable;


        mIsWearBedtimeModeEnabled = Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.Wearable.BEDTIME_MODE, /* def= */ 0) == 1;
        mContext.getContentResolver().registerContentObserver(
                Settings.Global.getUriFor(Settings.Global.Wearable.BEDTIME_MODE),
                false /*notifyForDescendants*/, mSettingsObserver, UserHandle.USER_ALL);

        final Resources resources = context.getResources();
        final Resources resources = context.getResources();


        // DOZE AND DIM SETTINGS
        // DOZE AND DIM SETTINGS
@@ -1166,8 +1175,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                    screenBrightnessThresholds, ambientBrightnessThresholdsIdle,
                    screenBrightnessThresholds, ambientBrightnessThresholdsIdle,
                    screenBrightnessThresholdsIdle, mContext, mBrightnessRangeController,
                    screenBrightnessThresholdsIdle, mContext, mBrightnessRangeController,
                    mBrightnessThrottler, mDisplayDeviceConfig.getAmbientHorizonShort(),
                    mBrightnessThrottler, mDisplayDeviceConfig.getAmbientHorizonShort(),
                    mDisplayDeviceConfig.getAmbientHorizonLong(), userLux, userNits,
                    mDisplayDeviceConfig.getAmbientHorizonLong(), userLux, userNits, mFlags);
                    mBrightnessClamperController, mFlags);
            mDisplayBrightnessController.setUpAutoBrightness(
            mDisplayBrightnessController.setUpAutoBrightness(
                    mAutomaticBrightnessController, mSensorManager, mDisplayDeviceConfig, mHandler,
                    mAutomaticBrightnessController, mSensorManager, mDisplayDeviceConfig, mHandler,
                    defaultModeBrightnessMapper, mIsEnabled, mLeadDisplayId);
                    defaultModeBrightnessMapper, mIsEnabled, mLeadDisplayId);
@@ -1386,9 +1394,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        final boolean useDozeBrightness = mFlags.isNormalBrightnessForDozeParameterEnabled()
        final boolean useDozeBrightness = mFlags.isNormalBrightnessForDozeParameterEnabled()
                ? (!mPowerRequest.useNormalBrightnessForDoze && mPowerRequest.policy == POLICY_DOZE)
                ? (!mPowerRequest.useNormalBrightnessForDoze && mPowerRequest.policy == POLICY_DOZE)
                        || Display.isDozeState(state) : Display.isDozeState(state);
                        || Display.isDozeState(state) : Display.isDozeState(state);

        DisplayBrightnessState displayBrightnessState =
        DisplayBrightnessState displayBrightnessState = mDisplayBrightnessController
                mDisplayBrightnessController.updateBrightness(
                .updateBrightness(mPowerRequest, state, mDisplayOffloadSession);
                        mPowerRequest,
                        state,
                        mDisplayOffloadSession,
                        mIsWearBedtimeModeEnabled);
        float brightnessState = displayBrightnessState.getBrightness();
        float brightnessState = displayBrightnessState.getBrightness();
        float rawBrightnessState = displayBrightnessState.getBrightness();
        float rawBrightnessState = displayBrightnessState.getBrightness();
        mBrightnessReasonTemp.set(displayBrightnessState.getBrightnessReason());
        mBrightnessReasonTemp.set(displayBrightnessState.getBrightnessReason());
@@ -1429,16 +1440,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                    && !mAutomaticBrightnessController.isInIdleMode()) {
                    && !mAutomaticBrightnessController.isInIdleMode()) {
                // Set sendUpdate to false, we're already in updatePowerState() so there's no need
                // Set sendUpdate to false, we're already in updatePowerState() so there's no need
                // to trigger it again
                // to trigger it again
                mAutomaticBrightnessController.switchMode(useDozeBrightness
                if (useDozeBrightness) {
                        ? AUTO_BRIGHTNESS_MODE_DOZE : AUTO_BRIGHTNESS_MODE_DEFAULT,
                    mAutomaticBrightnessController.switchMode(AUTO_BRIGHTNESS_MODE_DOZE,
                            /* sendUpdate= */ false);
                } else if (mFlags.isAutoBrightnessModeBedtimeWearEnabled()
                        && mIsWearBedtimeModeEnabled) {
                    mAutomaticBrightnessController.switchMode(AUTO_BRIGHTNESS_MODE_BEDTIME_WEAR,
                            /* sendUpdate= */ false);
                } else {
                    mAutomaticBrightnessController.switchMode(AUTO_BRIGHTNESS_MODE_DEFAULT,
                            /* sendUpdate= */ false);
                            /* sendUpdate= */ false);
                }
                }
            }


            mAutomaticBrightnessStrategy.setAutoBrightnessState(state,
            mAutomaticBrightnessStrategy.setAutoBrightnessState(state,
                    allowAutoBrightnessWhileDozing, mBrightnessReasonTemp.getReason(),
                    allowAutoBrightnessWhileDozing, mBrightnessReasonTemp.getReason(),
                    mPowerRequest.policy, mPowerRequest.useNormalBrightnessForDoze,
                    mPowerRequest.policy, mPowerRequest.useNormalBrightnessForDoze,
                    mDisplayBrightnessController.getLastUserSetScreenBrightness(),
                    mDisplayBrightnessController.getLastUserSetScreenBrightness(),
                    userSetBrightnessChanged);
                    userSetBrightnessChanged, mIsWearBedtimeModeEnabled);


            // If the brightness is already set then it's been overridden by something other than
            // If the brightness is already set then it's been overridden by something other than
            // the user, or is a temporary adjustment.
            // the user, or is a temporary adjustment.
@@ -3172,6 +3191,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                        + autoBrightnessPresetToString(preset));
                        + autoBrightnessPresetToString(preset));
                setUpAutoBrightness(mContext, mHandler);
                setUpAutoBrightness(mContext, mHandler);
                sendUpdatePowerState();
                sendUpdatePowerState();
            } else if (uri.equals(
                    Settings.Global.getUriFor(Settings.Global.Wearable.BEDTIME_MODE))) {
                mIsWearBedtimeModeEnabled = Settings.Global.getInt(mContext.getContentResolver(),
                        Settings.Global.Wearable.BEDTIME_MODE, /* def= */ 0) == 1;
                Slog.i(mTag, "Update for bedtime mode. Enable: " + mIsWearBedtimeModeEnabled);
                sendUpdatePowerState();
            } else {
            } else {
                handleSettingsChange();
                handleSettingsChange();
            }
            }
@@ -3275,7 +3300,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                BrightnessRangeController brightnessModeController,
                BrightnessRangeController brightnessModeController,
                BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
                BrightnessThrottler brightnessThrottler, int ambientLightHorizonShort,
                int ambientLightHorizonLong, float userLux, float userNits,
                int ambientLightHorizonLong, float userLux, float userNits,
                BrightnessClamperController brightnessClamperController,
                DisplayManagerFlags displayManagerFlags) {
                DisplayManagerFlags displayManagerFlags) {


            return new AutomaticBrightnessController(callbacks, looper, sensorManager, lightSensor,
            return new AutomaticBrightnessController(callbacks, looper, sensorManager, lightSensor,
+6 −4
Original line number Original line Diff line number Diff line
@@ -150,12 +150,13 @@ public final class DisplayBrightnessController {
    public DisplayBrightnessState updateBrightness(
    public DisplayBrightnessState updateBrightness(
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
            int targetDisplayState,
            int targetDisplayState,
            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession) {
            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession,
            boolean isBedtimeModeWearEnabled) {
        DisplayBrightnessState state;
        DisplayBrightnessState state;
        synchronized (mLock) {
        synchronized (mLock) {
            mDisplayBrightnessStrategy = mDisplayBrightnessStrategySelector.selectStrategy(
            mDisplayBrightnessStrategy = mDisplayBrightnessStrategySelector.selectStrategy(
                    constructStrategySelectionRequest(displayPowerRequest, targetDisplayState,
                    constructStrategySelectionRequest(displayPowerRequest, targetDisplayState,
                            displayOffloadSession));
                            displayOffloadSession, isBedtimeModeWearEnabled));
            state = mDisplayBrightnessStrategy
            state = mDisplayBrightnessStrategy
                        .updateBrightness(constructStrategyExecutionRequest(displayPowerRequest));
                        .updateBrightness(constructStrategyExecutionRequest(displayPowerRequest));
        }
        }
@@ -629,7 +630,8 @@ public final class DisplayBrightnessController {
    private StrategySelectionRequest constructStrategySelectionRequest(
    private StrategySelectionRequest constructStrategySelectionRequest(
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
            int targetDisplayState,
            int targetDisplayState,
            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession) {
            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession,
            boolean isBedtimeModeEnabled) {
        boolean userSetBrightnessChanged = updateUserSetScreenBrightness();
        boolean userSetBrightnessChanged = updateUserSetScreenBrightness();
        float lastUserSetScreenBrightness;
        float lastUserSetScreenBrightness;
        synchronized (mLock) {
        synchronized (mLock) {
@@ -637,7 +639,7 @@ public final class DisplayBrightnessController {
        }
        }
        return new StrategySelectionRequest(displayPowerRequest, targetDisplayState,
        return new StrategySelectionRequest(displayPowerRequest, targetDisplayState,
                lastUserSetScreenBrightness, userSetBrightnessChanged, displayOffloadSession,
                lastUserSetScreenBrightness, userSetBrightnessChanged, displayOffloadSession,
                mIsStylusBeingUsed);
                mIsStylusBeingUsed, isBedtimeModeEnabled);
    }
    }


    private StrategyExecutionRequest constructStrategyExecutionRequest(
    private StrategyExecutionRequest constructStrategyExecutionRequest(
+4 −2
Original line number Original line Diff line number Diff line
@@ -305,7 +305,8 @@ public class DisplayBrightnessStrategySelector {
                strategySelectionRequest.getDisplayPowerRequest().policy,
                strategySelectionRequest.getDisplayPowerRequest().policy,
                strategySelectionRequest.getDisplayPowerRequest().useNormalBrightnessForDoze,
                strategySelectionRequest.getDisplayPowerRequest().useNormalBrightnessForDoze,
                strategySelectionRequest.getLastUserSetScreenBrightness(),
                strategySelectionRequest.getLastUserSetScreenBrightness(),
                strategySelectionRequest.isUserSetBrightnessChanged());
                strategySelectionRequest.isUserSetBrightnessChanged(),
                strategySelectionRequest.isWearBedtimeModeEnabled());
        return !strategySelectionRequest.isStylusBeingUsed()
        return !strategySelectionRequest.isStylusBeingUsed()
                && mAutomaticBrightnessStrategy1.isAutoBrightnessValid();
                && mAutomaticBrightnessStrategy1.isAutoBrightnessValid();
    }
    }
@@ -320,7 +321,8 @@ public class DisplayBrightnessStrategySelector {
                strategySelectionRequest.getLastUserSetScreenBrightness(),
                strategySelectionRequest.getLastUserSetScreenBrightness(),
                strategySelectionRequest.isUserSetBrightnessChanged(),
                strategySelectionRequest.isUserSetBrightnessChanged(),
                mAllowAutoBrightnessWhileDozing,
                mAllowAutoBrightnessWhileDozing,
                getAutomaticBrightnessStrategy().shouldUseAutoBrightness());
                getAutomaticBrightnessStrategy().shouldUseAutoBrightness(),
                strategySelectionRequest.isWearBedtimeModeEnabled());
    }
    }


    private void postProcess(StrategySelectionNotifyRequest strategySelectionNotifyRequest) {
    private void postProcess(StrategySelectionNotifyRequest strategySelectionNotifyRequest) {
+12 −3
Original line number Original line Diff line number Diff line
@@ -47,13 +47,15 @@ public final class StrategySelectionNotifyRequest {
    private final boolean mAllowAutoBrightnessWhileDozingConfig;
    private final boolean mAllowAutoBrightnessWhileDozingConfig;
    // True if the auto brightness is enabled in the settings
    // True if the auto brightness is enabled in the settings
    private final boolean mIsAutoBrightnessEnabled;
    private final boolean mIsAutoBrightnessEnabled;
    // True if wear bedtime mode is enabled in the settings.
    private final boolean mIsBedtimeModeWearEnabled;


    public StrategySelectionNotifyRequest(
    public StrategySelectionNotifyRequest(
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest, int targetDisplayState,
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest, int targetDisplayState,
            DisplayBrightnessStrategy displayBrightnessStrategy,
            DisplayBrightnessStrategy displayBrightnessStrategy,
            float lastUserSetScreenBrightness,
            float lastUserSetScreenBrightness,
            boolean userSetBrightnessChanged, boolean allowAutoBrightnessWhileDozingConfig,
            boolean userSetBrightnessChanged, boolean allowAutoBrightnessWhileDozingConfig,
            boolean isAutoBrightnessEnabled) {
            boolean isAutoBrightnessEnabled, boolean isBedtimeModeWearEnabled) {
        mDisplayPowerRequest = displayPowerRequest;
        mDisplayPowerRequest = displayPowerRequest;
        mTargetDisplayState = targetDisplayState;
        mTargetDisplayState = targetDisplayState;
        mSelectedDisplayBrightnessStrategy = displayBrightnessStrategy;
        mSelectedDisplayBrightnessStrategy = displayBrightnessStrategy;
@@ -61,6 +63,7 @@ public final class StrategySelectionNotifyRequest {
        mUserSetBrightnessChanged = userSetBrightnessChanged;
        mUserSetBrightnessChanged = userSetBrightnessChanged;
        mAllowAutoBrightnessWhileDozingConfig = allowAutoBrightnessWhileDozingConfig;
        mAllowAutoBrightnessWhileDozingConfig = allowAutoBrightnessWhileDozingConfig;
        mIsAutoBrightnessEnabled = isAutoBrightnessEnabled;
        mIsAutoBrightnessEnabled = isAutoBrightnessEnabled;
        mIsBedtimeModeWearEnabled = isBedtimeModeWearEnabled;
    }
    }


    public DisplayBrightnessStrategy getSelectedDisplayBrightnessStrategy() {
    public DisplayBrightnessStrategy getSelectedDisplayBrightnessStrategy() {
@@ -81,7 +84,8 @@ public final class StrategySelectionNotifyRequest {
                && mLastUserSetScreenBrightness == other.getLastUserSetScreenBrightness()
                && mLastUserSetScreenBrightness == other.getLastUserSetScreenBrightness()
                && mAllowAutoBrightnessWhileDozingConfig
                && mAllowAutoBrightnessWhileDozingConfig
                == other.isAllowAutoBrightnessWhileDozingConfig()
                == other.isAllowAutoBrightnessWhileDozingConfig()
                && mIsAutoBrightnessEnabled == other.isAutoBrightnessEnabled();
                && mIsAutoBrightnessEnabled == other.isAutoBrightnessEnabled()
                && mIsBedtimeModeWearEnabled == other.isBedtimeModeWearEnabled();
    }
    }


    @Override
    @Override
@@ -99,6 +103,10 @@ public final class StrategySelectionNotifyRequest {
        return mUserSetBrightnessChanged;
        return mUserSetBrightnessChanged;
    }
    }


    public boolean isBedtimeModeWearEnabled() {
        return mIsBedtimeModeWearEnabled;
    }

    public DisplayManagerInternal.DisplayPowerRequest getDisplayPowerRequest() {
    public DisplayManagerInternal.DisplayPowerRequest getDisplayPowerRequest() {
        return mDisplayPowerRequest;
        return mDisplayPowerRequest;
    }
    }
@@ -126,6 +134,7 @@ public final class StrategySelectionNotifyRequest {
                + " mLastUserSetScreenBrightness=" + mLastUserSetScreenBrightness
                + " mLastUserSetScreenBrightness=" + mLastUserSetScreenBrightness
                + " mUserSetBrightnessChanged=" + mUserSetBrightnessChanged
                + " mUserSetBrightnessChanged=" + mUserSetBrightnessChanged
                + " mAllowAutoBrightnessWhileDozingConfig=" + mAllowAutoBrightnessWhileDozingConfig
                + " mAllowAutoBrightnessWhileDozingConfig=" + mAllowAutoBrightnessWhileDozingConfig
                + " mIsAutoBrightnessEnabled=" + mIsAutoBrightnessEnabled;
                + " mIsAutoBrightnessEnabled=" + mIsAutoBrightnessEnabled
                + " mIsBedtimeModeWearEnabled" + mIsBedtimeModeWearEnabled;
    }
    }
}
}
+11 −2
Original line number Original line Diff line number Diff line
@@ -42,17 +42,21 @@ public final class StrategySelectionRequest {


    private boolean mIsStylusBeingUsed;
    private boolean mIsStylusBeingUsed;


    private boolean mIsWearBedtimeModeEnabled;

    public StrategySelectionRequest(DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
    public StrategySelectionRequest(DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
            int targetDisplayState, float lastUserSetScreenBrightness,
            int targetDisplayState, float lastUserSetScreenBrightness,
            boolean userSetBrightnessChanged,
            boolean userSetBrightnessChanged,
            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession,
            DisplayManagerInternal.DisplayOffloadSession displayOffloadSession,
            boolean isStylusBeingUsed) {
            boolean isStylusBeingUsed,
            boolean isWearBedtimeModeEnabled) {
        mDisplayPowerRequest = displayPowerRequest;
        mDisplayPowerRequest = displayPowerRequest;
        mTargetDisplayState = targetDisplayState;
        mTargetDisplayState = targetDisplayState;
        mLastUserSetScreenBrightness = lastUserSetScreenBrightness;
        mLastUserSetScreenBrightness = lastUserSetScreenBrightness;
        mUserSetBrightnessChanged = userSetBrightnessChanged;
        mUserSetBrightnessChanged = userSetBrightnessChanged;
        mDisplayOffloadSession = displayOffloadSession;
        mDisplayOffloadSession = displayOffloadSession;
        mIsStylusBeingUsed = isStylusBeingUsed;
        mIsStylusBeingUsed = isStylusBeingUsed;
        mIsWearBedtimeModeEnabled = isWearBedtimeModeEnabled;
    }
    }


    public DisplayManagerInternal.DisplayPowerRequest getDisplayPowerRequest() {
    public DisplayManagerInternal.DisplayPowerRequest getDisplayPowerRequest() {
@@ -72,6 +76,10 @@ public final class StrategySelectionRequest {
        return mUserSetBrightnessChanged;
        return mUserSetBrightnessChanged;
    }
    }


    public boolean isWearBedtimeModeEnabled() {
        return mIsWearBedtimeModeEnabled;
    }

    public DisplayManagerInternal.DisplayOffloadSession getDisplayOffloadSession() {
    public DisplayManagerInternal.DisplayOffloadSession getDisplayOffloadSession() {
        return mDisplayOffloadSession;
        return mDisplayOffloadSession;
    }
    }
@@ -91,7 +99,8 @@ public final class StrategySelectionRequest {
                && mLastUserSetScreenBrightness == other.getLastUserSetScreenBrightness()
                && mLastUserSetScreenBrightness == other.getLastUserSetScreenBrightness()
                && mUserSetBrightnessChanged == other.isUserSetBrightnessChanged()
                && mUserSetBrightnessChanged == other.isUserSetBrightnessChanged()
                && mDisplayOffloadSession.equals(other.getDisplayOffloadSession())
                && mDisplayOffloadSession.equals(other.getDisplayOffloadSession())
                && mIsStylusBeingUsed == other.isStylusBeingUsed();
                && mIsStylusBeingUsed == other.isStylusBeingUsed()
                && mIsWearBedtimeModeEnabled == other.isWearBedtimeModeEnabled();
    }
    }


    @Override
    @Override
Loading