Loading services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java +8 −3 Original line number Diff line number Diff line Loading @@ -105,17 +105,22 @@ public class HdrClamper { public void resetHdrConfig(HdrBrightnessData data, int width, int height, float minimumHdrPercentOfScreen, IBinder displayToken) { mHdrBrightnessData = data; mHdrListener.mHdrMinPixels = (float) (width * height) * minimumHdrPercentOfScreen; mHdrListener.mHdrMinPixels = minimumHdrPercentOfScreen <= 0 ? -1 : (float) (width * height) * minimumHdrPercentOfScreen; if (displayToken != mRegisteredDisplayToken) { // token changed, resubscribe if (mRegisteredDisplayToken != null) { // previous token not null, unsubscribe mHdrListener.unregister(mRegisteredDisplayToken); mHdrVisible = false; mRegisteredDisplayToken = null; } if (displayToken != null) { // new token not null, subscribe // new token not null and hdr min % of the screen is set, subscribe. // e.g. for virtual display, HBM data will be missing and HdrListener // should not be registered if (displayToken != null && mHdrListener.mHdrMinPixels > 0) { mHdrListener.register(displayToken); } mRegisteredDisplayToken = displayToken; } } recalculateBrightnessCap(data, mAmbientLux, mHdrVisible); } Loading services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java +34 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,9 @@ import static junit.framework.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; 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.when; Loading Loading @@ -96,6 +99,37 @@ public class HdrClamperTest { configureClamper(); } @Test public void testRegisterHdrListener() { verify(mMockHdrInfoListener).register(mMockBinder); } @Test public void testRegisterOtherHdrListenerWhenCalledWithOtherToken() { IBinder otherBinder = mock(IBinder.class); mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, MIN_HDR_PERCENT, otherBinder); verify(mMockHdrInfoListener).unregister(mMockBinder); verify(mMockHdrInfoListener).register(otherBinder); } @Test public void testRegisterHdrListenerOnceWhenCalledWithSameToken() { mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, MIN_HDR_PERCENT, mMockBinder); verify(mMockHdrInfoListener, never()).unregister(mMockBinder); verify(mMockHdrInfoListener, times(1)).register(mMockBinder); } @Test public void testRegisterNotCalledIfHbmConfigIsMissing() { IBinder otherBinder = mock(IBinder.class); mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, -1, otherBinder); verify(mMockHdrInfoListener).unregister(mMockBinder); verify(mMockHdrInfoListener, never()).register(otherBinder); } @Test public void testClamper_AmbientLuxChangesAboveLimit() { mHdrClamper.onAmbientLuxChange(500); Loading Loading
services/core/java/com/android/server/display/brightness/clamper/HdrClamper.java +8 −3 Original line number Diff line number Diff line Loading @@ -105,17 +105,22 @@ public class HdrClamper { public void resetHdrConfig(HdrBrightnessData data, int width, int height, float minimumHdrPercentOfScreen, IBinder displayToken) { mHdrBrightnessData = data; mHdrListener.mHdrMinPixels = (float) (width * height) * minimumHdrPercentOfScreen; mHdrListener.mHdrMinPixels = minimumHdrPercentOfScreen <= 0 ? -1 : (float) (width * height) * minimumHdrPercentOfScreen; if (displayToken != mRegisteredDisplayToken) { // token changed, resubscribe if (mRegisteredDisplayToken != null) { // previous token not null, unsubscribe mHdrListener.unregister(mRegisteredDisplayToken); mHdrVisible = false; mRegisteredDisplayToken = null; } if (displayToken != null) { // new token not null, subscribe // new token not null and hdr min % of the screen is set, subscribe. // e.g. for virtual display, HBM data will be missing and HdrListener // should not be registered if (displayToken != null && mHdrListener.mHdrMinPixels > 0) { mHdrListener.register(displayToken); } mRegisteredDisplayToken = displayToken; } } recalculateBrightnessCap(data, mAmbientLux, mHdrVisible); } Loading
services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/HdrClamperTest.java +34 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,9 @@ import static junit.framework.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; 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.when; Loading Loading @@ -96,6 +99,37 @@ public class HdrClamperTest { configureClamper(); } @Test public void testRegisterHdrListener() { verify(mMockHdrInfoListener).register(mMockBinder); } @Test public void testRegisterOtherHdrListenerWhenCalledWithOtherToken() { IBinder otherBinder = mock(IBinder.class); mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, MIN_HDR_PERCENT, otherBinder); verify(mMockHdrInfoListener).unregister(mMockBinder); verify(mMockHdrInfoListener).register(otherBinder); } @Test public void testRegisterHdrListenerOnceWhenCalledWithSameToken() { mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, MIN_HDR_PERCENT, mMockBinder); verify(mMockHdrInfoListener, never()).unregister(mMockBinder); verify(mMockHdrInfoListener, times(1)).register(mMockBinder); } @Test public void testRegisterNotCalledIfHbmConfigIsMissing() { IBinder otherBinder = mock(IBinder.class); mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, -1, otherBinder); verify(mMockHdrInfoListener).unregister(mMockBinder); verify(mMockHdrInfoListener, never()).register(otherBinder); } @Test public void testClamper_AmbientLuxChangesAboveLimit() { mHdrClamper.onAmbientLuxChange(500); Loading