Merge "Allow No Sensor to be Specified in DDC" into tm-qpr-dev
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
index 687d03d..2be2d58 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 @@
loadBrightnessRampsFromConfigXml();
loadAmbientLightSensorFromConfigXml();
loadBrightnessChangeThresholdsFromXml();
- setProxSensorUnspecified();
+ useFallbackProxSensor();
loadAutoBrightnessConfigsFromConfigXml();
loadAutoBrightnessAvailableFromConfigXml();
mLoadedFrom = "<config.xml>";
@@ -1432,7 +1432,7 @@
mBrightnessRampIncreaseMaxMillis = 0;
setSimpleMappingStrategyValues();
loadAmbientLightSensorFromConfigXml();
- setProxSensorUnspecified();
+ useFallbackProxSensor();
loadAutoBrightnessAvailableFromConfigXml();
}
@@ -1941,7 +1941,12 @@
}
}
- private void setProxSensorUnspecified() {
+ private void useFallbackProxSensor() {
+ mProximitySensor.name = null;
+ mProximitySensor.type = null;
+ }
+
+ private void useNullProxSensor() {
mProximitySensor.name = "";
mProximitySensor.type = "";
}
@@ -1949,6 +1954,12 @@
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 @@
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 cb40b40..4924ad5 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 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 30024fb..7f341ff 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 @@
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 @@
+ "</brightnessThrottlingPoint>\n"
+ "</brightnessThrottlingMap>\n"
+ "</thermalThrottling>\n"
+ + "<proxSensor>\n"
+ + "<name>ProximitySensor123</name>\n"
+ + "<type>prox_type_1</type>\n"
+ + "</proxSensor>\n"
+ "</displayConfiguration>\n";
}