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

Commit 6ad7475e authored by Piotr Wilczyński's avatar Piotr Wilczyński Committed by Android (Google) Code Review
Browse files

Merge "Test DisplayDeviceConfig.initFromDefaultValues" into main

parents e0a5e9b0 e69b1962
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);
@@ -807,6 +846,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"
@@ -1176,7 +1233,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() : "")
@@ -1593,6 +1650,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))