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

Commit fd5609c8 authored by Chavi Weingarten's avatar Chavi Weingarten
Browse files

Remove usage of getInternalDisplayToken for DisplayPrimaries

Instead calling to DisplayManagerInternal to get the DisplayPrimaries
for a particular displayId.

Test: DisplayWhiteBalanceTintControllerTest
Bug: 242714168
Change-Id: Ifc5ecc60937d186c0c94858ffc543d36df8f2d07
parent 5473b217
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.util.Slog;
import android.util.SparseArray;
import android.view.Display;
import android.view.DisplayInfo;
import android.view.SurfaceControl;
import android.view.SurfaceControl.Transaction;
import android.window.DisplayWindowPolicyController;
import android.window.ScreenCapture;
@@ -397,6 +398,11 @@ public abstract class DisplayManagerInternal {
     */
    public abstract DisplayWindowPolicyController getDisplayWindowPolicyController(int displayId);

    /**
     * Get DisplayPrimaries from SF for a particular display.
     */
    public abstract SurfaceControl.DisplayPrimaries getDisplayNativePrimaries(int displayId);

    /**
     * Describes the requested power state of the display.
     *
+13 −0
Original line number Diff line number Diff line
@@ -3884,6 +3884,19 @@ public final class DisplayManagerService extends SystemService {
                return displayIdToMirror;
            }
        }

        @Override
        public SurfaceControl.DisplayPrimaries getDisplayNativePrimaries(int displayId) {
            IBinder displayToken;
            synchronized (mSyncRoot) {
                displayToken = getDisplayToken(displayId);
                if (displayToken == null) {
                    throw new IllegalArgumentException("Invalid displayId=" + displayId);
                }
            }

            return SurfaceControl.getDisplayNativePrimaries(displayToken);
        }
    }

    class DesiredDisplayModeSpecsObserver
+3 −1
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.database.ContentObserver;
import android.hardware.display.ColorDisplayManager;
import android.hardware.display.ColorDisplayManager.AutoMode;
import android.hardware.display.ColorDisplayManager.ColorMode;
import android.hardware.display.DisplayManagerInternal;
import android.hardware.display.IColorDisplayManager;
import android.hardware.display.Time;
import android.net.Uri;
@@ -154,7 +155,8 @@ public final class ColorDisplayService extends SystemService {

    @VisibleForTesting
    final DisplayWhiteBalanceTintController mDisplayWhiteBalanceTintController =
            new DisplayWhiteBalanceTintController();
            new DisplayWhiteBalanceTintController(
                    LocalServices.getService(DisplayManagerInternal.class));
    private final NightDisplayTintController mNightDisplayTintController =
            new NightDisplayTintController();
    private final TintController mGlobalSaturationTintController =
+11 −8
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.server.display.color;

import static android.view.Display.DEFAULT_DISPLAY;

import static com.android.server.display.color.DisplayTransformManager.LEVEL_COLOR_MATRIX_DISPLAY_WHITE_BALANCE;

import android.annotation.NonNull;
@@ -24,10 +26,9 @@ import android.content.Context;
import android.content.res.Resources;
import android.graphics.ColorSpace;
import android.hardware.display.ColorDisplayManager;
import android.hardware.display.DisplayManagerInternal;
import android.opengl.Matrix;
import android.os.IBinder;
import android.util.Slog;
import android.view.SurfaceControl;
import android.view.SurfaceControl.DisplayPrimaries;

import com.android.internal.R;
@@ -64,6 +65,12 @@ final class DisplayWhiteBalanceTintController extends TintController {
    // This feature becomes disallowed if the device is in an unsupported strong/light state.
    private boolean mIsAllowed = true;

    private final DisplayManagerInternal mDisplayManagerInternal;

    DisplayWhiteBalanceTintController(DisplayManagerInternal dm) {
        mDisplayManagerInternal = dm;
    }

    @Override
    public void setUp(Context context, boolean needsLinear) {
        mSetUp = false;
@@ -287,12 +294,8 @@ final class DisplayWhiteBalanceTintController extends TintController {
    }

    private ColorSpace.Rgb getDisplayColorSpaceFromSurfaceControl() {
        final IBinder displayToken = SurfaceControl.getInternalDisplayToken();
        if (displayToken == null) {
            return null;
        }

        DisplayPrimaries primaries = SurfaceControl.getDisplayNativePrimaries(displayToken);
        DisplayPrimaries primaries =
                mDisplayManagerInternal.getDisplayNativePrimaries(DEFAULT_DISPLAY);
        if (primaries == null || primaries.red == null || primaries.green == null
                || primaries.blue == null || primaries.white == null) {
            return null;
+16 −10
Original line number Diff line number Diff line
@@ -16,14 +16,18 @@

package com.android.server.display.color;

import static android.view.Display.DEFAULT_DISPLAY;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;

import static com.google.common.truth.Truth.assertWithMessage;

import static org.junit.Assert.assertArrayEquals;
import static org.mockito.Mockito.when;

import android.content.Context;
import android.content.res.Resources;
import android.hardware.display.DisplayManagerInternal;
import android.os.Binder;
import android.os.IBinder;
import android.view.SurfaceControl;
@@ -50,6 +54,8 @@ public class DisplayWhiteBalanceTintControllerTest {
    private Context mMockedContext;
    @Mock
    private Resources mMockedResources;
    @Mock
    private DisplayManagerInternal mDisplayManagerInternal;

    private MockitoSession mSession;
    private Resources mResources;
@@ -81,7 +87,6 @@ public class DisplayWhiteBalanceTintControllerTest {
        doReturn(mMockedResources).when(mMockedContext).getResources();

        mDisplayToken = new Binder();
        doReturn(mDisplayToken).when(() -> SurfaceControl.getInternalDisplayToken());
    }

    @After
@@ -114,8 +119,8 @@ public class DisplayWhiteBalanceTintControllerTest {
        displayPrimaries.white.X = 0.950456f;
        displayPrimaries.white.Y = 1.000000f;
        displayPrimaries.white.Z = 1.089058f;
        doReturn(displayPrimaries)
            .when(() -> SurfaceControl.getDisplayNativePrimaries(mDisplayToken));
        when(mDisplayManagerInternal.getDisplayNativePrimaries(DEFAULT_DISPLAY))
                .thenReturn(displayPrimaries);

        setUpTintController();
        assertWithMessage("Setup with valid SurfaceControl failed")
@@ -134,8 +139,8 @@ public class DisplayWhiteBalanceTintControllerTest {
        displayPrimaries.green = new CieXyz();
        displayPrimaries.blue = new CieXyz();
        displayPrimaries.white = new CieXyz();
        doReturn(displayPrimaries)
            .when(() -> SurfaceControl.getDisplayNativePrimaries(mDisplayToken));
        when(mDisplayManagerInternal.getDisplayNativePrimaries(DEFAULT_DISPLAY))
                .thenReturn(displayPrimaries);

        setUpTintController();
        assertWithMessage("Setup with invalid SurfaceControl succeeded")
@@ -154,7 +159,7 @@ public class DisplayWhiteBalanceTintControllerTest {
            .when(mMockedResources)
            .getStringArray(R.array.config_displayWhiteBalanceDisplayPrimaries);
        // Make SurfaceControl setup fail
        doReturn(null).when(() -> SurfaceControl.getDisplayNativePrimaries(mDisplayToken));
        when(mDisplayManagerInternal.getDisplayNativePrimaries(DEFAULT_DISPLAY)).thenReturn(null);

        setUpTintController();
        assertWithMessage("Setup with valid Resources failed")
@@ -178,7 +183,7 @@ public class DisplayWhiteBalanceTintControllerTest {
            .when(mMockedResources)
            .getStringArray(R.array.config_displayWhiteBalanceDisplayPrimaries);
        // Make SurfaceControl setup fail
        doReturn(null).when(() -> SurfaceControl.getDisplayNativePrimaries(mDisplayToken));
        when(mDisplayManagerInternal.getDisplayNativePrimaries(DEFAULT_DISPLAY)).thenReturn(null);

        setUpTintController();
        assertWithMessage("Setup with invalid Resources succeeded")
@@ -208,8 +213,8 @@ public class DisplayWhiteBalanceTintControllerTest {
        displayPrimaries.white.X = 0.950456f;
        displayPrimaries.white.Y = 1.000000f;
        displayPrimaries.white.Z = 1.089058f;
        doReturn(displayPrimaries)
                .when(() -> SurfaceControl.getDisplayNativePrimaries(mDisplayToken));
        when(mDisplayManagerInternal.getDisplayNativePrimaries(DEFAULT_DISPLAY))
                .thenReturn(displayPrimaries);

        setUpTintController();
        assertWithMessage("Setup with valid SurfaceControl failed")
@@ -234,7 +239,8 @@ public class DisplayWhiteBalanceTintControllerTest {
    }

    private void setUpTintController() {
        mDisplayWhiteBalanceTintController = new DisplayWhiteBalanceTintController();
        mDisplayWhiteBalanceTintController = new DisplayWhiteBalanceTintController(
                mDisplayManagerInternal);
        mDisplayWhiteBalanceTintController.setUp(mMockedContext, true);
        mDisplayWhiteBalanceTintController.setActivated(true);
    }
Loading