diff --git a/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java b/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java index dd3876d8768b3..02ec10e2d49d3 100644 --- a/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java +++ b/services/core/java/com/android/server/display/whitebalance/DisplayWhiteBalanceController.java @@ -356,13 +356,15 @@ public class DisplayWhiteBalanceController implements float ambientBrightness = mBrightnessFilter.getEstimate(time); - if (mLowLightAmbientBrightnessToBiasSpline != null) { + if (ambientColorTemperature != -1.0f && + mLowLightAmbientBrightnessToBiasSpline != null) { float bias = mLowLightAmbientBrightnessToBiasSpline.interpolate(ambientBrightness); ambientColorTemperature = bias * ambientColorTemperature + (1.0f - bias) * mLowLightAmbientColorTemperature; } - if (mHighLightAmbientBrightnessToBiasSpline != null) { + if (ambientColorTemperature != -1.0f && + mHighLightAmbientBrightnessToBiasSpline != null) { float bias = mHighLightAmbientBrightnessToBiasSpline.interpolate(ambientBrightness); ambientColorTemperature = (1.0f - bias) * ambientColorTemperature + bias diff --git a/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java b/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java index 424142c56b3af..6b0798bdce228 100644 --- a/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java +++ b/services/tests/servicestests/src/com/android/server/display/whitebalance/AmbientLuxTest.java @@ -359,6 +359,33 @@ public final class AmbientLuxTest { } } + @Test + public void testLowLight_DefaultAmbient() throws Exception { + final float lowerBrightness = 10.0f; + final float upperBrightness = 50.0f; + setBrightnesses(lowerBrightness, upperBrightness); + setBiases(0.0f, 1.0f); + + DisplayWhiteBalanceController controller = + DisplayWhiteBalanceFactory.create(mHandler, mSensorManagerMock, mResourcesSpy); + final float ambientColorTemperature = -1.0f; + setEstimatedColorTemperature(controller, ambientColorTemperature); + controller.mBrightnessFilter = spy(controller.mBrightnessFilter); + + for (float t = 0.0f; t <= 1.0f; t += 0.1f) { + setEstimatedBrightnessAndUpdate(controller, + mix(lowerBrightness, upperBrightness, t)); + assertEquals(controller.mPendingAmbientColorTemperature, ambientColorTemperature, + 0.001); + } + + setEstimatedBrightnessAndUpdate(controller, 0.0f); + assertEquals(controller.mPendingAmbientColorTemperature, ambientColorTemperature, 0.001); + + setEstimatedBrightnessAndUpdate(controller, upperBrightness + 1.0f); + assertEquals(controller.mPendingAmbientColorTemperature, ambientColorTemperature, 0.001); + } + void mockThrottler() { when(mResourcesSpy.getInteger( R.integer.config_displayWhiteBalanceDecreaseDebounce)).thenReturn(0);