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
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user