Loading services/core/java/com/android/server/display/BrightnessMappingStrategy.java +5 −3 Original line number Diff line number Diff line Loading @@ -69,8 +69,10 @@ public abstract class BrightnessMappingStrategy { */ @Nullable public static BrightnessMappingStrategy create(Resources resources, DisplayDeviceConfig displayDeviceConfig) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ false, null); DisplayDeviceConfig displayDeviceConfig, DisplayWhiteBalanceController displayWhiteBalanceController) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ false, displayWhiteBalanceController); } /** Loading Loading @@ -845,7 +847,7 @@ public abstract class BrightnessMappingStrategy { float nits = mBrightnessSpline.interpolate(lux); // Adjust nits to compensate for display white balance colour strength. if (mDisplayWhiteBalanceController != null && isForIdleMode()) { if (mDisplayWhiteBalanceController != null) { nits = mDisplayWhiteBalanceController.calculateAdjustedBrightnessNits(nits); } Loading services/core/java/com/android/server/display/DisplayPowerController.java +24 −23 Original line number Diff line number Diff line Loading @@ -546,28 +546,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Seed the cached brightness saveBrightnessInfo(getScreenBrightnessSetting()); setUpAutoBrightness(resources, handler); mColorFadeEnabled = !ActivityManager.isLowRamDeviceStatic(); mColorFadeFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); mDisplayBlanksAfterDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBlanksAfterDoze); mBrightnessBucketsInDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); loadProximitySensor(); mCurrentScreenBrightnessSetting = getScreenBrightnessSetting(); mScreenBrightnessForVr = getScreenBrightnessForVrSetting(); mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting(); mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT; mTemporaryAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; DisplayWhiteBalanceSettings displayWhiteBalanceSettings = null; DisplayWhiteBalanceController displayWhiteBalanceController = null; if (mDisplayId == Display.DEFAULT_DISPLAY) { Loading Loading @@ -610,6 +588,29 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } else { mCdsi = null; } setUpAutoBrightness(resources, handler); mColorFadeEnabled = !ActivityManager.isLowRamDeviceStatic(); mColorFadeFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); mDisplayBlanksAfterDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBlanksAfterDoze); mBrightnessBucketsInDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); loadProximitySensor(); mCurrentScreenBrightnessSetting = getScreenBrightnessSetting(); mScreenBrightnessForVr = getScreenBrightnessForVrSetting(); mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting(); mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT; mTemporaryAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; } private void applyReduceBrightColorsSplineAdjustment( Loading Loading @@ -901,7 +902,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call final boolean isIdleScreenBrightnessEnabled = resources.getBoolean( R.bool.config_enableIdleScreenBrightnessMode); mInteractiveModeBrightnessMapper = BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig); mDisplayDeviceConfig, mDisplayWhiteBalanceController); if (isIdleScreenBrightnessEnabled) { mIdleModeBrightnessMapper = BrightnessMappingStrategy.createForIdleMode(resources, mDisplayDeviceConfig, mDisplayWhiteBalanceController); Loading services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java +35 −25 Original line number Diff line number Diff line Loading @@ -36,8 +36,11 @@ import android.util.Spline; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.server.display.whitebalance.DisplayWhiteBalanceController; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import java.util.Arrays; Loading Loading @@ -147,11 +150,14 @@ public class BrightnessMappingStrategyTest { private static final float TOLERANCE = 0.0001f; @Mock DisplayWhiteBalanceController mMockDwbc; @Test public void testSimpleStrategyMappingAtControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", simple); for (int i = 0; i < LUX_LEVELS.length; i++) { final float expectedLevel = MathUtils.map(PowerManager.BRIGHTNESS_OFF + 1, Loading @@ -166,7 +172,7 @@ public class BrightnessMappingStrategyTest { public void testSimpleStrategyMappingBetweenControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", simple); for (int i = 1; i < LUX_LEVELS.length; i++) { final float lux = (LUX_LEVELS[i - 1] + LUX_LEVELS[i]) / 2; Loading @@ -181,7 +187,7 @@ public class BrightnessMappingStrategyTest { public void testSimpleStrategyIgnoresNewConfiguration() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); final float[] lux = { 0f, 1f }; final float[] nits = { 0, PowerManager.BRIGHTNESS_ON }; Loading @@ -196,7 +202,7 @@ public class BrightnessMappingStrategyTest { public void testSimpleStrategyIgnoresNullConfiguration() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); strategy.setBrightnessConfiguration(null); final int N = DISPLAY_LEVELS_BACKLIGHT.length; Loading @@ -210,7 +216,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyMappingAtControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", physical); for (int i = 0; i < LUX_LEVELS.length; i++) { final float expectedLevel = MathUtils.map(DISPLAY_RANGE_NITS[0], DISPLAY_RANGE_NITS[1], Loading @@ -227,7 +233,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyMappingBetweenControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", physical); Spline brightnessToNits = Spline.createSpline(BACKLIGHT_RANGE_ZERO_TO_ONE, DISPLAY_RANGE_NITS); Loading @@ -244,7 +250,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyUsesNewConfigurations() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); final float[] lux = { 0f, 1f }; final float[] nits = { Loading @@ -269,7 +275,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyRecalculateSplines() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); float[] adjustedNits50p = new float[DISPLAY_RANGE_NITS.length]; for (int i = 0; i < DISPLAY_RANGE_NITS.length; i++) { adjustedNits50p[i] = DISPLAY_RANGE_NITS[i] * 0.5f; Loading Loading @@ -301,7 +307,7 @@ public class BrightnessMappingStrategyTest { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertTrue(strategy instanceof BrightnessMappingStrategy.PhysicalMappingStrategy); } Loading @@ -314,13 +320,13 @@ public class BrightnessMappingStrategyTest { lux[idx+1] = tmp; Resources res = createResources(lux, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); // And make sure we get the same result even if it's monotone but not increasing. lux[idx] = lux[idx+1]; res = createResources(lux, DISPLAY_LEVELS_NITS); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); } Loading @@ -333,11 +339,11 @@ public class BrightnessMappingStrategyTest { lux[lux.length - 1] = lux[lux.length - 2] + 1; Resources res = createResources(lux, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); res = createResources(lux, DISPLAY_LEVELS_BACKLIGHT); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); // Extra backlight level Loading @@ -345,14 +351,14 @@ public class BrightnessMappingStrategyTest { DISPLAY_LEVELS_BACKLIGHT, DISPLAY_LEVELS_BACKLIGHT.length+1); backlight[backlight.length - 1] = backlight[backlight.length - 2] + 1; res = createResources(LUX_LEVELS, backlight); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); // Extra nits level final float[] nits = Arrays.copyOf(DISPLAY_RANGE_NITS, DISPLAY_LEVELS_NITS.length+1); nits[nits.length - 1] = nits[nits.length - 2] + 1; res = createResources(LUX_LEVELS, nits); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); } Loading @@ -361,17 +367,17 @@ public class BrightnessMappingStrategyTest { Resources res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(EMPTY_FLOAT_ARRAY /*nitsRange*/); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(physical); res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); physical = BrightnessMappingStrategy.create(res, ddc); physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(physical); res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); physical = BrightnessMappingStrategy.create(res, ddc); physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(physical); } Loading @@ -380,10 +386,10 @@ public class BrightnessMappingStrategyTest { Resources res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc)); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc, mMockDwbc)); ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE); res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc)); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc, mMockDwbc)); } @Test Loading @@ -394,7 +400,7 @@ public class BrightnessMappingStrategyTest { // Create an idle mode bms // This will fail if it tries to fetch the wrong configuration. BrightnessMappingStrategy bms = BrightnessMappingStrategy.createForIdleMode(res, ddc, null); mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", bms); // Ensure that the config is the one we set Loading Loading @@ -586,7 +592,8 @@ public class BrightnessMappingStrategyTest { Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); // Let's start with a validity check: assertEquals(y1, strategy.getBrightness(x1), 0.0001f /* tolerance */); assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */); Loading Loading @@ -614,7 +621,8 @@ public class BrightnessMappingStrategyTest { final float y3 = GAMMA_CORRECTION_SPLINE.interpolate(x3); Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); // Validity check: assertEquals(y1, strategy.getBrightness(x1), 0.0001f /* tolerance */); assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */); Loading @@ -639,7 +647,8 @@ public class BrightnessMappingStrategyTest { // just make sure the adjustment reflects the change. Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); assertEquals(0.0f, strategy.getAutoBrightnessAdjustment(), 0.0001f /* tolerance */); strategy.addUserDataPoint(2500, 1.0f); assertEquals(+1.0f, strategy.getAutoBrightnessAdjustment(), 0.0001f /* tolerance */); Loading @@ -660,7 +669,8 @@ public class BrightnessMappingStrategyTest { final float y4 = GAMMA_CORRECTION_SPLINE.interpolate(x4); Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); // Validity, as per tradition: assertEquals(y0, strategy.getBrightness(x0), 0.0001f /* tolerance */); assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */); Loading Loading
services/core/java/com/android/server/display/BrightnessMappingStrategy.java +5 −3 Original line number Diff line number Diff line Loading @@ -69,8 +69,10 @@ public abstract class BrightnessMappingStrategy { */ @Nullable public static BrightnessMappingStrategy create(Resources resources, DisplayDeviceConfig displayDeviceConfig) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ false, null); DisplayDeviceConfig displayDeviceConfig, DisplayWhiteBalanceController displayWhiteBalanceController) { return create(resources, displayDeviceConfig, /* isForIdleMode= */ false, displayWhiteBalanceController); } /** Loading Loading @@ -845,7 +847,7 @@ public abstract class BrightnessMappingStrategy { float nits = mBrightnessSpline.interpolate(lux); // Adjust nits to compensate for display white balance colour strength. if (mDisplayWhiteBalanceController != null && isForIdleMode()) { if (mDisplayWhiteBalanceController != null) { nits = mDisplayWhiteBalanceController.calculateAdjustedBrightnessNits(nits); } Loading
services/core/java/com/android/server/display/DisplayPowerController.java +24 −23 Original line number Diff line number Diff line Loading @@ -546,28 +546,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Seed the cached brightness saveBrightnessInfo(getScreenBrightnessSetting()); setUpAutoBrightness(resources, handler); mColorFadeEnabled = !ActivityManager.isLowRamDeviceStatic(); mColorFadeFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); mDisplayBlanksAfterDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBlanksAfterDoze); mBrightnessBucketsInDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); loadProximitySensor(); mCurrentScreenBrightnessSetting = getScreenBrightnessSetting(); mScreenBrightnessForVr = getScreenBrightnessForVrSetting(); mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting(); mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT; mTemporaryAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; DisplayWhiteBalanceSettings displayWhiteBalanceSettings = null; DisplayWhiteBalanceController displayWhiteBalanceController = null; if (mDisplayId == Display.DEFAULT_DISPLAY) { Loading Loading @@ -610,6 +588,29 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } else { mCdsi = null; } setUpAutoBrightness(resources, handler); mColorFadeEnabled = !ActivityManager.isLowRamDeviceStatic(); mColorFadeFadesConfig = resources.getBoolean( com.android.internal.R.bool.config_animateScreenLights); mDisplayBlanksAfterDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBlanksAfterDoze); mBrightnessBucketsInDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); loadProximitySensor(); mCurrentScreenBrightnessSetting = getScreenBrightnessSetting(); mScreenBrightnessForVr = getScreenBrightnessForVrSetting(); mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting(); mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT; mTemporaryAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; } private void applyReduceBrightColorsSplineAdjustment( Loading Loading @@ -901,7 +902,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call final boolean isIdleScreenBrightnessEnabled = resources.getBoolean( R.bool.config_enableIdleScreenBrightnessMode); mInteractiveModeBrightnessMapper = BrightnessMappingStrategy.create(resources, mDisplayDeviceConfig); mDisplayDeviceConfig, mDisplayWhiteBalanceController); if (isIdleScreenBrightnessEnabled) { mIdleModeBrightnessMapper = BrightnessMappingStrategy.createForIdleMode(resources, mDisplayDeviceConfig, mDisplayWhiteBalanceController); Loading
services/tests/servicestests/src/com/android/server/display/BrightnessMappingStrategyTest.java +35 −25 Original line number Diff line number Diff line Loading @@ -36,8 +36,11 @@ import android.util.Spline; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; import com.android.server.display.whitebalance.DisplayWhiteBalanceController; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import java.util.Arrays; Loading Loading @@ -147,11 +150,14 @@ public class BrightnessMappingStrategyTest { private static final float TOLERANCE = 0.0001f; @Mock DisplayWhiteBalanceController mMockDwbc; @Test public void testSimpleStrategyMappingAtControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", simple); for (int i = 0; i < LUX_LEVELS.length; i++) { final float expectedLevel = MathUtils.map(PowerManager.BRIGHTNESS_OFF + 1, Loading @@ -166,7 +172,7 @@ public class BrightnessMappingStrategyTest { public void testSimpleStrategyMappingBetweenControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy simple = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", simple); for (int i = 1; i < LUX_LEVELS.length; i++) { final float lux = (LUX_LEVELS[i - 1] + LUX_LEVELS[i]) / 2; Loading @@ -181,7 +187,7 @@ public class BrightnessMappingStrategyTest { public void testSimpleStrategyIgnoresNewConfiguration() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); final float[] lux = { 0f, 1f }; final float[] nits = { 0, PowerManager.BRIGHTNESS_ON }; Loading @@ -196,7 +202,7 @@ public class BrightnessMappingStrategyTest { public void testSimpleStrategyIgnoresNullConfiguration() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); strategy.setBrightnessConfiguration(null); final int N = DISPLAY_LEVELS_BACKLIGHT.length; Loading @@ -210,7 +216,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyMappingAtControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", physical); for (int i = 0; i < LUX_LEVELS.length; i++) { final float expectedLevel = MathUtils.map(DISPLAY_RANGE_NITS[0], DISPLAY_RANGE_NITS[1], Loading @@ -227,7 +233,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyMappingBetweenControlPoints() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", physical); Spline brightnessToNits = Spline.createSpline(BACKLIGHT_RANGE_ZERO_TO_ONE, DISPLAY_RANGE_NITS); Loading @@ -244,7 +250,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyUsesNewConfigurations() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); final float[] lux = { 0f, 1f }; final float[] nits = { Loading @@ -269,7 +275,7 @@ public class BrightnessMappingStrategyTest { public void testPhysicalStrategyRecalculateSplines() { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); float[] adjustedNits50p = new float[DISPLAY_RANGE_NITS.length]; for (int i = 0; i < DISPLAY_RANGE_NITS.length; i++) { adjustedNits50p[i] = DISPLAY_RANGE_NITS[i] * 0.5f; Loading Loading @@ -301,7 +307,7 @@ public class BrightnessMappingStrategyTest { Resources res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertTrue(strategy instanceof BrightnessMappingStrategy.PhysicalMappingStrategy); } Loading @@ -314,13 +320,13 @@ public class BrightnessMappingStrategyTest { lux[idx+1] = tmp; Resources res = createResources(lux, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); // And make sure we get the same result even if it's monotone but not increasing. lux[idx] = lux[idx+1]; res = createResources(lux, DISPLAY_LEVELS_NITS); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); } Loading @@ -333,11 +339,11 @@ public class BrightnessMappingStrategyTest { lux[lux.length - 1] = lux[lux.length - 2] + 1; Resources res = createResources(lux, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); res = createResources(lux, DISPLAY_LEVELS_BACKLIGHT); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); // Extra backlight level Loading @@ -345,14 +351,14 @@ public class BrightnessMappingStrategyTest { DISPLAY_LEVELS_BACKLIGHT, DISPLAY_LEVELS_BACKLIGHT.length+1); backlight[backlight.length - 1] = backlight[backlight.length - 2] + 1; res = createResources(LUX_LEVELS, backlight); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); // Extra nits level final float[] nits = Arrays.copyOf(DISPLAY_RANGE_NITS, DISPLAY_LEVELS_NITS.length+1); nits[nits.length - 1] = nits[nits.length - 2] + 1; res = createResources(LUX_LEVELS, nits); strategy = BrightnessMappingStrategy.create(res, ddc); strategy = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(strategy); } Loading @@ -361,17 +367,17 @@ public class BrightnessMappingStrategyTest { Resources res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(EMPTY_FLOAT_ARRAY /*nitsRange*/); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc); BrightnessMappingStrategy physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(physical); res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); physical = BrightnessMappingStrategy.create(res, ddc); physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(physical); res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); physical = BrightnessMappingStrategy.create(res, ddc); physical = BrightnessMappingStrategy.create(res, ddc, mMockDwbc); assertNull(physical); } Loading @@ -380,10 +386,10 @@ public class BrightnessMappingStrategyTest { Resources res = createResources(LUX_LEVELS, EMPTY_INT_ARRAY /*brightnessLevelsBacklight*/, DISPLAY_LEVELS_NITS); DisplayDeviceConfig ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc)); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc, mMockDwbc)); ddc = createDdc(DISPLAY_RANGE_NITS, BACKLIGHT_RANGE_ZERO_TO_ONE); res = createResources(LUX_LEVELS, DISPLAY_LEVELS_BACKLIGHT); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc)); assertStrategyAdaptsToUserDataPoints(BrightnessMappingStrategy.create(res, ddc, mMockDwbc)); } @Test Loading @@ -394,7 +400,7 @@ public class BrightnessMappingStrategyTest { // Create an idle mode bms // This will fail if it tries to fetch the wrong configuration. BrightnessMappingStrategy bms = BrightnessMappingStrategy.createForIdleMode(res, ddc, null); mMockDwbc); assertNotNull("BrightnessMappingStrategy should not be null", bms); // Ensure that the config is the one we set Loading Loading @@ -586,7 +592,8 @@ public class BrightnessMappingStrategyTest { Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); // Let's start with a validity check: assertEquals(y1, strategy.getBrightness(x1), 0.0001f /* tolerance */); assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */); Loading Loading @@ -614,7 +621,8 @@ public class BrightnessMappingStrategyTest { final float y3 = GAMMA_CORRECTION_SPLINE.interpolate(x3); Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); // Validity check: assertEquals(y1, strategy.getBrightness(x1), 0.0001f /* tolerance */); assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */); Loading @@ -639,7 +647,8 @@ public class BrightnessMappingStrategyTest { // just make sure the adjustment reflects the change. Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); assertEquals(0.0f, strategy.getAutoBrightnessAdjustment(), 0.0001f /* tolerance */); strategy.addUserDataPoint(2500, 1.0f); assertEquals(+1.0f, strategy.getAutoBrightnessAdjustment(), 0.0001f /* tolerance */); Loading @@ -660,7 +669,8 @@ public class BrightnessMappingStrategyTest { final float y4 = GAMMA_CORRECTION_SPLINE.interpolate(x4); Resources resources = createResources(GAMMA_CORRECTION_LUX, GAMMA_CORRECTION_NITS); DisplayDeviceConfig ddc = createDdc(); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc); BrightnessMappingStrategy strategy = BrightnessMappingStrategy.create(resources, ddc, mMockDwbc); // Validity, as per tradition: assertEquals(y0, strategy.getBrightness(x0), 0.0001f /* tolerance */); assertEquals(y2, strategy.getBrightness(x2), 0.0001f /* tolerance */); Loading