diff options
6 files changed, 32 insertions, 57 deletions
diff --git a/core/java/android/hardware/display/BrightnessInfo.java b/core/java/android/hardware/display/BrightnessInfo.java index 6a96a54d93ba..c09106206c25 100644 --- a/core/java/android/hardware/display/BrightnessInfo.java +++ b/core/java/android/hardware/display/BrightnessInfo.java @@ -60,8 +60,7 @@ 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_WEAR_BEDTIME_MODE + BRIGHTNESS_MAX_REASON_POWER_IC }) @Retention(RetentionPolicy.SOURCE) public @interface BrightnessMaxReason {} @@ -158,8 +157,6 @@ 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 12ec24819c78..222c5a83a551 100644 --- a/services/core/java/com/android/server/display/DisplayBrightnessState.java +++ b/services/core/java/com/android/server/display/DisplayBrightnessState.java @@ -16,7 +16,6 @@ package com.android.server.display; -import android.hardware.display.BrightnessInfo; import android.text.TextUtils; import com.android.server.display.brightness.BrightnessEvent; @@ -51,8 +50,6 @@ public final class DisplayBrightnessState { private final boolean mIsUserInitiatedChange; - private @BrightnessInfo.BrightnessMaxReason int mBrightnessMaxReason; - private DisplayBrightnessState(Builder builder) { mBrightness = builder.getBrightness(); mHdrBrightness = builder.getHdrBrightness(); @@ -67,7 +64,6 @@ public final class DisplayBrightnessState { mBrightnessEvent = builder.getBrightnessEvent(); mBrightnessAdjustmentFlag = builder.getBrightnessAdjustmentFlag(); mIsUserInitiatedChange = builder.isUserInitiatedChange(); - mBrightnessMaxReason = builder.getBrightnessMaxReason(); } /** @@ -163,13 +159,6 @@ 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:"); @@ -191,8 +180,6 @@ 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(); } @@ -225,8 +212,7 @@ public final class DisplayBrightnessState { == otherState.shouldUpdateScreenBrightnessSetting() && Objects.equals(mBrightnessEvent, otherState.getBrightnessEvent()) && mBrightnessAdjustmentFlag == otherState.getBrightnessAdjustmentFlag() - && mIsUserInitiatedChange == otherState.isUserInitiatedChange() - && mBrightnessMaxReason == otherState.getBrightnessMaxReason(); + && mIsUserInitiatedChange == otherState.isUserInitiatedChange(); } @Override @@ -235,7 +221,7 @@ public final class DisplayBrightnessState { mShouldUseAutoBrightness, mIsSlowChange, mMaxBrightness, mMinBrightness, mCustomAnimationRate, mShouldUpdateScreenBrightnessSetting, mBrightnessEvent, mBrightnessAdjustmentFlag, - mIsUserInitiatedChange, mBrightnessMaxReason); + mIsUserInitiatedChange); } /** @@ -259,11 +245,12 @@ public final class DisplayBrightnessState { private float mMinBrightness; private float mCustomAnimationRate = CUSTOM_ANIMATION_RATE_NOT_SET; private boolean mShouldUpdateScreenBrightnessSetting; + private BrightnessEvent mBrightnessEvent; - private int mBrightnessAdjustmentFlag = 0; + + public 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 @@ -287,7 +274,6 @@ public final class DisplayBrightnessState { builder.setBrightnessEvent(state.getBrightnessEvent()); builder.setBrightnessAdjustmentFlag(state.getBrightnessAdjustmentFlag()); builder.setIsUserInitiatedChange(state.isUserInitiatedChange()); - builder.setBrightnessMaxReason(state.getBrightnessMaxReason()); return builder; } @@ -510,21 +496,5 @@ 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 01604b8bea81..58309c2c751a 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, - clampedState.getBrightnessMaxReason()); + mBrightnessClamperController.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, clampedState); + logBrightnessEvent(newEvent, unthrottledBrightnessState); } if (mBrightnessEventRingBuffer != null) { mBrightnessEventRingBuffer.append(newEvent); @@ -1976,9 +1976,6 @@ 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( @@ -2005,7 +2002,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessRangeController.getTransitionPoint()); changed |= mCachedBrightnessInfo.checkAndSetInt(mCachedBrightnessInfo.brightnessMaxReason, - maxReason); + mBrightnessClamperController.getBrightnessMaxReason()); return changed; } } @@ -2905,8 +2902,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call return FrameworkStatsLog.DISPLAY_BRIGHTNESS_CHANGED__ENTIRE_REASON__REASON_UNKNOWN; } - private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness, - DisplayBrightnessState brightnessState) { + private void logBrightnessEvent(BrightnessEvent event, float unmodifiedBrightness) { int modifier = event.getReason().getModifier(); int flags = event.getFlags(); // It's easier to check if the brightness is at maximum level using the brightness @@ -2943,7 +2939,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, - brightnessState.getBrightnessMaxReason(), + mBrightnessClamperController.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 d1fb0091e28b..88d2c007cf37 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,7 +139,6 @@ public class BrightnessClamperController { builder.setBrightness(cappedBrightness); builder.setMaxBrightness(mBrightnessCap); builder.setCustomAnimationRate(mCustomAnimationRate); - builder.setBrightnessMaxReason(getBrightnessMaxReason()); if (mClamperType != null) { builder.getBrightnessReason().addModifier(BrightnessReason.MODIFIER_THROTTLED); @@ -164,8 +163,19 @@ 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 - private int getBrightnessMaxReason() { + public 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 2d4a29b3ed6f..f690b1bbfccf 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/DisplayBrightnessStateTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayBrightnessStateTest.java @@ -18,8 +18,6 @@ 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; @@ -114,10 +112,7 @@ public class DisplayBrightnessStateTest { .append("\n mBrightnessAdjustmentFlag:") .append(displayBrightnessState.getBrightnessAdjustmentFlag()) .append("\n mIsUserInitiatedChange:") - .append(displayBrightnessState.isUserInitiatedChange()) - .append("\n mBrightnessMaxReason:") - .append(BrightnessInfo.briMaxReasonToString( - displayBrightnessState.getBrightnessMaxReason())); + .append(displayBrightnessState.isUserInitiatedChange()); 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 93dfbcb7f07f..e982153acbd1 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,6 +30,7 @@ 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; @@ -154,6 +155,12 @@ public class BrightnessClamperControllerTest { } @Test + public void testMaxReasonIsNoneOnInit() { + assertEquals(BrightnessInfo.BRIGHTNESS_MAX_REASON_NONE, + mClamperController.getBrightnessMaxReason()); + } + + @Test public void testOnDisplayChanged_DelegatesToClamper() { mClamperController.onDisplayChanged(mMockDisplayDeviceData); |