Loading services/core/java/com/android/server/display/brightness/clamper/BrightnessClamperController.java +9 −5 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ public class BrightnessClamperController { } }; private volatile boolean mStarted = false; public BrightnessClamperController(Handler handler, ClamperChangeListener clamperChangeListener, DisplayDeviceData data, Context context, DisplayManagerFlags flags, SensorManager sensorManager, float currentBrightness) { Loading @@ -100,10 +102,10 @@ public class BrightnessClamperController { mClamperChangeListenerExternal = clamperChangeListener; mExecutor = new HandlerExecutor(handler); Runnable clamperChangeRunnableInternal = this::recalculateBrightnessCap; Runnable modifiersChangeRunnableInternal = this::recalculateModifiersState; ClamperChangeListener clamperChangeListenerInternal = () -> { if (!mHandler.hasCallbacks(clamperChangeRunnableInternal)) { mHandler.post(clamperChangeRunnableInternal); if (mStarted && !mHandler.hasCallbacks(modifiersChangeRunnableInternal)) { mHandler.post(modifiersChangeRunnableInternal); } }; Loading Loading @@ -187,6 +189,7 @@ public class BrightnessClamperController { * Called in DisplayControllerHandler */ public void stop() { mStarted = false; mDeviceConfigParameterProvider.removeOnPropertiesChangedListener( mOnPropertiesChangedListener); mLightSensorController.stop(); Loading @@ -195,9 +198,9 @@ public class BrightnessClamperController { // Called in DisplayControllerHandler private void recalculateBrightnessCap() { private void recalculateModifiersState() { ModifiersAggregatedState newAggregatedState = new ModifiersAggregatedState(); mStatefulModifiers.forEach((clamper) -> clamper.applyStateChange(newAggregatedState)); mStatefulModifiers.forEach((modifier) -> modifier.applyStateChange(newAggregatedState)); if (needToNotifyExternalListener(mModifiersAggregatedState, newAggregatedState)) { mClamperChangeListenerExternal.onChanged(); Loading @@ -223,6 +226,7 @@ public class BrightnessClamperController { mExecutor, mOnPropertiesChangedListener); } adjustLightSensorSubscription(); mStarted = true; } private void adjustLightSensorSubscription() { Loading services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessClamperControllerTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.server.display.brightness.clamper; import static android.view.Display.STATE_OFF; import static android.view.Display.STATE_ON; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; Loading Loading @@ -269,6 +271,24 @@ public class BrightnessClamperControllerTest { verify(mMockExternalListener).onChanged(); } @Test public void test_doesNotScheduleRecalculateBeforeStart() { mTestInjector = new TestInjector(List.of()) { @Override List<BrightnessStateModifier> getModifiers(DisplayManagerFlags flags, Context context, Handler handler, BrightnessClamperController.ClamperChangeListener listener, BrightnessClamperController.DisplayDeviceData displayDeviceData, float currentBrightness) { listener.onChanged(); return super.getModifiers(flags, context, handler, listener, displayDeviceData, currentBrightness); } }; mClamperController = createBrightnessClamperController(); assertThat(mTestHandler.getPendingMessages()).isEmpty(); } private BrightnessClamperController createBrightnessClamperController() { return new BrightnessClamperController(mTestInjector, mTestHandler, mMockExternalListener, mMockDisplayDeviceData, mMockContext, mFlags, mSensorManager, 0); Loading Loading
services/core/java/com/android/server/display/brightness/clamper/BrightnessClamperController.java +9 −5 Original line number Diff line number Diff line Loading @@ -81,6 +81,8 @@ public class BrightnessClamperController { } }; private volatile boolean mStarted = false; public BrightnessClamperController(Handler handler, ClamperChangeListener clamperChangeListener, DisplayDeviceData data, Context context, DisplayManagerFlags flags, SensorManager sensorManager, float currentBrightness) { Loading @@ -100,10 +102,10 @@ public class BrightnessClamperController { mClamperChangeListenerExternal = clamperChangeListener; mExecutor = new HandlerExecutor(handler); Runnable clamperChangeRunnableInternal = this::recalculateBrightnessCap; Runnable modifiersChangeRunnableInternal = this::recalculateModifiersState; ClamperChangeListener clamperChangeListenerInternal = () -> { if (!mHandler.hasCallbacks(clamperChangeRunnableInternal)) { mHandler.post(clamperChangeRunnableInternal); if (mStarted && !mHandler.hasCallbacks(modifiersChangeRunnableInternal)) { mHandler.post(modifiersChangeRunnableInternal); } }; Loading Loading @@ -187,6 +189,7 @@ public class BrightnessClamperController { * Called in DisplayControllerHandler */ public void stop() { mStarted = false; mDeviceConfigParameterProvider.removeOnPropertiesChangedListener( mOnPropertiesChangedListener); mLightSensorController.stop(); Loading @@ -195,9 +198,9 @@ public class BrightnessClamperController { // Called in DisplayControllerHandler private void recalculateBrightnessCap() { private void recalculateModifiersState() { ModifiersAggregatedState newAggregatedState = new ModifiersAggregatedState(); mStatefulModifiers.forEach((clamper) -> clamper.applyStateChange(newAggregatedState)); mStatefulModifiers.forEach((modifier) -> modifier.applyStateChange(newAggregatedState)); if (needToNotifyExternalListener(mModifiersAggregatedState, newAggregatedState)) { mClamperChangeListenerExternal.onChanged(); Loading @@ -223,6 +226,7 @@ public class BrightnessClamperController { mExecutor, mOnPropertiesChangedListener); } adjustLightSensorSubscription(); mStarted = true; } private void adjustLightSensorSubscription() { Loading
services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessClamperControllerTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ package com.android.server.display.brightness.clamper; import static android.view.Display.STATE_OFF; import static android.view.Display.STATE_ON; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; Loading Loading @@ -269,6 +271,24 @@ public class BrightnessClamperControllerTest { verify(mMockExternalListener).onChanged(); } @Test public void test_doesNotScheduleRecalculateBeforeStart() { mTestInjector = new TestInjector(List.of()) { @Override List<BrightnessStateModifier> getModifiers(DisplayManagerFlags flags, Context context, Handler handler, BrightnessClamperController.ClamperChangeListener listener, BrightnessClamperController.DisplayDeviceData displayDeviceData, float currentBrightness) { listener.onChanged(); return super.getModifiers(flags, context, handler, listener, displayDeviceData, currentBrightness); } }; mClamperController = createBrightnessClamperController(); assertThat(mTestHandler.getPendingMessages()).isEmpty(); } private BrightnessClamperController createBrightnessClamperController() { return new BrightnessClamperController(mTestInjector, mTestHandler, mMockExternalListener, mMockDisplayDeviceData, mMockContext, mFlags, mSensorManager, 0); Loading