summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/display/DisplayDeviceConfig.java13
-rw-r--r--services/core/java/com/android/server/display/LocalDisplayAdapter.java5
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java60
3 files changed, 69 insertions, 9 deletions
diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
index bd22e1d21dea..4c4cf6080965 100644
--- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java
+++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java
@@ -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;
}
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index 25576ce9efd6..3a6333099b77 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -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 {
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
index 7a84406f1b08..4e009a950337 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayDeviceConfigTest.java
@@ -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;
@@ -109,6 +110,43 @@ public final class DisplayDeviceConfigTest {
}
@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))