Loading services/core/java/com/android/server/display/DisplayDeviceConfig.java +7 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"; Loading Loading @@ -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; Loading Loading @@ -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); Loading @@ -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; } Loading services/core/java/com/android/server/display/LocalDisplayAdapter.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java +59 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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" Loading Loading @@ -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() : "") Loading Loading @@ -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)) Loading Loading
services/core/java/com/android/server/display/DisplayDeviceConfig.java +7 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"; Loading Loading @@ -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; Loading Loading @@ -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); Loading @@ -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; } Loading
services/core/java/com/android/server/display/LocalDisplayAdapter.java +3 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading
services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java +59 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading Loading @@ -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); Loading Loading @@ -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" Loading Loading @@ -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() : "") Loading Loading @@ -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)) Loading