Report HBM_ON_SUNLIGHT when display is in hbm mode
Report HBM_ON_SUNLIGHT when display is in hbm mode. Use HBM stats state to check the transiton reason. Bug: 216339145 Test: atest HighBrightnessModeControllerTest Change-Id: I6340bfc620c213d71714c440cb662beb59b3172c
This commit is contained in:
committed by
Daniel Solomon
parent
c8b3508deb
commit
18c3cd01c2
@@ -446,30 +446,32 @@ class HighBrightnessModeController {
|
||||
|
||||
private void updateHbmMode() {
|
||||
int newHbmMode = calculateHighBrightnessMode();
|
||||
updateHbmStats(mHbmMode, newHbmMode);
|
||||
updateHbmStats(newHbmMode);
|
||||
if (mHbmMode != newHbmMode) {
|
||||
mHbmMode = newHbmMode;
|
||||
mHbmChangeCallback.run();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateHbmStats(int mode, int newMode) {
|
||||
private void updateHbmStats(int newMode) {
|
||||
int state = FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_OFF;
|
||||
if (newMode == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR
|
||||
&& getHdrBrightnessValue() > mHbmData.transitionPoint) {
|
||||
state = FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_HDR;
|
||||
} else if (newMode == BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT) {
|
||||
} else if (newMode == BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT
|
||||
&& mBrightness > mHbmData.transitionPoint) {
|
||||
state = FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_SUNLIGHT;
|
||||
}
|
||||
if (state == mHbmStatsState) {
|
||||
return;
|
||||
}
|
||||
mHbmStatsState = state;
|
||||
|
||||
int reason =
|
||||
FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__REASON__HBM_TRANSITION_REASON_UNKNOWN;
|
||||
boolean oldHbmSv = (mode == BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT);
|
||||
boolean newHbmSv = (newMode == BrightnessInfo.HIGH_BRIGHTNESS_MODE_SUNLIGHT);
|
||||
boolean oldHbmSv = (mHbmStatsState
|
||||
== FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_SUNLIGHT);
|
||||
boolean newHbmSv =
|
||||
(state == FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_SUNLIGHT);
|
||||
if (oldHbmSv && !newHbmSv) {
|
||||
// If more than one conditions are flipped and turn off HBM sunlight
|
||||
// visibility, only one condition will be reported to make it simple.
|
||||
@@ -496,6 +498,7 @@ class HighBrightnessModeController {
|
||||
}
|
||||
|
||||
mInjector.reportHbmStateChange(mDisplayStatsId, state, reason);
|
||||
mHbmStatsState = state;
|
||||
}
|
||||
|
||||
private String hbmStatsStateToString(int hbmStatsState) {
|
||||
|
||||
@@ -523,6 +523,24 @@ public class HighBrightnessModeControllerTest {
|
||||
anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void tetHbmStats_HighLuxLowBrightnessNoReport() {
|
||||
final HighBrightnessModeController hbmc = createDefaultHbm(new OffsettableClock());
|
||||
final int displayStatsId = mDisplayUniqueId.hashCode();
|
||||
|
||||
hbmc.setAutoBrightnessEnabled(AUTO_BRIGHTNESS_ENABLED);
|
||||
hbmc.onAmbientLuxChange(MINIMUM_LUX + 1);
|
||||
hbmc.onBrightnessChanged(DEFAULT_MIN);
|
||||
advanceTime(0);
|
||||
// verify in HBM sunlight mode
|
||||
assertEquals(HIGH_BRIGHTNESS_MODE_SUNLIGHT, hbmc.getHighBrightnessMode());
|
||||
|
||||
// Verify Stats HBM_ON_SUNLIGHT not report
|
||||
verify(mInjectorMock, never()).reportHbmStateChange(eq(displayStatsId),
|
||||
eq(FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_SUNLIGHT),
|
||||
anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHbmStats_ThermalOff() throws Exception {
|
||||
final HighBrightnessModeController hbmc = createDefaultHbm(new OffsettableClock());
|
||||
|
||||
Reference in New Issue
Block a user