Merge "HDMI: Update eARC atom logging with new log reasons" into main

This commit is contained in:
Paul Colța
2023-07-14 18:21:18 +00:00
committed by Android (Google) Code Review
2 changed files with 50 additions and 1 deletions

View File

@@ -4855,11 +4855,13 @@ public class HdmiControlService extends SystemService {
@ServiceThreadOnly
void handleEarcStateChange(int status, int portId) {
assertRunOnServiceThread();
int oldEarcStatus = getEarcStatus();
if (!getPortInfo(portId).isEarcSupported()) {
Slog.w(TAG, "Tried to update eARC status on a port that doesn't support eARC.");
getAtomWriter().earcStatusChanged(isEarcSupported(), isEarcEnabled(), oldEarcStatus,
status, HdmiStatsEnums.LOG_REASON_EARC_STATUS_CHANGED_UNSUPPORTED_PORT);
return;
}
int oldEarcStatus = getEarcStatus();
if (mEarcLocalDevice != null) {
mEarcLocalDevice.handleEarcStateChange(status);
getAtomWriter().earcStatusChanged(isEarcSupported(), isEarcEnabled(),
@@ -4872,6 +4874,10 @@ public class HdmiControlService extends SystemService {
startArcAction(true, null);
getAtomWriter().earcStatusChanged(isEarcSupported(), isEarcEnabled(),
oldEarcStatus, status, HdmiStatsEnums.LOG_REASON_EARC_STATUS_CHANGED);
} else {
getAtomWriter().earcStatusChanged(isEarcSupported(), isEarcEnabled(),
oldEarcStatus, status,
HdmiStatsEnums.LOG_REASON_EARC_STATUS_CHANGED_WRONG_STATE);
}
}

View File

@@ -19,7 +19,9 @@ import static com.android.server.hdmi.Constants.HDMI_EARC_STATUS_EARC_PENDING;
import static com.android.server.hdmi.Constants.HDMI_EARC_STATUS_UNKNOWN;
import static com.android.server.hdmi.HdmiControlService.WAKE_UP_SCREEN_ON;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
@@ -206,4 +208,45 @@ public class HdmiCecAtomLoggingTvTest {
.earcStatusChanged(false, false, HDMI_EARC_STATUS_UNKNOWN,
HDMI_EARC_STATUS_UNKNOWN, HdmiStatsEnums.LOG_REASON_WAKE);
}
@Test
public void testEarcStatusChanged_handleEarcStateChange_unSupportedPort_writesAtom() {
// Initialize HDMI port with eARC not supported.
HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[1];
hdmiPortInfos[0] =
new HdmiPortInfo.Builder(EARC_PORT_ID, HdmiPortInfo.PORT_OUTPUT, 0x0000)
.setCecSupported(true)
.setMhlSupported(false)
.setArcSupported(false)
.setEarcSupported(false)
.build();
mNativeWrapper.setPortInfo(hdmiPortInfos);
mNativeWrapper.setPortConnectionStatus(EARC_PORT_ID, true);
mHdmiControlServiceSpy.initService();
mTestLooper.dispatchAll();
mHdmiControlServiceSpy.setEarcEnabled(HdmiControlManager.EARC_FEATURE_ENABLED);
mTestLooper.dispatchAll();
Mockito.clearInvocations(mHdmiCecAtomWriterSpy);
mHdmiControlServiceSpy.handleEarcStateChange(HDMI_EARC_STATUS_EARC_PENDING, EARC_PORT_ID);
verify(mHdmiCecAtomWriterSpy, times(1))
.earcStatusChanged(eq(false), eq(true), anyInt(),
eq(HDMI_EARC_STATUS_EARC_PENDING),
eq(HdmiStatsEnums.LOG_REASON_EARC_STATUS_CHANGED_UNSUPPORTED_PORT));
}
@Test
public void testEarcStatusChanged_handleEarcStateChange_wrongState_writesAtom() {
mHdmiControlServiceSpy.setEarcEnabled(HdmiControlManager.EARC_FEATURE_DISABLED);
mTestLooper.dispatchAll();
Mockito.clearInvocations(mHdmiCecAtomWriterSpy);
// mEarcLocalDevice should be empty since eARC is disabled.
mHdmiControlServiceSpy.handleEarcStateChange(HDMI_EARC_STATUS_EARC_PENDING, EARC_PORT_ID);
verify(mHdmiCecAtomWriterSpy, times(1))
.earcStatusChanged(eq(true), eq(false), anyInt(),
eq(HDMI_EARC_STATUS_EARC_PENDING),
eq(HdmiStatsEnums.LOG_REASON_EARC_STATUS_CHANGED_WRONG_STATE));
}
}