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

Commit 150d0a23 authored by Paul Colta's avatar Paul Colta Committed by Android (Google) Code Review
Browse files

Merge "HDMI: On <Report PA> on the same active path, send <Set Stream Path>" into main

parents 39529764 d088916a
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -471,6 +471,10 @@ public class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
    void startRoutingControl(int oldPath, int newPath, IHdmiControlCallback callback) {
        assertRunOnServiceThread();
        if (oldPath == newPath) {
            HdmiCecMessage setStreamPath =
                    HdmiCecMessageBuilder.buildSetStreamPath(getDeviceInfo().getLogicalAddress(),
                            oldPath);
            mService.sendCecCommand(setStreamPath);
            return;
        }
        HdmiCecMessage routingChange =
@@ -642,7 +646,8 @@ public class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
        int address = message.getSource();
        int type = message.getParams()[2];

        if (!mService.getHdmiCecNetwork().isInDeviceList(address, path)) {
        if (!ActiveSource.of(address, path).equals(getActiveSource())) {
            HdmiLogger.debug("Check if a new device is connected to the active path");
            handleNewDeviceAtTheTailOfActivePath(path);
        }
        startNewDeviceAction(ActiveSource.of(address, path), type);
+19 −0
Original line number Diff line number Diff line
@@ -2233,6 +2233,25 @@ public class HdmiCecLocalDeviceTvTest {
        assertThat(mNativeWrapper.getResultMessages()).doesNotContain(giveOsdName);
    }

    @Test
    public void handleReportPhysicalAddress_samePathAsActiveSource_differentLA_newActiveSource() {
        // This scenario can be reproduced if active source is hotplugged out and replaced with
        // another device that might have another LA.
        int physicalAddress = 0x1000;
        mHdmiControlService.setActiveSource(Constants.ADDR_PLAYBACK_1, physicalAddress,
                "HdmiControlServiceTest");
        mHdmiCecLocalDeviceTv.setActivePath(physicalAddress);
        HdmiCecMessage reportPhysicalAddressFromPlayback2 =
                HdmiCecMessageBuilder.buildReportPhysicalAddressCommand(ADDR_PLAYBACK_2,
                        physicalAddress, HdmiDeviceInfo.DEVICE_PLAYBACK);
        HdmiCecMessage setStreamPath = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV,
                physicalAddress);
        mNativeWrapper.onCecMessage(reportPhysicalAddressFromPlayback2);
        mTestLooper.dispatchAll();

        assertThat(mNativeWrapper.getResultMessages()).contains(setStreamPath);
    }

    @Test
    public void onOneTouchPlay_wakeUp_addCecDevice() {
        assertThat(mHdmiControlService.getHdmiCecNetwork().getDeviceInfoList(false))