diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecConfig.java | 20 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java | 6 |
2 files changed, 18 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java index 4792821f652b..79820a222dc0 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecConfig.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecConfig.java @@ -29,6 +29,7 @@ import android.os.Environment; import android.os.SystemProperties; import android.provider.Settings.Global; import android.util.ArrayMap; +import android.util.Slog; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; @@ -246,9 +247,11 @@ public class HdmiCecConfig { mAllowedValues.add(value); if (mContext.getResources().getBoolean(defaultResId)) { if (mDefaultValue != null) { - throw new VerificationException("Invalid CEC setup for '" - + this.getName() + "' setting. " - + "Setting already has a default value."); + Slog.e(TAG, + "Failed to set '" + value + "' as a default for '" + this.getName() + + "': Setting already has a default ('" + mDefaultValue + + "')."); + return; } mDefaultValue = value; } @@ -277,6 +280,11 @@ public class HdmiCecConfig { mContext = context; mStorageAdapter = storageAdapter; + // IMPORTANT: when adding a config value for a particular setting, register that value AFTER + // the existing values for that setting. That way, defaults set in the RRO are forward + // compatible even if the RRO doesn't include that new value yet + // (e.g. because it's ported from a previous release). + Setting hdmiCecEnabled = registerSetting( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED, R.bool.config_cecHdmiCecEnabled_userConfigurable); @@ -313,15 +321,15 @@ public class HdmiCecConfig { powerControlMode.registerValue(HdmiControlManager.POWER_CONTROL_MODE_TV, R.bool.config_cecPowerControlModeTv_allowed, R.bool.config_cecPowerControlModeTv_default); - powerControlMode.registerValue(HdmiControlManager.POWER_CONTROL_MODE_TV_AND_AUDIO_SYSTEM, - R.bool.config_cecPowerControlModeTvAndAudioSystem_allowed, - R.bool.config_cecPowerControlModeTvAndAudioSystem_default); powerControlMode.registerValue(HdmiControlManager.POWER_CONTROL_MODE_BROADCAST, R.bool.config_cecPowerControlModeBroadcast_allowed, R.bool.config_cecPowerControlModeBroadcast_default); powerControlMode.registerValue(HdmiControlManager.POWER_CONTROL_MODE_NONE, R.bool.config_cecPowerControlModeNone_allowed, R.bool.config_cecPowerControlModeNone_default); + powerControlMode.registerValue(HdmiControlManager.POWER_CONTROL_MODE_TV_AND_AUDIO_SYSTEM, + R.bool.config_cecPowerControlModeTvAndAudioSystem_allowed, + R.bool.config_cecPowerControlModeTvAndAudioSystem_default); Setting powerStateChangeOnActiveSourceLost = registerSetting( HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST, diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java index ae7b494fffbb..8e756aea27a9 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecConfigTest.java @@ -320,8 +320,10 @@ public final class HdmiCecConfigTest { @Test public void getDefaultStringValue_MultipleDefaults() { setBooleanResource(R.bool.config_cecPowerControlModeBroadcast_default, true); - assertThrows(RuntimeException.class, - () -> new HdmiCecConfig(mContext, mStorageAdapter)); + HdmiCecConfig hdmiCecConfig = new HdmiCecConfig(mContext, mStorageAdapter); + assertThat(hdmiCecConfig.getDefaultStringValue( + HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE)) + .isEqualTo(HdmiControlManager.POWER_CONTROL_MODE_BROADCAST); } @Test |