Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c1ff994 authored by Winni Chang's avatar Winni Chang Committed by Android (Google) Code Review
Browse files

Merge "Disable ARC when system sends <Feature Abort> to <Initiate ARC>" into main

parents 69d0de6f 6f4fd1cb
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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;
        }

+26 −0
Original line number Diff line number Diff line
@@ -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(