From bf6624b603baf0d3bcb164dd066d0544033cb286 Mon Sep 17 00:00:00 2001 From: Fiona Campbell Date: Tue, 3 Mar 2020 16:48:47 +0000 Subject: [PATCH] Fix displayed brightness value in settings. Change BrightnessLevelPreferenceController to use float values for brightness instead of the int system. Change tests to use correct values and floats. Bug: b/150099686 Test: m -j99 RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.display.BrightnessLevelPreferenceControllerTest", manual Change-Id: I1a6e06b4f5532b641d766f770be351b8ca827664 --- .../BrightnessLevelPreferenceController.java | 36 +++++++++------- ...ightnessLevelPreferenceControllerTest.java | 42 ++++++++++--------- 2 files changed, 43 insertions(+), 35 deletions(-) diff --git a/src/com/android/settings/display/BrightnessLevelPreferenceController.java b/src/com/android/settings/display/BrightnessLevelPreferenceController.java index dc24ed0188f..2e545721f68 100644 --- a/src/com/android/settings/display/BrightnessLevelPreferenceController.java +++ b/src/com/android/settings/display/BrightnessLevelPreferenceController.java @@ -14,7 +14,8 @@ package com.android.settings.display; import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX; -import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma; +import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MIN; +import static com.android.settingslib.display.BrightnessUtils.convertLinearToGammaFloat; import android.content.ContentResolver; import android.content.Context; @@ -52,16 +53,16 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr private static final Uri BRIGHTNESS_FOR_VR_URI; private static final Uri BRIGHTNESS_ADJ_URI; - private final int mMinBrightness; - private final int mMaxBrightness; - private final int mMinVrBrightness; - private final int mMaxVrBrightness; + private final float mMinBrightness; + private final float mMaxBrightness; + private final float mMinVrBrightness; + private final float mMaxVrBrightness; private final ContentResolver mContentResolver; private Preference mPreference; static { - BRIGHTNESS_URI = System.getUriFor(System.SCREEN_BRIGHTNESS); + BRIGHTNESS_URI = System.getUriFor(System.SCREEN_BRIGHTNESS_FLOAT); BRIGHTNESS_FOR_VR_URI = System.getUriFor(System.SCREEN_BRIGHTNESS_FOR_VR); BRIGHTNESS_ADJ_URI = System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ); } @@ -80,10 +81,14 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr lifecycle.addObserver(this); } PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); - mMinBrightness = powerManager.getMinimumScreenBrightnessSetting(); - mMaxBrightness = powerManager.getMaximumScreenBrightnessSetting(); - mMinVrBrightness = powerManager.getMinimumScreenBrightnessForVrSetting(); - mMaxVrBrightness = powerManager.getMaximumScreenBrightnessForVrSetting(); + mMinBrightness = powerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM); + mMaxBrightness = powerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM); + mMinVrBrightness = powerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR); + mMaxVrBrightness = powerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR); mContentResolver = mContext.getContentResolver(); } @@ -129,16 +134,15 @@ public class BrightnessLevelPreferenceController extends AbstractPreferenceContr private double getCurrentBrightness() { final int value; if (isInVrMode()) { - value = convertLinearToGamma(System.getInt(mContentResolver, - System.SCREEN_BRIGHTNESS_FOR_VR, mMaxBrightness), + value = convertLinearToGammaFloat(System.getFloat(mContentResolver, + System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, mMaxBrightness), mMinVrBrightness, mMaxVrBrightness); } else { - value = convertLinearToGamma(Settings.System.getInt(mContentResolver, - System.SCREEN_BRIGHTNESS, mMinBrightness), + value = convertLinearToGammaFloat(Settings.System.getFloat(mContentResolver, + System.SCREEN_BRIGHTNESS_FLOAT, mMinBrightness), mMinBrightness, mMaxBrightness); - } - return getPercentage(value, 0, GAMMA_SPACE_MAX); + return getPercentage(value, GAMMA_SPACE_MIN, GAMMA_SPACE_MAX); } private double getPercentage(double value, int min, int max) { diff --git a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java index f5af290dcc2..15d4c973baf 100644 --- a/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/BrightnessLevelPreferenceControllerTest.java @@ -67,10 +67,14 @@ public class BrightnessLevelPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mContentResolver = mContext.getContentResolver(); - when(mPowerManager.getMinimumScreenBrightnessSetting()).thenReturn(0); - when(mPowerManager.getMaximumScreenBrightnessSetting()).thenReturn(100); - when(mPowerManager.getMinimumScreenBrightnessForVrSetting()).thenReturn(0); - when(mPowerManager.getMaximumScreenBrightnessForVrSetting()).thenReturn(100); + when(mPowerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM)).thenReturn(0.0f); + when(mPowerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM)).thenReturn(1.0f); + when(mPowerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR)).thenReturn(0.0f); + when(mPowerManager.getBrightnessConstraint( + PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR)).thenReturn(1.0f); ShadowApplication.getInstance().setSystemService(POWER_SERVICE, mPowerManager); when(mScreen.findPreference(anyString())).thenReturn(mPreference); @@ -98,7 +102,7 @@ public class BrightnessLevelPreferenceControllerTest { controller.onStart(); assertThat(shadowContentResolver.getContentObservers( - System.getUriFor(System.SCREEN_BRIGHTNESS))).isNotEmpty(); + System.getUriFor(System.SCREEN_BRIGHTNESS_FLOAT))).isNotEmpty(); assertThat(shadowContentResolver.getContentObservers( System.getUriFor(System.SCREEN_BRIGHTNESS_FOR_VR))).isNotEmpty(); assertThat(shadowContentResolver.getContentObservers( @@ -116,9 +120,9 @@ public class BrightnessLevelPreferenceControllerTest { controller.onStop(); assertThat(shadowContentResolver.getContentObservers( - System.getUriFor(System.SCREEN_BRIGHTNESS))).isEmpty(); + System.getUriFor(System.SCREEN_BRIGHTNESS_FLOAT))).isEmpty(); assertThat(shadowContentResolver.getContentObservers( - System.getUriFor(System.SCREEN_BRIGHTNESS_FOR_VR))).isEmpty(); + System.getUriFor(System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT))).isEmpty(); assertThat(shadowContentResolver.getContentObservers( System.getUriFor(System.SCREEN_AUTO_BRIGHTNESS_ADJ))).isEmpty(); } @@ -126,11 +130,11 @@ public class BrightnessLevelPreferenceControllerTest { @Test public void updateState_inVrMode_shouldSetSummaryToVrBrightness() { doReturn(true).when(mController).isInVrMode(); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR, 85); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, 0.6f); mController.updateState(mPreference); - verify(mPreference).setSummary("97%"); + verify(mPreference).setSummary("91%"); } @Test @@ -139,11 +143,11 @@ public class BrightnessLevelPreferenceControllerTest { System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_MODE, System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, 31); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FLOAT, 0.1f); mController.updateState(mPreference); - verify(mPreference).setSummary("78%"); + verify(mPreference).setSummary("54%"); } @Test @@ -152,11 +156,11 @@ public class BrightnessLevelPreferenceControllerTest { System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_MODE, System.SCREEN_BRIGHTNESS_MODE_MANUAL); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, 45); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FLOAT, 0.5f); mController.updateState(mPreference); - verify(mPreference).setSummary("85%"); + verify(mPreference).setSummary("87%"); } @Test @@ -164,11 +168,11 @@ public class BrightnessLevelPreferenceControllerTest { // VR mode doReturn(true).when(mController).isInVrMode(); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR, 105); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, 1.05f); mController.updateState(mPreference); verify(mPreference).setSummary("100%"); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR, -20); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, -20f); mController.updateState(mPreference); verify(mPreference).setSummary("0%"); @@ -178,11 +182,11 @@ public class BrightnessLevelPreferenceControllerTest { System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); reset(mPreference); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, 115); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FLOAT, 1.15f); mController.updateState(mPreference); verify(mPreference).setSummary("100%"); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, -10); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FLOAT, -10f); mController.updateState(mPreference); verify(mPreference).setSummary("0%"); @@ -191,11 +195,11 @@ public class BrightnessLevelPreferenceControllerTest { System.SCREEN_BRIGHTNESS_MODE_MANUAL); reset(mPreference); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, 115); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FLOAT, 1.15f); mController.updateState(mPreference); verify(mPreference).setSummary("100%"); - System.putInt(mContentResolver, System.SCREEN_BRIGHTNESS, -10); + System.putFloat(mContentResolver, System.SCREEN_BRIGHTNESS_FLOAT, -10f); mController.updateState(mPreference); verify(mPreference).setSummary("0%"); }