Loading services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java +8 −5 Original line number Diff line number Diff line Loading @@ -437,6 +437,7 @@ public final class DisplayBrightnessController { * persist the nit value, the nit value for the default display will be loaded. */ private void loadNitBasedBrightnessSetting() { float currentBrightnessSetting = Float.NaN; if (mDisplayId == Display.DEFAULT_DISPLAY && mPersistBrightnessNitsForDefaultDisplay) { float brightnessNitsForDefaultDisplay = mBrightnessSetting.getBrightnessNitsForDefaultDisplay(); Loading @@ -445,15 +446,17 @@ public final class DisplayBrightnessController { brightnessNitsForDefaultDisplay); if (BrightnessUtils.isValidBrightnessValue(brightnessForDefaultDisplay)) { mBrightnessSetting.setBrightness(brightnessForDefaultDisplay); synchronized (mLock) { mCurrentScreenBrightness = brightnessForDefaultDisplay; currentBrightnessSetting = brightnessForDefaultDisplay; } return; } } if (Float.isNaN(currentBrightnessSetting)) { currentBrightnessSetting = getScreenBrightnessSetting(); } synchronized (mLock) { mCurrentScreenBrightness = getScreenBrightnessSetting(); mCurrentScreenBrightness = currentBrightnessSetting; } } } services/tests/servicestests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java +57 −29 Original line number Diff line number Diff line Loading @@ -19,10 +19,13 @@ package com.android.server.display.brightness; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import android.content.Context; Loading Loading @@ -66,25 +69,27 @@ public final class DisplayBrightnessControllerTest { @Mock private HandlerExecutor mBrightnessChangeExecutor; private DisplayBrightnessController mDisplayBrightnessController; @Before public void before() { MockitoAnnotations.initMocks(this); when(mContext.getResources()).thenReturn(mResources); DisplayBrightnessController.Injector injector = new DisplayBrightnessController.Injector() { private final DisplayBrightnessController.Injector mInjector = new DisplayBrightnessController.Injector() { @Override DisplayBrightnessStrategySelector getDisplayBrightnessStrategySelector( Context context, int displayId) { return mDisplayBrightnessStrategySelector; } }; private DisplayBrightnessController mDisplayBrightnessController; @Before public void before() { MockitoAnnotations.initMocks(this); when(mContext.getResources()).thenReturn(mResources); when(mBrightnessSetting.getBrightness()).thenReturn(Float.NaN); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(-1f); when(mResources.getBoolean( com.android.internal.R.bool.config_persistBrightnessNitsForDefaultDisplay)) .thenReturn(true); mDisplayBrightnessController = new DisplayBrightnessController(mContext, injector, mDisplayBrightnessController = new DisplayBrightnessController(mContext, mInjector, DISPLAY_ID, DEFAULT_BRIGHTNESS, mBrightnessSetting, mOnBrightnessChangeRunnable, mBrightnessChangeExecutor); } Loading Loading @@ -256,27 +261,6 @@ public final class DisplayBrightnessControllerTest { verifyNoMoreInteractions(mBrightnessChangeExecutor, mBrightnessSetting); } @Test public void testBrightnessNitsForDefaultDisplay() { float brightness = 0.3f; float nits = 500; AutomaticBrightnessController automaticBrightnessController = mock(AutomaticBrightnessController.class); when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), /* delta= */ 0); float newBrightness = 0.5f; float newNits = 700; when(automaticBrightnessController.convertToNits(newBrightness)).thenReturn(newNits); mDisplayBrightnessController.setBrightness(newBrightness); verify(mBrightnessSetting).setBrightnessNitsForDefaultDisplay(newNits); } @Test public void testConvertToNits() { final float brightness = 0.5f; Loading Loading @@ -330,4 +314,48 @@ public final class DisplayBrightnessControllerTest { mDisplayBrightnessController.stop(); verify(mBrightnessSetting).unregisterListener(brightnessSettingListener); } @Test public void testLoadNitBasedBrightnessSetting() { // When the nits value is valid, the brightness is set from the old default display nits // value float nits = 200f; float brightness = 0.3f; AutomaticBrightnessController automaticBrightnessController = mock(AutomaticBrightnessController.class); when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); verify(mBrightnessSetting).setBrightness(brightness); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), 0.01f); clearInvocations(automaticBrightnessController, mBrightnessSetting); // When the nits value is invalid, the brightness is resumed from where it was last set nits = -1; brightness = 0.4f; when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits); when(mBrightnessSetting.getBrightness()).thenReturn(brightness); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); verify(mBrightnessSetting, never()).setBrightness(brightness); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), 0.01f); clearInvocations(automaticBrightnessController, mBrightnessSetting); // When the display is a non-default display, the brightness is resumed from where it was // last set int nonDefaultDisplayId = 1; mDisplayBrightnessController = new DisplayBrightnessController(mContext, mInjector, nonDefaultDisplayId, DEFAULT_BRIGHTNESS, mBrightnessSetting, mOnBrightnessChangeRunnable, mBrightnessChangeExecutor); brightness = 0.5f; when(mBrightnessSetting.getBrightness()).thenReturn(brightness); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), 0.01f); verifyZeroInteractions(automaticBrightnessController); verify(mBrightnessSetting, never()).getBrightnessNitsForDefaultDisplay(); verify(mBrightnessSetting, never()).setBrightness(brightness); } } Loading
services/core/java/com/android/server/display/brightness/DisplayBrightnessController.java +8 −5 Original line number Diff line number Diff line Loading @@ -437,6 +437,7 @@ public final class DisplayBrightnessController { * persist the nit value, the nit value for the default display will be loaded. */ private void loadNitBasedBrightnessSetting() { float currentBrightnessSetting = Float.NaN; if (mDisplayId == Display.DEFAULT_DISPLAY && mPersistBrightnessNitsForDefaultDisplay) { float brightnessNitsForDefaultDisplay = mBrightnessSetting.getBrightnessNitsForDefaultDisplay(); Loading @@ -445,15 +446,17 @@ public final class DisplayBrightnessController { brightnessNitsForDefaultDisplay); if (BrightnessUtils.isValidBrightnessValue(brightnessForDefaultDisplay)) { mBrightnessSetting.setBrightness(brightnessForDefaultDisplay); synchronized (mLock) { mCurrentScreenBrightness = brightnessForDefaultDisplay; currentBrightnessSetting = brightnessForDefaultDisplay; } return; } } if (Float.isNaN(currentBrightnessSetting)) { currentBrightnessSetting = getScreenBrightnessSetting(); } synchronized (mLock) { mCurrentScreenBrightness = getScreenBrightnessSetting(); mCurrentScreenBrightness = currentBrightnessSetting; } } }
services/tests/servicestests/src/com/android/server/display/brightness/DisplayBrightnessControllerTest.java +57 −29 Original line number Diff line number Diff line Loading @@ -19,10 +19,13 @@ package com.android.server.display.brightness; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import android.content.Context; Loading Loading @@ -66,25 +69,27 @@ public final class DisplayBrightnessControllerTest { @Mock private HandlerExecutor mBrightnessChangeExecutor; private DisplayBrightnessController mDisplayBrightnessController; @Before public void before() { MockitoAnnotations.initMocks(this); when(mContext.getResources()).thenReturn(mResources); DisplayBrightnessController.Injector injector = new DisplayBrightnessController.Injector() { private final DisplayBrightnessController.Injector mInjector = new DisplayBrightnessController.Injector() { @Override DisplayBrightnessStrategySelector getDisplayBrightnessStrategySelector( Context context, int displayId) { return mDisplayBrightnessStrategySelector; } }; private DisplayBrightnessController mDisplayBrightnessController; @Before public void before() { MockitoAnnotations.initMocks(this); when(mContext.getResources()).thenReturn(mResources); when(mBrightnessSetting.getBrightness()).thenReturn(Float.NaN); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(-1f); when(mResources.getBoolean( com.android.internal.R.bool.config_persistBrightnessNitsForDefaultDisplay)) .thenReturn(true); mDisplayBrightnessController = new DisplayBrightnessController(mContext, injector, mDisplayBrightnessController = new DisplayBrightnessController(mContext, mInjector, DISPLAY_ID, DEFAULT_BRIGHTNESS, mBrightnessSetting, mOnBrightnessChangeRunnable, mBrightnessChangeExecutor); } Loading Loading @@ -256,27 +261,6 @@ public final class DisplayBrightnessControllerTest { verifyNoMoreInteractions(mBrightnessChangeExecutor, mBrightnessSetting); } @Test public void testBrightnessNitsForDefaultDisplay() { float brightness = 0.3f; float nits = 500; AutomaticBrightnessController automaticBrightnessController = mock(AutomaticBrightnessController.class); when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), /* delta= */ 0); float newBrightness = 0.5f; float newNits = 700; when(automaticBrightnessController.convertToNits(newBrightness)).thenReturn(newNits); mDisplayBrightnessController.setBrightness(newBrightness); verify(mBrightnessSetting).setBrightnessNitsForDefaultDisplay(newNits); } @Test public void testConvertToNits() { final float brightness = 0.5f; Loading Loading @@ -330,4 +314,48 @@ public final class DisplayBrightnessControllerTest { mDisplayBrightnessController.stop(); verify(mBrightnessSetting).unregisterListener(brightnessSettingListener); } @Test public void testLoadNitBasedBrightnessSetting() { // When the nits value is valid, the brightness is set from the old default display nits // value float nits = 200f; float brightness = 0.3f; AutomaticBrightnessController automaticBrightnessController = mock(AutomaticBrightnessController.class); when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); verify(mBrightnessSetting).setBrightness(brightness); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), 0.01f); clearInvocations(automaticBrightnessController, mBrightnessSetting); // When the nits value is invalid, the brightness is resumed from where it was last set nits = -1; brightness = 0.4f; when(automaticBrightnessController.convertToFloatScale(nits)).thenReturn(brightness); when(mBrightnessSetting.getBrightnessNitsForDefaultDisplay()).thenReturn(nits); when(mBrightnessSetting.getBrightness()).thenReturn(brightness); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); verify(mBrightnessSetting, never()).setBrightness(brightness); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), 0.01f); clearInvocations(automaticBrightnessController, mBrightnessSetting); // When the display is a non-default display, the brightness is resumed from where it was // last set int nonDefaultDisplayId = 1; mDisplayBrightnessController = new DisplayBrightnessController(mContext, mInjector, nonDefaultDisplayId, DEFAULT_BRIGHTNESS, mBrightnessSetting, mOnBrightnessChangeRunnable, mBrightnessChangeExecutor); brightness = 0.5f; when(mBrightnessSetting.getBrightness()).thenReturn(brightness); mDisplayBrightnessController.setAutomaticBrightnessController( automaticBrightnessController); assertEquals(brightness, mDisplayBrightnessController.getCurrentBrightness(), 0.01f); verifyZeroInteractions(automaticBrightnessController); verify(mBrightnessSetting, never()).getBrightnessNitsForDefaultDisplay(); verify(mBrightnessSetting, never()).setBrightness(brightness); } }