diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index ffecf2b7018da..7fc6cd0bebd64 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -2672,10 +2672,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call public void setBrightness(float brightnessValue, int userSerial) { // Update the setting, which will eventually call back into DPC to have us actually update // the display with the new value. + float clampedBrightnessValue = clampScreenBrightness(brightnessValue); mBrightnessSetting.setUserSerial(userSerial); - mBrightnessSetting.setBrightness(brightnessValue); + mBrightnessSetting.setBrightness(clampedBrightnessValue); if (mDisplayId == Display.DEFAULT_DISPLAY && mPersistBrightnessNitsForDefaultDisplay) { - float nits = convertToNits(brightnessValue); + float nits = convertToNits(clampedBrightnessValue); if (nits >= 0) { mBrightnessSetting.setBrightnessNitsForDefaultDisplay(nits); } diff --git a/services/core/java/com/android/server/display/DisplayPowerController2.java b/services/core/java/com/android/server/display/DisplayPowerController2.java index 7043af863301b..37b9d5638dbcd 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController2.java +++ b/services/core/java/com/android/server/display/DisplayPowerController2.java @@ -2185,7 +2185,8 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal @Override public void setBrightness(float brightnessValue, int userSerial) { - mDisplayBrightnessController.setBrightness(brightnessValue, userSerial); + mDisplayBrightnessController.setBrightness(clampScreenBrightness(brightnessValue), + userSerial); } @Override diff --git a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java index 434a75f0e2184..b5f03bab291b8 100644 --- a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java +++ b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerController2Test.java @@ -1086,6 +1086,16 @@ public final class DisplayPowerController2Test { .getThermalBrightnessThrottlingDataMapByThrottlingId(); } + @Test + public void testSetBrightness_BrightnessShouldBeClamped() { + float clampedBrightness = 0.6f; + when(mHolder.hbmController.getCurrentBrightnessMax()).thenReturn(clampedBrightness); + + mHolder.dpc.setBrightness(PowerManager.BRIGHTNESS_MAX); + + verify(mHolder.brightnessSetting).setBrightness(clampedBrightness); + } + /** * Creates a mock and registers it to {@link LocalServices}. */ diff --git a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java index db786bd00658c..f3e3d342776b5 100644 --- a/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/display/DisplayPowerControllerTest.java @@ -1092,6 +1092,16 @@ public final class DisplayPowerControllerTest { .getThermalBrightnessThrottlingDataMapByThrottlingId(); } + @Test + public void testSetBrightness_BrightnessShouldBeClamped() { + float clampedBrightness = 0.6f; + when(mHolder.hbmController.getCurrentBrightnessMax()).thenReturn(clampedBrightness); + + mHolder.dpc.setBrightness(PowerManager.BRIGHTNESS_MAX); + + verify(mHolder.brightnessSetting).setBrightness(clampedBrightness); + } + /** * Creates a mock and registers it to {@link LocalServices}. */