Loading core/java/android/hardware/display/DisplayManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. * Loading services/core/java/com/android/server/display/DisplayManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading services/core/java/com/android/server/display/color/ColorDisplayService.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading services/core/java/com/android/server/display/color/DisplayWhiteBalanceTintController.java +11 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading services/tests/mockingservicestests/src/com/android/server/display/color/DisplayWhiteBalanceTintControllerTest.java +16 −10 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -50,6 +54,8 @@ public class DisplayWhiteBalanceTintControllerTest { private Context mMockedContext; @Mock private Resources mMockedResources; @Mock private DisplayManagerInternal mDisplayManagerInternal; private MockitoSession mSession; private Resources mResources; Loading Loading @@ -81,7 +87,6 @@ public class DisplayWhiteBalanceTintControllerTest { doReturn(mMockedResources).when(mMockedContext).getResources(); mDisplayToken = new Binder(); doReturn(mDisplayToken).when(() -> SurfaceControl.getInternalDisplayToken()); } @After Loading Loading @@ -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") Loading @@ -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") Loading @@ -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") Loading @@ -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") Loading Loading @@ -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") Loading @@ -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 Loading
core/java/android/hardware/display/DisplayManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. * Loading
services/core/java/com/android/server/display/DisplayManagerService.java +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
services/core/java/com/android/server/display/color/ColorDisplayService.java +3 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading
services/core/java/com/android/server/display/color/DisplayWhiteBalanceTintController.java +11 −8 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading
services/tests/mockingservicestests/src/com/android/server/display/color/DisplayWhiteBalanceTintControllerTest.java +16 −10 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -50,6 +54,8 @@ public class DisplayWhiteBalanceTintControllerTest { private Context mMockedContext; @Mock private Resources mMockedResources; @Mock private DisplayManagerInternal mDisplayManagerInternal; private MockitoSession mSession; private Resources mResources; Loading Loading @@ -81,7 +87,6 @@ public class DisplayWhiteBalanceTintControllerTest { doReturn(mMockedResources).when(mMockedContext).getResources(); mDisplayToken = new Binder(); doReturn(mDisplayToken).when(() -> SurfaceControl.getInternalDisplayToken()); } @After Loading Loading @@ -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") Loading @@ -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") Loading @@ -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") Loading @@ -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") Loading Loading @@ -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") Loading @@ -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