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

Commit d3748577 authored by Matt Pape's avatar Matt Pape
Browse files

Respect forceNonSystemPackage param when creating new Setting objects.

Previously, new settings created via DeviceConfig.setProperty() resulted
in the forceNonSystemPackage param being ignored and the makeDefault
param being overwritten to true. This caused new Setting objects added
this way to always save their initial value as the default value. This
caused problems in tests that tried to make local changes and later
reset them to the prior state.

Test: atest FrameworksCoreTests:DeviceConfigTest
Bug: 147862338
Change-Id: I98a4585fc39cb8c39e630c0dcd318b05a085fcc3
parent fb961bf0
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -375,6 +375,24 @@ public class DeviceConfigTest {
        assertThat(result).isEqualTo(newValue);
    }

    @Test
    public void resetToDefault_makeDefault() {
        DeviceConfig.setProperty(NAMESPACE, KEY, VALUE, true);
        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isEqualTo(VALUE);

        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS, NAMESPACE);
        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isEqualTo(VALUE);
    }

    @Test
    public void resetToDefault_doNotMakeDefault() {
        DeviceConfig.setProperty(NAMESPACE, KEY, VALUE, false);
        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isEqualTo(VALUE);

        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS, NAMESPACE);
        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isNull();
    }

    @Test
    public void getProperties_fullNamespace() {
        Properties properties = DeviceConfig.getProperties(NAMESPACE);
+8 −3
Original line number Diff line number Diff line
@@ -425,7 +425,8 @@ final class SettingsState {
            }
            newState = oldState;
        } else {
            newState = new Setting(name, value, makeDefault, packageName, tag);
            newState = new Setting(name, value, makeDefault, packageName, tag,
                    forceNonSystemPackage);
            mSettings.put(name, newState);
        }

@@ -1173,11 +1174,15 @@ final class SettingsState {

        public Setting(String name, String value, boolean makeDefault, String packageName,
                String tag) {
            this(name, value, makeDefault, packageName, tag, false);
        }

        Setting(String name, String value, boolean makeDefault, String packageName,
                String tag, boolean forceNonSystemPackage) {
            this.name = name;
            // overrideableByRestore = true as the first initialization isn't considered a
            // modification.
            update(value, makeDefault, packageName, tag, false,
                    /* overrideableByRestore */ true);
            update(value, makeDefault, packageName, tag, forceNonSystemPackage, true);
        }

        public Setting(String name, String value, String defaultValue,