Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -774,8 +774,14 @@ public class HdmiControlService extends SystemService { private void initializeCec(int initiatedBy) { private void initializeCec(int initiatedBy) { mAddressAllocated = false; mAddressAllocated = false; mCecVersion = getHdmiCecConfig().getIntValue( int settingsCecVersion = getHdmiCecConfig().getIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION); 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.setOption(OptionKey.SYSTEM_CEC_CONTROL, true); mCecController.setLanguage(mMenuLanguage); mCecController.setLanguage(mMenuLanguage); Loading Loading @@ -2184,6 +2190,7 @@ public class HdmiControlService extends SystemService { pw.println("mProhibitMode: " + mProhibitMode); pw.println("mProhibitMode: " + mProhibitMode); pw.println("mPowerStatus: " + mPowerStatusController.getPowerStatus()); pw.println("mPowerStatus: " + mPowerStatusController.getPowerStatus()); pw.println("mCecVersion: " + mCecVersion); // System settings // System settings pw.println("System_settings:"); pw.println("System_settings:"); Loading services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java +6 −1 Original line number Original line Diff line number Diff line Loading @@ -58,6 +58,7 @@ final class FakeNativeWrapper implements NativeWrapper { private int mMyPhysicalAddress = 0; private int mMyPhysicalAddress = 0; private HdmiPortInfo[] mHdmiPortInfo = null; private HdmiPortInfo[] mHdmiPortInfo = null; private HdmiCecController.HdmiCecCallback mCallback = null; private HdmiCecController.HdmiCecCallback mCallback = null; private int mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0; @Override @Override public String nativeInit() { public String nativeInit() { Loading Loading @@ -96,7 +97,7 @@ final class FakeNativeWrapper implements NativeWrapper { @Override @Override public int nativeGetVersion() { public int nativeGetVersion() { return HdmiControlManager.HDMI_CEC_VERSION_2_0; return mCecVersion; } } @Override @Override Loading Loading @@ -132,6 +133,10 @@ final class FakeNativeWrapper implements NativeWrapper { mPortConnectionStatus.put(port, connected); mPortConnectionStatus.put(port, connected); } } public void setCecVersion(@HdmiControlManager.HdmiCecVersion int cecVersion) { mCecVersion = cecVersion; } public void onCecMessage(HdmiCecMessage hdmiCecMessage) { public void onCecMessage(HdmiCecMessage hdmiCecMessage) { if (mCallback == null) { if (mCallback == null) { return; return; Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +40 −0 Original line number Original line Diff line number Diff line Loading @@ -49,6 +49,7 @@ import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import org.junit.Before; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.junit.runners.JUnit4; Loading Loading @@ -622,6 +623,45 @@ public class HdmiControlServiceTest { assertEquals(runnerUid, Binder.getCallingWorkSourceUid()); 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 private static class VolumeControlFeatureCallback extends IHdmiCecVolumeControlFeatureListener.Stub { IHdmiCecVolumeControlFeatureListener.Stub { boolean mCallbackReceived = false; boolean mCallbackReceived = false; Loading Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -774,8 +774,14 @@ public class HdmiControlService extends SystemService { private void initializeCec(int initiatedBy) { private void initializeCec(int initiatedBy) { mAddressAllocated = false; mAddressAllocated = false; mCecVersion = getHdmiCecConfig().getIntValue( int settingsCecVersion = getHdmiCecConfig().getIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION); 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.setOption(OptionKey.SYSTEM_CEC_CONTROL, true); mCecController.setLanguage(mMenuLanguage); mCecController.setLanguage(mMenuLanguage); Loading Loading @@ -2184,6 +2190,7 @@ public class HdmiControlService extends SystemService { pw.println("mProhibitMode: " + mProhibitMode); pw.println("mProhibitMode: " + mProhibitMode); pw.println("mPowerStatus: " + mPowerStatusController.getPowerStatus()); pw.println("mPowerStatus: " + mPowerStatusController.getPowerStatus()); pw.println("mCecVersion: " + mCecVersion); // System settings // System settings pw.println("System_settings:"); pw.println("System_settings:"); Loading
services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java +6 −1 Original line number Original line Diff line number Diff line Loading @@ -58,6 +58,7 @@ final class FakeNativeWrapper implements NativeWrapper { private int mMyPhysicalAddress = 0; private int mMyPhysicalAddress = 0; private HdmiPortInfo[] mHdmiPortInfo = null; private HdmiPortInfo[] mHdmiPortInfo = null; private HdmiCecController.HdmiCecCallback mCallback = null; private HdmiCecController.HdmiCecCallback mCallback = null; private int mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0; @Override @Override public String nativeInit() { public String nativeInit() { Loading Loading @@ -96,7 +97,7 @@ final class FakeNativeWrapper implements NativeWrapper { @Override @Override public int nativeGetVersion() { public int nativeGetVersion() { return HdmiControlManager.HDMI_CEC_VERSION_2_0; return mCecVersion; } } @Override @Override Loading Loading @@ -132,6 +133,10 @@ final class FakeNativeWrapper implements NativeWrapper { mPortConnectionStatus.put(port, connected); mPortConnectionStatus.put(port, connected); } } public void setCecVersion(@HdmiControlManager.HdmiCecVersion int cecVersion) { mCecVersion = cecVersion; } public void onCecMessage(HdmiCecMessage hdmiCecMessage) { public void onCecMessage(HdmiCecMessage hdmiCecMessage) { if (mCallback == null) { if (mCallback == null) { return; return; Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +40 −0 Original line number Original line Diff line number Diff line Loading @@ -49,6 +49,7 @@ import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import androidx.test.filters.SmallTest; import org.junit.Before; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.junit.runners.JUnit4; Loading Loading @@ -622,6 +623,45 @@ public class HdmiControlServiceTest { assertEquals(runnerUid, Binder.getCallingWorkSourceUid()); 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 private static class VolumeControlFeatureCallback extends IHdmiCecVolumeControlFeatureListener.Stub { IHdmiCecVolumeControlFeatureListener.Stub { boolean mCallbackReceived = false; boolean mCallbackReceived = false; Loading