Merge "Make RRO defaults forward compatible"

This commit is contained in:
TreeHugger Robot
2022-02-02 16:00:15 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 8 deletions

View File

@@ -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,

View File

@@ -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