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

Commit e69b1962 authored by Piotr Wilczyński's avatar Piotr Wilczyński
Browse files

Test DisplayDeviceConfig.initFromDefaultValues

Additionally:
- add missing tests for DisplayDeviceConfig.isAutoBrightnessAvailable()
- merge the INVALID_NITS constants

Bug: 316864327
Test: atest DisplayDeviceConfigTest
Test: atest LocalDisplayAdapterTest
Change-Id: Ic8b0285e469bc4814f1425d63388e638c395d8f2
parent 9da5e00d
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.display;

import static com.android.server.display.BrightnessMappingStrategy.INVALID_NITS;
import static com.android.server.display.utils.DeviceConfigParsingUtils.ambientBrightnessThresholdsIntToFloat;
import static com.android.server.display.utils.DeviceConfigParsingUtils.displayBrightnessThresholdsIntToFloat;

@@ -567,7 +568,8 @@ public class DisplayDeviceConfig {

    public static final int DEFAULT_LOW_REFRESH_RATE = 60;

    private static final float BRIGHTNESS_DEFAULT = 0.5f;
    @VisibleForTesting
    static final float BRIGHTNESS_DEFAULT = 0.5f;
    private static final String ETC_DIR = "etc";
    private static final String DISPLAY_CONFIG_DIR = "displayconfig";
    private static final String CONFIG_FILE_FORMAT = "display_%s.xml";
@@ -597,8 +599,6 @@ public class DisplayDeviceConfig {
    // so -2 is used instead
    private static final float INVALID_BRIGHTNESS_IN_CONFIG = -2f;

    static final float NITS_INVALID = -1;

    // Length of the ambient light horizon used to calculate the long term estimate of ambient
    // light.
    private static final int AMBIENT_LIGHT_LONG_HORIZON_MILLIS = 10000;
@@ -1031,11 +1031,12 @@ public class DisplayDeviceConfig {
    /**
     * Calculates the nits value for the specified backlight value if a mapping exists.
     *
     * @return The mapped nits or {@link #NITS_INVALID} if no mapping exits.
     * @return The mapped nits or {@link BrightnessMappingStrategy.INVALID_NITS} if no mapping
     * exits.
     */
    public float getNitsFromBacklight(float backlight) {
        if (mBacklightToNitsSpline == null) {
            return NITS_INVALID;
            return INVALID_NITS;
        }
        backlight = Math.max(backlight, mBacklightMinimum);
        return mBacklightToNitsSpline.interpolate(backlight);
@@ -1061,7 +1062,7 @@ public class DisplayDeviceConfig {

        float backlight = getBacklightFromBrightness(brightness);
        float nits = getNitsFromBacklight(backlight);
        if (nits == NITS_INVALID) {
        if (nits == INVALID_NITS) {
            return PowerManager.BRIGHTNESS_INVALID;
        }

+3 −2
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package com.android.server.display;
import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
import static android.view.Display.Mode.INVALID_MODE_ID;

import static com.android.server.display.BrightnessMappingStrategy.INVALID_NITS;

import android.annotation.Nullable;
import android.app.ActivityThread;
import android.content.Context;
@@ -956,8 +958,7 @@ final class LocalDisplayAdapter extends DisplayAdapter {

                    void handleHdrSdrNitsChanged(float displayNits, float sdrNits) {
                        final float newHdrSdrRatio;
                        if (displayNits != DisplayDeviceConfig.NITS_INVALID
                                && sdrNits != DisplayDeviceConfig.NITS_INVALID) {
                        if (displayNits != INVALID_NITS && sdrNits != INVALID_NITS) {
                            // Ensure the ratio stays >= 1.0f as values below that are nonsensical
                            newHdrSdrRatio = Math.max(1.f, displayNits / sdrNits);
                        } else {
+59 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.hardware.display.DisplayManagerInternal;
import android.os.PowerManager;
import android.os.Temperature;
import android.provider.Settings;
import android.util.SparseArray;
@@ -108,6 +109,43 @@ public final class DisplayDeviceConfigTest {
        mockDeviceConfigs();
    }

    @Test
    public void testDefaultValues() {
        when(mResources.getString(com.android.internal.R.string.config_displayLightSensorType))
                .thenReturn("test_light_sensor");
        when(mResources.getBoolean(R.bool.config_automatic_brightness_available)).thenReturn(true);

        mDisplayDeviceConfig = DisplayDeviceConfig.create(mContext, /* useConfigXml= */ false,
                mFlags);

        assertEquals(DisplayDeviceConfig.BRIGHTNESS_DEFAULT,
                mDisplayDeviceConfig.getBrightnessDefault(), ZERO_DELTA);
        assertEquals(PowerManager.BRIGHTNESS_MAX,
                mDisplayDeviceConfig.getBrightnessRampFastDecrease(), ZERO_DELTA);
        assertEquals(PowerManager.BRIGHTNESS_MAX,
                mDisplayDeviceConfig.getBrightnessRampFastIncrease(), ZERO_DELTA);
        assertEquals(PowerManager.BRIGHTNESS_MAX,
                mDisplayDeviceConfig.getBrightnessRampSlowDecrease(), ZERO_DELTA);
        assertEquals(PowerManager.BRIGHTNESS_MAX,
                mDisplayDeviceConfig.getBrightnessRampSlowIncrease(), ZERO_DELTA);
        assertEquals(PowerManager.BRIGHTNESS_MAX,
                mDisplayDeviceConfig.getBrightnessRampSlowDecreaseIdle(), ZERO_DELTA);
        assertEquals(PowerManager.BRIGHTNESS_MAX,
                mDisplayDeviceConfig.getBrightnessRampSlowIncreaseIdle(), ZERO_DELTA);
        assertEquals(0, mDisplayDeviceConfig.getBrightnessRampDecreaseMaxMillis());
        assertEquals(0, mDisplayDeviceConfig.getBrightnessRampIncreaseMaxMillis());
        assertEquals(0, mDisplayDeviceConfig.getBrightnessRampDecreaseMaxIdleMillis());
        assertEquals(0, mDisplayDeviceConfig.getBrightnessRampIncreaseMaxIdleMillis());
        assertNull(mDisplayDeviceConfig.getNits());
        assertNull(mDisplayDeviceConfig.getBacklight());
        assertEquals(0.3f, mDisplayDeviceConfig.getBacklightFromBrightness(0.3f), ZERO_DELTA);
        assertEquals("test_light_sensor", mDisplayDeviceConfig.getAmbientLightSensor().type);
        assertEquals("", mDisplayDeviceConfig.getAmbientLightSensor().name);
        assertNull(mDisplayDeviceConfig.getProximitySensor().type);
        assertNull(mDisplayDeviceConfig.getProximitySensor().name);
        assertTrue(mDisplayDeviceConfig.isAutoBrightnessAvailable());
    }

    @Test
    public void testConfigValuesFromDisplayConfig() throws IOException {
        setupDisplayDeviceConfigFromDisplayConfigFile();
@@ -681,6 +719,7 @@ public final class DisplayDeviceConfigTest {

        assertEquals("test_light_sensor", mDisplayDeviceConfig.getAmbientLightSensor().type);
        assertEquals("", mDisplayDeviceConfig.getAmbientLightSensor().name);
        assertTrue(mDisplayDeviceConfig.isAutoBrightnessAvailable());

        assertEquals(brightnessIntToFloat(35),
                mDisplayDeviceConfig.getBrightnessCapForWearBedtimeMode(), ZERO_DELTA);
@@ -798,6 +837,24 @@ public final class DisplayDeviceConfigTest {
                mDisplayDeviceConfig.getAutoBrightnessBrighteningLevelsNits(), SMALL_DELTA);
    }

    @Test
    public void testIsAutoBrightnessAvailable_EnabledInConfigResource() throws IOException {
        when(mResources.getBoolean(R.bool.config_automatic_brightness_available)).thenReturn(true);

        setupDisplayDeviceConfigFromDisplayConfigFile();

        assertTrue(mDisplayDeviceConfig.isAutoBrightnessAvailable());
    }

    @Test
    public void testIsAutoBrightnessAvailable_DisabledInConfigResource() throws IOException {
        when(mResources.getBoolean(R.bool.config_automatic_brightness_available)).thenReturn(false);

        setupDisplayDeviceConfigFromDisplayConfigFile();

        assertFalse(mDisplayDeviceConfig.isAutoBrightnessAvailable());
    }

    private String getValidLuxThrottling() {
        return "<luxThrottling>\n"
                + "    <brightnessLimitMap>\n"
@@ -1167,7 +1224,7 @@ public final class DisplayDeviceConfigTest {
                +           "<nits>" + NITS[2] + "</nits>\n"
                +       "</point>\n"
                +   "</screenBrightnessMap>\n"
                +   "<autoBrightness>\n"
                +   "<autoBrightness enabled=\"true\">\n"
                +       "<brighteningLightDebounceMillis>2000</brighteningLightDebounceMillis>\n"
                +       "<darkeningLightDebounceMillis>1000</darkeningLightDebounceMillis>\n"
                + (includeIdleMode ? getRampSpeedsIdle() : "")
@@ -1570,6 +1627,7 @@ public final class DisplayDeviceConfigTest {

        when(mResources.getString(com.android.internal.R.string.config_displayLightSensorType))
                .thenReturn("test_light_sensor");
        when(mResources.getBoolean(R.bool.config_automatic_brightness_available)).thenReturn(true);

        when(mResources.getInteger(
                R.integer.config_autoBrightnessBrighteningLightDebounce))