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

Commit 15bcffeb authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Report Features upon initialization"

parents 7781db89 b81216be
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -566,6 +566,11 @@ abstract class HdmiCecLocalDevice {
            return false;
        }

        reportFeatures();
        return true;
    }

    protected void reportFeatures() {
        List<Integer> localDeviceTypes = new ArrayList<>();
        for (HdmiCecLocalDevice localDevice : mService.getAllLocalDevices()) {
            localDeviceTypes.add(localDevice.mDeviceType);
@@ -579,7 +584,6 @@ abstract class HdmiCecLocalDevice {
        mService.sendCecCommand(
                HdmiCecMessageBuilder.buildReportFeatures(mAddress, mService.getCecVersion(),
                        localDeviceTypes, rcProfile, rcFeatures, deviceFeatures));
        return true;
    }

    @ServiceThreadOnly
@@ -791,6 +795,9 @@ abstract class HdmiCecLocalDevice {
    final void handleAddressAllocated(int logicalAddress, int reason) {
        assertRunOnServiceThread();
        mAddress = mPreferredAddress = logicalAddress;
        if (mService.getCecVersion() >= HdmiControlManager.HDMI_CEC_VERSION_2_0) {
            reportFeatures();
        }
        onAddressAllocated(logicalAddress, reason);
        setPreferredAddress(logicalAddress);
    }
+35 −0
Original line number Diff line number Diff line
@@ -521,6 +521,41 @@ public class HdmiControlServiceTest {
        assertThat(mNativeWrapper.getResultMessages()).contains(reportFeatures);
    }

    @Test
    public void initializeCec_14_doesNotBroadcastReportFeatures() {
        mNativeWrapper.clearResultMessages();
        mHdmiControlService.getHdmiCecConfig().setIntValue(
                HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
                HdmiControlManager.HDMI_CEC_VERSION_1_4_b);
        mHdmiControlService.setControlEnabled(true);
        mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
        mTestLooper.dispatchAll();

        HdmiCecMessage reportFeatures = HdmiCecMessageBuilder.buildReportFeatures(
                Constants.ADDR_PLAYBACK_1, HdmiControlManager.HDMI_CEC_VERSION_2_0,
                Arrays.asList(DEVICE_PLAYBACK, DEVICE_AUDIO_SYSTEM),
                mMyPlaybackDevice.getRcProfile(), mMyPlaybackDevice.getRcFeatures(),
                mMyPlaybackDevice.getDeviceFeatures());
        assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportFeatures);
    }

    @Test
    public void initializeCec_20_reportsFeaturesBroadcast() {
        mHdmiControlService.getHdmiCecConfig().setIntValue(
                HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
                HdmiControlManager.HDMI_CEC_VERSION_2_0);
        mHdmiControlService.setControlEnabled(true);
        mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
        mTestLooper.dispatchAll();

        HdmiCecMessage reportFeatures = HdmiCecMessageBuilder.buildReportFeatures(
                Constants.ADDR_PLAYBACK_1, HdmiControlManager.HDMI_CEC_VERSION_2_0,
                Arrays.asList(DEVICE_PLAYBACK, DEVICE_AUDIO_SYSTEM),
                mMyPlaybackDevice.getRcProfile(), mMyPlaybackDevice.getRcFeatures(),
                mMyPlaybackDevice.getDeviceFeatures());
        assertThat(mNativeWrapper.getResultMessages()).contains(reportFeatures);
    }

    private static class VolumeControlFeatureCallback extends
            IHdmiCecVolumeControlFeatureListener.Stub {
        boolean mCallbackReceived = false;