diff options
3 files changed, 25 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java index 687d03d4f774..2be2d584f9a3 100644 --- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java +++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java @@ -1412,7 +1412,7 @@ public class DisplayDeviceConfig { loadBrightnessRampsFromConfigXml(); loadAmbientLightSensorFromConfigXml(); loadBrightnessChangeThresholdsFromXml(); - setProxSensorUnspecified(); + useFallbackProxSensor(); loadAutoBrightnessConfigsFromConfigXml(); loadAutoBrightnessAvailableFromConfigXml(); mLoadedFrom = "<config.xml>"; @@ -1432,7 +1432,7 @@ public class DisplayDeviceConfig { mBrightnessRampIncreaseMaxMillis = 0; setSimpleMappingStrategyValues(); loadAmbientLightSensorFromConfigXml(); - setProxSensorUnspecified(); + useFallbackProxSensor(); loadAutoBrightnessAvailableFromConfigXml(); } @@ -1941,7 +1941,12 @@ public class DisplayDeviceConfig { } } - private void setProxSensorUnspecified() { + private void useFallbackProxSensor() { + mProximitySensor.name = null; + mProximitySensor.type = null; + } + + private void useNullProxSensor() { mProximitySensor.name = ""; mProximitySensor.type = ""; } @@ -1949,6 +1954,12 @@ public class DisplayDeviceConfig { private void loadProxSensorFromDdc(DisplayConfiguration config) { SensorDetails sensorDetails = config.getProxSensor(); if (sensorDetails != null) { + if (sensorDetails.getName() == null && sensorDetails.getType() == null) { + // If prox sensor is defined, but no details given, this is assumed that + // the display does not have or wish to use a prox sensor for it. + useNullProxSensor(); + return; + } mProximitySensor.name = sensorDetails.getName(); mProximitySensor.type = sensorDetails.getType(); final RefreshRateRange rr = sensorDetails.getRefreshRate(); @@ -1957,7 +1968,8 @@ public class DisplayDeviceConfig { mProximitySensor.maxRefreshRate = rr.getMaximum().floatValue(); } } else { - setProxSensorUnspecified(); + // If prox sensor is unspecified, then use a fallback. + useFallbackProxSensor(); } } diff --git a/services/core/java/com/android/server/display/utils/SensorUtils.java b/services/core/java/com/android/server/display/utils/SensorUtils.java index cb40b406899f..4924ad525fcc 100644 --- a/services/core/java/com/android/server/display/utils/SensorUtils.java +++ b/services/core/java/com/android/server/display/utils/SensorUtils.java @@ -33,6 +33,9 @@ public class SensorUtils { */ public static Sensor findSensor(SensorManager sensorManager, String sensorType, String sensorName, int fallbackType) { + if ("".equals(sensorName) && "".equals(sensorType)) { + return null; + } final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType); if (isNameSpecified || isTypeSpecified) { diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java index 30024fb5c221..7f341fff514d 100644 --- a/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java +++ b/services/tests/servicestests/src/com/android/server/display/DisplayDeviceConfigTest.java @@ -148,6 +148,8 @@ public final class DisplayDeviceConfigTest { assertArrayEquals(new float[]{23, 24, 25}, mDisplayDeviceConfig.getAmbientDarkeningPercentagesIdle(), ZERO_DELTA); + assertEquals("ProximitySensor123", mDisplayDeviceConfig.getProximitySensor().name); + assertEquals("prox_type_1", mDisplayDeviceConfig.getProximitySensor().type); // Todo(brup): Add asserts for BrightnessThrottlingData, DensityMapping, // HighBrightnessModeData AmbientLightSensor, RefreshRateLimitations and ProximitySensor. @@ -420,6 +422,10 @@ public final class DisplayDeviceConfigTest { + "</brightnessThrottlingPoint>\n" + "</brightnessThrottlingMap>\n" + "</thermalThrottling>\n" + + "<proxSensor>\n" + + "<name>ProximitySensor123</name>\n" + + "<type>prox_type_1</type>\n" + + "</proxSensor>\n" + "</displayConfiguration>\n"; } |