diff options
| author | 2024-02-28 14:51:14 +0000 | |
|---|---|---|
| committer | 2024-02-28 16:04:49 +0000 | |
| commit | 6919dbe290a50480631158ecf29083fcb0f6d0ac (patch) | |
| tree | 3611d9ffaa5aa22428881379b32796362446dc1e | |
| parent | 12e0eee1951453ebddb48098b8641221d35e85e8 (diff) | |
Initial doze brightness - check if ABC is null
Bug: 327265636
Test: atest DisplayPowerControllerTest
Change-Id: I83e1b9d340479a33c0e493337713fc269cd6bc9d
| -rw-r--r-- | services/core/java/com/android/server/display/DisplayPowerController.java | 1 | ||||
| -rw-r--r-- | services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java | 40 |
2 files changed, 41 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index dbe85ea0fa04..23ca81468294 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -1474,6 +1474,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call && mFlags.isDisplayOffloadEnabled() && mPowerRequest.policy == POLICY_DOZE && mDisplayOffloadSession != null + && mAutomaticBrightnessController != null && mAutomaticBrightnessStrategy.shouldUseAutoBrightness()) { rawBrightnessState = mAutomaticBrightnessController .getAutomaticScreenBrightnessBasedOnLastObservedLux(mTempBrightnessEvent); diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java index acddc9d22953..fcee70fd0702 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java @@ -1694,6 +1694,39 @@ public final class DisplayPowerControllerTest { /* ignoreAnimationLimits= */ anyBoolean()); } + @Test + public void testInitialDozeBrightness_AbcIsNull() { + when(mDisplayManagerFlagsMock.areAutoBrightnessModesEnabled()).thenReturn(true); + when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true); + Settings.System.putInt(mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_MODE, + Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); + mContext.getOrCreateTestableResources().addOverride( + com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, false); + mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID, /* isEnabled= */ true, + /* isAutoBrightnessAvailable= */ false); + mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession); + float brightness = 0.277f; + when(mHolder.displayPowerState.getColorFadeLevel()).thenReturn(1.0f); + when(mHolder.automaticBrightnessController + .getAutomaticScreenBrightnessBasedOnLastObservedLux(any(BrightnessEvent.class))) + .thenReturn(brightness); + when(mHolder.hbmController.getCurrentBrightnessMax()) + .thenReturn(PowerManager.BRIGHTNESS_MAX); + when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE); + + DisplayPowerRequest dpr = new DisplayPowerRequest(); + dpr.policy = DisplayPowerRequest.POLICY_DOZE; + mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false); + advanceTime(1); // Run updatePowerState + + // Automatic Brightness Controller is null so no initial doze brightness should be set and + // we should not crash + verify(mHolder.animator, never()).animateTo(eq(brightness), + /* linearSecondTarget= */ anyFloat(), /* rate= */ anyFloat(), + /* ignoreAnimationLimits= */ anyBoolean()); + } + /** * Creates a mock and registers it to {@link LocalServices}. */ @@ -1778,6 +1811,12 @@ public final class DisplayPowerControllerTest { private DisplayPowerControllerHolder createDisplayPowerController(int displayId, String uniqueId, boolean isEnabled) { + return createDisplayPowerController(displayId, uniqueId, isEnabled, + /* isAutoBrightnessAvailable= */ true); + } + + private DisplayPowerControllerHolder createDisplayPowerController(int displayId, + String uniqueId, boolean isEnabled, boolean isAutoBrightnessAvailable) { final DisplayPowerState displayPowerState = mock(DisplayPowerState.class); final DualRampAnimator<DisplayPowerState> animator = mock(DualRampAnimator.class); final AutomaticBrightnessController automaticBrightnessController = @@ -1812,6 +1851,7 @@ public final class DisplayPowerControllerTest { final DisplayDeviceConfig config = mock(DisplayDeviceConfig.class); setUpDisplay(displayId, uniqueId, display, device, config, isEnabled); + when(config.isAutoBrightnessAvailable()).thenReturn(isAutoBrightnessAvailable); final DisplayPowerController dpc = new DisplayPowerController( mContext, injector, mDisplayPowerCallbacksMock, mHandler, |