Merge "Reset isValuePreservedInRestore in Setting::reset()" into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
c6947ef608
@@ -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() {
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user