diff options
9 files changed, 51 insertions, 41 deletions
diff --git a/services/core/java/com/android/server/display/config/SensorData.java b/services/core/java/com/android/server/display/config/SensorData.java index 8bfc4a3ad77a..1437c8dba0cd 100644 --- a/services/core/java/com/android/server/display/config/SensorData.java +++ b/services/core/java/com/android/server/display/config/SensorData.java @@ -34,6 +34,8 @@ public class SensorData { public static final String TEMPERATURE_TYPE_DISPLAY = "DISPLAY"; public static final String TEMPERATURE_TYPE_SKIN = "SKIN"; + private static final SensorData UNSPECIFIED_SENSOR_DATA = new SensorData( + /* type= */null, /* name= */ null); @Nullable public final String type; @@ -43,24 +45,14 @@ public class SensorData { public final float maxRefreshRate; public final List<SupportedModeData> 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()); + private SensorData(@Nullable String type, @Nullable String name) { + this(type, name, /* minRefreshRate= */ 0f, /* maxRefreshRate= */ Float.POSITIVE_INFINITY, + /* supportedModes= */ List.of()); } @VisibleForTesting - public SensorData(String type, String name, float minRefreshRate, float maxRefreshRate, - List<SupportedModeData> supportedModes) { + SensorData(@Nullable String type, @Nullable String name, + float minRefreshRate, float maxRefreshRate, List<SupportedModeData> supportedModes) { this.type = type; this.name = name; this.minRefreshRate = minRefreshRate; @@ -72,7 +64,7 @@ public class SensorData { * @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) { + public boolean matches(@Nullable String sensorName, @Nullable String sensorType) { final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType); return (isNameSpecified || isTypeSpecified) @@ -120,7 +112,7 @@ public class SensorData { if (sensorDetails != null) { return loadSensorData(sensorDetails); } else { - return new SensorData(); + return UNSPECIFIED_SENSOR_DATA; } } @@ -130,13 +122,12 @@ public class SensorData { @Nullable public static SensorData loadProxSensorConfig( DisplayManagerFlags flags, DisplayConfiguration config) { - SensorData DEFAULT_SENSOR = new SensorData(); List<SensorDetails> sensorDetailsList = config.getProxSensor(); if (sensorDetailsList.isEmpty()) { - return DEFAULT_SENSOR; + return UNSPECIFIED_SENSOR_DATA; } - SensorData selectedSensor = DEFAULT_SENSOR; + SensorData selectedSensor = UNSPECIFIED_SENSOR_DATA; // Prioritize flagged sensors. for (SensorDetails sensorDetails : sensorDetailsList) { String flagStr = sensorDetails.getFeatureFlag(); @@ -148,7 +139,7 @@ public class SensorData { } // Check for normal un-flagged sensor if a flagged one wasn't found. - if (DEFAULT_SENSOR == selectedSensor) { + if (UNSPECIFIED_SENSOR_DATA == selectedSensor) { for (SensorDetails sensorDetails : sensorDetailsList) { if (sensorDetails.getFeatureFlag() != null) { continue; @@ -159,7 +150,7 @@ public class SensorData { } // Check if we shouldn't use a sensor at all. - if (DEFAULT_SENSOR != selectedSensor) { + if (UNSPECIFIED_SENSOR_DATA != selectedSensor) { if ("".equals(selectedSensor.name) && "".equals(selectedSensor.type)) { // <proxSensor> with empty values to the config means no sensor should be used. // See also {@link com.android.server.display.utils.SensorUtils} @@ -174,7 +165,7 @@ public class SensorData { * Loads temperature sensor data for no config case. (Type: SKIN, Name: null) */ public static SensorData loadTempSensorUnspecifiedConfig() { - return new SensorData(TEMPERATURE_TYPE_SKIN, null); + return new SensorData(TEMPERATURE_TYPE_SKIN, /* name= */ null); } /** @@ -185,7 +176,7 @@ public class SensorData { DisplayConfiguration config) { SensorDetails sensorDetails = config.getTempSensor(); if (!flags.isSensorBasedBrightnessThrottlingEnabled() || sensorDetails == null) { - return new SensorData(TEMPERATURE_TYPE_SKIN, null); + return loadTempSensorUnspecifiedConfig(); } String name = sensorDetails.getName(); String type = sensorDetails.getType(); @@ -202,7 +193,7 @@ public class SensorData { */ @NonNull public static SensorData loadSensorUnspecifiedConfig() { - return new SensorData(); + return UNSPECIFIED_SENSOR_DATA; } private static SensorData loadSensorData(@NonNull SensorDetails sensorDetails) { diff --git a/services/tests/displayservicetests/src/com/android/server/display/BrightnessThrottlerTest.java b/services/tests/displayservicetests/src/com/android/server/display/BrightnessThrottlerTest.java index 05c243fda2b8..36baacc529d5 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/BrightnessThrottlerTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/BrightnessThrottlerTest.java @@ -16,6 +16,8 @@ package com.android.server.display; +import static com.android.server.display.config.DisplayDeviceConfigTestUtilsKt.createSensorData; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -301,7 +303,7 @@ public class BrightnessThrottlerTest { new ThrottlingLevel(PowerManager.THERMAL_STATUS_CRITICAL, 0.25f); List<ThrottlingLevel> levels = new ArrayList<>(List.of(level)); final ThermalBrightnessThrottlingData data = ThermalBrightnessThrottlingData.create(levels); - final SensorData tempSensor = new SensorData("DISPLAY", "VIRTUAL-SKIN-DISPLAY"); + final SensorData tempSensor = createSensorData("DISPLAY", "VIRTUAL-SKIN-DISPLAY"); final BrightnessThrottler throttler = createThrottlerSupportedWithTempSensor(data, tempSensor); assertTrue(throttler.deviceSupportsThrottling()); 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 d2686372f550..2b03dc4f78ad 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayManagerServiceTest.java @@ -31,6 +31,7 @@ import static android.view.ContentRecordingSession.RECORD_CONTENT_TASK; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer; import static com.android.server.display.ExternalDisplayPolicy.ENABLE_ON_CONNECT; import static com.android.server.display.VirtualDisplayAdapter.UNIQUE_ID_PREFIX; +import static com.android.server.display.config.DisplayDeviceConfigTestUtilsKt.createSensorData; import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; @@ -2423,7 +2424,7 @@ public class DisplayManagerServiceTest { String testSensorType = "testType"; Sensor testSensor = TestUtils.createSensor(testSensorType, testSensorName); - SensorData sensorData = new SensorData(testSensorType, testSensorName, + SensorData sensorData = createSensorData(testSensorType, testSensorName, /* minRefreshRate= */ 10f, /* maxRefreshRate= */ 100f); when(mMockDisplayDeviceConfig.getProximitySensor()).thenReturn(sensorData); 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 c6aea5a290e9..8ed38a6d0cad 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java @@ -21,6 +21,7 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DEFAULT; import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_DOZE; import static com.android.server.display.AutomaticBrightnessController.AUTO_BRIGHTNESS_MODE_IDLE; +import static com.android.server.display.config.DisplayDeviceConfigTestUtilsKt.createSensorData; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -85,7 +86,6 @@ import com.android.server.display.brightness.clamper.HdrClamper; import com.android.server.display.color.ColorDisplayService; import com.android.server.display.config.HighBrightnessModeData; import com.android.server.display.config.HysteresisLevels; -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; @@ -2159,13 +2159,13 @@ public final class DisplayPowerControllerTest { when(displayDeviceMock.getNameLocked()).thenReturn(displayName); when(displayDeviceMock.getDisplayDeviceConfig()).thenReturn(displayDeviceConfigMock); when(displayDeviceConfigMock.getProximitySensor()).thenReturn( - new SensorData(Sensor.STRING_TYPE_PROXIMITY, null)); + createSensorData(Sensor.STRING_TYPE_PROXIMITY)); when(displayDeviceConfigMock.getNits()).thenReturn(new float[]{2, 500}); when(displayDeviceConfigMock.isAutoBrightnessAvailable()).thenReturn(true); when(displayDeviceConfigMock.getAmbientLightSensor()).thenReturn( - new SensorData()); + createSensorData()); when(displayDeviceConfigMock.getScreenOffBrightnessSensor()).thenReturn( - new SensorData(Sensor.STRING_TYPE_LIGHT, null)); + createSensorData(Sensor.STRING_TYPE_LIGHT)); when(displayDeviceConfigMock.getScreenOffBrightnessSensorValueToLux()) .thenReturn(new int[0]); when(displayDeviceConfigMock.getDefaultDozeBrightness()) 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 ebd6614aba14..29f07227a12d 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerProximityStateControllerTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerProximityStateControllerTest.java @@ -17,6 +17,7 @@ package com.android.server.display; import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify; +import static com.android.server.display.config.DisplayDeviceConfigTestUtilsKt.createSensorData; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -37,7 +38,6 @@ import android.view.Display; 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; @@ -75,7 +75,7 @@ public final class DisplayPowerProximityStateControllerTest { mClock = new OffsettableClock.Stopped(); mTestLooper = new TestLooper(mClock::now); when(mDisplayDeviceConfig.getProximitySensor()).thenReturn( - new SensorData(Sensor.STRING_TYPE_PROXIMITY, null)); + createSensorData(Sensor.STRING_TYPE_PROXIMITY)); setUpProxSensor(); DisplayPowerProximityStateController.Injector injector = new DisplayPowerProximityStateController.Injector() { @@ -165,7 +165,7 @@ public final class DisplayPowerProximityStateControllerTest { @Test public void isProximitySensorAvailableReturnsFalseWhenNotAvailableAndNoDefault() { - when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(new SensorData()); + when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(createSensorData()); mDisplayPowerProximityStateController = new DisplayPowerProximityStateController( mWakelockController, mDisplayDeviceConfig, mTestLooper.getLooper(), mNudgeUpdatePowerState, Display.DEFAULT_DISPLAY, @@ -176,7 +176,7 @@ public final class DisplayPowerProximityStateControllerTest { @Test public void isProximitySensorAvailableReturnsTrueWhenNotAvailableAndHasDefault() throws Exception { - when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(new SensorData()); + when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(createSensorData()); when(mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)).thenReturn( TestUtils.createSensor(Sensor.TYPE_PROXIMITY, "proximity")); mDisplayPowerProximityStateController = new DisplayPowerProximityStateController( @@ -189,7 +189,7 @@ public final class DisplayPowerProximityStateControllerTest { @Test public void isProximitySensorAvailableReturnsFalseWhenNotAvailableHasDefaultNonDefaultDisplay() throws Exception { - when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(new SensorData()); + when(mDisplayDeviceConfig.getProximitySensor()).thenReturn(createSensorData()); when(mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)).thenReturn( TestUtils.createSensor(Sensor.TYPE_PROXIMITY, "proximity")); mDisplayPowerProximityStateController = new DisplayPowerProximityStateController( @@ -216,7 +216,7 @@ public final class DisplayPowerProximityStateControllerTest { public void notifyDisplayDeviceChangedReloadsTheProximitySensor() throws Exception { DisplayDeviceConfig updatedDisplayDeviceConfig = mock(DisplayDeviceConfig.class); when(updatedDisplayDeviceConfig.getProximitySensor()).thenReturn( - new SensorData(Sensor.STRING_TYPE_PROXIMITY, null)); + createSensorData(Sensor.STRING_TYPE_PROXIMITY)); 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/brightness/clamper/BrightnessThermalClamperTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessThermalClamperTest.java index 34f352e7bf54..9d16594fae93 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessThermalClamperTest.java +++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/BrightnessThermalClamperTest.java @@ -16,6 +16,8 @@ package com.android.server.display.brightness.clamper; +import static com.android.server.display.config.DisplayDeviceConfigTestUtilsKt.createSensorData; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -189,7 +191,7 @@ public class BrightnessThermalClamperTest { final int severity = PowerManager.THERMAL_STATUS_SEVERE; IThermalEventListener thermalEventListener = captureSkinThermalEventListener(); // Update config to listen to display type sensor. - final SensorData tempSensor = new SensorData("DISPLAY", "VIRTUAL-SKIN-DISPLAY"); + final SensorData tempSensor = createSensorData("DISPLAY", "VIRTUAL-SKIN-DISPLAY"); final TestThermalData thermalData = new TestThermalData( DISPLAY_ID, diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/LightSensorControllerTest.kt b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/LightSensorControllerTest.kt index b742d021f2e9..f59e1275d2ce 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/LightSensorControllerTest.kt +++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/clamper/LightSensorControllerTest.kt @@ -26,6 +26,7 @@ import com.android.server.display.TestUtils import com.android.server.display.brightness.clamper.LightSensorController.Injector import com.android.server.display.brightness.clamper.LightSensorController.LightSensorListener import com.android.server.display.config.SensorData +import com.android.server.display.config.createSensorData import com.android.server.display.utils.AmbientFilter import org.junit.Before import org.mockito.kotlin.any @@ -51,7 +52,7 @@ class LightSensorControllerTest { private val mockAmbientFilter: AmbientFilter = mock() private val testInjector = TestInjector() - private val dummySensorData = SensorData() + private val dummySensorData = createSensorData() private lateinit var controller: LightSensorController diff --git a/services/tests/displayservicetests/src/com/android/server/display/config/DisplayDeviceConfigTestUtils.kt b/services/tests/displayservicetests/src/com/android/server/display/config/DisplayDeviceConfigTestUtils.kt index e0da90119691..c7580331c841 100644 --- a/services/tests/displayservicetests/src/com/android/server/display/config/DisplayDeviceConfigTestUtils.kt +++ b/services/tests/displayservicetests/src/com/android/server/display/config/DisplayDeviceConfigTestUtils.kt @@ -24,6 +24,17 @@ import java.io.ByteArrayOutputStream import java.io.OutputStreamWriter import org.xmlpull.v1.XmlSerializer +@JvmOverloads +fun createSensorData( + type: String? = null, + name: String? = null, + minRefreshRate: Float = 0f, + maxRefreshRate: Float = Float.POSITIVE_INFINITY, + supportedModes: List<SupportedModeData> = emptyList() +): SensorData { + return SensorData(type, name, minRefreshRate, maxRefreshRate, supportedModes) +} + fun createRefreshRateData( defaultRefreshRate: Int = 60, defaultPeakRefreshRate: Int = 60, 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 6e2d954c05a8..c0f5e7a69af7 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 @@ -16,6 +16,8 @@ package com.android.server.display.utils; +import static com.android.server.display.config.DisplayDeviceConfigTestUtilsKt.createSensorData; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Mockito.when; @@ -65,7 +67,7 @@ public class SensorUtilsTest { @Test public void testNoSensorManager() { - Sensor result = SensorUtils.findSensor(null, new SensorData(), Sensor.TYPE_LIGHT); + Sensor result = SensorUtils.findSensor(null, createSensorData(), Sensor.TYPE_LIGHT); assertNull(result); } @@ -123,7 +125,7 @@ public class SensorUtilsTest { when(mSensorManager.getSensorList(Sensor.TYPE_ALL)).thenReturn(allSensors); when(mSensorManager.getDefaultSensor(fallbackType)).thenReturn(defaultSensor); - SensorData sensorData = new SensorData(sensorType, sensorName); + SensorData sensorData = createSensorData(sensorType, sensorName); Sensor result = SensorUtils.findSensor(mSensorManager, sensorData, fallbackType); |