Add DisplayManagerService tests for HDR output control
Bug: 264979880
Test: atest DisplayManagerServiceTest
Change-Id: I7d1703a6f81d079656bf0ab4061571a0dad82888
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 6eb465e..4bc07e0 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -2104,8 +2104,7 @@
}
}
- // TODO (b/264979880) - Add unit test for HDR output control methods.
- private void setHdrConversionModeInternal(HdrConversionMode hdrConversionMode) {
+ void setHdrConversionModeInternal(HdrConversionMode hdrConversionMode) {
if (!mInjector.getHdrOutputConversionSupport()) {
return;
}
@@ -2139,7 +2138,7 @@
}
}
- private HdrConversionMode getHdrConversionModeSettingInternal() {
+ HdrConversionMode getHdrConversionModeSettingInternal() {
if (!mInjector.getHdrOutputConversionSupport()) {
return HDR_CONVERSION_MODE_UNSUPPORTED;
}
diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java
index 1b6b143..7971fd7 100644
--- a/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/DisplayManagerServiceTest.java
@@ -28,6 +28,7 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.anyLong;
@@ -127,6 +128,10 @@
private Context mContext;
+ private int mHdrConversionMode;
+
+ private int mPreferredHdrOutputType;
+
private final DisplayManagerService.Injector mShortMockedInjector =
new DisplayManagerService.Injector() {
@Override
@@ -176,6 +181,8 @@
@Override
int setHdrConversionMode(int conversionMode, int preferredHdrOutputType,
int[] autoHdrTypes) {
+ mHdrConversionMode = conversionMode;
+ mPreferredHdrOutputType = preferredHdrOutputType;
return Display.HdrCapabilities.HDR_TYPE_INVALID;
}
@@ -185,7 +192,7 @@
}
boolean getHdrOutputConversionSupport() {
- return false;
+ return true;
}
}
@@ -1541,6 +1548,40 @@
new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_SYSTEM));
}
+ @Test
+ public void testCreateHdrConversionMode_withInvalidArguments_throwsException() {
+ assertThrows(
+ "preferredHdrOutputType must not be set if the conversion mode is "
+ + "HDR_CONVERSION_PASSTHROUGH",
+ IllegalArgumentException.class,
+ () -> new HdrConversionMode(HdrConversionMode.HDR_CONVERSION_PASSTHROUGH,
+ Display.HdrCapabilities.HDR_TYPE_DOLBY_VISION));
+ }
+
+ @Test
+ public void testSetHdrConversionModeInternal_withInvalidArguments_throwsException() {
+ DisplayManagerService displayManager = new DisplayManagerService(mContext, mBasicInjector);
+ assertThrows("Expected DisplayManager to throw IllegalArgumentException when "
+ + "preferredHdrOutputType is set and the conversion mode is "
+ + "HDR_CONVERSION_SYSTEM",
+ IllegalArgumentException.class,
+ () -> displayManager.setHdrConversionModeInternal(new HdrConversionMode(
+ HdrConversionMode.HDR_CONVERSION_SYSTEM,
+ Display.HdrCapabilities.HDR_TYPE_DOLBY_VISION)));
+ }
+
+ @Test
+ public void testSetAndGetHdrConversionModeInternal() {
+ DisplayManagerService displayManager = new DisplayManagerService(mContext, mBasicInjector);
+ final HdrConversionMode mode = new HdrConversionMode(
+ HdrConversionMode.HDR_CONVERSION_FORCE,
+ Display.HdrCapabilities.HDR_TYPE_DOLBY_VISION);
+ displayManager.setHdrConversionModeInternal(mode);
+ assertEquals(mode, displayManager.getHdrConversionModeSettingInternal());
+ assertEquals(mode.getConversionMode(), mHdrConversionMode);
+ assertEquals(mode.getPreferredHdrOutputType(), mPreferredHdrOutputType);
+ }
+
private void testDisplayInfoFrameRateOverrideModeCompat(boolean compatChangeEnabled)
throws Exception {
DisplayManagerService displayManager =