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 Original line Diff line number Diff line
@@ -566,6 +566,11 @@ abstract class HdmiCecLocalDevice {
            return false;
            return false;
        }
        }


        reportFeatures();
        return true;
    }

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


    @ServiceThreadOnly
    @ServiceThreadOnly
@@ -791,6 +795,9 @@ abstract class HdmiCecLocalDevice {
    final void handleAddressAllocated(int logicalAddress, int reason) {
    final void handleAddressAllocated(int logicalAddress, int reason) {
        assertRunOnServiceThread();
        assertRunOnServiceThread();
        mAddress = mPreferredAddress = logicalAddress;
        mAddress = mPreferredAddress = logicalAddress;
        if (mService.getCecVersion() >= HdmiControlManager.HDMI_CEC_VERSION_2_0) {
            reportFeatures();
        }
        onAddressAllocated(logicalAddress, reason);
        onAddressAllocated(logicalAddress, reason);
        setPreferredAddress(logicalAddress);
        setPreferredAddress(logicalAddress);
    }
    }
+35 −0
Original line number Original line Diff line number Diff line
@@ -521,6 +521,41 @@ public class HdmiControlServiceTest {
        assertThat(mNativeWrapper.getResultMessages()).contains(reportFeatures);
        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
    private static class VolumeControlFeatureCallback extends
            IHdmiCecVolumeControlFeatureListener.Stub {
            IHdmiCecVolumeControlFeatureListener.Stub {
        boolean mCallbackReceived = false;
        boolean mCallbackReceived = false;