Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +21 −2 Original line number Diff line number Diff line Loading @@ -1259,7 +1259,8 @@ final class SettingsState { public boolean reset() { // overrideableByRestore = true as resetting to default value isn't considered a // modification. return update(this.defaultValue, false, packageName, null, true, true); return update(this.defaultValue, false, packageName, null, true, true, /* resetToDefault */ true); } public boolean isTransient() { Loading @@ -1272,6 +1273,13 @@ final class SettingsState { public boolean update(String value, boolean setDefault, String packageName, String tag, boolean forceNonSystemPackage, boolean overrideableByRestore) { return update(value, setDefault, packageName, tag, forceNonSystemPackage, overrideableByRestore, /* resetToDefault */ false); } private boolean update(String value, boolean setDefault, String packageName, String tag, boolean forceNonSystemPackage, boolean overrideableByRestore, boolean resetToDefault) { if (NULL_VALUE.equals(value)) { value = null; } Loading Loading @@ -1305,7 +1313,7 @@ final class SettingsState { } // isValuePreservedInRestore shouldn't change back to false if it has been set to true. boolean isPreserved = this.isValuePreservedInRestore || !overrideableByRestore; boolean isPreserved = shouldPreserveSetting(overrideableByRestore, resetToDefault); // Is something gonna change? if (Objects.equals(value, this.value) Loading @@ -1329,6 +1337,17 @@ final class SettingsState { + " packageName=" + packageName + " tag=" + tag + " defaultFromSystem=" + defaultFromSystem + "}"; } private boolean shouldPreserveSetting(boolean overrideableByRestore, boolean resetToDefault) { if (resetToDefault) { // By default settings are not marked as preserved. return false; } // isValuePreservedInRestore shouldn't change back to false if it has been set to true. return this.isValuePreservedInRestore || !overrideableByRestore; } } /** Loading packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -241,6 +241,18 @@ public class SettingsStateTest extends AndroidTestCase { assertTrue(settingsReader.getSettingLocked(SETTING_NAME).isValuePreservedInRestore()); } public void testResetSetting_preservedFlagIsReset() { SettingsState settingsState = getSettingStateObject(); // Initialize the setting. settingsState.insertSettingLocked(SETTING_NAME, "1", null, false, TEST_PACKAGE); // Update the setting so that preserved flag is set. settingsState.insertSettingLocked(SETTING_NAME, "2", null, false, TEST_PACKAGE); settingsState.resetSettingLocked(SETTING_NAME); assertFalse(settingsState.getSettingLocked(SETTING_NAME).isValuePreservedInRestore()); } private SettingsState getSettingStateObject() { SettingsState settingsState = new SettingsState(getContext(), mLock, mSettingsFile, 1, SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper()); Loading Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +21 −2 Original line number Diff line number Diff line Loading @@ -1259,7 +1259,8 @@ final class SettingsState { public boolean reset() { // overrideableByRestore = true as resetting to default value isn't considered a // modification. return update(this.defaultValue, false, packageName, null, true, true); return update(this.defaultValue, false, packageName, null, true, true, /* resetToDefault */ true); } public boolean isTransient() { Loading @@ -1272,6 +1273,13 @@ final class SettingsState { public boolean update(String value, boolean setDefault, String packageName, String tag, boolean forceNonSystemPackage, boolean overrideableByRestore) { return update(value, setDefault, packageName, tag, forceNonSystemPackage, overrideableByRestore, /* resetToDefault */ false); } private boolean update(String value, boolean setDefault, String packageName, String tag, boolean forceNonSystemPackage, boolean overrideableByRestore, boolean resetToDefault) { if (NULL_VALUE.equals(value)) { value = null; } Loading Loading @@ -1305,7 +1313,7 @@ final class SettingsState { } // isValuePreservedInRestore shouldn't change back to false if it has been set to true. boolean isPreserved = this.isValuePreservedInRestore || !overrideableByRestore; boolean isPreserved = shouldPreserveSetting(overrideableByRestore, resetToDefault); // Is something gonna change? if (Objects.equals(value, this.value) Loading @@ -1329,6 +1337,17 @@ final class SettingsState { + " packageName=" + packageName + " tag=" + tag + " defaultFromSystem=" + defaultFromSystem + "}"; } private boolean shouldPreserveSetting(boolean overrideableByRestore, boolean resetToDefault) { if (resetToDefault) { // By default settings are not marked as preserved. return false; } // isValuePreservedInRestore shouldn't change back to false if it has been set to true. return this.isValuePreservedInRestore || !overrideableByRestore; } } /** Loading
packages/SettingsProvider/test/src/com/android/providers/settings/SettingsStateTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -241,6 +241,18 @@ public class SettingsStateTest extends AndroidTestCase { assertTrue(settingsReader.getSettingLocked(SETTING_NAME).isValuePreservedInRestore()); } public void testResetSetting_preservedFlagIsReset() { SettingsState settingsState = getSettingStateObject(); // Initialize the setting. settingsState.insertSettingLocked(SETTING_NAME, "1", null, false, TEST_PACKAGE); // Update the setting so that preserved flag is set. settingsState.insertSettingLocked(SETTING_NAME, "2", null, false, TEST_PACKAGE); settingsState.resetSettingLocked(SETTING_NAME); assertFalse(settingsState.getSettingLocked(SETTING_NAME).isValuePreservedInRestore()); } private SettingsState getSettingStateObject() { SettingsState settingsState = new SettingsState(getContext(), mLock, mSettingsFile, 1, SettingsState.MAX_BYTES_PER_APP_PACKAGE_UNLIMITED, Looper.getMainLooper()); Loading