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

Commit f26211a6 authored by Paul Colta's avatar Paul Colta
Browse files

HDMI: Update local active source in RequestActiveSourceAction callback

In RequestActiveSourceAction's callback local active source should be
updated. Until now only an <Active Source> message was broadcasted which is not enough since the internal active source is stil invalid.

Bug: 315141766
Test: atest HdmiCecLocalDeviceTvTest
Change-Id: I588b9586435283d64cfc94ecb81b63f6eff1fa3a
parent 4de6bb88
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -198,6 +198,9 @@ public final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
                        mService.sendCecCommand(HdmiCecMessageBuilder.buildActiveSource(
                                getDeviceInfo().getLogicalAddress(),
                                getDeviceInfo().getPhysicalAddress()));
                        updateActiveSource(getDeviceInfo().getLogicalAddress(),
                                getDeviceInfo().getPhysicalAddress(),
                                "RequestActiveSourceAction#finishWithCallback()");
                    }
                }
            }));
+5 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1;
import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_2;
import static com.android.server.hdmi.Constants.ADDR_RECORDER_1;
import static com.android.server.hdmi.Constants.ADDR_TV;
import static com.android.server.hdmi.HdmiCecLocalDevice.ActiveSource;
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;

import static com.google.common.truth.Truth.assertThat;
@@ -1712,18 +1713,21 @@ public class HdmiCecLocalDeviceTvTest {
                HdmiCecMessageBuilder.buildRequestActiveSource(ADDR_TV);
        HdmiCecMessage activeSourceFromTv =
                HdmiCecMessageBuilder.buildActiveSource(ADDR_TV, 0x0000);

        mHdmiControlService.getHdmiCecNetwork().clearLocalDevices();
        mNativeWrapper.setPollAddressResponse(ADDR_PLAYBACK_1, SendMessageResult.SUCCESS);
        mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
        mTestLooper.dispatchAll();

        assertThat(mNativeWrapper.getResultMessages()).contains(requestActiveSource);
        assertThat(mHdmiControlService.getLocalActiveSource()).isEqualTo(
                new ActiveSource(Constants.ADDR_INVALID, Constants.INVALID_PHYSICAL_ADDRESS));
        mNativeWrapper.clearResultMessages();
        mTestLooper.moveTimeForward(HdmiConfig.TIMEOUT_MS);
        mTestLooper.dispatchAll();

        assertThat(mNativeWrapper.getResultMessages()).contains(activeSourceFromTv);
        assertThat(mHdmiControlService.getLocalActiveSource()).isEqualTo(
                new ActiveSource(mTvLogicalAddress, mTvPhysicalAddress));
    }

    @Test