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

Commit 36c770ca authored by Rupesh Bansal's avatar Rupesh Bansal
Browse files

Set user initiated change from strategy

Bug: 343668410
Test: atest com.android.server.display
Change-Id: I4798a7a1e00704ce4a195d354fd10d8ac6c247c4
parent 26b25da3
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -47,6 +47,8 @@ public final class DisplayBrightnessState {
    private final BrightnessEvent mBrightnessEvent;
    private final int mBrightnessAdjustmentFlag;

    private final boolean mIsUserInitiatedChange;

    private DisplayBrightnessState(Builder builder) {
        mBrightness = builder.getBrightness();
        mSdrBrightness = builder.getSdrBrightness();
@@ -60,6 +62,7 @@ public final class DisplayBrightnessState {
        mShouldUpdateScreenBrightnessSetting = builder.shouldUpdateScreenBrightnessSetting();
        mBrightnessEvent = builder.getBrightnessEvent();
        mBrightnessAdjustmentFlag = builder.getBrightnessAdjustmentFlag();
        mIsUserInitiatedChange = builder.isUserInitiatedChange();
    }

    /**
@@ -148,6 +151,13 @@ public final class DisplayBrightnessState {
        return mBrightnessAdjustmentFlag;
    }

    /**
     * Gets if the current brightness changes are because of a user initiated change
     */
    public boolean isUserInitiatedChange() {
        return mIsUserInitiatedChange;
    }

    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder("DisplayBrightnessState:");
@@ -168,6 +178,7 @@ public final class DisplayBrightnessState {
        stringBuilder.append("\n    mBrightnessEvent:")
                .append(Objects.toString(mBrightnessEvent, "null"));
        stringBuilder.append("\n    mBrightnessAdjustmentFlag:").append(mBrightnessAdjustmentFlag);
        stringBuilder.append("\n    mIsUserInitiatedChange:").append(mIsUserInitiatedChange);
        return stringBuilder.toString();
    }

@@ -199,7 +210,8 @@ public final class DisplayBrightnessState {
                && mShouldUpdateScreenBrightnessSetting
                    == otherState.shouldUpdateScreenBrightnessSetting()
                && Objects.equals(mBrightnessEvent, otherState.getBrightnessEvent())
                && mBrightnessAdjustmentFlag == otherState.getBrightnessAdjustmentFlag();
                && mBrightnessAdjustmentFlag == otherState.getBrightnessAdjustmentFlag()
                && mIsUserInitiatedChange == otherState.isUserInitiatedChange();
    }

    @Override
@@ -207,7 +219,8 @@ public final class DisplayBrightnessState {
        return Objects.hash(mBrightness, mSdrBrightness, mBrightnessReason,
                mShouldUseAutoBrightness, mIsSlowChange, mMaxBrightness, mMinBrightness,
                mCustomAnimationRate,
                mShouldUpdateScreenBrightnessSetting, mBrightnessEvent, mBrightnessAdjustmentFlag);
                mShouldUpdateScreenBrightnessSetting, mBrightnessEvent, mBrightnessAdjustmentFlag,
                mIsUserInitiatedChange);
    }

    /**
@@ -236,6 +249,8 @@ public final class DisplayBrightnessState {

        public int mBrightnessAdjustmentFlag = 0;

        private boolean mIsUserInitiatedChange;

        /**
         * Create a builder starting with the values from the specified {@link
         * DisplayBrightnessState}.
@@ -257,6 +272,7 @@ public final class DisplayBrightnessState {
                    state.shouldUpdateScreenBrightnessSetting());
            builder.setBrightnessEvent(state.getBrightnessEvent());
            builder.setBrightnessAdjustmentFlag(state.getBrightnessAdjustmentFlag());
            builder.setIsUserInitiatedChange(state.isUserInitiatedChange());
            return builder;
        }

@@ -464,5 +480,20 @@ public final class DisplayBrightnessState {
            mBrightnessAdjustmentFlag = brightnessAdjustmentFlag;
            return this;
        }

        /**
         * Gets if the current change is a user initiated change
         */
        public boolean isUserInitiatedChange() {
            return mIsUserInitiatedChange;
        }

        /**
         * This is used to set if the current change is a user initiated change
         */
        public Builder setIsUserInitiatedChange(boolean isUserInitiatedChange) {
            mIsUserInitiatedChange = isUserInitiatedChange;
            return this;
        }
    }
}
+7 −5
Original line number Diff line number Diff line
@@ -1391,6 +1391,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
        // request changes.
        final boolean wasShortTermModelActive =
                mAutomaticBrightnessStrategy.isShortTermModelActive();
        boolean userInitiatedChange = displayBrightnessState.isUserInitiatedChange();
        boolean allowAutoBrightnessWhileDozing =
                mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig();
        if (mFlags.offloadControlsDozeAutoBrightness() && mFlags.isDisplayOffloadEnabled()
@@ -1413,13 +1414,14 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
                    mPowerRequest.policy,
                    mDisplayBrightnessController.getLastUserSetScreenBrightness(),
                    userSetBrightnessChanged);
        }

        // If the brightness is already set then it's been overridden by something other than the
        // user, or is a temporary adjustment.
        boolean userInitiatedChange = (Float.isNaN(brightnessState))
            // If the brightness is already set then it's been overridden by something other than
            // the user, or is a temporary adjustment.
            userInitiatedChange = (Float.isNaN(brightnessState))
                    && (mAutomaticBrightnessStrategy.getAutoBrightnessAdjustmentChanged()
                    || userSetBrightnessChanged);
        }


        final int autoBrightnessState = mAutomaticBrightnessStrategy.isAutoBrightnessEnabled()
                ? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
