diff options
| author | 2024-08-30 11:22:18 +0000 | |
|---|---|---|
| committer | 2024-08-30 11:22:18 +0000 | |
| commit | 6e17cf8b65a91e8d2b9605149fbf4652419122e1 (patch) | |
| tree | 3e1e172d3a591f849e6b6eb7f7b6057cc583cd86 | |
| parent | 3ebc0acddc4b3b2dcddceab3d0c99ed7368f1b48 (diff) | |
Revert^2 "Move brightnessMaxReason to DisplayBrightnessState"
This reverts commit 3ebc0acddc4b3b2dcddceab3d0c99ed7368f1b48.
Reason for revert: bug was unrelated to CL
Change-Id: I1c3b7e47f9501616b76026a6cbb04dda43337519
6 files changed, 57 insertions, 32 deletions
diff --git a/core/java/android/hardware/display/BrightnessInfo.java b/core/java/android/hardware/display/BrightnessInfo.java index c09106206c25..6a96a54d93ba 100644 --- a/core/java/android/hardware/display/BrightnessInfo.java +++ b/core/java/android/hardware/display/BrightnessInfo.java @@ -60,7 +60,8 @@ public final class BrightnessInfo implements Parcelable { @IntDef(prefix = {"BRIGHTNESS_MAX_REASON_"}, value = { BRIGHTNESS_MAX_REASON_NONE, BRIGHTNESS_MAX_REASON_THERMAL, - BRIGHTNESS_MAX_REASON_POWER_IC + BRIGHTNESS_MAX_REASON_POWER_IC, + BRIGHTNESS_MAX_REASON_WEAR_BEDTIME_MODE }) @Retention(RetentionPolicy.SOURCE) public @interface BrightnessMaxReason {} @@ -157,6 +158,8 @@ public final class BrightnessInfo implements Parcelable { return "thermal"; case BRIGHTNESS_MAX_REASON_POWER_IC: return "power IC"; + case BRIGHTNESS_MAX_REASON_WEAR_BEDTIME_MODE: + return "wear bedtime"; } return "invalid"; } diff --git a/services/core/java/com/android/server/display/DisplayBrightnessState.java b/services/core/java/com/android/server/display/DisplayBrightnessState.java index 222c5a83a551..12ec24819c78 100644 --- a/services/core/java/com/android/server/display/DisplayBrightnessState.java +++ b/services/core/java/com/android/server/display/DisplayBrightnessState.java @@ -16,6 +16,7 @@ package com.android.server.display; +import android.hardware.display.BrightnessInfo; import android.text.TextUtils; import com.android.server.display.brightness.BrightnessEvent; @@ -50,6 +51,8 @@ public final class DisplayBrightnessState { private final boolean mIsUserInitiatedChange; + private @BrightnessInfo.BrightnessMaxReason int mBrightnessMaxReason; + private DisplayBrightnessState(Builder builder) { mBrightness = builder.getBrightness(); mHdrBrightness = builder.getHdrBrightness(); @@ -64,6 +67,7 @@ public final class DisplayBrightnessState { mBrightnessEvent = builder.getBrightnessEvent(); mBrightnessAdjustmentFlag = builder.getBrightnessAdjustmentFlag(); mIsUserInitiatedChange = builder.isUserInitiatedChange(); + mBrightnessMaxReason = builder.getBrightnessMaxReason(); } /** @@ -159,6 +163,13 @@ public final class DisplayBrightnessState { return mIsUserInitiatedChange; } + /** + * Gets reason for max brightness restriction + */ + public @BrightnessInfo.BrightnessMaxReason int getBrightnessMaxReason() { + return mBrightnessMaxReason; + } + @Override public String toString() { StringBuilder stringBuilder = new StringBuilder("DisplayBrightnessState:"); @@ -180,6 +191,8 @@ public final class DisplayBrightnessState { .append(Objects.toString(mBrightnessEvent, "null")); stringBuilder.append("\n mBrightnessAdjustmentFlag:").append(mBrightnessAdjustmentFlag); stringBuilder.append("\n mIsUserInitiatedChange:").append(mIsUserInitiatedChange); + stringBuilder.append("\n mBrightnessMaxReason:") + .append(BrightnessInfo.briMaxReasonToString(mBrightnessMaxReason)); return stringBuilder.toString(); } @@ -212,7 +225,8 @@ public final class DisplayBrightnessState { == otherState.shouldUpdateScreenBrightnessSetting() && Objects.equals(mBrightnessEvent, otherState.getBrightnessEvent()) && mBrightnessAdjustmentFlag == otherState.getBrightnessAdjustmentFlag() - && mIsUserInitiatedChange == otherState.isUserInitiatedChange(); + && mIsUserInitiatedChange == otherState.isUserInitiatedChange() + && mBrightnessMaxReason == otherState.getBrightnessMaxReason(); } @Override @@ -221,7 +235,7 @@ public final class DisplayBrightnessState { mShouldUseAutoBrightness, mIsSlowChange, mMaxBrightness, mMinBrightness, mCustomAnimationRate, mShouldUpdateScreenBrightnessSetting, mBrightnessEvent, mBrightnessAdjustmentFlag, - mIsUserInitiatedChange); + mIsUserInitiatedChange, mBrightnessMaxReason); } /** @@ -245,12 +259,11 @@ public final class DisplayBrightnessState { private float mMinBrightness; private float mCustomAnimationRate = CUSTOM_ANIMATION_RATE_NOT_SET; private boolean mShouldUpdateScreenBrightnessSetting; - private BrightnessEvent mBrightnessEvent; - - public int mBrightnessAdjustmentFlag = 0; - + private int mBrightnessAdjustmentFlag = 0; private boolean mIsUserInitiatedChange; + private @BrightnessInfo.BrightnessMaxReason int mBrightnessMaxReason = + BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE; /** * Create a builder starting with the values from the specified {@link @@ -274,6 +287,7 @@ public final class DisplayBrightnessState { builder.setBrightnessEvent(state.getBrightnessEvent()); builder.setBrightnessAdjustmentFlag(state.getBrightnessAdjustmentFlag()); builder.setIsUserInitiatedChange(state.isUserInitiatedChange()); + builder.setBrightnessMaxReason(state.getBrightnessMaxReason()); return builder; } @@ -496,5 +510,21 @@ public final class DisplayBrightnessState { mIsUserInitiatedChange = isUserInitiatedChange; return this; } + + /** + * Gets reason for max brightness restriction + */ + public @BrightnessInfo.BrightnessMaxReason int getBrightnessMaxReason() { + return mBrightnessMaxReason; + } + + /** + * Sets reason for max brightness restriction + */ + public Builder setBrightnessMaxReason( + @BrightnessInfo.BrightnessMaxReason int brightnessMaxReason) { + mBrightnessMaxReason = brightnessMaxReason; + return this; + } } } diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 58309c2c751a..01604b8bea81 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1580,7 +1580,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // brightness sources (such as an app override) are not saved to the setting, but should be // reflected in HBM calculations. mBrightnessRangeController.onBrightnessChanged(brightnessState, unthrottledBrightnessState, - mBrightnessClamperController.getBrightnessMaxReason()); + clampedState.getBrightnessMaxReason()); // Animate the screen brightness when the screen is on or dozing. // Skip the animation when the screen is off or suspended. @@ -1783,7 +1783,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call if (userSetBrightnessChanged || newEvent.getReason().getReason() != BrightnessReason.REASON_TEMPORARY) { - logBrightnessEvent(newEvent, unthrottledBrightnessState); + logBrightnessEvent(newEvent, unthrottledBrightnessState, clampedState); } if (mBrightnessEventRingBuffer != null) { mBrightnessEventRingBuffer.append(newEvent); @@ -1976,6 +1976,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call synchronized (mCachedBrightnessInfo) { float stateMax = state != null ? state.getMaxBrightness() : PowerManager.BRIGHTNESS_MAX; float stateMin = state != null ? state.getMinBrightness() : PowerManager.BRIGHTNESS_MAX; + @BrightnessInfo.BrightnessMaxReason int maxReason = + state != null ? state.getBrightnessMaxReason() + : BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE; final float minBrightness = Math.max(stateMin, Math.min( mBrightnessRangeController.getCurrentBrightnessMin(), stateMax)); final float maxBrightness = Math.min( @@ -2002,7 +2005,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessRangeController.getTransitionPoint()); changed |= mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.brightnessMaxReason, - mBrightnessClamperController.getBrightnessMaxReason()); + maxReason); return changed; } } @@ -2902,7 +2905,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return FrameworkStatsLog.DISPLAY_BRIGHTNESS_CHANGED__ENTIRE_REASON__REASON_UNKNOWN; } - private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness) { + private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness, + DisplayBrightnessState brightnessState) { int modifier = event.getReason().getModifier(); int flags = event.getFlags(); // It's easier to check if the brightness is at maximum level using the brightness @@ -2939,7 +2943,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call event.getHbmMode() == BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT, event.getHbmMode() == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR, (modifier & BrightnessReason.MODIFIER_LOW_POWER) > 0, - mBrightnessClamperController.getBrightnessMaxReason(), + brightnessState.getBrightnessMaxReason(), // TODO: (flc) add brightnessMinReason here too. (modifier & BrightnessReason.MODIFIER_DIMMED) > 0, event.isRbcEnabled(), diff --git a/services/core/java/com/android/server/display/brightness/clamper/BrightnessClamperController.java b/services/core/java/com/android/server/display/brightness/clamper/BrightnessClamperController.java index 88d2c007cf37..d1fb0091e28b 100644 --- a/services/core/java/com/android/server/display/brightness/clamper/BrightnessClamperController.java +++ b/services/core/java/com/android/server/display/brightness/clamper/BrightnessClamperController.java @@ -139,6 +139,7 @@ public class BrightnessClamperController { builder.setBrightness(cappedBrightness); builder.setMaxBrightness(mBrightnessCap); builder.setCustomAnimationRate(mCustomAnimationRate); + builder.setBrightnessMaxReason(getBrightnessMaxReason()); if (mClamperType != null) { builder.getBrightnessReason().addModifier(BrightnessReason.MODIFIER_THROTTLED); @@ -163,19 +164,8 @@ public class BrightnessClamperController { return builder.build(); } - /** - * See BrightnessThrottler.getBrightnessMaxReason: - * used in: - * 1) DPC2.CachedBrightnessInfo to determine changes - * 2) DPC2.logBrightnessEvent - * 3) HBMController - for logging - * Method is called in mHandler thread (DisplayControllerHandler), in the same thread - * recalculateBrightnessCap and DPC2.updatePowerStateInternal are called. - * Should be moved to DisplayBrightnessState OR derived from DisplayBrightnessState - * TODO: b/263362199 - */ @BrightnessInfo.BrightnessMaxReason - public int getBrightnessMaxReason() { + private int getBrightnessMaxReason() { if (mClamperType == null) { return BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE; } else if (mClamperType == Type.THERMAL) { diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayBrightnessStateTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayBrightnessStateTest.java index f690b1bbfccf..2d4a29b3ed6f 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/DisplayBrightnessStateTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayBrightnessStateTest.java @@ -18,6 +18,8 @@ package com.android.server.display; import static org.junit.Assert.assertEquals; +import android.hardware.display.BrightnessInfo; + import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -112,7 +114,10 @@ public class DisplayBrightnessStateTest { .append("\n mBrightnessAdjustmentFlag:") .append(displayBrightnessState.getBrightnessAdjustmentFlag()) .append("\n mIsUserInitiatedChange:") - .append(displayBrightnessState.isUserInitiatedChange()); + .append(displayBrightnessState.isUserInitiatedChange()) + .append("\n mBrightnessMaxReason:") + .append(BrightnessInfo.briMaxReasonToString( + displayBrightnessState.getBrightnessMaxReason())); return sb.toString(); } } diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessClamperControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessClamperControllerTest.java index e982153acbd1..93dfbcb7f07f 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessClamperControllerTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessClamperControllerTest.java @@ -30,7 +30,6 @@ import static org.mockito.Mockito.when; import android.content.Context; import android.hardware.SensorManager; -import android.hardware.display.BrightnessInfo; import android.hardware.display.DisplayManagerInternal; import android.os.Handler; import android.os.PowerManager; @@ -155,12 +154,6 @@ public class BrightnessClamperControllerTest { } @Test - public void testMaxReasonIsNoneOnInit() { - assertEquals(BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE, - mClamperController.getBrightnessMaxReason()); - } - - @Test public void testOnDisplayChanged_DelegatesToClamper() { mClamperController.onDisplayChanged(mMockDisplayDeviceData); |