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

Commit fc47a302 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: Icc97ecef15a1da2d013f42fccc1256ad948923cf
parents 912b2515 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;