Make RRO defaults forward compatible
Bug: 217499686 Test: atest HdmiCecConfigTest Change-Id: I40854e035ac53b1e20ff46039d46af27a837f85c
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -317,8 +317,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
|
||||
|
||||
Reference in New Issue
Block a user