Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +4 −0 Original line number Diff line number Diff line Loading @@ -1168,6 +1168,10 @@ public class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (!isConnectedToArcPort(avrDeviceInfo.getPhysicalAddress())) { displayOsd(OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT); } if (isMessageForSystemAudio(message)) { Slog.e(TAG, "Disable ARC since <Feature Abort> [Initiate ARC] is sent."); disableArcIfExist(); } return Constants.ABORT_REFUSED; } Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -775,6 +775,32 @@ public class HdmiCecLocalDeviceTvTest { assertThat(mHdmiCecLocalDeviceTv.isArcEstablished()).isTrue(); } @Test public void handleInitiateArc_featureAbort_disableArc() { // Check the ARC initiated first initiateArcAndValidate(); // Try to initiate ARC HdmiCecMessage initiateArc = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(initiateArc); mTestLooper.dispatchAll(); // Action: Send a Feature Abort message (simulating a response) HdmiCecMessage featureAbort = HdmiCecMessageBuilder.buildFeatureAbortCommand( Constants.ADDR_TV, Constants.ADDR_AUDIO_SYSTEM, Constants.MESSAGE_INITIATE_ARC, ABORT_UNRECOGNIZED_OPCODE ); mNativeWrapper.onCecMessage(featureAbort); mTestLooper.dispatchAll(); // Assertion: Verify that disableArcIfExist() is called which disable ARC assertThat(mHdmiCecLocalDeviceTv.isArcEstablished()).isFalse(); } @Test public void handleTerminateArc_noAudioDevice() { HdmiCecMessage terminateArc = HdmiCecMessageBuilder.buildTerminateArc( Loading Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +4 −0 Original line number Diff line number Diff line Loading @@ -1168,6 +1168,10 @@ public class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (!isConnectedToArcPort(avrDeviceInfo.getPhysicalAddress())) { displayOsd(OSD_MESSAGE_ARC_CONNECTED_INVALID_PORT); } if (isMessageForSystemAudio(message)) { Slog.e(TAG, "Disable ARC since <Feature Abort> [Initiate ARC] is sent."); disableArcIfExist(); } return Constants.ABORT_REFUSED; } Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -775,6 +775,32 @@ public class HdmiCecLocalDeviceTvTest { assertThat(mHdmiCecLocalDeviceTv.isArcEstablished()).isTrue(); } @Test public void handleInitiateArc_featureAbort_disableArc() { // Check the ARC initiated first initiateArcAndValidate(); // Try to initiate ARC HdmiCecMessage initiateArc = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(initiateArc); mTestLooper.dispatchAll(); // Action: Send a Feature Abort message (simulating a response) HdmiCecMessage featureAbort = HdmiCecMessageBuilder.buildFeatureAbortCommand( Constants.ADDR_TV, Constants.ADDR_AUDIO_SYSTEM, Constants.MESSAGE_INITIATE_ARC, ABORT_UNRECOGNIZED_OPCODE ); mNativeWrapper.onCecMessage(featureAbort); mTestLooper.dispatchAll(); // Assertion: Verify that disableArcIfExist() is called which disable ARC assertThat(mHdmiCecLocalDeviceTv.isArcEstablished()).isFalse(); } @Test public void handleTerminateArc_noAudioDevice() { HdmiCecMessage terminateArc = HdmiCecMessageBuilder.buildTerminateArc( Loading