Merge "HBM_ON_HDR stats requires HBM enabled for HDR playback"
This commit is contained in:
@@ -91,6 +91,7 @@ class HighBrightnessModeController {
|
||||
private int mHeight;
|
||||
private float mAmbientLux;
|
||||
private int mDisplayStatsId;
|
||||
private int mHbmStatsState = FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_OFF;
|
||||
|
||||
/**
|
||||
* If HBM is currently running, this is the start time for the current HBM session.
|
||||
@@ -278,6 +279,7 @@ class HighBrightnessModeController {
|
||||
pw.println(" mHbmMode=" + BrightnessInfo.hbmToString(mHbmMode)
|
||||
+ (mHbmMode == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR
|
||||
? "(" + getHdrBrightnessValue() + ")" : ""));
|
||||
pw.println(" mHbmStatsState=" + hbmStatsStateToString(mHbmStatsState));
|
||||
pw.println(" mHbmData=" + mHbmData);
|
||||
pw.println(" mAmbientLux=" + mAmbientLux
|
||||
+ (mIsAutoBrightnessEnabled ? "" : " (old/invalid)"));
|
||||
@@ -444,8 +446,8 @@ class HighBrightnessModeController {
|
||||
|
||||
private void updateHbmMode() {
|
||||
int newHbmMode = calculateHighBrightnessMode();
|
||||
updateHbmStats(mHbmMode, newHbmMode);
|
||||
if (mHbmMode != newHbmMode) {
|
||||
updateHbmStats(mHbmMode, newHbmMode);
|
||||
mHbmMode = newHbmMode;
|
||||
mHbmChangeCallback.run();
|
||||
}
|
||||
@@ -453,11 +455,16 @@ class HighBrightnessModeController {
|
||||
|
||||
private void updateHbmStats(int mode, int newMode) {
|
||||
int state = FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_OFF;
|
||||
if (newMode == BrightnessInfo.HIGH_BRIGHTNESS_MODE_HDR) {
|
||||
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) {
|
||||
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;
|
||||
@@ -491,6 +498,19 @@ class HighBrightnessModeController {
|
||||
mInjector.reportHbmStateChange(mDisplayStatsId, state, reason);
|
||||
}
|
||||
|
||||
private String hbmStatsStateToString(int hbmStatsState) {
|
||||
switch (hbmStatsState) {
|
||||
case FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_OFF:
|
||||
return "HBM_OFF";
|
||||
case FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_HDR:
|
||||
return "HBM_ON_HDR";
|
||||
case FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_SUNLIGHT:
|
||||
return "HBM_ON_SUNLIGHT";
|
||||
default:
|
||||
return String.valueOf(hbmStatsState);
|
||||
}
|
||||
}
|
||||
|
||||
private int calculateHighBrightnessMode() {
|
||||
if (!deviceSupportsHbm()) {
|
||||
return BrightnessInfo.HIGH_BRIGHTNESS_MODE_OFF;
|
||||
|
||||
@@ -28,7 +28,9 @@ import static com.android.server.display.AutomaticBrightnessController
|
||||
import static com.android.server.display.HighBrightnessModeController.HBM_TRANSITION_POINT_INVALID;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.anyInt;
|
||||
import static org.mockito.Mockito.eq;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -503,6 +505,24 @@ public class HighBrightnessModeControllerTest {
|
||||
eq(FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__REASON__HBM_SV_OFF_LUX_DROP));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void tetHbmStats_NbmHdrNoReport() {
|
||||
final HighBrightnessModeController hbmc = createDefaultHbm(new OffsettableClock());
|
||||
final int displayStatsId = mDisplayUniqueId.hashCode();
|
||||
|
||||
hbmc.setAutoBrightnessEnabled(AUTO_BRIGHTNESS_ENABLED);
|
||||
hbmc.onBrightnessChanged(DEFAULT_MIN);
|
||||
hbmc.getHdrListener().onHdrInfoChanged(null /*displayToken*/, 1 /*numberOfHdrLayers*/,
|
||||
DISPLAY_WIDTH, DISPLAY_HEIGHT, 0 /*flags*/);
|
||||
advanceTime(0);
|
||||
assertEquals(HIGH_BRIGHTNESS_MODE_HDR, hbmc.getHighBrightnessMode());
|
||||
|
||||
// Verify Stats HBM_ON_HDR not report
|
||||
verify(mInjectorMock, never()).reportHbmStateChange(eq(displayStatsId),
|
||||
eq(FrameworkStatsLog.DISPLAY_HBM_STATE_CHANGED__STATE__HBM_ON_HDR),
|
||||
anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHbmStats_ThermalOff() throws Exception {
|
||||
final HighBrightnessModeController hbmc = createDefaultHbm(new OffsettableClock());
|
||||
|
||||
Reference in New Issue
Block a user