Merge "Add name to display device configuration." into udc-dev

This commit is contained in:
Michael Wright
2023-03-03 15:13:11 +00:00
committed by Android (Google) Code Review
5 changed files with 42 additions and 9 deletions

View File

@@ -91,6 +91,7 @@ import javax.xml.datatype.DatatypeConfigurationException;
* <pre> * <pre>
* {@code * {@code
* <displayConfiguration> * <displayConfiguration>
* <name>Built-In Display</name>
* <densityMapping> * <densityMapping>
* <density> * <density>
* <height>480</height> * <height>480</height>
@@ -499,6 +500,10 @@ public class DisplayDeviceConfig {
private final List<RefreshRateLimitation> mRefreshRateLimitations = private final List<RefreshRateLimitation> mRefreshRateLimitations =
new ArrayList<>(2 /*initialCapacity*/); new ArrayList<>(2 /*initialCapacity*/);
// Name of the display, if configured.
@Nullable
private String mName;
// Nits and backlight values that are loaded from either the display device config file, or // Nits and backlight values that are loaded from either the display device config file, or
// config.xml. These are the raw values and just used for the dumpsys // config.xml. These are the raw values and just used for the dumpsys
private float[] mRawNits; private float[] mRawNits;
@@ -832,6 +837,15 @@ public class DisplayDeviceConfig {
return config; return config;
} }
/** The name of the display.
*
* @return The name of the display.
*/
@Nullable
public String getName() {
return mName;
}
/** /**
* Return the brightness mapping nits array. * Return the brightness mapping nits array.
* *
@@ -1646,6 +1660,7 @@ public class DisplayDeviceConfig {
try (InputStream in = new BufferedInputStream(new FileInputStream(configFile))) { try (InputStream in = new BufferedInputStream(new FileInputStream(configFile))) {
final DisplayConfiguration config = XmlParser.read(in); final DisplayConfiguration config = XmlParser.read(in);
if (config != null) { if (config != null) {
loadName(config);
loadDensityMapping(config); loadDensityMapping(config);
loadBrightnessDefaultFromDdcXml(config); loadBrightnessDefaultFromDdcXml(config);
loadBrightnessConstraintsFromConfigXml(); loadBrightnessConstraintsFromConfigXml();
@@ -1717,6 +1732,10 @@ public class DisplayDeviceConfig {
} }
} }
private void loadName(DisplayConfiguration config) {
mName = config.getName();
}
private void loadDensityMapping(DisplayConfiguration config) { private void loadDensityMapping(DisplayConfiguration config) {
if (config.getDensityMapping() == null) { if (config.getDensityMapping() == null) {
return; return;

View File

@@ -42,6 +42,7 @@ import android.view.DisplayShape;
import android.view.RoundedCorners; import android.view.RoundedCorners;
import android.view.SurfaceControl; import android.view.SurfaceControl;
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.display.BrightnessSynchronizer; import com.android.internal.display.BrightnessSynchronizer;
import com.android.internal.util.function.pooled.PooledLambda; import com.android.internal.util.function.pooled.PooledLambda;
@@ -675,14 +676,13 @@ final class LocalDisplayAdapter extends DisplayAdapter {
mInfo.flags |= DisplayDeviceInfo.FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY; mInfo.flags |= DisplayDeviceInfo.FLAG_ALLOWED_TO_BE_DEFAULT_DISPLAY;
if (mIsFirstDisplay) { if (mIsFirstDisplay) {
if (res.getBoolean(com.android.internal.R.bool.config_mainBuiltInDisplayIsRound) if (res.getBoolean(R.bool.config_mainBuiltInDisplayIsRound)
|| (Build.IS_EMULATOR || (Build.IS_EMULATOR
&& SystemProperties.getBoolean(PROPERTY_EMULATOR_CIRCULAR, false))) { && SystemProperties.getBoolean(PROPERTY_EMULATOR_CIRCULAR, false))) {
mInfo.flags |= DisplayDeviceInfo.FLAG_ROUND; mInfo.flags |= DisplayDeviceInfo.FLAG_ROUND;
} }
} else { } else {
if (!res.getBoolean( if (!res.getBoolean(R.bool.config_localDisplaysMirrorContent)) {
com.android.internal.R.bool.config_localDisplaysMirrorContent)) {
mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY; mInfo.flags |= DisplayDeviceInfo.FLAG_OWN_CONTENT_ONLY;
} }
@@ -711,18 +711,23 @@ final class LocalDisplayAdapter extends DisplayAdapter {
mInfo.displayShape = DisplayShape.fromResources( mInfo.displayShape = DisplayShape.fromResources(
res, mInfo.uniqueId, maxWidth, maxHeight, mInfo.width, mInfo.height); res, mInfo.uniqueId, maxWidth, maxHeight, mInfo.width, mInfo.height);
mInfo.name = getDisplayDeviceConfig().getName();
if (mStaticDisplayInfo.isInternal) { if (mStaticDisplayInfo.isInternal) {
mInfo.type = Display.TYPE_INTERNAL; mInfo.type = Display.TYPE_INTERNAL;
mInfo.touch = DisplayDeviceInfo.TOUCH_INTERNAL; mInfo.touch = DisplayDeviceInfo.TOUCH_INTERNAL;
mInfo.flags |= DisplayDeviceInfo.FLAG_ROTATES_WITH_CONTENT; mInfo.flags |= DisplayDeviceInfo.FLAG_ROTATES_WITH_CONTENT;
mInfo.name = res.getString( if (mInfo.name == null) {
com.android.internal.R.string.display_manager_built_in_display_name); mInfo.name = res.getString(R.string.display_manager_built_in_display_name);
}
} else { } else {
mInfo.type = Display.TYPE_EXTERNAL; mInfo.type = Display.TYPE_EXTERNAL;
mInfo.touch = DisplayDeviceInfo.TOUCH_EXTERNAL; mInfo.touch = DisplayDeviceInfo.TOUCH_EXTERNAL;
mInfo.flags |= DisplayDeviceInfo.FLAG_PRESENTATION; mInfo.flags |= DisplayDeviceInfo.FLAG_PRESENTATION;
mInfo.name = getContext().getResources().getString( if (mInfo.name == null) {
com.android.internal.R.string.display_manager_hdmi_display_name); mInfo.name = getContext().getResources().getString(
R.string.display_manager_hdmi_display_name);
}
} }
mInfo.frameRateOverrides = mFrameRateOverrides; mInfo.frameRateOverrides = mFrameRateOverrides;
@@ -1255,8 +1260,7 @@ final class LocalDisplayAdapter extends DisplayAdapter {
return false; return false;
} }
final Resources res = getOverlayContext().getResources(); final Resources res = getOverlayContext().getResources();
int[] ports = res.getIntArray( int[] ports = res.getIntArray(R.array.config_localPrivateDisplayPorts);
com.android.internal.R.array.config_localPrivateDisplayPorts);
if (ports != null) { if (ports != null) {
int port = physicalAddress.getPort(); int port = physicalAddress.getPort();
for (int p : ports) { for (int p : ports) {

View File

@@ -26,6 +26,10 @@
<xs:element name="displayConfiguration"> <xs:element name="displayConfiguration">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element type ="xs:string" name="name">
<xs:annotation name="nullable"/>
<xs:annotation name="final"/>
</xs:element>
<xs:element type="densityMapping" name="densityMapping" minOccurs="0" maxOccurs="1"> <xs:element type="densityMapping" name="densityMapping" minOccurs="0" maxOccurs="1">
<xs:annotation name="nullable"/> <xs:annotation name="nullable"/>
<xs:annotation name="final"/> <xs:annotation name="final"/>

View File

@@ -89,6 +89,7 @@ package com.android.server.display.config {
method public final com.android.server.display.config.Thresholds getDisplayBrightnessChangeThresholdsIdle(); method public final com.android.server.display.config.Thresholds getDisplayBrightnessChangeThresholdsIdle();
method public com.android.server.display.config.HighBrightnessMode getHighBrightnessMode(); method public com.android.server.display.config.HighBrightnessMode getHighBrightnessMode();
method public final com.android.server.display.config.SensorDetails getLightSensor(); method public final com.android.server.display.config.SensorDetails getLightSensor();
method @Nullable public final String getName();
method public final com.android.server.display.config.SensorDetails getProxSensor(); method public final com.android.server.display.config.SensorDetails getProxSensor();
method public com.android.server.display.config.DisplayQuirks getQuirks(); method public com.android.server.display.config.DisplayQuirks getQuirks();
method public com.android.server.display.config.RefreshRateConfigs getRefreshRate(); method public com.android.server.display.config.RefreshRateConfigs getRefreshRate();
@@ -114,6 +115,7 @@ package com.android.server.display.config {
method public final void setDisplayBrightnessChangeThresholdsIdle(com.android.server.display.config.Thresholds); method public final void setDisplayBrightnessChangeThresholdsIdle(com.android.server.display.config.Thresholds);
method public void setHighBrightnessMode(com.android.server.display.config.HighBrightnessMode); method public void setHighBrightnessMode(com.android.server.display.config.HighBrightnessMode);
method public final void setLightSensor(com.android.server.display.config.SensorDetails); method public final void setLightSensor(com.android.server.display.config.SensorDetails);
method public final void setName(@Nullable String);
method public final void setProxSensor(com.android.server.display.config.SensorDetails); method public final void setProxSensor(com.android.server.display.config.SensorDetails);
method public void setQuirks(com.android.server.display.config.DisplayQuirks); method public void setQuirks(com.android.server.display.config.DisplayQuirks);
method public void setRefreshRate(com.android.server.display.config.RefreshRateConfigs); method public void setRefreshRate(com.android.server.display.config.RefreshRateConfigs);

View File

@@ -20,6 +20,7 @@ package com.android.server.display;
import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
@@ -85,6 +86,7 @@ public final class DisplayDeviceConfigTest {
public void testConfigValuesFromDisplayConfig() throws IOException { public void testConfigValuesFromDisplayConfig() throws IOException {
setupDisplayDeviceConfigFromDisplayConfigFile(); setupDisplayDeviceConfigFromDisplayConfigFile();
assertEquals(mDisplayDeviceConfig.getName(), "Example Display");
assertEquals(mDisplayDeviceConfig.getAmbientHorizonLong(), 5000); assertEquals(mDisplayDeviceConfig.getAmbientHorizonLong(), 5000);
assertEquals(mDisplayDeviceConfig.getAmbientHorizonShort(), 50); assertEquals(mDisplayDeviceConfig.getAmbientHorizonShort(), 50);
assertEquals(mDisplayDeviceConfig.getBrightnessRampDecreaseMaxMillis(), 3000); assertEquals(mDisplayDeviceConfig.getBrightnessRampDecreaseMaxMillis(), 3000);
@@ -240,6 +242,7 @@ public final class DisplayDeviceConfigTest {
@Test @Test
public void testConfigValuesFromConfigResource() { public void testConfigValuesFromConfigResource() {
setupDisplayDeviceConfigFromConfigResourceFile(); setupDisplayDeviceConfigFromConfigResourceFile();
assertNull(mDisplayDeviceConfig.getName());
assertArrayEquals(mDisplayDeviceConfig.getAutoBrightnessBrighteningLevelsNits(), new assertArrayEquals(mDisplayDeviceConfig.getAutoBrightnessBrighteningLevelsNits(), new
float[]{2.0f, 200.0f, 600.0f}, ZERO_DELTA); float[]{2.0f, 200.0f, 600.0f}, ZERO_DELTA);
assertArrayEquals(mDisplayDeviceConfig.getAutoBrightnessBrighteningLevelsLux(), new assertArrayEquals(mDisplayDeviceConfig.getAutoBrightnessBrighteningLevelsLux(), new
@@ -370,6 +373,7 @@ public final class DisplayDeviceConfigTest {
private String getContent() { private String getContent() {
return "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n" return "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>\n"
+ "<displayConfiguration>\n" + "<displayConfiguration>\n"
+ "<name>Example Display</name>"
+ "<screenBrightnessMap>\n" + "<screenBrightnessMap>\n"
+ "<point>\n" + "<point>\n"
+ "<value>0.0</value>\n" + "<value>0.0</value>\n"