Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +7 −1 Original line number Diff line number Diff line Loading @@ -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(), Loading @@ -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); } } Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java +43 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); } } Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +7 −1 Original line number Diff line number Diff line Loading @@ -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(), Loading @@ -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); } } Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecAtomLoggingTvTest.java +43 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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)); } }