+2 −1
Original line number Diff line number Diff line
@@ -600,6 +600,7 @@ public final class DisplayBrightnessController {
    private StrategyExecutionRequest constructStrategyExecutionRequest(
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest) {
        float currentScreenBrightness = getCurrentBrightness();
        return new StrategyExecutionRequest(displayPowerRequest, currentScreenBrightness);
        return new StrategyExecutionRequest(displayPowerRequest, currentScreenBrightness,
                mUserSetScreenBrightnessUpdated);
    }
}
+13 −3
Original line number Diff line number Diff line
@@ -29,10 +29,14 @@ public final class StrategyExecutionRequest {

    private final float mCurrentScreenBrightness;

    // Represents if the user set screen brightness was changed or not.
    private boolean mUserSetBrightnessChanged;

    public StrategyExecutionRequest(DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
            float currentScreenBrightness) {
            float currentScreenBrightness, boolean userSetBrightnessChanged) {
        mDisplayPowerRequest = displayPowerRequest;
        mCurrentScreenBrightness = currentScreenBrightness;
        mUserSetBrightnessChanged = userSetBrightnessChanged;
    }

    public DisplayManagerInternal.DisplayPowerRequest getDisplayPowerRequest() {
@@ -43,6 +47,10 @@ public final class StrategyExecutionRequest {
        return mCurrentScreenBrightness;
    }

    public boolean isUserSetBrightnessChanged() {
        return mUserSetBrightnessChanged;
    }

    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof StrategyExecutionRequest)) {
@@ -50,11 +58,13 @@ public final class StrategyExecutionRequest {
        }
        StrategyExecutionRequest other = (StrategyExecutionRequest) obj;
        return Objects.equals(mDisplayPowerRequest, other.getDisplayPowerRequest())
                && mCurrentScreenBrightness == other.getCurrentScreenBrightness();
                && mCurrentScreenBrightness == other.getCurrentScreenBrightness()
                && mUserSetBrightnessChanged == other.isUserSetBrightnessChanged();
    }

    @Override
    public int hashCode() {
        return Objects.hash(mDisplayPowerRequest, mCurrentScreenBrightness);
        return Objects.hash(mDisplayPowerRequest, mCurrentScreenBrightness,
                mUserSetBrightnessChanged);
    }
}
+2 −0
Original line number Diff line number Diff line
@@ -290,6 +290,8 @@ public class AutomaticBrightnessStrategy extends AutomaticBrightnessStrategy2
                .setBrightnessAdjustmentFlag(mAutoBrightnessAdjustmentReasonsFlags)
                .setShouldUpdateScreenBrightnessSetting(
                        brightness != strategyExecutionRequest.getCurrentScreenBrightness())
                .setIsUserInitiatedChange(getAutoBrightnessAdjustmentChanged()
                        || strategyExecutionRequest.isUserSetBrightnessChanged())
                .build();
    }

Loading