Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c0cfa03 authored by Oleg Petšjonkin's avatar Oleg Petšjonkin Committed by Android (Google) Code Review
Browse files

Merge "HdrClamper should be disabled if hdr data is missing" into main

parents ffb202ea 8d9bf91b
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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);
    }

+34 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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);