diff options
author | 2018-03-28 13:53:14 +0000 | |
---|---|---|
committer | 2018-03-28 13:53:14 +0000 | |
commit | 3c510bbdfb0866cf072065aa4bcf7f6a7ca683d9 (patch) | |
tree | 1b4cb88b82057bce7470c82ae3b2965507e9683c | |
parent | 1b90fe11323ef50902abcbc04701517bb8228612 (diff) | |
parent | 6f88afaa658941b9de84dcc505cf302f4fb61b01 (diff) |
Merge "Revert "Added safeguards for pushed brighntess curve."" into pi-dev am: f0e720ecde
am: 6f88afaa65
Change-Id: I8672276de10653c9379ee78cbcf13ef196544a22
4 files changed, 4 insertions, 152 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index a52a089dca65..66d25df41e63 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1343,30 +1343,6 @@ <integer-array name="config_autoBrightnessKeyboardBacklightValues"> </integer-array> - <!-- Array of light sensor lux values to define the minimum brightness curve, which guarantees - that any curve that dips below it is rejected by the system. - This prevents auto-brightness from setting the screen so dark as to prevent the user from - disabling auto-brightness or reseting the brightness curve via ADB. - - The control points must be strictly increasing. Each control point corresponds to an entry - in the minimum brightness nits array. --> - <integer-array name="config_autoBrightnessMinimumBrightnessCurveLux"> - <item>2000</item> - <item>4000</item> - </integer-array> - - <!-- Array of desired screen brightness in nits corresponding to the lux values - in the config_autoBrightnessMinimumBrightnessCurveLux array. - - This array should have size one greater than the size of the - config_autoBrightnessMinimumBrightnessCurveLux array. The values must be non-negative and - non-decreasing. --> - <array name="config_autoBrightnessMinimumBrightnessCurveNits"> - <item>1.0</item> - <item>50.0</item> - <item>90.0</item> - </array> - <!-- Array of hysteresis constraint values for brightening, represented as tenths of a percent. The length of this array is assumed to be one greater than config_dynamicHysteresisLuxLevels. The brightening threshold is calculated as diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 03acd5c3beb6..2f7ae271b579 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1794,8 +1794,6 @@ <java-symbol type="array" name="config_autoBrightnessKeyboardBacklightValues" /> <java-symbol type="array" name="config_autoBrightnessLcdBacklightValues" /> <java-symbol type="array" name="config_autoBrightnessLevels" /> - <java-symbol type="array" name="config_autoBrightnessMinimumBrightnessCurveLux" /> - <java-symbol type="array" name="config_autoBrightnessMinimumBrightnessCurveNits" /> <java-symbol type="array" name="config_dynamicHysteresisBrightLevels" /> <java-symbol type="array" name="config_dynamicHysteresisDarkLevels" /> <java-symbol type="array" name="config_dynamicHysteresisLuxLevels" /> diff --git a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java index 711d40b7fb8a..4313d1724214 100644 --- a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java +++ b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java @@ -60,14 +60,8 @@ public abstract class BrightnessMappingStrategy { int[] backlightRange = resources.getIntArray( com.android.internal.R.array.config_screenBrightnessBacklight); - float[] minimumBrightnessCurveLux = getLuxLevels(resources.getIntArray( - com.android.internal.R.array.config_autoBrightnessMinimumBrightnessCurveLux)); - float[] minimumBrightnessCurveNits = getFloatArray(resources.obtainTypedArray( - com.android.internal.R.array.config_autoBrightnessMinimumBrightnessCurveNits)); - if (isValidMapping(nitsRange, backlightRange) - && isValidMapping(luxLevels, brightnessLevelsNits) - && isValidMapping(minimumBrightnessCurveLux, minimumBrightnessCurveNits)) { + && isValidMapping(luxLevels, brightnessLevelsNits)) { int minimumBacklight = resources.getInteger( com.android.internal.R.integer.config_screenBrightnessSettingMinimum); int maximumBacklight = resources.getInteger( @@ -79,8 +73,7 @@ public abstract class BrightnessMappingStrategy { } BrightnessConfiguration.Builder builder = new BrightnessConfiguration.Builder(); builder.setCurve(luxLevels, brightnessLevelsNits); - return new PhysicalMappingStrategy(builder.build(), nitsRange, backlightRange, - minimumBrightnessCurveLux, minimumBrightnessCurveNits); + return new PhysicalMappingStrategy(builder.build(), nitsRange, backlightRange); } else if (isValidMapping(luxLevels, brightnessLevelsBacklight)) { return new SimpleMappingStrategy(luxLevels, brightnessLevelsBacklight); } else { @@ -455,11 +448,8 @@ public abstract class BrightnessMappingStrategy { private float mUserLux; private float mUserBrightness; - private final Spline mMinimumBrightnessCurve; - public PhysicalMappingStrategy(BrightnessConfiguration config, - float[] nits, int[] backlight, float[] minimumBrightnessCurveLux, - float[] minimumBrightnessCurveNits) { + float[] nits, int[] backlight) { Preconditions.checkArgument(nits.length != 0 && backlight.length != 0, "Nits and backlight arrays must not be empty!"); Preconditions.checkArgument(nits.length == backlight.length, @@ -479,9 +469,6 @@ public abstract class BrightnessMappingStrategy { normalizedBacklight[i] = normalizeAbsoluteBrightness(backlight[i]); } - mMinimumBrightnessCurve = Spline.createSpline( - minimumBrightnessCurveLux, minimumBrightnessCurveNits); - mNitsToBacklightSpline = createSpline(nits, normalizedBacklight); mBacklightToNitsSpline = createSpline(normalizedBacklight, nits); @@ -497,7 +484,7 @@ public abstract class BrightnessMappingStrategy { if (config.equals(mConfig)) { return false; } - validateBrightnessConfiguration(config); + Pair<float[], float[]> curve = config.getCurve(); mBrightnessSpline = createSpline(curve.first /*lux*/, curve.second /*nits*/); mConfig = config; @@ -562,24 +549,5 @@ public abstract class BrightnessMappingStrategy { pw.println(" mUserLux=" + mUserLux); pw.println(" mUserBrightness=" + mUserBrightness); } - - private void validateBrightnessConfiguration(BrightnessConfiguration config) { - Pair<float[], float[]> curve = config.getCurve(); - Spline brightnessSpline = Spline.createSpline(curve.first, curve.second); - if (isBrightnessSplineTooDark(brightnessSpline)) { - throw new IllegalArgumentException("brightness curve is too dark"); - } - } - - private boolean isBrightnessSplineTooDark(Spline brightnessSpline) { - float[] lux = mDefaultConfig.getCurve().first; - for (int i = 0; i < lux.length; i++) { - if (brightnessSpline.interpolate(lux[i]) < - mMinimumBrightnessCurve.interpolate(lux[i])) { - return true; - } - } - return false; - } } } diff --git a/services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java b/services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java index d922df38b189..fb25cf3f01e0 100644 --- a/services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java +++ b/services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java @@ -85,9 +85,6 @@ public class BrightnessMappingStrategyTest { 255 }; - private static final int[] MINIMUM_BRIGHTNESS_CURVE_LUX = { 2000, 4000 }; - private static final float[] MINIMUM_BRIGHTNESS_CURVE_NITS = { 1.0f, 50.0f, 90.0f }; - private static final float[] DISPLAY_RANGE_NITS = { 2.685f, 478.5f }; private static final int[] BACKLIGHT_RANGE = { 1, 255 }; @@ -384,19 +381,6 @@ public class BrightnessMappingStrategyTest { com.android.internal.R.array.config_autoBrightnessDisplayValuesNits)) .thenReturn(mockBrightnessLevelNits); - int[] mockMinimumBrightnessCurveLux = new int[MINIMUM_BRIGHTNESS_CURVE_LUX.length]; - for (int i = 0; i < mockMinimumBrightnessCurveLux.length; i++) { - mockMinimumBrightnessCurveLux[i] = (int) MINIMUM_BRIGHTNESS_CURVE_LUX[i]; - } - when(mockResources.getIntArray( - com.android.internal.R.array.config_autoBrightnessMinimumBrightnessCurveLux)) - .thenReturn(mockMinimumBrightnessCurveLux); - TypedArray mockMinimumBrightnessCurveNits = createFloatTypedArray( - MINIMUM_BRIGHTNESS_CURVE_NITS); - when(mockResources.obtainTypedArray( - com.android.internal.R.array.config_autoBrightnessMinimumBrightnessCurveNits)) - .thenReturn(mockMinimumBrightnessCurveNits); - TypedArray mockNitsRange = createFloatTypedArray(nitsRange); when(mockResources.obtainTypedArray( com.android.internal.R.array.config_screenBrightnessNits)) @@ -435,78 +419,4 @@ public class BrightnessMappingStrategyTest { return mockArray; } - private float[] getNearMinimumNits(float epsilon) { - float[] lux = new float[MINIMUM_BRIGHTNESS_CURVE_LUX.length + 1]; - for (int i = 0; i < MINIMUM_BRIGHTNESS_CURVE_LUX.length; i++) { - lux[i+1] = MINIMUM_BRIGHTNESS_CURVE_LUX[i]; - } - Spline minimumBrightnessCurve = Spline.createSpline(lux, MINIMUM_BRIGHTNESS_CURVE_NITS); - float[] nits = new float[LUX_LEVELS.length]; - for (int i = 0; i < nits.length; i++) { - nits[i] = minimumBrightnessCurve.interpolate(LUX_LEVELS[i]) + epsilon; - } - return nits; - } - - @Test - public void testCreateWithTooDarkBrightnessConfigurationThrowsException() { - float[] nits = getNearMinimumNits(-0.1f); - Resources res = createResources(LUX_LEVELS, nits, DISPLAY_RANGE_NITS, BACKLIGHT_RANGE); - Exception thrown = null; - try { - BrightnessMappingStrategy.create(res); - } catch (IllegalArgumentException e) { - thrown = e; - } - assertNotNull("Failed to throw IllegalArgumentException", thrown); - } - - @Test - public void testCreationWithBrightEnoughBrightnessConfigurationDoesNotThrowException() { - float[] nits = getNearMinimumNits(0); - Resources res = createResources(LUX_LEVELS, nits, DISPLAY_RANGE_NITS, BACKLIGHT_RANGE); - assertNotNull("Failed to create BrightnessMappingStrategy", - BrightnessMappingStrategy.create(res)); - } - - @Test - public void testSettingTooDarkBrightnessConfigurationThrowsException() { - Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS, DISPLAY_RANGE_NITS, - BACKLIGHT_RANGE); - BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res); - assertNotNull("Failed to create BrightnessMappingStrategy", strategy); - float[] lux = new float[LUX_LEVELS.length]; - for (int i = 0; i < lux.length; i++) { - lux[i] = LUX_LEVELS[i]; - } - float[] nits = getNearMinimumNits(-0.1f); - BrightnessConfiguration config = new BrightnessConfiguration.Builder() - .setCurve(lux, nits) - .build(); - Exception thrown = null; - try { - strategy.setBrightnessConfiguration(config); - } catch (IllegalArgumentException e) { - thrown = e; - } - assertNotNull("Failed to throw IllegalArgumentException", thrown); - } - - @Test - public void testSettingBrightEnouhgBrightnessConfigurationDoesNotThrowException() { - Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS, DISPLAY_RANGE_NITS, - BACKLIGHT_RANGE); - BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res); - assertNotNull("Failed to create BrightnessMappingStrategy", strategy); - float[] lux = new float[LUX_LEVELS.length]; - for (int i = 0; i < lux.length; i++) { - lux[i] = LUX_LEVELS[i]; - } - float[] nits = getNearMinimumNits(0); - BrightnessConfiguration config = new BrightnessConfiguration.Builder() - .setCurve(lux, nits) - .build(); - assertTrue("failed to set brightness configuration", - strategy.setBrightnessConfiguration(config)); - } } |