Loading packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +30 −8 Original line number Diff line number Diff line Loading @@ -293,11 +293,11 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi if (shouldUseFloatBrightness()) { mDozeService.setDozeScreenBrightnessFloat( clampToDimBrightnessForScreenOffFloat( clampToUserSettingFloat(mDefaultDozeBrightnessFloat))); clampToUserSettingOrAutoBrightnessFloat(mDefaultDozeBrightnessFloat))); } else { mDozeService.setDozeScreenBrightness( clampToDimBrightnessForScreenOff( clampToUserSetting(mDefaultDozeBrightness))); clampToUserSettingOrAutoBrightness(mDefaultDozeBrightness))); } mDozeHost.setAodDimmingScrim(0f); } Loading @@ -310,10 +310,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi return brightness; } int userSetting = mSystemSettings.getIntForUser( Settings.System.SCREEN_BRIGHTNESS, Integer.MAX_VALUE, UserHandle.USER_CURRENT); return Math.min(brightness, userSetting); return Math.min(brightness, getScreenBrightness()); } @SuppressLint("AndroidFrameworkRequiresPermission") Loading @@ -325,8 +322,33 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi return brightness; } float userSetting = mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY); return Math.min(brightness, userSetting); return Math.min(brightness, getScreenBrightnessFloat()); } private int clampToUserSettingOrAutoBrightness(int brightness) { return Math.min(brightness, getScreenBrightness()); } private float clampToUserSettingOrAutoBrightnessFloat(float brightness) { return Math.min(brightness, getScreenBrightnessFloat()); } /** * Gets the current screen brightness that may have been set by manually by the user * or by autobrightness. */ private int getScreenBrightness() { return mSystemSettings.getIntForUser( Settings.System.SCREEN_BRIGHTNESS, Integer.MAX_VALUE, UserHandle.USER_CURRENT); } /** * Gets the current screen brightness that may have been set by manually by the user * or by autobrightness. */ private float getScreenBrightnessFloat() { return mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY); } /** Loading packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java +66 −18 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ import androidx.test.filters.SmallTest; import com.android.internal.display.BrightnessSynchronizer; import com.android.server.display.feature.flags.Flags; import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; Loading Loading @@ -105,8 +104,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { @Mock DozeParameters mDozeParameters; @Mock DockManager mDockManager; @Mock DevicePostureController mDevicePostureController; @Mock DozeLog mDozeLog; Loading @@ -114,8 +111,8 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { SystemSettings mSystemSettings; @Mock DisplayManager mDisplayManager; private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); private FakeThreadFactory mFakeThreadFactory = new FakeThreadFactory(mFakeExecutor); private final FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); private final FakeThreadFactory mFakeThreadFactory = new FakeThreadFactory(mFakeExecutor); private DozeScreenBrightness mScreen; Loading Loading @@ -249,32 +246,35 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void testAod_usesLightSensorNotClampingToAutoBrightnessValue_Int() { int maxBrightness = 3; when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS), anyInt(), eq(UserHandle.USER_CURRENT))).thenReturn(maxBrightness); @RequiresFlagsEnabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void initialBrightness_clampsToAutoBrightnessValue_Float() { float maxBrightnessFromAutoBrightness = DEFAULT_BRIGHTNESS_FLOAT / 2; when(mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY)).thenReturn( maxBrightnessFromAutoBrightness ); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); mScreen.transitionTo(UNINITIALIZED, INITIALIZED); assertEquals(DEFAULT_BRIGHTNESS_INT, mServiceFake.screenBrightnessInt); assertTrue(Float.isNaN(mServiceFake.screenBrightnessFloat)); assertEquals(maxBrightnessFromAutoBrightness, mServiceFake.screenBrightnessFloat, DELTA); assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); } @Test @RequiresFlagsEnabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void testAod_usesLightSensorNotClampingToAutoBrightnessValue_Float() { float maxBrightness = DEFAULT_BRIGHTNESS_FLOAT / 2; when(mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY)).thenReturn(maxBrightness); @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void initialBrightness_clampsToAutoBrightnessValue_Int() { int maxBrightnessFromAutoBrightness = DEFAULT_BRIGHTNESS_INT / 2; when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS), anyInt(), eq(UserHandle.USER_CURRENT))).thenReturn(maxBrightnessFromAutoBrightness); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); mScreen.transitionTo(UNINITIALIZED, INITIALIZED); assertEquals(DEFAULT_BRIGHTNESS_FLOAT, mServiceFake.screenBrightnessFloat, DELTA); assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); assertEquals(maxBrightnessFromAutoBrightness, mServiceFake.screenBrightnessInt); assertTrue(Float.isNaN(mServiceFake.screenBrightnessFloat)); } @Test Loading Loading @@ -377,6 +377,54 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); } @Test @RequiresFlagsEnabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void lightSensorChangesInAod_doesNotClampToAutoBrightnessValue_Float() { // GIVEN auto brightness reports low brightness float maxBrightnessFromAutoBrightness = DEFAULT_BRIGHTNESS_FLOAT / 2; when(mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY)) .thenReturn(maxBrightnessFromAutoBrightness); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); // GIVEN the device is DOZE_AOD and the display state changes to ON mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); waitForSensorManager(); // WHEN new sensor event sent mSensor.sendSensorEvent(3); // THEN brightness is updated assertEquals(SENSOR_TO_BRIGHTNESS_FLOAT[3], mServiceFake.screenBrightnessFloat, DELTA); assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); } @Test @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void lightSensorChangesInAod_doesNotClampToAutoBrightnessValue_Int() { // GIVEN auto brightness reports low brightness int maxBrightnessFromAutoBrightness = 1; when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS), anyInt(), eq(UserHandle.USER_CURRENT))).thenReturn(maxBrightnessFromAutoBrightness); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); // GIVEN the device is DOZE_AOD and the display state changes to ON mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); waitForSensorManager(); // WHEN new sensor event sent mSensor.sendSensorEvent(3); // THEN brightness is updated assertEquals(SENSOR_TO_BRIGHTNESS_INT[3], mServiceFake.screenBrightnessInt); assertTrue(Float.isNaN(mServiceFake.screenBrightnessFloat)); } @Test @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void docked_usesLightSensor_Int() { Loading Loading
packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +30 −8 Original line number Diff line number Diff line Loading @@ -293,11 +293,11 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi if (shouldUseFloatBrightness()) { mDozeService.setDozeScreenBrightnessFloat( clampToDimBrightnessForScreenOffFloat( clampToUserSettingFloat(mDefaultDozeBrightnessFloat))); clampToUserSettingOrAutoBrightnessFloat(mDefaultDozeBrightnessFloat))); } else { mDozeService.setDozeScreenBrightness( clampToDimBrightnessForScreenOff( clampToUserSetting(mDefaultDozeBrightness))); clampToUserSettingOrAutoBrightness(mDefaultDozeBrightness))); } mDozeHost.setAodDimmingScrim(0f); } Loading @@ -310,10 +310,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi return brightness; } int userSetting = mSystemSettings.getIntForUser( Settings.System.SCREEN_BRIGHTNESS, Integer.MAX_VALUE, UserHandle.USER_CURRENT); return Math.min(brightness, userSetting); return Math.min(brightness, getScreenBrightness()); } @SuppressLint("AndroidFrameworkRequiresPermission") Loading @@ -325,8 +322,33 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi return brightness; } float userSetting = mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY); return Math.min(brightness, userSetting); return Math.min(brightness, getScreenBrightnessFloat()); } private int clampToUserSettingOrAutoBrightness(int brightness) { return Math.min(brightness, getScreenBrightness()); } private float clampToUserSettingOrAutoBrightnessFloat(float brightness) { return Math.min(brightness, getScreenBrightnessFloat()); } /** * Gets the current screen brightness that may have been set by manually by the user * or by autobrightness. */ private int getScreenBrightness() { return mSystemSettings.getIntForUser( Settings.System.SCREEN_BRIGHTNESS, Integer.MAX_VALUE, UserHandle.USER_CURRENT); } /** * Gets the current screen brightness that may have been set by manually by the user * or by autobrightness. */ private float getScreenBrightnessFloat() { return mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY); } /** Loading
packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java +66 −18 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ import androidx.test.filters.SmallTest; import com.android.internal.display.BrightnessSynchronizer; import com.android.server.display.feature.flags.Flags; import com.android.systemui.SysuiTestCase; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.policy.DevicePostureController; Loading Loading @@ -105,8 +104,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { @Mock DozeParameters mDozeParameters; @Mock DockManager mDockManager; @Mock DevicePostureController mDevicePostureController; @Mock DozeLog mDozeLog; Loading @@ -114,8 +111,8 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { SystemSettings mSystemSettings; @Mock DisplayManager mDisplayManager; private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); private FakeThreadFactory mFakeThreadFactory = new FakeThreadFactory(mFakeExecutor); private final FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); private final FakeThreadFactory mFakeThreadFactory = new FakeThreadFactory(mFakeExecutor); private DozeScreenBrightness mScreen; Loading Loading @@ -249,32 +246,35 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void testAod_usesLightSensorNotClampingToAutoBrightnessValue_Int() { int maxBrightness = 3; when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS), anyInt(), eq(UserHandle.USER_CURRENT))).thenReturn(maxBrightness); @RequiresFlagsEnabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void initialBrightness_clampsToAutoBrightnessValue_Float() { float maxBrightnessFromAutoBrightness = DEFAULT_BRIGHTNESS_FLOAT / 2; when(mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY)).thenReturn( maxBrightnessFromAutoBrightness ); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); mScreen.transitionTo(UNINITIALIZED, INITIALIZED); assertEquals(DEFAULT_BRIGHTNESS_INT, mServiceFake.screenBrightnessInt); assertTrue(Float.isNaN(mServiceFake.screenBrightnessFloat)); assertEquals(maxBrightnessFromAutoBrightness, mServiceFake.screenBrightnessFloat, DELTA); assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); } @Test @RequiresFlagsEnabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void testAod_usesLightSensorNotClampingToAutoBrightnessValue_Float() { float maxBrightness = DEFAULT_BRIGHTNESS_FLOAT / 2; when(mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY)).thenReturn(maxBrightness); @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void initialBrightness_clampsToAutoBrightnessValue_Int() { int maxBrightnessFromAutoBrightness = DEFAULT_BRIGHTNESS_INT / 2; when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS), anyInt(), eq(UserHandle.USER_CURRENT))).thenReturn(maxBrightnessFromAutoBrightness); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); mScreen.transitionTo(UNINITIALIZED, INITIALIZED); assertEquals(DEFAULT_BRIGHTNESS_FLOAT, mServiceFake.screenBrightnessFloat, DELTA); assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); assertEquals(maxBrightnessFromAutoBrightness, mServiceFake.screenBrightnessInt); assertTrue(Float.isNaN(mServiceFake.screenBrightnessFloat)); } @Test Loading Loading @@ -377,6 +377,54 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); } @Test @RequiresFlagsEnabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void lightSensorChangesInAod_doesNotClampToAutoBrightnessValue_Float() { // GIVEN auto brightness reports low brightness float maxBrightnessFromAutoBrightness = DEFAULT_BRIGHTNESS_FLOAT / 2; when(mDisplayManager.getBrightness(Display.DEFAULT_DISPLAY)) .thenReturn(maxBrightnessFromAutoBrightness); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); // GIVEN the device is DOZE_AOD and the display state changes to ON mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); waitForSensorManager(); // WHEN new sensor event sent mSensor.sendSensorEvent(3); // THEN brightness is updated assertEquals(SENSOR_TO_BRIGHTNESS_FLOAT[3], mServiceFake.screenBrightnessFloat, DELTA); assertEquals(PowerManager.BRIGHTNESS_DEFAULT, mServiceFake.screenBrightnessInt); } @Test @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void lightSensorChangesInAod_doesNotClampToAutoBrightnessValue_Int() { // GIVEN auto brightness reports low brightness int maxBrightnessFromAutoBrightness = 1; when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS), anyInt(), eq(UserHandle.USER_CURRENT))).thenReturn(maxBrightnessFromAutoBrightness); when(mSystemSettings.getIntForUser(eq(Settings.System.SCREEN_BRIGHTNESS_MODE), anyInt(), eq(UserHandle.USER_CURRENT))) .thenReturn(Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); // GIVEN the device is DOZE_AOD and the display state changes to ON mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); waitForSensorManager(); // WHEN new sensor event sent mSensor.sendSensorEvent(3); // THEN brightness is updated assertEquals(SENSOR_TO_BRIGHTNESS_INT[3], mServiceFake.screenBrightnessInt); assertTrue(Float.isNaN(mServiceFake.screenBrightnessFloat)); } @Test @RequiresFlagsDisabled(Flags.FLAG_DOZE_BRIGHTNESS_FLOAT) public void docked_usesLightSensor_Int() { Loading