summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/res/res/values/config.xml6
-rw-r--r--core/res/res/values/symbols.xml2
-rw-r--r--services/core/java/com/android/server/display/AutomaticBrightnessController.java2
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java2
-rw-r--r--services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java5
-rw-r--r--services/core/java/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategy.java2
-rw-r--r--services/core/java/com/android/server/display/feature/DisplayManagerFlags.java6
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java6
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java9
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java3
-rw-r--r--services/tests/displayservicetests/src/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategyTest.java7
11 files changed, 37 insertions, 13 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 48ce8af3737b..7f2c816e5654 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -7237,4 +7237,10 @@
<!-- The name of the system package that will hold the dependency installer role. -->
<string name="config_systemDependencyInstaller" translatable="false" />
+
+ <!-- Whether allow normal brightness when doze policy can be requested. When this is false,
+ brightness follows the display state i.e. ON means bright, DOZE means dim. If true,
+ POLICY_DOZE can also dim the screen unless parameter useNormalBrightnessForDoze of
+ DreamService#setDozeScreenState requests an exception. -->
+ <bool name="config_allowNormalBrightnessForDozePolicy">false</bool>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 850939f1fd64..2f833cfbc631 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -5799,4 +5799,6 @@
<!-- Style for Wear Material3 Button. Will only be used for sdk 36 or above. -->
<java-symbol type="style" name="Widget.DeviceDefault.Button.WearMaterial3" />
+
+ <java-symbol type="bool" name="config_allowNormalBrightnessForDozePolicy" />
</resources>
diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
index 448c42b71731..805357e79565 100644
--- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java
+++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
@@ -1280,7 +1280,7 @@ public class AutomaticBrightnessController {
private boolean shouldApplyDozeScaleFactor() {
// We don't apply the doze scale factor if we have a designated brightness curve for doze.
- return (mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled()
+ return (mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled(mContext)
? (!mUseNormalBrightnessForDoze && mDisplayPolicy == POLICY_DOZE)
|| Display.isDozeState(mDisplayState) : Display.isDozeState(mDisplayState))
&& getMode() != AUTO_BRIGHTNESS_MODE_DOZE;
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 2948ae4d83fa..945365dcf8fe 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -1399,7 +1399,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// Use doze brightness if one of following is true:
// 1. The target `state` isDozeState.
// 2. Doze power request(POLICY_DOZE) if there's no exception(useNormalBrightnessForDoze).
- final boolean useDozeBrightness = mFlags.isNormalBrightnessForDozeParameterEnabled()
+ final boolean useDozeBrightness = mFlags.isNormalBrightnessForDozeParameterEnabled(mContext)
? (!mPowerRequest.useNormalBrightnessForDoze && mPowerRequest.policy == POLICY_DOZE)
|| Display.isDozeState(state) : Display.isDozeState(state);
DisplayBrightnessState displayBrightnessState =
diff --git a/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java b/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
index a0ad49dd9f24..2c6f37448735 100644
--- a/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
+++ b/services/core/java/com/android/server/display/brightness/DisplayBrightnessStrategySelector.java
@@ -109,6 +109,8 @@ public class DisplayBrightnessStrategySelector {
private final int mDisplayId;
+ private final Context mContext;
+
/**
* The constructor of DozeBrightnessStrategy.
*/
@@ -117,6 +119,7 @@ public class DisplayBrightnessStrategySelector {
if (injector == null) {
injector = new Injector();
}
+ mContext = context;
mDisplayManagerFlags = flags;
mDisplayId = displayId;
mDozeBrightnessStrategy = injector.getDozeBrightnessStrategy();
@@ -348,7 +351,7 @@ public class DisplayBrightnessStrategySelector {
// a user can define a different display state(displayPowerRequest.dozeScreenState) too
// in the request with the Doze policy and user might request an override to force certain
// brightness.
- return (!mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled()
+ return (!mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled(mContext)
|| !displayPowerRequest.useNormalBrightnessForDoze)
&& displayPowerRequest.policy == DisplayPowerRequest.POLICY_DOZE
&& !mAllowAutoBrightnessWhileDozing
diff --git a/services/core/java/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategy.java b/services/core/java/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategy.java
index ff73693d803b..94522d197429 100644
--- a/services/core/java/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategy.java
+++ b/services/core/java/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategy.java
@@ -525,7 +525,7 @@ public class AutomaticBrightnessStrategy extends AutomaticBrightnessStrategy2
}
final boolean shouldUseDozeMode =
- mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled()
+ mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled(mContext)
? (!useNormalBrightnessForDoze && policy == POLICY_DOZE)
|| Display.isDozeState(state)
: Display.isDozeState(state);
diff --git a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
index 1a7d74ae1713..7f46bbbf0507 100644
--- a/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
+++ b/services/core/java/com/android/server/display/feature/DisplayManagerFlags.java
@@ -16,6 +16,7 @@
package com.android.server.display.feature;
+import android.content.Context;
import android.os.Build;
import android.os.SystemProperties;
import android.text.TextUtils;
@@ -461,8 +462,9 @@ public class DisplayManagerFlags {
/**
* @return Whether the useDozeBrightness parameter should be used
*/
- public boolean isNormalBrightnessForDozeParameterEnabled() {
- return mNormalBrightnessForDozeParameter.isEnabled();
+ public boolean isNormalBrightnessForDozeParameterEnabled(Context context) {
+ return mNormalBrightnessForDozeParameter.isEnabled() && context.getResources().getBoolean(
+ com.android.internal.R.bool.config_allowNormalBrightnessForDozePolicy);
}
/**
diff --git a/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
index 312df4391e2d..0e9dfedac0c9 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
@@ -1118,7 +1118,8 @@ public class AutomaticBrightnessControllerTest {
@Test
public void testAutoBrightnessInDoze_useNormalBrightnessForDozeFalse_scaleScreenOn()
throws Exception {
- when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled()).thenReturn(true);
+ when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled(mContext)).thenReturn(
+ true);
ArgumentCaptor<SensorEventListener> listenerCaptor =
ArgumentCaptor.forClass(SensorEventListener.class);
@@ -1154,7 +1155,8 @@ public class AutomaticBrightnessControllerTest {
@Test
public void testAutoBrightnessInDoze_useNormalBrightnessForDozeTrue_notScaleScreenOn()
throws Exception {
- when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled()).thenReturn(true);
+ when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled(mContext)).thenReturn(
+ true);
ArgumentCaptor<SensorEventListener> listenerCaptor =
ArgumentCaptor.forClass(SensorEventListener.class);
diff --git a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
index c9963391470e..91f1aaf603e6 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/DisplayPowerControllerTest.java
@@ -2119,7 +2119,8 @@ public final class DisplayPowerControllerTest {
@Test
public void testManualBrightness_stateOnPolicyDozeUseNormalBrightnessForDozeFalse_brightnessDoze() {
when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true);
- when(mDisplayManagerFlagsMock.isNormalBrightnessForDozeParameterEnabled()).thenReturn(true);
+ when(mDisplayManagerFlagsMock.isNormalBrightnessForDozeParameterEnabled(
+ mContext)).thenReturn(true);
mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession);
Settings.System.putInt(mContext.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
@@ -2154,7 +2155,8 @@ public final class DisplayPowerControllerTest {
@Test
public void testManualBrightness_stateOnPolicyDozeUseNormalBrightnessForDozeTrue_brightnessNormal() {
when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true);
- when(mDisplayManagerFlagsMock.isNormalBrightnessForDozeParameterEnabled()).thenReturn(true);
+ when(mDisplayManagerFlagsMock.isNormalBrightnessForDozeParameterEnabled(
+ mContext)).thenReturn(true);
mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession);
Settings.System.putInt(mContext.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
@@ -2188,7 +2190,8 @@ public final class DisplayPowerControllerTest {
@Test
public void testManualBrightness_stateDozePolicyOnUseNormalBrightnessForDozeTrue_brightnessDoze() {
when(mDisplayManagerFlagsMock.isDisplayOffloadEnabled()).thenReturn(true);
- when(mDisplayManagerFlagsMock.isNormalBrightnessForDozeParameterEnabled()).thenReturn(true);
+ when(mDisplayManagerFlagsMock.isNormalBrightnessForDozeParameterEnabled(
+ mContext)).thenReturn(true);
mHolder.dpc.setDisplayOffloadSession(mDisplayOffloadSession);
Settings.System.putInt(mContext.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS_MODE,
diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
index a6476910a5de..2ebb6c2a3ce4 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/DisplayBrightnessStrategySelectorTest.java
@@ -207,7 +207,8 @@ public final class DisplayBrightnessStrategySelectorTest {
@Test
public void selectStrategyWhenValid_useNormalBrightnessForDozeTrue_doNotSelectsDozeStrategy() {
- when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled()).thenReturn(true);
+ when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled(mContext)).thenReturn(
+ true);
DisplayManagerInternal.DisplayPowerRequest displayPowerRequest = mock(
DisplayManagerInternal.DisplayPowerRequest.class);
displayPowerRequest.policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_DOZE;
diff --git a/services/tests/displayservicetests/src/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategyTest.java b/services/tests/displayservicetests/src/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategyTest.java
index 65f8ea7bfdfc..4be96c2a2eb3 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategyTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/brightness/strategy/AutomaticBrightnessStrategyTest.java
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.ContextWrapper;
+import android.content.res.Resources;
import android.hardware.display.BrightnessConfiguration;
import android.hardware.display.DisplayManagerInternal;
import android.os.PowerManager;
@@ -76,6 +77,9 @@ public class AutomaticBrightnessStrategyTest {
@Mock
private DisplayManagerFlags mDisplayManagerFlags;
+ @Mock
+ private Resources mMockResources;
+
private BrightnessConfiguration mBrightnessConfiguration;
private float mDefaultScreenAutoBrightnessAdjustment;
private Context mContext;
@@ -378,7 +382,8 @@ public class AutomaticBrightnessStrategyTest {
reset(mAutomaticBrightnessController);
when(mAutomaticBrightnessController.isInIdleMode()).thenReturn(false);
- when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled()).thenReturn(true);
+ when(mDisplayManagerFlags.isNormalBrightnessForDozeParameterEnabled(mContext)).thenReturn(
+ true);
policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_DOZE;
// Validate interaction when automaticBrightnessController is in non-idle mode, display