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

Commit fe81dad6 authored by Marvin Ramin's avatar Marvin Ramin Committed by Automerger Merge Worker
Browse files

Merge "Limit CEC version on version reported by CEC HAL" into sc-dev am: bfe5028a

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13517972

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ide0a33054620c0a51c9485e344624a4797b1296e
parents 918ade45 bfe5028a
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -774,8 +774,14 @@ public class HdmiControlService extends SystemService {

    private void initializeCec(int initiatedBy) {
        mAddressAllocated = false;
        mCecVersion = getHdmiCecConfig().getIntValue(
        int settingsCecVersion = getHdmiCecConfig().getIntValue(
                HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION);
        int supportedCecVersion = mCecController.getVersion();

        // Limit the used CEC version to the highest supported version by HAL and selected
        // version in settings (but at least v1.4b).
        mCecVersion = Math.max(HdmiControlManager.HDMI_CEC_VERSION_1_4_B,
                Math.min(settingsCecVersion, supportedCecVersion));

        mCecController.setOption(OptionKey.SYSTEM_CEC_CONTROL, true);
        mCecController.setLanguage(mMenuLanguage);
@@ -2184,6 +2190,7 @@ public class HdmiControlService extends SystemService {

            pw.println("mProhibitMode: " + mProhibitMode);
            pw.println("mPowerStatus: " + mPowerStatusController.getPowerStatus());
            pw.println("mCecVersion: " + mCecVersion);

            // System settings
            pw.println("System_settings:");
+6 −1
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ final class FakeNativeWrapper implements NativeWrapper {
    private int mMyPhysicalAddress = 0;
    private HdmiPortInfo[] mHdmiPortInfo = null;
    private HdmiCecController.HdmiCecCallback mCallback = null;
    private int mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0;

    @Override
    public String nativeInit() {
@@ -96,7 +97,7 @@ final class FakeNativeWrapper implements NativeWrapper {

    @Override
    public int nativeGetVersion() {
        return HdmiControlManager.HDMI_CEC_VERSION_2_0;
        return mCecVersion;
    }

    @Override
@@ -132,6 +133,10 @@ final class FakeNativeWrapper implements NativeWrapper {
        mPortConnectionStatus.put(port, connected);
    }

    public void setCecVersion(@HdmiControlManager.HdmiCecVersion int cecVersion) {
        mCecVersion = cecVersion;
    }

    public void onCecMessage(HdmiCecMessage hdmiCecMessage) {
        if (mCallback == null) {
            return;
+40 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -622,6 +623,45 @@ public class HdmiControlServiceTest {
        assertEquals(runnerUid, Binder.getCallingWorkSourceUid());
    }

    @Ignore("b/180499471")
    @Test
    public void initCecVersion_limitToMinimumSupportedVersion() {
        mHdmiControlService.getHdmiCecConfig().setIntValue(
                HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
                HdmiControlManager.HDMI_CEC_VERSION_2_0);
        mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B);

        mHdmiControlService.initService();
        assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
                HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
    }

    @Ignore("b/180499471")
    @Test
    public void initCecVersion_limitToAtLeast1_4() {
        mHdmiControlService.getHdmiCecConfig().setIntValue(
                HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
                HdmiControlManager.HDMI_CEC_VERSION_2_0);
        mNativeWrapper.setCecVersion(0x0);

        mHdmiControlService.initService();
        assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
                HdmiControlManager.HDMI_CEC_VERSION_1_4_B);
    }

    @Ignore("b/180499471")
    @Test
    public void initCecVersion_useHighestMatchingVersion() {
        mHdmiControlService.getHdmiCecConfig().setIntValue(
                HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION,
                HdmiControlManager.HDMI_CEC_VERSION_2_0);
        mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0);

        mHdmiControlService.initService();
        assertThat(mHdmiControlService.getCecVersion()).isEqualTo(
                HdmiControlManager.HDMI_CEC_VERSION_2_0);
    }

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