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
This commit is contained in:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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,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);
|
||||
}
|
||||
|
||||
@@ -18,21 +18,26 @@ package com.android.server.display.color;
|
||||
|
||||
import static com.google.common.truth.Truth.assertWithMessage;
|
||||
|
||||
import androidx.test.InstrumentationRegistry;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import java.lang.System;
|
||||
import java.util.Arrays;
|
||||
import android.hardware.display.DisplayManagerInternal;
|
||||
|
||||
import androidx.test.InstrumentationRegistry;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class DisplayWhiteBalanceTintControllerTest {
|
||||
|
||||
private DisplayWhiteBalanceTintController mDisplayWhiteBalanceTintController;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mDisplayWhiteBalanceTintController = new DisplayWhiteBalanceTintController();
|
||||
DisplayManagerInternal displayManagerInternal = mock(DisplayManagerInternal.class);
|
||||
mDisplayWhiteBalanceTintController =
|
||||
new DisplayWhiteBalanceTintController(displayManagerInternal);
|
||||
mDisplayWhiteBalanceTintController.setUp(InstrumentationRegistry.getContext(), true);
|
||||
mDisplayWhiteBalanceTintController.setActivated(true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user