Merge "Adding supportedModes to DisplayDeviceConfig SensorData" into main
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
index a0beedb..b99de5c 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
@@ -71,7 +71,7 @@
import com.android.server.display.config.RefreshRateZone;
import com.android.server.display.config.SdrHdrRatioMap;
import com.android.server.display.config.SdrHdrRatioPoint;
-import com.android.server.display.config.SensorDetails;
+import com.android.server.display.config.SensorData;
import com.android.server.display.config.ThermalStatus;
import com.android.server.display.config.ThermalThrottling;
import com.android.server.display.config.ThresholdPoint;
@@ -349,6 +349,20 @@
* <proxSensor>
* <type>android.sensor.proximity</type>
* <name>1234 Proximity Sensor</name>
+ * <refreshRate>
+ * <minimum>60</minimum>
+ * <maximum>60</maximum>
+ * </refreshRate>
+ * <supportedModes>
+ * <point>
+ * <first>60</first> // refreshRate
+ * <second>60</second> //vsyncRate
+ * </point>
+ * <point>
+ * <first>120</first> // refreshRate
+ * <second>120</second> //vsyncRate
+ * </point>
+ * </supportedModes>
* </proxSensor>
*
* <ambientLightHorizonLong>10001</ambientLightHorizonLong>
@@ -581,15 +595,15 @@
private final Context mContext;
// The details of the ambient light sensor associated with this display.
- private final SensorData mAmbientLightSensor = new SensorData();
+ private SensorData mAmbientLightSensor;
// The details of the doze brightness sensor associated with this display.
- private final SensorData mScreenOffBrightnessSensor = new SensorData();
+ private SensorData mScreenOffBrightnessSensor;
// The details of the proximity sensor associated with this display.
// Is null when no sensor should be used for that display
@Nullable
- private SensorData mProximitySensor = new SensorData();
+ private SensorData mProximitySensor;
private final List<RefreshRateLimitation> mRefreshRateLimitations =
new ArrayList<>(2 /*initialCapacity*/);
@@ -1913,9 +1927,10 @@
loadLuxThrottling(config);
loadQuirks(config);
loadBrightnessRamps(config);
- loadAmbientLightSensorFromDdc(config);
- loadScreenOffBrightnessSensorFromDdc(config);
- loadProxSensorFromDdc(config);
+ mAmbientLightSensor = SensorData.loadAmbientLightSensorConfig(config,
+ mContext.getResources());
+ mScreenOffBrightnessSensor = SensorData.loadScreenOffBrightnessSensorConfig(config);
+ mProximitySensor = SensorData.loadProxSensorConfig(config);
loadAmbientHorizonFromDdc(config);
loadBrightnessChangeThresholds(config);
loadAutoBrightnessConfigValues(config);
@@ -1940,9 +1955,9 @@
loadBrightnessConstraintsFromConfigXml();
loadBrightnessMapFromConfigXml();
loadBrightnessRampsFromConfigXml();
- loadAmbientLightSensorFromConfigXml();
+ mAmbientLightSensor = SensorData.loadAmbientLightSensorConfig(mContext.getResources());
+ mProximitySensor = SensorData.loadSensorUnspecifiedConfig();
loadBrightnessChangeThresholdsFromXml();
- setProxSensorUnspecified();
loadAutoBrightnessConfigsFromConfigXml();
loadAutoBrightnessAvailableFromConfigXml();
loadRefreshRateSetting(null);
@@ -1966,8 +1981,8 @@
mBrightnessRampDecreaseMaxIdleMillis = 0;
mBrightnessRampIncreaseMaxIdleMillis = 0;
setSimpleMappingStrategyValues();
- loadAmbientLightSensorFromConfigXml();
- setProxSensorUnspecified();
+ mAmbientLightSensor = SensorData.loadAmbientLightSensorConfig(mContext.getResources());
+ mProximitySensor = SensorData.loadSensorUnspecifiedConfig();
loadAutoBrightnessAvailableFromConfigXml();
}
@@ -2919,64 +2934,10 @@
mBrightnessRampSlowDecrease = mBrightnessRampSlowIncrease;
}
- private void loadAmbientLightSensorFromConfigXml() {
- mAmbientLightSensor.name = "";
- mAmbientLightSensor.type = mContext.getResources().getString(
- com.android.internal.R.string.config_displayLightSensorType);
- }
-
private void loadAutoBrightnessConfigsFromConfigXml() {
loadAutoBrightnessDisplayBrightnessMapping(null /*AutoBrightnessConfig*/);
}
- private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) {
- final SensorDetails sensorDetails = config.getLightSensor();
- if (sensorDetails != null) {
- loadSensorData(sensorDetails, mAmbientLightSensor);
- } else {
- loadAmbientLightSensorFromConfigXml();
- }
- }
-
- private void setProxSensorUnspecified() {
- mProximitySensor = new SensorData();
- }
-
- private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) {
- final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor();
- if (sensorDetails != null) {
- loadSensorData(sensorDetails, mScreenOffBrightnessSensor);
- }
- }
-
- private void loadProxSensorFromDdc(DisplayConfiguration config) {
- SensorDetails sensorDetails = config.getProxSensor();
- if (sensorDetails != null) {
- String name = sensorDetails.getName();
- String type = sensorDetails.getType();
- if ("".equals(name) && "".equals(type)) {
- // <proxSensor> with empty values to the config means no sensor should be used
- mProximitySensor = null;
- } else {
- mProximitySensor = new SensorData();
- loadSensorData(sensorDetails, mProximitySensor);
- }
- } else {
- setProxSensorUnspecified();
- }
- }
-
- private void loadSensorData(@NonNull SensorDetails sensorDetails,
- @NonNull SensorData sensorData) {
- sensorData.name = sensorDetails.getName();
- sensorData.type = sensorDetails.getType();
- final RefreshRateRange rr = sensorDetails.getRefreshRate();
- if (rr != null) {
- sensorData.minRefreshRate = rr.getMinimum().floatValue();
- sensorData.maxRefreshRate = rr.getMaximum().floatValue();
- }
- }
-
private void loadBrightnessChangeThresholdsFromXml() {
loadBrightnessChangeThresholds(/* config= */ null);
}
@@ -3390,37 +3351,6 @@
}
/**
- * Uniquely identifies a Sensor, with the combination of Type and Name.
- */
- public static class SensorData {
- public String type;
- public String name;
- public float minRefreshRate = 0.0f;
- public float maxRefreshRate = Float.POSITIVE_INFINITY;
-
- @Override
- public String toString() {
- return "Sensor{"
- + "type: " + type
- + ", name: " + name
- + ", refreshRateRange: [" + minRefreshRate + ", " + maxRefreshRate + "]"
- + "} ";
- }
-
- /**
- * @return True if the sensor matches both the specified name and type, or one if only one
- * is specified (not-empty). Always returns false if both parameters are null or empty.
- */
- public boolean matches(String sensorName, String sensorType) {
- final boolean isNameSpecified = !TextUtils.isEmpty(sensorName);
- final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
- return (isNameSpecified || isTypeSpecified)
- && (!isNameSpecified || sensorName.equals(name))
- && (!isTypeSpecified || sensorType.equals(type));
- }
- }
-
- /**
* Container for high brightness mode configuration data.
*/
static class HighBrightnessModeData {
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index eae153c..8046dbf 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -158,7 +158,7 @@
import com.android.server.SystemService;
import com.android.server.UiThread;
import com.android.server.companion.virtual.VirtualDeviceManagerInternal;
-import com.android.server.display.DisplayDeviceConfig.SensorData;
+import com.android.server.display.config.SensorData;
import com.android.server.display.feature.DeviceConfigParameterProvider;
import com.android.server.display.feature.DisplayManagerFlags;
import com.android.server.display.layout.Layout;
diff --git a/services/core/java/com/android/server/display/config/SensorData.java b/services/core/java/com/android/server/display/config/SensorData.java
new file mode 100644
index 0000000..3bb35bf
--- /dev/null
+++ b/services/core/java/com/android/server/display/config/SensorData.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.display.config;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.res.Resources;
+import android.text.TextUtils;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Uniquely identifies a Sensor, with the combination of Type and Name.
+ */
+public class SensorData {
+
+ @Nullable
+ public final String type;
+ @Nullable
+ public final String name;
+ public final float minRefreshRate;
+ public final float maxRefreshRate;
+ public final List<SupportedMode> supportedModes;
+
+ @VisibleForTesting
+ public SensorData() {
+ this(/* type= */ null, /* name= */ null);
+ }
+
+ @VisibleForTesting
+ public SensorData(String type, String name) {
+ this(type, name, /* minRefreshRate= */ 0f, /* maxRefreshRate= */ Float.POSITIVE_INFINITY);
+ }
+
+ @VisibleForTesting
+ public SensorData(String type, String name, float minRefreshRate, float maxRefreshRate) {
+ this(type, name, minRefreshRate, maxRefreshRate, /* supportedModes= */ List.of());
+ }
+
+ @VisibleForTesting
+ public SensorData(String type, String name, float minRefreshRate, float maxRefreshRate,
+ List<SupportedMode> supportedModes) {
+ this.type = type;
+ this.name = name;
+ this.minRefreshRate = minRefreshRate;
+ this.maxRefreshRate = maxRefreshRate;
+ this.supportedModes = Collections.unmodifiableList(supportedModes);
+ }
+
+ /**
+ * @return True if the sensor matches both the specified name and type, or one if only one
+ * is specified (not-empty). Always returns false if both parameters are null or empty.
+ */
+ public boolean matches(String sensorName, String sensorType) {
+ final boolean isNameSpecified = !TextUtils.isEmpty(sensorName);
+ final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
+ return (isNameSpecified || isTypeSpecified)
+ && (!isNameSpecified || sensorName.equals(name))
+ && (!isTypeSpecified || sensorType.equals(type));
+ }
+
+ @Override
+ public String toString() {
+ return "SensorData{"
+ + "type= " + type
+ + ", name= " + name
+ + ", refreshRateRange: [" + minRefreshRate + ", " + maxRefreshRate + "]"
+ + ", supportedModes=" + supportedModes
+ + '}';
+ }
+
+ /**
+ * Loads ambient light sensor data from DisplayConfiguration and if missing from resources xml
+ */
+ public static SensorData loadAmbientLightSensorConfig(DisplayConfiguration config,
+ Resources resources) {
+ SensorDetails sensorDetails = config.getLightSensor();
+ if (sensorDetails != null) {
+ return loadSensorData(sensorDetails);
+ } else {
+ return loadAmbientLightSensorConfig(resources);
+ }
+ }
+
+ /**
+ * Loads ambient light sensor data from resources xml
+ */
+ public static SensorData loadAmbientLightSensorConfig(Resources resources) {
+ return new SensorData(
+ resources.getString(com.android.internal.R.string.config_displayLightSensorType),
+ /* name= */ "");
+ }
+
+ /**
+ * Loads screen off brightness sensor data from DisplayConfiguration
+ */
+ public static SensorData loadScreenOffBrightnessSensorConfig(DisplayConfiguration config) {
+ SensorDetails sensorDetails = config.getScreenOffBrightnessSensor();
+ if (sensorDetails != null) {
+ return loadSensorData(sensorDetails);
+ } else {
+ return new SensorData();
+ }
+ }
+
+ /**
+ * Loads proximity sensor data from DisplayConfiguration
+ */
+ @Nullable
+ public static SensorData loadProxSensorConfig(DisplayConfiguration config) {
+ SensorDetails sensorDetails = config.getProxSensor();
+ if (sensorDetails != null) {
+ String name = sensorDetails.getName();
+ String type = sensorDetails.getType();
+ if ("".equals(name) && "".equals(type)) {
+ // <proxSensor> with empty values to the config means no sensor should be used.
+ // See also {@link com.android.server.display.utils.SensorUtils}
+ return null;
+ } else {
+ return loadSensorData(sensorDetails);
+ }
+ } else {
+ return new SensorData();
+ }
+ }
+
+ /**
+ * Loads sensor unspecified config, this means system should use default sensor.
+ * See also {@link com.android.server.display.utils.SensorUtils}
+ */
+ @NonNull
+ public static SensorData loadSensorUnspecifiedConfig() {
+ return new SensorData();
+ }
+
+ private static SensorData loadSensorData(@NonNull SensorDetails sensorDetails) {
+ float minRefreshRate = 0f;
+ float maxRefreshRate = Float.POSITIVE_INFINITY;
+ RefreshRateRange rr = sensorDetails.getRefreshRate();
+ if (rr != null) {
+ minRefreshRate = rr.getMinimum().floatValue();
+ maxRefreshRate = rr.getMaximum().floatValue();
+ }
+ ArrayList<SupportedMode> supportedModes = new ArrayList<>();
+ NonNegativeFloatToFloatMap configSupportedModes = sensorDetails.getSupportedModes();
+ if (configSupportedModes != null) {
+ for (NonNegativeFloatToFloatPoint supportedMode : configSupportedModes.getPoint()) {
+ supportedModes.add(new SupportedMode(supportedMode.getFirst().floatValue(),
+ supportedMode.getSecond().floatValue()));
+ }
+ }
+
+ return new SensorData(sensorDetails.getType(), sensorDetails.getName(), minRefreshRate,
+ maxRefreshRate, supportedModes);
+ }
+
+ public static class SupportedMode {
+ public final float refreshRate;
+ public final float vsyncRate;
+
+ public SupportedMode(float refreshRate, float vsyncRate) {
+ this.refreshRate = refreshRate;
+ this.vsyncRate = vsyncRate;
+ }
+ }
+}
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 56321cd..8b9fe108 100644
--- a/services/core/java/com/android/server/display/utils/SensorUtils.java
+++ b/services/core/java/com/android/server/display/utils/SensorUtils.java
@@ -21,7 +21,7 @@
import android.hardware.SensorManager;
import android.text.TextUtils;
-import com.android.server.display.DisplayDeviceConfig;
+import com.android.server.display.config.SensorData;
import java.util.List;
@@ -36,7 +36,7 @@
*/
@Nullable
public static Sensor findSensor(@Nullable SensorManager sensorManager,
- @Nullable DisplayDeviceConfig.SensorData sensorData, int fallbackType) {
+ @Nullable SensorData sensorData, int fallbackType) {
if (sensorData == null) {
return null;
} else {
diff --git a/services/core/xsd/display-device-config/display-device-config.xsd b/services/core/xsd/display-device-config/display-device-config.xsd
index 215934f..cca4261 100644
--- a/services/core/xsd/display-device-config/display-device-config.xsd
+++ b/services/core/xsd/display-device-config/display-device-config.xsd
@@ -455,6 +455,20 @@
<xs:annotation name="nullable"/>
<xs:annotation name="final"/>
</xs:element>
+ <!-- list of supported modes when sensor is ON. Each point corresponds to one mode.
+ Mode format is : first = refreshRate, second = vsyncRate. E.g. :
+ <supportedModes>
+ <point>
+ <first>60</first> // refreshRate
+ <second>60</second> //vsyncRate
+ </point>
+ ....
+ </supportedModes>
+ -->
+ <xs:element type="nonNegativeFloatToFloatMap" name="supportedModes" minOccurs="0">
+ <xs:annotation name="nullable"/>
+ <xs:annotation name="final"/>
+ </xs:element>
</xs:sequence>
</xs:complexType>
diff --git a/services/core/xsd/display-device-config/schema/current.txt b/services/core/xsd/display-device-config/schema/current.txt
index f7e0043..f767291 100644
--- a/services/core/xsd/display-device-config/schema/current.txt
+++ b/services/core/xsd/display-device-config/schema/current.txt
@@ -349,9 +349,11 @@
ctor public SensorDetails();
method @Nullable public final String getName();
method @Nullable public final com.android.server.display.config.RefreshRateRange getRefreshRate();
+ method @Nullable public final com.android.server.display.config.NonNegativeFloatToFloatMap getSupportedModes();
method @Nullable public final String getType();
method public final void setName(@Nullable String);
method public final void setRefreshRate(@Nullable com.android.server.display.config.RefreshRateRange);
+ method public final void setSupportedModes(@Nullable com.android.server.display.config.NonNegativeFloatToFloatMap);
method public final void setType(@Nullable String);
}
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
index 179a9d5..0bcbeb9 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
@@ -17,9 +17,12 @@
package com.android.server.display;
+import static com.android.server.display.config.SensorData.SupportedMode;
import static com.android.server.display.utils.DeviceConfigParsingUtils.ambientBrightnessThresholdsIntToFloat;
import static com.android.server.display.utils.DeviceConfigParsingUtils.displayBrightnessThresholdsIntToFloat;
+import static com.google.common.truth.Truth.assertThat;
+
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -526,6 +529,26 @@
}
@Test
+ public void testProximitySensorWithRefreshRatesFromDisplayConfig() throws IOException {
+ setupDisplayDeviceConfigFromDisplayConfigFile(
+ getContent(getValidLuxThrottling(), getValidProxSensorWithRefreshRateAndVsyncRate(),
+ /* includeIdleMode= */ true));
+ assertEquals("test_proximity_sensor",
+ mDisplayDeviceConfig.getProximitySensor().type);
+ assertEquals("Test Proximity Sensor",
+ mDisplayDeviceConfig.getProximitySensor().name);
+ assertEquals(mDisplayDeviceConfig.getProximitySensor().minRefreshRate, 60, SMALL_DELTA);
+ assertEquals(mDisplayDeviceConfig.getProximitySensor().maxRefreshRate, 90, SMALL_DELTA);
+ assertThat(mDisplayDeviceConfig.getProximitySensor().supportedModes).hasSize(2);
+ SupportedMode mode = mDisplayDeviceConfig.getProximitySensor().supportedModes.get(0);
+ assertEquals(mode.refreshRate, 60, SMALL_DELTA);
+ assertEquals(mode.vsyncRate, 65, SMALL_DELTA);
+ mode = mDisplayDeviceConfig.getProximitySensor().supportedModes.get(1);
+ assertEquals(mode.refreshRate, 120, SMALL_DELTA);
+ assertEquals(mode.vsyncRate, 125, SMALL_DELTA);
+ }
+
+ @Test
public void testBlockingZoneThresholdsFromDisplayConfig() throws IOException {
setupDisplayDeviceConfigFromDisplayConfigFile();
@@ -821,6 +844,27 @@
+ "</proxSensor>\n";
}
+ private String getValidProxSensorWithRefreshRateAndVsyncRate() {
+ return "<proxSensor>\n"
+ + "<type>test_proximity_sensor</type>\n"
+ + "<name>Test Proximity Sensor</name>\n"
+ + "<refreshRate>\n"
+ + "<minimum>60</minimum>\n"
+ + "<maximum>90</maximum>\n"
+ + "</refreshRate>\n"
+ + "<supportedModes>\n"
+ + "<point>\n"
+ + "<first>60</first>\n" // refreshRate
+ + "<second>65</second>\n" //vsyncRate
+ + "</point>\n"
+ + "<point>\n"
+ + "<first>120</first>\n" // refreshRate
+ + "<second>125</second>\n" //vsyncRate
+ + "</point>\n"
+ + "</supportedModes>"
+ + "</proxSensor>\n";
+ }
+
private String getProxSensorWithEmptyValues() {
return "<proxSensor>\n"
+ "<type></type>\n"
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java
index 9684f42..3775ac94 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java
@@ -123,6 +123,7 @@
import com.android.server.companion.virtual.VirtualDeviceManagerInternal;
import com.android.server.display.DisplayManagerService.DeviceStateListener;
import com.android.server.display.DisplayManagerService.SyncRoot;
+import com.android.server.display.config.SensorData;
import com.android.server.display.feature.DisplayManagerFlags;
import com.android.server.display.notifications.DisplayNotificationManager;
import com.android.server.input.InputManagerInternal;
@@ -2317,11 +2318,8 @@
String testSensorType = "testType";
Sensor testSensor = TestUtils.createSensor(testSensorType, testSensorName);
- DisplayDeviceConfig.SensorData sensorData = new DisplayDeviceConfig.SensorData();
- sensorData.type = testSensorType;
- sensorData.name = testSensorName;
- sensorData.minRefreshRate = 10f;
- sensorData.maxRefreshRate = 100f;
+ SensorData sensorData = new SensorData(testSensorType, testSensorName,
+ /* minRefreshRate= */ 10f, /* maxRefreshRate= */ 100f);
when(mMockDisplayDeviceConfig.getProximitySensor()).thenReturn(sensorData);
when(mSensorManager.getSensorList(Sensor.TYPE_ALL)).thenReturn(Collections.singletonList(
@@ -2352,12 +2350,6 @@
String testSensorType = "testType";
Sensor testSensor = TestUtils.createSensor(testSensorType, testSensorName);
- DisplayDeviceConfig.SensorData sensorData = new DisplayDeviceConfig.SensorData();
- sensorData.type = testSensorType;
- sensorData.name = testSensorName;
- sensorData.minRefreshRate = 10f;
- sensorData.maxRefreshRate = 100f;
-
when(mMockDisplayDeviceConfig.getProximitySensor()).thenReturn(null);
when(mSensorManager.getSensorList(Sensor.TYPE_ALL)).thenReturn(Collections.singletonList(
testSensor));
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
index 47521d1..57f392a 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerController2Test.java
@@ -77,6 +77,7 @@
import com.android.server.display.brightness.clamper.BrightnessClamperController;
import com.android.server.display.brightness.clamper.HdrClamper;
import com.android.server.display.color.ColorDisplayService;
+import com.android.server.display.config.SensorData;
import com.android.server.display.feature.DisplayManagerFlags;
import com.android.server.display.feature.flags.Flags;
import com.android.server.display.layout.Layout;
@@ -1618,23 +1619,13 @@
when(displayDeviceMock.getUniqueId()).thenReturn(uniqueId);
when(displayDeviceMock.getDisplayDeviceConfig()).thenReturn(displayDeviceConfigMock);
when(displayDeviceConfigMock.getProximitySensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = Sensor.STRING_TYPE_PROXIMITY;
- name = null;
- }
- });
+ new SensorData(Sensor.STRING_TYPE_PROXIMITY, null));
when(displayDeviceConfigMock.getNits()).thenReturn(new float[]{2, 500});
when(displayDeviceConfigMock.isAutoBrightnessAvailable()).thenReturn(true);
when(displayDeviceConfigMock.getAmbientLightSensor()).thenReturn(
- new DisplayDeviceConfig.SensorData());
+ new SensorData());
when(displayDeviceConfigMock.getScreenOffBrightnessSensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = Sensor.STRING_TYPE_LIGHT;
- name = null;
- }
- });
+ new SensorData(Sensor.STRING_TYPE_LIGHT, null));
when(displayDeviceConfigMock.getScreenOffBrightnessSensorValueToLux())
.thenReturn(new int[0]);
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
index 37ee23f..9617bd0 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
@@ -76,6 +76,7 @@
import com.android.server.display.RampAnimator.DualRampAnimator;
import com.android.server.display.brightness.BrightnessEvent;
import com.android.server.display.color.ColorDisplayService;
+import com.android.server.display.config.SensorData;
import com.android.server.display.feature.DisplayManagerFlags;
import com.android.server.display.feature.flags.Flags;
import com.android.server.display.layout.Layout;
@@ -1515,23 +1516,13 @@
when(displayDeviceMock.getUniqueId()).thenReturn(uniqueId);
when(displayDeviceMock.getDisplayDeviceConfig()).thenReturn(displayDeviceConfigMock);
when(displayDeviceConfigMock.getProximitySensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = Sensor.STRING_TYPE_PROXIMITY;
- name = null;
- }
- });
+ new SensorData(Sensor.STRING_TYPE_PROXIMITY, null));
when(displayDeviceConfigMock.getNits()).thenReturn(new float[]{2, 500});
when(displayDeviceConfigMock.isAutoBrightnessAvailable()).thenReturn(true);
when(displayDeviceConfigMock.getAmbientLightSensor()).thenReturn(
- new DisplayDeviceConfig.SensorData());
+ new SensorData());
when(displayDeviceConfigMock.getScreenOffBrightnessSensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = Sensor.STRING_TYPE_LIGHT;
- name = null;
- }
- });
+ new SensorData(Sensor.STRING_TYPE_LIGHT, null));
when(displayDeviceConfigMock.getScreenOffBrightnessSensorValueToLux())
.thenReturn(new int[0]);
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerProximityStateControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerProximityStateControllerTest.java
index 534a708..ebd6614 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerProximityStateControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerProximityStateControllerTest.java
@@ -37,6 +37,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
+import com.android.server.display.config.SensorData;
import com.android.server.testutils.OffsettableClock;
import org.junit.Before;
@@ -74,14 +75,7 @@
mClock = new OffsettableClock.Stopped();
mTestLooper = new TestLooper(mClock::now);
when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = Sensor.STRING_TYPE_PROXIMITY;
- // This is kept null because currently there is no way to define a sensor
- // name in TestUtils
- name = null;
- }
- });
+ new SensorData(Sensor.STRING_TYPE_PROXIMITY, null));
setUpProxSensor();
DisplayPowerProximityStateController.Injector injector =
new DisplayPowerProximityStateController.Injector() {
@@ -171,13 +165,7 @@
@Test
public void isProximitySensorAvailableReturnsFalseWhenNotAvailableAndNoDefault() {
- when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = null;
- name = null;
- }
- });
+ when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(new SensorData());
mDisplayPowerProximityStateController = new DisplayPowerProximityStateController(
mWakelockController, mDisplayDeviceConfig, mTestLooper.getLooper(),
mNudgeUpdatePowerState, Display.DEFAULT_DISPLAY,
@@ -188,13 +176,7 @@
@Test
public void isProximitySensorAvailableReturnsTrueWhenNotAvailableAndHasDefault()
throws Exception {
- when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = null;
- name = null;
- }
- });
+ when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(new SensorData());
when(mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)).thenReturn(
TestUtils.createSensor(Sensor.TYPE_PROXIMITY, "proximity"));
mDisplayPowerProximityStateController = new DisplayPowerProximityStateController(
@@ -207,13 +189,7 @@
@Test
public void isProximitySensorAvailableReturnsFalseWhenNotAvailableHasDefaultNonDefaultDisplay()
throws Exception {
- when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = null;
- name = null;
- }
- });
+ when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(new SensorData());
when(mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)).thenReturn(
TestUtils.createSensor(Sensor.TYPE_PROXIMITY, "proximity"));
mDisplayPowerProximityStateController = new DisplayPowerProximityStateController(
@@ -240,12 +216,7 @@
public void notifyDisplayDeviceChangedReloadsTheProximitySensor() throws Exception {
DisplayDeviceConfig updatedDisplayDeviceConfig = mock(DisplayDeviceConfig.class);
when(updatedDisplayDeviceConfig.getProximitySensor()).thenReturn(
- new DisplayDeviceConfig.SensorData() {
- {
- type = Sensor.STRING_TYPE_PROXIMITY;
- name = null;
- }
- });
+ new SensorData(Sensor.STRING_TYPE_PROXIMITY, null));
Sensor newProxSensor = TestUtils.createSensor(
Sensor.TYPE_PROXIMITY, Sensor.STRING_TYPE_PROXIMITY, 4.0f);
when(mSensorManager.getSensorList(eq(Sensor.TYPE_ALL)))
diff --git a/services/tests/displayservicetests/src/com/android/server/display/utils/SensorUtilsTest.java b/services/tests/displayservicetests/src/com/android/server/display/utils/SensorUtilsTest.java
index 4494b0c..6e2d954 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/utils/SensorUtilsTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/utils/SensorUtilsTest.java
@@ -28,7 +28,7 @@
import androidx.test.filters.SmallTest;
import com.android.internal.annotations.Keep;
-import com.android.server.display.DisplayDeviceConfig.SensorData;
+import com.android.server.display.config.SensorData;
import org.junit.Before;
import org.junit.Test;
@@ -123,9 +123,7 @@
when(mSensorManager.getSensorList(Sensor.TYPE_ALL)).thenReturn(allSensors);
when(mSensorManager.getDefaultSensor(fallbackType)).thenReturn(defaultSensor);
- SensorData sensorData = new SensorData();
- sensorData.name = sensorName;
- sensorData.type = sensorType;
+ SensorData sensorData = new SensorData(sensorType, sensorName);
Sensor result = SensorUtils.findSensor(mSensorManager, sensorData, fallbackType);