Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bba0d441 authored by petsjonkin's avatar petsjonkin Committed by Oleg Petšjonkin
Browse files

SensorData constructors cleanup

Removed redundant constructors, created helper method to create SensorData for tests

Bug: b/310204783
Test: atest DisplayServiceTests
Flag: EXEMPT refactor
Change-Id: Ie65054e6d45732ed8558f3771549706fb5a7cfee
parent c0110ac4
Loading
Loading
Loading
Loading
+16 −25
Original line number Diff line number Diff line
@@ -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) {
+3 −1
Original line number Diff line number Diff line
@@ -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());
+2 −1
Original line number Diff line number Diff line
@@ -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);
+4 −4
Original line number Diff line number Diff line
@@ -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())
+6 −6
Original line number Diff line number Diff line
@@ -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)))
Loading