Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ae2d163 authored by Nathalie Le Clair's avatar Nathalie Le Clair
Browse files

Make RRO defaults forward compatible

Bug: 217499686
Test: atest HdmiCecConfigTest
Change-Id: I40854e035ac53b1e20ff46039d46af27a837f85c
parent 83567678
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -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,
+4 −2
Original line number Diff line number Diff line
@@ -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