Loading services/core/java/com/android/server/display/BrightnessRangeController.java +2 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.display; import android.annotation.Nullable; import android.hardware.display.BrightnessInfo; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -92,7 +93,7 @@ class BrightnessRangeController { return mHbmController.getNormalBrightnessMax(); } void loadFromConfig(HighBrightnessModeMetadata hbmMetadata, IBinder token, void loadFromConfig(@Nullable HighBrightnessModeMetadata hbmMetadata, IBinder token, DisplayDeviceInfo info, DisplayDeviceConfig displayDeviceConfig) { applyChanges( () -> mNormalBrightnessModeController.resetNbmData( Loading services/core/java/com/android/server/display/DisplayManagerService.java +15 −7 Original line number Diff line number Diff line Loading @@ -2158,11 +2158,9 @@ public final class DisplayManagerService extends SystemService { HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMapper.getHighBrightnessModeMetadataLocked(display); if (hbmMetadata != null) { dpc.onDisplayChanged(hbmMetadata, leadDisplayId); } } } private void updateDisplayPowerControllerLeaderLocked( @NonNull DisplayPowerController dpc, int leadDisplayId) { Loading Loading @@ -2278,11 +2276,9 @@ public final class DisplayManagerService extends SystemService { HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMapper.getHighBrightnessModeMetadataLocked(display); if (hbmMetadata != null) { dpc.onDisplayChanged(hbmMetadata, leadDisplayId); } } } private Runnable updateDisplayStateLocked(DisplayDevice device) { // Blank or unblank the display immediately to match the state requested Loading Loading @@ -3542,6 +3538,18 @@ public final class DisplayManagerService extends SystemService { DisplayManagerFlags getFlags() { return new DisplayManagerFlags(); } DisplayPowerController getDisplayPowerController(Context context, DisplayPowerController.Injector injector, DisplayManagerInternal.DisplayPowerCallbacks callbacks, Handler handler, SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay, BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting, Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata, boolean bootCompleted, DisplayManagerFlags flags) { return new DisplayPowerController(context, injector, callbacks, handler, sensorManager, blanker, logicalDisplay, brightnessTracker, brightnessSetting, onBrightnessChangeRunnable, hbmMetadata, bootCompleted, flags); } } @VisibleForTesting Loading Loading @@ -3594,7 +3602,7 @@ public final class DisplayManagerService extends SystemService { // with the corresponding displaydevice. HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMapper.getHighBrightnessModeMetadataLocked(display); displayPowerController = new DisplayPowerController( displayPowerController = mInjector.getDisplayPowerController( mContext, /* injector= */ null, mDisplayPowerCallbacks, mPowerHandler, mSensorManager, mDisplayBlanker, display, mBrightnessTracker, brightnessSetting, () -> handleBrightnessChange(display), hbmMetadata, mBootCompleted, mFlags); Loading services/core/java/com/android/server/display/DisplayPowerController.java +3 −2 Original line number Diff line number Diff line Loading @@ -849,7 +849,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call * * Make sure DisplayManagerService.mSyncRoot lock is held when this is called */ public void onDisplayChanged(HighBrightnessModeMetadata hbmMetadata, int leadDisplayId) { public void onDisplayChanged(@Nullable HighBrightnessModeMetadata hbmMetadata, int leadDisplayId) { mLeadDisplayId = leadDisplayId; final DisplayDevice device = mLogicalDisplay.getPrimaryDisplayDeviceLocked(); if (device == null) { Loading Loading @@ -949,7 +950,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } private void loadFromDisplayDeviceConfig(IBinder token, DisplayDeviceInfo info, HighBrightnessModeMetadata hbmMetadata) { @Nullable HighBrightnessModeMetadata hbmMetadata) { // All properties that depend on the associated DisplayDevice and the DDC must be // updated here. mScreenBrightnessDozeConfig = BrightnessUtils.clampAbsoluteBrightness( Loading services/core/java/com/android/server/display/HighBrightnessModeController.java +1 −1 Original line number Diff line number Diff line Loading @@ -266,7 +266,7 @@ class HighBrightnessModeController { mSettingsObserver.stopObserving(); } void setHighBrightnessModeMetadata(HighBrightnessModeMetadata hbmInfo) { void setHighBrightnessModeMetadata(@Nullable HighBrightnessModeMetadata hbmInfo) { mHighBrightnessModeMetadata = hbmInfo; } Loading services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,7 @@ import com.android.server.display.DisplayManagerService.DeviceStateListener; import com.android.server.display.DisplayManagerService.SyncRoot; import com.android.server.display.config.SensorData; import com.android.server.display.feature.DisplayManagerFlags; import com.android.server.display.layout.Layout; import com.android.server.display.notifications.DisplayNotificationManager; import com.android.server.input.InputManagerInternal; import com.android.server.lights.LightsManager; Loading Loading @@ -3128,6 +3129,45 @@ public class DisplayManagerServiceTest { argThat(matchesFilter)); } @Test public void testOnDisplayChanged_HbmMetadataNull() { DisplayPowerController dpc = mock(DisplayPowerController.class); DisplayManagerService.Injector injector = new BasicInjector() { @Override DisplayPowerController getDisplayPowerController(Context context, DisplayPowerController.Injector injector, DisplayManagerInternal.DisplayPowerCallbacks callbacks, Handler handler, SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay, BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting, Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata, boolean bootCompleted, DisplayManagerFlags flags) { return dpc; } }; DisplayManagerService displayManager = new DisplayManagerService(mContext, injector); DisplayManagerInternal localService = displayManager.new LocalService(); registerDefaultDisplays(displayManager); displayManager.onBootPhase(SystemService.PHASE_WAIT_FOR_DEFAULT_DISPLAY); // Add the FakeDisplayDevice FakeDisplayDevice displayDevice = new FakeDisplayDevice(); DisplayDeviceInfo displayDeviceInfo = new DisplayDeviceInfo(); displayDeviceInfo.state = Display.STATE_ON; displayDevice.setDisplayDeviceInfo(displayDeviceInfo); displayManager.getDisplayDeviceRepository() .onDisplayDeviceEvent(displayDevice, DisplayAdapter.DISPLAY_DEVICE_EVENT_ADDED); initDisplayPowerController(localService); // Simulate DisplayDevice change DisplayDeviceInfo displayDeviceInfo2 = new DisplayDeviceInfo(); displayDeviceInfo2.copyFrom(displayDeviceInfo); displayDeviceInfo2.state = Display.STATE_DOZE; updateDisplayDeviceInfo(displayManager, displayDevice, displayDeviceInfo2); verify(dpc).onDisplayChanged(/* hbmMetadata= */ null, Layout.NO_LEAD_DISPLAY); } private void initDisplayPowerController(DisplayManagerInternal localService) { localService.initPowerManagement(new DisplayManagerInternal.DisplayPowerCallbacks() { @Override Loading Loading
services/core/java/com/android/server/display/BrightnessRangeController.java +2 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.display; import android.annotation.Nullable; import android.hardware.display.BrightnessInfo; import android.os.Handler; import android.os.IBinder; Loading Loading @@ -92,7 +93,7 @@ class BrightnessRangeController { return mHbmController.getNormalBrightnessMax(); } void loadFromConfig(HighBrightnessModeMetadata hbmMetadata, IBinder token, void loadFromConfig(@Nullable HighBrightnessModeMetadata hbmMetadata, IBinder token, DisplayDeviceInfo info, DisplayDeviceConfig displayDeviceConfig) { applyChanges( () -> mNormalBrightnessModeController.resetNbmData( Loading
services/core/java/com/android/server/display/DisplayManagerService.java +15 −7 Original line number Diff line number Diff line Loading @@ -2158,11 +2158,9 @@ public final class DisplayManagerService extends SystemService { HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMapper.getHighBrightnessModeMetadataLocked(display); if (hbmMetadata != null) { dpc.onDisplayChanged(hbmMetadata, leadDisplayId); } } } private void updateDisplayPowerControllerLeaderLocked( @NonNull DisplayPowerController dpc, int leadDisplayId) { Loading Loading @@ -2278,11 +2276,9 @@ public final class DisplayManagerService extends SystemService { HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMapper.getHighBrightnessModeMetadataLocked(display); if (hbmMetadata != null) { dpc.onDisplayChanged(hbmMetadata, leadDisplayId); } } } private Runnable updateDisplayStateLocked(DisplayDevice device) { // Blank or unblank the display immediately to match the state requested Loading Loading @@ -3542,6 +3538,18 @@ public final class DisplayManagerService extends SystemService { DisplayManagerFlags getFlags() { return new DisplayManagerFlags(); } DisplayPowerController getDisplayPowerController(Context context, DisplayPowerController.Injector injector, DisplayManagerInternal.DisplayPowerCallbacks callbacks, Handler handler, SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay, BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting, Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata, boolean bootCompleted, DisplayManagerFlags flags) { return new DisplayPowerController(context, injector, callbacks, handler, sensorManager, blanker, logicalDisplay, brightnessTracker, brightnessSetting, onBrightnessChangeRunnable, hbmMetadata, bootCompleted, flags); } } @VisibleForTesting Loading Loading @@ -3594,7 +3602,7 @@ public final class DisplayManagerService extends SystemService { // with the corresponding displaydevice. HighBrightnessModeMetadata hbmMetadata = mHighBrightnessModeMetadataMapper.getHighBrightnessModeMetadataLocked(display); displayPowerController = new DisplayPowerController( displayPowerController = mInjector.getDisplayPowerController( mContext, /* injector= */ null, mDisplayPowerCallbacks, mPowerHandler, mSensorManager, mDisplayBlanker, display, mBrightnessTracker, brightnessSetting, () -> handleBrightnessChange(display), hbmMetadata, mBootCompleted, mFlags); Loading
services/core/java/com/android/server/display/DisplayPowerController.java +3 −2 Original line number Diff line number Diff line Loading @@ -849,7 +849,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call * * Make sure DisplayManagerService.mSyncRoot lock is held when this is called */ public void onDisplayChanged(HighBrightnessModeMetadata hbmMetadata, int leadDisplayId) { public void onDisplayChanged(@Nullable HighBrightnessModeMetadata hbmMetadata, int leadDisplayId) { mLeadDisplayId = leadDisplayId; final DisplayDevice device = mLogicalDisplay.getPrimaryDisplayDeviceLocked(); if (device == null) { Loading Loading @@ -949,7 +950,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } private void loadFromDisplayDeviceConfig(IBinder token, DisplayDeviceInfo info, HighBrightnessModeMetadata hbmMetadata) { @Nullable HighBrightnessModeMetadata hbmMetadata) { // All properties that depend on the associated DisplayDevice and the DDC must be // updated here. mScreenBrightnessDozeConfig = BrightnessUtils.clampAbsoluteBrightness( Loading
services/core/java/com/android/server/display/HighBrightnessModeController.java +1 −1 Original line number Diff line number Diff line Loading @@ -266,7 +266,7 @@ class HighBrightnessModeController { mSettingsObserver.stopObserving(); } void setHighBrightnessModeMetadata(HighBrightnessModeMetadata hbmInfo) { void setHighBrightnessModeMetadata(@Nullable HighBrightnessModeMetadata hbmInfo) { mHighBrightnessModeMetadata = hbmInfo; } Loading
services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java +40 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,7 @@ import com.android.server.display.DisplayManagerService.DeviceStateListener; import com.android.server.display.DisplayManagerService.SyncRoot; import com.android.server.display.config.SensorData; import com.android.server.display.feature.DisplayManagerFlags; import com.android.server.display.layout.Layout; import com.android.server.display.notifications.DisplayNotificationManager; import com.android.server.input.InputManagerInternal; import com.android.server.lights.LightsManager; Loading Loading @@ -3128,6 +3129,45 @@ public class DisplayManagerServiceTest { argThat(matchesFilter)); } @Test public void testOnDisplayChanged_HbmMetadataNull() { DisplayPowerController dpc = mock(DisplayPowerController.class); DisplayManagerService.Injector injector = new BasicInjector() { @Override DisplayPowerController getDisplayPowerController(Context context, DisplayPowerController.Injector injector, DisplayManagerInternal.DisplayPowerCallbacks callbacks, Handler handler, SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay, BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting, Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata, boolean bootCompleted, DisplayManagerFlags flags) { return dpc; } }; DisplayManagerService displayManager = new DisplayManagerService(mContext, injector); DisplayManagerInternal localService = displayManager.new LocalService(); registerDefaultDisplays(displayManager); displayManager.onBootPhase(SystemService.PHASE_WAIT_FOR_DEFAULT_DISPLAY); // Add the FakeDisplayDevice FakeDisplayDevice displayDevice = new FakeDisplayDevice(); DisplayDeviceInfo displayDeviceInfo = new DisplayDeviceInfo(); displayDeviceInfo.state = Display.STATE_ON; displayDevice.setDisplayDeviceInfo(displayDeviceInfo); displayManager.getDisplayDeviceRepository() .onDisplayDeviceEvent(displayDevice, DisplayAdapter.DISPLAY_DEVICE_EVENT_ADDED); initDisplayPowerController(localService); // Simulate DisplayDevice change DisplayDeviceInfo displayDeviceInfo2 = new DisplayDeviceInfo(); displayDeviceInfo2.copyFrom(displayDeviceInfo); displayDeviceInfo2.state = Display.STATE_DOZE; updateDisplayDeviceInfo(displayManager, displayDevice, displayDeviceInfo2); verify(dpc).onDisplayChanged(/* hbmMetadata= */ null, Layout.NO_LEAD_DISPLAY); } private void initDisplayPowerController(DisplayManagerInternal localService) { localService.initPowerManagement(new DisplayManagerInternal.DisplayPowerCallbacks() { @Override Loading