From 8142ddd64dad18450278c74a6b6492b0504c9b9b Mon Sep 17 00:00:00 2001 From: Michal Olech Date: Mon, 30 Nov 2020 11:55:20 +0100 Subject: [PATCH] [CEC Configuration] Use listeners from the HdmiCecConfig instead of Global Settings Bug: 172905515 Test: smoke Change-Id: I12917f3ac27fd6c08e9dd74484b1a575d3910b28 --- .../server/hdmi/HdmiControlService.java | 31 +++++++++++++------ .../server/hdmi/FakeHdmiCecConfig.java | 9 ++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index b78954dcbdc16..195d5068a902a 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -468,7 +468,9 @@ public class HdmiControlService extends SystemService { mPowerStatusController.setPowerStatus(getInitialPowerStatus()); mProhibitMode = false; - mHdmiControlEnabled = readBooleanSetting(Global.HDMI_CONTROL_ENABLED, true); + mHdmiControlEnabled = mHdmiCecConfig.getIntValue( + HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED) + == HdmiControlManager.HDMI_CEC_CONTROL_ENABLED; mHdmiCecVolumeControlEnabled = readBooleanSetting( Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true); mMhlInputChangeEnabled = readBooleanSetting(Global.MHL_INPUT_SWITCHING_ENABLED, true); @@ -498,7 +500,24 @@ public class HdmiControlService extends SystemService { if (mMessageValidator == null) { mMessageValidator = new HdmiCecMessageValidator(this); } - mHdmiCecConfig.registerGlobalSettingsObserver(mIoLooper); + mHdmiCecConfig.registerGlobalSettingsObserver(mHandler.getLooper()); + mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED, + new HdmiCecConfig.SettingChangeListener() { + @Override + public void onChange(String setting) { + boolean enabled = mHdmiCecConfig.getIntValue( + HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED) + == HdmiControlManager.HDMI_CEC_CONTROL_ENABLED; + setControlEnabled(enabled); + } + }); + mHdmiCecConfig.registerChangeListener(HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION, + new HdmiCecConfig.SettingChangeListener() { + @Override + public void onChange(String setting) { + initializeCec(INITIATED_BY_ENABLE_CEC); + } + }); } private void bootCompleted() { @@ -623,9 +642,7 @@ public class HdmiControlService extends SystemService { private void registerContentObserver() { ContentResolver resolver = getContext().getContentResolver(); String[] settings = new String[] { - Global.HDMI_CONTROL_ENABLED, Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, - Global.HDMI_CEC_VERSION, Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED, Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, Global.HDMI_SYSTEM_AUDIO_CONTROL_ENABLED, @@ -651,12 +668,6 @@ public class HdmiControlService extends SystemService { String option = uri.getLastPathSegment(); boolean enabled = readBooleanSetting(option, true); switch (option) { - case Global.HDMI_CONTROL_ENABLED: - setControlEnabled(enabled); - break; - case Global.HDMI_CEC_VERSION: - initializeCec(INITIATED_BY_ENABLE_CEC); - break; case Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED: setHdmiCecVolumeControlEnabledInternal(enabled); break; diff --git a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java index e5bcedb555ac2..aeeca1a39cc03 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/FakeHdmiCecConfig.java @@ -59,6 +59,15 @@ final class FakeHdmiCecConfig extends HdmiCecConfig { + " " + " " + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + " "