Loading services/core/java/com/android/server/display/DisplayManagerService.java +6 −9 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ import android.util.ArraySet; import android.util.EventLog; import android.util.IndentingPrintWriter; import android.util.IntArray; import android.util.MathUtils; import android.util.Pair; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -3098,6 +3099,7 @@ public final class DisplayManagerService extends SystemService { /** * Get internal or external viewport. Create it if does not currently exist. * * @param viewportType - either INTERNAL or EXTERNAL * @return the viewport with the requested type */ Loading Loading @@ -4413,7 +4415,6 @@ public final class DisplayManagerService extends SystemService { } @Override // Binder call public BrightnessConfiguration getBrightnessConfigurationForUser(int userId) { final String uniqueId; Loading Loading @@ -4492,10 +4493,12 @@ public final class DisplayManagerService extends SystemService { @Override // Binder call public void setBrightness(int displayId, float brightness) { setBrightness_enforcePermission(); if (!isValidBrightness(brightness)) { Slog.w(TAG, "Attempted to set invalid brightness" + brightness); if (Float.isNaN(brightness)) { Slog.w(TAG, "Attempted to set invalid brightness: " + brightness); return; } MathUtils.constrain(brightness, PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX); final long token = Binder.clearCallingIdentity(); try { synchronized (mSyncRoot) { Loading Loading @@ -4791,12 +4794,6 @@ public final class DisplayManagerService extends SystemService { } } private static boolean isValidBrightness(float brightness) { return !Float.isNaN(brightness) && (brightness >= PowerManager.BRIGHTNESS_MIN) && (brightness <= PowerManager.BRIGHTNESS_MAX); } @VisibleForTesting void overrideSensorManager(SensorManager sensorManager) { synchronized (mSyncRoot) { Loading services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java +69 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.MessageQueue; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; import android.os.SystemProperties; Loading Loading @@ -3052,6 +3053,74 @@ public class DisplayManagerServiceTest { } } @Test public void testBrightnessUpdates() { DisplayManagerService displayManager = new DisplayManagerService(mContext, mShortMockedInjector); DisplayManagerInternal localService = displayManager.new LocalService(); DisplayManagerService.BinderService displayManagerBinderService = displayManager.new BinderService(); registerDefaultDisplays(displayManager); initDisplayPowerController(localService); final float invalidBrightness = -0.3f; final float brightnessOff = -1.0f; final float minimumBrightness = 0.0f; final float validBrightness = 0.5f; Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); // set and check valid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, validBrightness); waitForIdleHandler(mPowerHandler); assertEquals(validBrightness, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // set and check invalid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, invalidBrightness); waitForIdleHandler(mPowerHandler); assertEquals(PowerManager.BRIGHTNESS_MIN, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // reset and check valid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, validBrightness); waitForIdleHandler(mPowerHandler); assertEquals(validBrightness, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // set and check brightness off waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, brightnessOff); waitForIdleHandler(mPowerHandler); assertEquals(PowerManager.BRIGHTNESS_MIN, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // reset and check valid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, validBrightness); waitForIdleHandler(mPowerHandler); assertEquals(validBrightness, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // set and check minimum brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, minimumBrightness); waitForIdleHandler(mPowerHandler); assertEquals(PowerManager.BRIGHTNESS_MIN, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); } @Test public void testResolutionChangeGetsBackedUp() throws Exception { when(mMockFlags.isResolutionBackupRestoreEnabled()).thenReturn(true); Loading Loading
services/core/java/com/android/server/display/DisplayManagerService.java +6 −9 Original line number Diff line number Diff line Loading @@ -134,6 +134,7 @@ import android.util.ArraySet; import android.util.EventLog; import android.util.IndentingPrintWriter; import android.util.IntArray; import android.util.MathUtils; import android.util.Pair; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -3098,6 +3099,7 @@ public final class DisplayManagerService extends SystemService { /** * Get internal or external viewport. Create it if does not currently exist. * * @param viewportType - either INTERNAL or EXTERNAL * @return the viewport with the requested type */ Loading Loading @@ -4413,7 +4415,6 @@ public final class DisplayManagerService extends SystemService { } @Override // Binder call public BrightnessConfiguration getBrightnessConfigurationForUser(int userId) { final String uniqueId; Loading Loading @@ -4492,10 +4493,12 @@ public final class DisplayManagerService extends SystemService { @Override // Binder call public void setBrightness(int displayId, float brightness) { setBrightness_enforcePermission(); if (!isValidBrightness(brightness)) { Slog.w(TAG, "Attempted to set invalid brightness" + brightness); if (Float.isNaN(brightness)) { Slog.w(TAG, "Attempted to set invalid brightness: " + brightness); return; } MathUtils.constrain(brightness, PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX); final long token = Binder.clearCallingIdentity(); try { synchronized (mSyncRoot) { Loading Loading @@ -4791,12 +4794,6 @@ public final class DisplayManagerService extends SystemService { } } private static boolean isValidBrightness(float brightness) { return !Float.isNaN(brightness) && (brightness >= PowerManager.BRIGHTNESS_MIN) && (brightness <= PowerManager.BRIGHTNESS_MAX); } @VisibleForTesting void overrideSensorManager(SensorManager sensorManager) { synchronized (mSyncRoot) { Loading
services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java +69 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.MessageQueue; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; import android.os.SystemProperties; Loading Loading @@ -3052,6 +3053,74 @@ public class DisplayManagerServiceTest { } } @Test public void testBrightnessUpdates() { DisplayManagerService displayManager = new DisplayManagerService(mContext, mShortMockedInjector); DisplayManagerInternal localService = displayManager.new LocalService(); DisplayManagerService.BinderService displayManagerBinderService = displayManager.new BinderService(); registerDefaultDisplays(displayManager); initDisplayPowerController(localService); final float invalidBrightness = -0.3f; final float brightnessOff = -1.0f; final float minimumBrightness = 0.0f; final float validBrightness = 0.5f; Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); // set and check valid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, validBrightness); waitForIdleHandler(mPowerHandler); assertEquals(validBrightness, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // set and check invalid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, invalidBrightness); waitForIdleHandler(mPowerHandler); assertEquals(PowerManager.BRIGHTNESS_MIN, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // reset and check valid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, validBrightness); waitForIdleHandler(mPowerHandler); assertEquals(validBrightness, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // set and check brightness off waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, brightnessOff); waitForIdleHandler(mPowerHandler); assertEquals(PowerManager.BRIGHTNESS_MIN, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // reset and check valid brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, validBrightness); waitForIdleHandler(mPowerHandler); assertEquals(validBrightness, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); // set and check minimum brightness waitForIdleHandler(mPowerHandler); displayManagerBinderService.setBrightness(Display.DEFAULT_DISPLAY, minimumBrightness); waitForIdleHandler(mPowerHandler); assertEquals(PowerManager.BRIGHTNESS_MIN, displayManagerBinderService.getBrightness(Display.DEFAULT_DISPLAY), FLOAT_TOLERANCE); } @Test public void testResolutionChangeGetsBackedUp() throws Exception { when(mMockFlags.isResolutionBackupRestoreEnabled()).thenReturn(true); Loading