From 54aa9f6bb5eaa100c9e8bd670e4e6b0717bddffe Mon Sep 17 00:00:00 2001 From: Rupesh Bansal Date: Fri, 20 Jan 2023 13:50:31 +0000 Subject: [PATCH] Adding support for strategy name in the BrightnessEvent Bug: 259619745 Test: com.android.server.display Change-Id: I55b9603ff63d6f252424c3b1cdbd2558fea9fc16 --- .../display/DisplayBrightnessState.java | 36 +++++++++++++++++++ .../display/DisplayPowerController2.java | 2 ++ .../display/brightness/BrightnessEvent.java | 17 +++++++-- .../display/brightness/BrightnessUtils.java | 4 ++- .../strategy/BoostBrightnessStrategy.java | 2 +- .../strategy/DozeBrightnessStrategy.java | 3 +- .../strategy/FollowerBrightnessStrategy.java | 2 +- .../strategy/InvalidBrightnessStrategy.java | 3 +- .../strategy/OverrideBrightnessStrategy.java | 2 +- .../strategy/ScreenOffBrightnessStrategy.java | 2 +- .../strategy/TemporaryBrightnessStrategy.java | 2 +- .../brightness/BrightnessEventTest.java | 5 ++- .../strategy/BoostBrightnessStrategyTest.java | 1 + .../strategy/DozeBrightnessStrategyTest.java | 1 + .../FollowerBrightnessStrategyTest.java | 1 + .../OverrideBrightnessStrategyTest.java | 1 + .../ScreenOffBrightnessStrategyTest.java | 2 ++ .../TemporaryBrightnessStrategyTest.java | 1 + 18 files changed, 76 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/display/DisplayBrightnessState.java b/services/core/java/com/android/server/display/DisplayBrightnessState.java index 87cbbfe1c62a0..e27182fe3ea71 100644 --- a/services/core/java/com/android/server/display/DisplayBrightnessState.java +++ b/services/core/java/com/android/server/display/DisplayBrightnessState.java @@ -28,11 +28,13 @@ public final class DisplayBrightnessState { private final float mBrightness; private final float mSdrBrightness; private final BrightnessReason mBrightnessReason; + private final String mDisplayBrightnessStrategyName; private DisplayBrightnessState(Builder builder) { this.mBrightness = builder.getBrightness(); this.mSdrBrightness = builder.getSdrBrightness(); this.mBrightnessReason = builder.getBrightnessReason(); + this.mDisplayBrightnessStrategyName = builder.getDisplayBrightnessStrategyName(); } /** @@ -56,6 +58,14 @@ public final class DisplayBrightnessState { return mBrightnessReason; } + /** + * Gets the {@link com.android.server.display.brightness.strategy.DisplayBrightnessStrategy} + * name + */ + public String getDisplayBrightnessStrategyName() { + return mDisplayBrightnessStrategyName; + } + @Override public String toString() { StringBuilder stringBuilder = new StringBuilder("DisplayBrightnessState:"); @@ -93,6 +103,10 @@ public final class DisplayBrightnessState { if (!mBrightnessReason.equals(displayBrightnessState.getBrightnessReason())) { return false; } + if (!mDisplayBrightnessStrategyName.equals( + displayBrightnessState.getDisplayBrightnessStrategyName())) { + return false; + } return true; } @@ -108,6 +122,7 @@ public final class DisplayBrightnessState { private float mBrightness; private float mSdrBrightness; private BrightnessReason mBrightnessReason = new BrightnessReason(); + private String mDisplayBrightnessStrategyName; /** * Gets the brightness @@ -163,6 +178,27 @@ public final class DisplayBrightnessState { return this; } + /** + * Gets the {@link com.android.server.display.brightness.strategy.DisplayBrightnessStrategy} + * name + */ + public String getDisplayBrightnessStrategyName() { + return mDisplayBrightnessStrategyName; + } + + /** + * Sets the + * {@link com.android.server.display.brightness.strategy.DisplayBrightnessStrategy}'s name + * + * @param displayBrightnessStrategyName The name of the + * {@link com.android.server.display.brightness.strategy.DisplayBrightnessStrategy} being + * used. + */ + public Builder setDisplayBrightnessStrategyName(String displayBrightnessStrategyName) { + this.mDisplayBrightnessStrategyName = displayBrightnessStrategyName; + return this; + } + /** * This is used to construct an immutable DisplayBrightnessState object from its builder */ diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java index 0cc4e9386c92a..478b89646b677 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController2.java +++ b/services/core/java/com/android/server/display/DisplayPowerController2.java @@ -1533,6 +1533,8 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal ? mCdsi.getReduceBrightColorsStrength() : -1); mTempBrightnessEvent.setPowerFactor(mPowerRequest.screenLowPowerBrightnessFactor); mTempBrightnessEvent.setWasShortTermModelActive(hadUserBrightnessPoint); + mTempBrightnessEvent.setDisplayBrightnessStrategyName(displayBrightnessState + .getDisplayBrightnessStrategyName()); // Temporary is what we use during slider interactions. We avoid logging those so that // we don't spam logcat when the slider is being used. boolean tempToTempTransition = diff --git a/services/core/java/com/android/server/display/brightness/BrightnessEvent.java b/services/core/java/com/android/server/display/brightness/BrightnessEvent.java index f19852b3eff5c..8b09571fe9206 100644 --- a/services/core/java/com/android/server/display/brightness/BrightnessEvent.java +++ b/services/core/java/com/android/server/display/brightness/BrightnessEvent.java @@ -53,6 +53,7 @@ public final class BrightnessEvent { private int mFlags; private int mAdjustmentFlags; private boolean mAutomaticBrightnessEnabled; + private String mDisplayBrightnessStrategyName; public BrightnessEvent(BrightnessEvent that) { copyFrom(that); @@ -92,6 +93,7 @@ public final class BrightnessEvent { mAdjustmentFlags = that.getAdjustmentFlags(); // Auto-brightness setting mAutomaticBrightnessEnabled = that.isAutomaticBrightnessEnabled(); + mDisplayBrightnessStrategyName = that.getDisplayBrightnessStrategyName(); } /** @@ -120,6 +122,7 @@ public final class BrightnessEvent { mAdjustmentFlags = 0; // Auto-brightness setting mAutomaticBrightnessEnabled = true; + mDisplayBrightnessStrategyName = ""; } /** @@ -157,7 +160,8 @@ public final class BrightnessEvent { && mWasShortTermModelActive == that.mWasShortTermModelActive && mFlags == that.mFlags && mAdjustmentFlags == that.mAdjustmentFlags - && mAutomaticBrightnessEnabled == that.mAutomaticBrightnessEnabled; + && mAutomaticBrightnessEnabled == that.mAutomaticBrightnessEnabled + && mDisplayBrightnessStrategyName.equals(that.mDisplayBrightnessStrategyName); } /** @@ -185,7 +189,8 @@ public final class BrightnessEvent { + ", wasShortTermModelActive=" + mWasShortTermModelActive + ", flags=" + flagsToString() + ", reason=" + mReason.toString(mAdjustmentFlags) - + ", autoBrightness=" + mAutomaticBrightnessEnabled; + + ", autoBrightness=" + mAutomaticBrightnessEnabled + + ", strategy=" + mDisplayBrightnessStrategyName; } @Override @@ -355,6 +360,14 @@ public final class BrightnessEvent { return mAutomaticBrightnessEnabled; } + public void setDisplayBrightnessStrategyName(String displayBrightnessStrategyName) { + mDisplayBrightnessStrategyName = displayBrightnessStrategyName; + } + + public String getDisplayBrightnessStrategyName() { + return mDisplayBrightnessStrategyName; + } + public void setAutomaticBrightnessEnabled(boolean mAutomaticBrightnessEnabled) { this.mAutomaticBrightnessEnabled = mAutomaticBrightnessEnabled; } diff --git a/services/core/java/com/android/server/display/brightness/BrightnessUtils.java b/services/core/java/com/android/server/display/brightness/BrightnessUtils.java index d5aeba156bd7e..169cc4aa1c2d9 100644 --- a/services/core/java/com/android/server/display/brightness/BrightnessUtils.java +++ b/services/core/java/com/android/server/display/brightness/BrightnessUtils.java @@ -45,13 +45,15 @@ public final class BrightnessUtils { * A utility to construct the DisplayBrightnessState */ public static DisplayBrightnessState constructDisplayBrightnessState( - int brightnessChangeReason, float brightness, float sdrBrightness) { + int brightnessChangeReason, float brightness, float sdrBrightness, + String displayBrightnessStrategyName) { BrightnessReason brightnessReason = new BrightnessReason(); brightnessReason.setReason(brightnessChangeReason); return new DisplayBrightnessState.Builder() .setBrightness(brightness) .setSdrBrightness(sdrBrightness) .setBrightnessReason(brightnessReason) + .setDisplayBrightnessStrategyName(displayBrightnessStrategyName) .build(); } } diff --git a/services/core/java/com/android/server/display/brightness/strategy/BoostBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/BoostBrightnessStrategy.java index 0cf234b098307..dd400d998eb4d 100644 --- a/services/core/java/com/android/server/display/brightness/strategy/BoostBrightnessStrategy.java +++ b/services/core/java/com/android/server/display/brightness/strategy/BoostBrightnessStrategy.java @@ -40,7 +40,7 @@ public class BoostBrightnessStrategy implements DisplayBrightnessStrategy { DisplayBrightnessState displayBrightnessState = BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_BOOST, PowerManager.BRIGHTNESS_MAX, - PowerManager.BRIGHTNESS_MAX); + PowerManager.BRIGHTNESS_MAX, getName()); return displayBrightnessState; } diff --git a/services/core/java/com/android/server/display/brightness/strategy/DozeBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/DozeBrightnessStrategy.java index 98075f91c28b3..8299586e1cacc 100644 --- a/services/core/java/com/android/server/display/brightness/strategy/DozeBrightnessStrategy.java +++ b/services/core/java/com/android/server/display/brightness/strategy/DozeBrightnessStrategy.java @@ -33,7 +33,8 @@ public class DozeBrightnessStrategy implements DisplayBrightnessStrategy { // Todo(b/241308599): Introduce a validator class and add validations before setting // the brightness return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_DOZE, - displayPowerRequest.dozeScreenBrightness, displayPowerRequest.dozeScreenBrightness); + displayPowerRequest.dozeScreenBrightness, displayPowerRequest.dozeScreenBrightness, + getName()); } @Override diff --git a/services/core/java/com/android/server/display/brightness/strategy/FollowerBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/FollowerBrightnessStrategy.java index fe684a4a0c567..090ec13570cf4 100644 --- a/services/core/java/com/android/server/display/brightness/strategy/FollowerBrightnessStrategy.java +++ b/services/core/java/com/android/server/display/brightness/strategy/FollowerBrightnessStrategy.java @@ -48,7 +48,7 @@ public class FollowerBrightnessStrategy implements DisplayBrightnessStrategy { // Todo(b/241308599): Introduce a validator class and add validations before setting // the brightness return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_FOLLOWER, - mBrightnessToFollow, mBrightnessToFollow); + mBrightnessToFollow, mBrightnessToFollow, getName()); } @Override diff --git a/services/core/java/com/android/server/display/brightness/strategy/InvalidBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/InvalidBrightnessStrategy.java index 612bbe957e7da..bc241964ff86c 100644 --- a/services/core/java/com/android/server/display/brightness/strategy/InvalidBrightnessStrategy.java +++ b/services/core/java/com/android/server/display/brightness/strategy/InvalidBrightnessStrategy.java @@ -31,7 +31,8 @@ public class InvalidBrightnessStrategy implements DisplayBrightnessStrategy { public DisplayBrightnessState updateBrightness( DisplayManagerInternal.DisplayPowerRequest displayPowerRequest) { return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_UNKNOWN, - PowerManager.BRIGHTNESS_INVALID_FLOAT, PowerManager.BRIGHTNESS_INVALID_FLOAT); + PowerManager.BRIGHTNESS_INVALID_FLOAT, PowerManager.BRIGHTNESS_INVALID_FLOAT, + getName()); } @Override diff --git a/services/core/java/com/android/server/display/brightness/strategy/OverrideBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/OverrideBrightnessStrategy.java index 6d3830abd5618..13327cb4dd2f9 100644 --- a/services/core/java/com/android/server/display/brightness/strategy/OverrideBrightnessStrategy.java +++ b/services/core/java/com/android/server/display/brightness/strategy/OverrideBrightnessStrategy.java @@ -33,7 +33,7 @@ public class OverrideBrightnessStrategy implements DisplayBrightnessStrategy { // the brightness return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_OVERRIDE, displayPowerRequest.screenBrightnessOverride, - displayPowerRequest.screenBrightnessOverride); + displayPowerRequest.screenBrightnessOverride, getName()); } @Override diff --git a/services/core/java/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy.java index ee5e0664748de..3d411d3db6589 100644 --- a/services/core/java/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy.java +++ b/services/core/java/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy.java @@ -34,7 +34,7 @@ public class ScreenOffBrightnessStrategy implements DisplayBrightnessStrategy { // the brightness return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_SCREEN_OFF, PowerManager.BRIGHTNESS_OFF_FLOAT, - PowerManager.BRIGHTNESS_OFF_FLOAT); + PowerManager.BRIGHTNESS_OFF_FLOAT, getName()); } @Override diff --git a/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java index d97415d676166..35f7dd0a524da 100644 --- a/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java +++ b/services/core/java/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategy.java @@ -48,7 +48,7 @@ public class TemporaryBrightnessStrategy implements DisplayBrightnessStrategy { DisplayBrightnessState displayBrightnessState = BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_TEMPORARY, mTemporaryScreenBrightness, - mTemporaryScreenBrightness); + mTemporaryScreenBrightness, getName()); return displayBrightnessState; } diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java index d332b3081fdf8..c0c63c69add82 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/BrightnessEventTest.java @@ -30,6 +30,7 @@ import org.junit.runner.RunWith; @SmallTest @RunWith(AndroidJUnit4.class) public final class BrightnessEventTest { + private static final String DISPLAY_BRIGHTNESS_STRATEGY_NAME = "strategy_name"; private BrightnessEvent mBrightnessEvent; @Before @@ -53,6 +54,7 @@ public final class BrightnessEventTest { mBrightnessEvent.setFlags(0); mBrightnessEvent.setAdjustmentFlags(0); mBrightnessEvent.setAutomaticBrightnessEnabled(true); + mBrightnessEvent.setDisplayBrightnessStrategyName(DISPLAY_BRIGHTNESS_STRATEGY_NAME); } @Test @@ -70,7 +72,8 @@ public final class BrightnessEventTest { "BrightnessEvent: disp=1, physDisp=test, brt=0.6, initBrt=25.0, rcmdBrt=0.6," + " preBrt=NaN, lux=100.0, preLux=150.0, hbmMax=0.62, hbmMode=off, rbcStrength=-1," + " thrmMax=0.65, powerFactor=0.2, wasShortTermModelActive=true, flags=," - + " reason=doze [ low_pwr ], autoBrightness=true"; + + " reason=doze [ low_pwr ], autoBrightness=true, strategy=" + + DISPLAY_BRIGHTNESS_STRATEGY_NAME; assertEquals(expectedString, actualString); } diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/BoostBrightnessStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/BoostBrightnessStrategyTest.java index c1de8943b73a4..c4346317a6efa 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/BoostBrightnessStrategyTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/BoostBrightnessStrategyTest.java @@ -55,6 +55,7 @@ public class BoostBrightnessStrategyTest { .setBrightness(PowerManager.BRIGHTNESS_MAX) .setBrightnessReason(brightnessReason) .setSdrBrightness(PowerManager.BRIGHTNESS_MAX) + .setDisplayBrightnessStrategyName(mBoostBrightnessStrategy.getName()) .build(); DisplayBrightnessState updatedDisplayBrightnessState = mBoostBrightnessStrategy.updateBrightness(displayPowerRequest); diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/DozeBrightnessStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/DozeBrightnessStrategyTest.java index 76fa17287726e..d60caf6efb7ab 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/DozeBrightnessStrategyTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/DozeBrightnessStrategyTest.java @@ -52,6 +52,7 @@ public class DozeBrightnessStrategyTest { .setBrightness(dozeScreenBrightness) .setBrightnessReason(brightnessReason) .setSdrBrightness(dozeScreenBrightness) + .setDisplayBrightnessStrategyName(mDozeBrightnessModeStrategy.getName()) .build(); DisplayBrightnessState updatedDisplayBrightnessState = mDozeBrightnessModeStrategy.updateBrightness(displayPowerRequest); diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/FollowerBrightnessStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/FollowerBrightnessStrategyTest.java index f20404e25afc4..081f19d19f75f 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/FollowerBrightnessStrategyTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/FollowerBrightnessStrategyTest.java @@ -54,6 +54,7 @@ public class FollowerBrightnessStrategyTest { .setBrightness(brightnessToFollow) .setBrightnessReason(brightnessReason) .setSdrBrightness(brightnessToFollow) + .setDisplayBrightnessStrategyName(mFollowerBrightnessStrategy.getName()) .build(); DisplayBrightnessState updatedDisplayBrightnessState = mFollowerBrightnessStrategy.updateBrightness(displayPowerRequest); diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/OverrideBrightnessStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/OverrideBrightnessStrategyTest.java index 2487b32bbd9d5..530245dacd8b7 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/OverrideBrightnessStrategyTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/OverrideBrightnessStrategyTest.java @@ -55,6 +55,7 @@ public class OverrideBrightnessStrategyTest { .setBrightness(overrideBrightness) .setBrightnessReason(brightnessReason) .setSdrBrightness(overrideBrightness) + .setDisplayBrightnessStrategyName(mOverrideBrightnessStrategy.getName()) .build(); DisplayBrightnessState updatedDisplayBrightnessState = mOverrideBrightnessStrategy.updateBrightness(displayPowerRequest); diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategyTest.java index 353e92e234e4f..7147aa8d37016 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategyTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/ScreenOffBrightnessStrategyTest.java @@ -52,6 +52,8 @@ public final class ScreenOffBrightnessStrategyTest { .setBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT) .setSdrBrightness(PowerManager.BRIGHTNESS_OFF_FLOAT) .setBrightnessReason(brightnessReason) + .setDisplayBrightnessStrategyName(mScreenOffBrightnessModeStrategy + .getName()) .build(); DisplayBrightnessState updatedDisplayBrightnessState = mScreenOffBrightnessModeStrategy.updateBrightness(displayPowerRequest); diff --git a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java index 99679a3ce5df8..9830edbea6451 100644 --- a/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java +++ b/services/tests/servicestests/src/com/android/server/display/brightness/strategy/TemporaryBrightnessStrategyTest.java @@ -55,6 +55,7 @@ public class TemporaryBrightnessStrategyTest { .setBrightness(temporaryBrightness) .setBrightnessReason(brightnessReason) .setSdrBrightness(temporaryBrightness) + .setDisplayBrightnessStrategyName(mTemporaryBrightnessStrategy.getName()) .build(); DisplayBrightnessState updatedDisplayBrightnessState = mTemporaryBrightnessStrategy.updateBrightness(displayPowerRequest);