Merge "Fix auto-brightness state sent to HBMController" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d75df52b3c
@@ -1590,12 +1590,12 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mAllowAutoBrightnessWhileDozingConfig && Display.isDozeState(state);
|
||||
final boolean autoBrightnessEnabled = mUseAutoBrightness
|
||||
&& (state == Display.STATE_ON || autoBrightnessEnabledInDoze)
|
||||
&& Float.isNaN(brightnessState)
|
||||
&& mAutomaticBrightnessController != null
|
||||
&& mBrightnessReasonTemp.getReason() != BrightnessReason.REASON_FOLLOWER;
|
||||
&& mBrightnessReasonTemp.getReason() != BrightnessReason.REASON_OVERRIDE
|
||||
&& mAutomaticBrightnessController != null;
|
||||
final boolean autoBrightnessDisabledDueToDisplayOff = mUseAutoBrightness
|
||||
&& !(state == Display.STATE_ON || autoBrightnessEnabledInDoze);
|
||||
final int autoBrightnessState = autoBrightnessEnabled
|
||||
&& mBrightnessReasonTemp.getReason() != BrightnessReason.REASON_FOLLOWER
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
|
||||
: autoBrightnessDisabledDueToDisplayOff
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
|
||||
@@ -1655,9 +1655,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mShouldResetShortTermModel);
|
||||
mShouldResetShortTermModel = false;
|
||||
}
|
||||
mBrightnessRangeController.setAutoBrightnessEnabled(mUseAutoBrightness
|
||||
mBrightnessRangeController.setAutoBrightnessEnabled(autoBrightnessEnabled
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
|
||||
: AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
|
||||
: autoBrightnessDisabledDueToDisplayOff
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
|
||||
: AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
|
||||
|
||||
if (mBrightnessTracker != null) {
|
||||
mBrightnessTracker.setShouldCollectColorSample(mBrightnessConfiguration != null
|
||||
|
||||
@@ -1296,7 +1296,7 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
mAutomaticBrightnessStrategy.isShortTermModelActive();
|
||||
mAutomaticBrightnessStrategy.setAutoBrightnessState(state,
|
||||
mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig(),
|
||||
brightnessState, mBrightnessReasonTemp.getReason(), mPowerRequest.policy,
|
||||
mBrightnessReasonTemp.getReason(), mPowerRequest.policy,
|
||||
mDisplayBrightnessController.getLastUserSetScreenBrightness(),
|
||||
userSetBrightnessChanged);
|
||||
|
||||
@@ -1306,10 +1306,12 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
|
||||
&& (mAutomaticBrightnessStrategy.getAutoBrightnessAdjustmentChanged()
|
||||
|| userSetBrightnessChanged);
|
||||
|
||||
mBrightnessRangeController.setAutoBrightnessEnabled(mAutomaticBrightnessStrategy
|
||||
.shouldUseAutoBrightness()
|
||||
mBrightnessRangeController.setAutoBrightnessEnabled(
|
||||
mAutomaticBrightnessStrategy.isAutoBrightnessEnabled()
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
|
||||
: AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
|
||||
: mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff()
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
|
||||
: AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
|
||||
|
||||
boolean updateScreenBrightnessSetting = false;
|
||||
float currentBrightnessSetting = mDisplayBrightnessController.getCurrentBrightness();
|
||||
|
||||
@@ -73,6 +73,9 @@ public class AutomaticBrightnessStrategy {
|
||||
// the user has enabled the auto-brightness from the settings, it is disabled because the
|
||||
// display is off
|
||||
private boolean mIsAutoBrightnessEnabled = false;
|
||||
// Indicates if auto-brightness is disabled due to the display being off. Needed for metric
|
||||
// purposes.
|
||||
private boolean mAutoBrightnessDisabledDueToDisplayOff;
|
||||
// If the auto-brightness model for the last manual changes done by the user.
|
||||
private boolean mIsShortTermModelActive = false;
|
||||
|
||||
@@ -96,24 +99,21 @@ public class AutomaticBrightnessStrategy {
|
||||
* AutomaticBrightnessController accounting for any manual changes made by the user.
|
||||
*/
|
||||
public void setAutoBrightnessState(int targetDisplayState,
|
||||
boolean allowAutoBrightnessWhileDozingConfig,
|
||||
float brightnessState, int brightnessReason, int policy,
|
||||
boolean allowAutoBrightnessWhileDozingConfig, int brightnessReason, int policy,
|
||||
float lastUserSetScreenBrightness, boolean userSetBrightnessChanged) {
|
||||
final boolean autoBrightnessEnabledInDoze =
|
||||
allowAutoBrightnessWhileDozingConfig
|
||||
&& Display.isDozeState(targetDisplayState);
|
||||
mIsAutoBrightnessEnabled = shouldUseAutoBrightness()
|
||||
&& (targetDisplayState == Display.STATE_ON || autoBrightnessEnabledInDoze)
|
||||
&& (Float.isNaN(brightnessState)
|
||||
|| brightnessReason == BrightnessReason.REASON_TEMPORARY
|
||||
|| brightnessReason == BrightnessReason.REASON_BOOST)
|
||||
&& mAutomaticBrightnessController != null
|
||||
&& brightnessReason != BrightnessReason.REASON_FOLLOWER;
|
||||
final boolean autoBrightnessDisabledDueToDisplayOff = shouldUseAutoBrightness()
|
||||
&& brightnessReason != BrightnessReason.REASON_OVERRIDE
|
||||
&& mAutomaticBrightnessController != null;
|
||||
mAutoBrightnessDisabledDueToDisplayOff = shouldUseAutoBrightness()
|
||||
&& !(targetDisplayState == Display.STATE_ON || autoBrightnessEnabledInDoze);
|
||||
final int autoBrightnessState = mIsAutoBrightnessEnabled
|
||||
&& brightnessReason != BrightnessReason.REASON_FOLLOWER
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED
|
||||
: autoBrightnessDisabledDueToDisplayOff
|
||||
: mAutoBrightnessDisabledDueToDisplayOff
|
||||
? AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE
|
||||
: AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED;
|
||||
|
||||
@@ -125,6 +125,10 @@ public class AutomaticBrightnessStrategy {
|
||||
return mIsAutoBrightnessEnabled;
|
||||
}
|
||||
|
||||
public boolean isAutoBrightnessDisabledDueToDisplayOff() {
|
||||
return mAutoBrightnessDisabledDueToDisplayOff;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the {@link BrightnessConfiguration} that is currently being used by the associated
|
||||
* display.
|
||||
|
||||
@@ -844,6 +844,155 @@ public final class DisplayPowerController2Test {
|
||||
verify(mHolder.screenOffBrightnessSensorController).stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessEnabled_DisplayIsOn() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController)
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessEnabled_DisplayIsInDoze() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
mContext.getOrCreateTestableResources().addOverride(
|
||||
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
|
||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController)
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_ManualBrightnessMode() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
// One triggered by the test, the other by handleBrightnessModeChange
|
||||
verify(mHolder.automaticBrightnessController, times(2)).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController, times(2))
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_DisplayIsOff() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_OFF);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_OFF,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController).setAutoBrightnessEnabled(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_DisplayIsInDoze() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
mContext.getOrCreateTestableResources().addOverride(
|
||||
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, false);
|
||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController).setAutoBrightnessEnabled(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_FollowerDisplay() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
mHolder.dpc.setBrightnessToFollow(0.3f, -1, 0, /* slowChange= */ false);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
// One triggered by the test, the other by handleBrightnessModeChange
|
||||
verify(mHolder.automaticBrightnessController, times(2)).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
|
||||
// HBM should be allowed for the follower display
|
||||
verify(mHolder.hbmController)
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
|
||||
float brightness = 0.3f;
|
||||
|
||||
@@ -849,6 +849,155 @@ public final class DisplayPowerControllerTest {
|
||||
verify(mHolder.screenOffBrightnessSensorController).stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessEnabled_DisplayIsOn() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController)
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessEnabled_DisplayIsInDoze() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
mContext.getOrCreateTestableResources().addOverride(
|
||||
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, true);
|
||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController)
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_ManualBrightnessMode() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
// One triggered by the test, the other by handleBrightnessModeChange
|
||||
verify(mHolder.automaticBrightnessController, times(2)).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController, times(2))
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_DisplayIsOff() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_OFF;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_OFF);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_OFF,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController).setAutoBrightnessEnabled(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_DisplayIsInDoze() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
mContext.getOrCreateTestableResources().addOverride(
|
||||
com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing, false);
|
||||
mHolder = createDisplayPowerController(DISPLAY_ID, UNIQUE_ID);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_DOZE;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_DOZE);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
verify(mHolder.automaticBrightnessController).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_DOZE,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
verify(mHolder.hbmController).setAutoBrightnessEnabled(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessDisabled_FollowerDisplay() {
|
||||
Settings.System.putInt(mContext.getContentResolver(),
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE,
|
||||
Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
|
||||
mHolder.dpc.setBrightnessToFollow(0.3f, -1, 0, /* slowChange= */ false);
|
||||
|
||||
DisplayPowerRequest dpr = new DisplayPowerRequest();
|
||||
dpr.policy = DisplayPowerRequest.POLICY_BRIGHT;
|
||||
when(mHolder.displayPowerState.getScreenState()).thenReturn(Display.STATE_ON);
|
||||
mHolder.dpc.requestPowerState(dpr, /* waitForNegativeProximity= */ false);
|
||||
advanceTime(1); // Run updatePowerState
|
||||
|
||||
// One triggered by the test, the other by handleBrightnessModeChange
|
||||
verify(mHolder.automaticBrightnessController, times(2)).configure(
|
||||
AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
|
||||
/* configuration= */ null, PowerManager.BRIGHTNESS_INVALID_FLOAT,
|
||||
/* userChangedBrightness= */ false, /* adjustment= */ 0,
|
||||
/* userChangedAutoBrightnessAdjustment= */ false, DisplayPowerRequest.POLICY_BRIGHT,
|
||||
/* shouldResetShortTermModel= */ false
|
||||
);
|
||||
|
||||
// HBM should be allowed for the follower display
|
||||
verify(mHolder.hbmController)
|
||||
.setAutoBrightnessEnabled(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBrightnessNitsPersistWhenDisplayDeviceChanges() {
|
||||
float brightness = 0.3f;
|
||||
|
||||
@@ -96,32 +96,101 @@ public class AutomaticBrightnessStrategyTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setAutoBrightnessWhenDisabled() {
|
||||
public void testAutoBrightnessState_AutoBrightnessDisabled() {
|
||||
mAutomaticBrightnessStrategy.setUseAutoBrightness(false);
|
||||
int targetDisplayState = Display.STATE_ON;
|
||||
boolean allowAutoBrightnessWhileDozing = false;
|
||||
float brightnessState = Float.NaN;
|
||||
int brightnessReason = BrightnessReason.REASON_OVERRIDE;
|
||||
int brightnessReason = BrightnessReason.REASON_UNKNOWN;
|
||||
int policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_BRIGHT;
|
||||
float lastUserSetBrightness = 0.2f;
|
||||
boolean userSetBrightnessChanged = true;
|
||||
mAutomaticBrightnessStrategy.updatePendingAutoBrightnessAdjustments(true);
|
||||
mAutomaticBrightnessStrategy.setAutoBrightnessState(targetDisplayState,
|
||||
allowAutoBrightnessWhileDozing, brightnessState, brightnessReason, policy,
|
||||
lastUserSetBrightness, userSetBrightnessChanged);
|
||||
allowAutoBrightnessWhileDozing, brightnessReason, policy, lastUserSetBrightness,
|
||||
userSetBrightnessChanged);
|
||||
verify(mAutomaticBrightnessController)
|
||||
.configure(AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
|
||||
mBrightnessConfiguration,
|
||||
lastUserSetBrightness,
|
||||
userSetBrightnessChanged, 0.5f,
|
||||
false, policy, true);
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessEnabled());
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setAutoBrightnessWhenEnabledAndDisplayIsDozing() {
|
||||
public void testAutoBrightnessState_DisplayIsOff() {
|
||||
mAutomaticBrightnessStrategy.setUseAutoBrightness(true);
|
||||
int targetDisplayState = Display.STATE_OFF;
|
||||
boolean allowAutoBrightnessWhileDozing = false;
|
||||
int brightnessReason = BrightnessReason.REASON_UNKNOWN;
|
||||
int policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_OFF;
|
||||
float lastUserSetBrightness = 0.2f;
|
||||
boolean userSetBrightnessChanged = true;
|
||||
mAutomaticBrightnessStrategy.updatePendingAutoBrightnessAdjustments(true);
|
||||
mAutomaticBrightnessStrategy.setAutoBrightnessState(targetDisplayState,
|
||||
allowAutoBrightnessWhileDozing, brightnessReason, policy, lastUserSetBrightness,
|
||||
userSetBrightnessChanged);
|
||||
verify(mAutomaticBrightnessController)
|
||||
.configure(AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
|
||||
mBrightnessConfiguration,
|
||||
lastUserSetBrightness,
|
||||
userSetBrightnessChanged, 0.5f,
|
||||
false, policy, true);
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessEnabled());
|
||||
assertTrue(mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessState_DisplayIsInDoze_ConfigDoesNotAllow() {
|
||||
mAutomaticBrightnessStrategy.setUseAutoBrightness(true);
|
||||
int targetDisplayState = Display.STATE_DOZE;
|
||||
boolean allowAutoBrightnessWhileDozing = false;
|
||||
int brightnessReason = BrightnessReason.REASON_UNKNOWN;
|
||||
int policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_DOZE;
|
||||
float lastUserSetBrightness = 0.2f;
|
||||
boolean userSetBrightnessChanged = true;
|
||||
mAutomaticBrightnessStrategy.updatePendingAutoBrightnessAdjustments(true);
|
||||
mAutomaticBrightnessStrategy.setAutoBrightnessState(targetDisplayState,
|
||||
allowAutoBrightnessWhileDozing, brightnessReason, policy, lastUserSetBrightness,
|
||||
userSetBrightnessChanged);
|
||||
verify(mAutomaticBrightnessController)
|
||||
.configure(AutomaticBrightnessController.AUTO_BRIGHTNESS_OFF_DUE_TO_DISPLAY_STATE,
|
||||
mBrightnessConfiguration,
|
||||
lastUserSetBrightness,
|
||||
userSetBrightnessChanged, 0.5f,
|
||||
false, policy, true);
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessEnabled());
|
||||
assertTrue(mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessState_BrightnessReasonIsOverride() {
|
||||
mAutomaticBrightnessStrategy.setUseAutoBrightness(true);
|
||||
int targetDisplayState = Display.STATE_ON;
|
||||
boolean allowAutoBrightnessWhileDozing = false;
|
||||
int brightnessReason = BrightnessReason.REASON_OVERRIDE;
|
||||
int policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_BRIGHT;
|
||||
float lastUserSetBrightness = 0.2f;
|
||||
boolean userSetBrightnessChanged = true;
|
||||
mAutomaticBrightnessStrategy.updatePendingAutoBrightnessAdjustments(true);
|
||||
mAutomaticBrightnessStrategy.setAutoBrightnessState(targetDisplayState,
|
||||
allowAutoBrightnessWhileDozing, brightnessReason, policy, lastUserSetBrightness,
|
||||
userSetBrightnessChanged);
|
||||
verify(mAutomaticBrightnessController)
|
||||
.configure(AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED,
|
||||
mBrightnessConfiguration,
|
||||
lastUserSetBrightness,
|
||||
userSetBrightnessChanged, 0.5f,
|
||||
false, policy, true);
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessEnabled());
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAutoBrightnessState_DisplayIsInDoze_ConfigDoesAllow() {
|
||||
mAutomaticBrightnessStrategy.setUseAutoBrightness(true);
|
||||
int targetDisplayState = Display.STATE_DOZE;
|
||||
float brightnessState = Float.NaN;
|
||||
boolean allowAutoBrightnessWhileDozing = true;
|
||||
int brightnessReason = BrightnessReason.REASON_DOZE;
|
||||
int policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_DOZE;
|
||||
@@ -131,23 +200,24 @@ public class AutomaticBrightnessStrategyTest {
|
||||
Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, 0.4f);
|
||||
mAutomaticBrightnessStrategy.updatePendingAutoBrightnessAdjustments(false);
|
||||
mAutomaticBrightnessStrategy.setAutoBrightnessState(targetDisplayState,
|
||||
allowAutoBrightnessWhileDozing, brightnessState, brightnessReason, policy,
|
||||
lastUserSetBrightness, userSetBrightnessChanged);
|
||||
allowAutoBrightnessWhileDozing, brightnessReason, policy, lastUserSetBrightness,
|
||||
userSetBrightnessChanged);
|
||||
verify(mAutomaticBrightnessController)
|
||||
.configure(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
|
||||
mBrightnessConfiguration,
|
||||
lastUserSetBrightness,
|
||||
userSetBrightnessChanged, 0.4f,
|
||||
true, policy, true);
|
||||
assertTrue(mAutomaticBrightnessStrategy.isAutoBrightnessEnabled());
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setAutoBrightnessWhenEnabledAndDisplayIsOn() {
|
||||
public void testAutoBrightnessState_DisplayIsOn() {
|
||||
mAutomaticBrightnessStrategy.setUseAutoBrightness(true);
|
||||
int targetDisplayState = Display.STATE_ON;
|
||||
float brightnessState = Float.NaN;
|
||||
boolean allowAutoBrightnessWhileDozing = false;
|
||||
int brightnessReason = BrightnessReason.REASON_OVERRIDE;
|
||||
int brightnessReason = BrightnessReason.REASON_UNKNOWN;
|
||||
float lastUserSetBrightness = 0.2f;
|
||||
boolean userSetBrightnessChanged = true;
|
||||
int policy = DisplayManagerInternal.DisplayPowerRequest.POLICY_BRIGHT;
|
||||
@@ -156,14 +226,16 @@ public class AutomaticBrightnessStrategyTest {
|
||||
Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ, pendingBrightnessAdjustment);
|
||||
mAutomaticBrightnessStrategy.updatePendingAutoBrightnessAdjustments(false);
|
||||
mAutomaticBrightnessStrategy.setAutoBrightnessState(targetDisplayState,
|
||||
allowAutoBrightnessWhileDozing, brightnessState, brightnessReason, policy,
|
||||
lastUserSetBrightness, userSetBrightnessChanged);
|
||||
allowAutoBrightnessWhileDozing, brightnessReason, policy, lastUserSetBrightness,
|
||||
userSetBrightnessChanged);
|
||||
verify(mAutomaticBrightnessController)
|
||||
.configure(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED,
|
||||
mBrightnessConfiguration,
|
||||
lastUserSetBrightness,
|
||||
userSetBrightnessChanged, pendingBrightnessAdjustment,
|
||||
true, policy, true);
|
||||
assertTrue(mAutomaticBrightnessStrategy.isAutoBrightnessEnabled());
|
||||
assertFalse(mAutomaticBrightnessStrategy.isAutoBrightnessDisabledDueToDisplayOff());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user