Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +2 −2 Original line number Diff line number Diff line Loading @@ -967,7 +967,7 @@ public class SettingsProvider extends ContentProvider { for (int i = 0; i < nameCount; i++) { String name = names.get(i); Setting setting = settingsState.getSettingLocked(name); pw.print("_id:"); pw.print(toDumpString(setting.getId())); pw.print("_id:"); pw.print(toDumpString(String.valueOf(setting.getId()))); pw.print(" name:"); pw.print(toDumpString(name)); if (setting.getPackageName() != null) { pw.print(" pkg:"); pw.print(setting.getPackageName()); Loading Loading @@ -2785,7 +2785,7 @@ public class SettingsProvider extends ContentProvider { switch (column) { case Settings.NameValueTable._ID -> { values[i] = setting.getId(); values[i] = String.valueOf(setting.getId()); } case Settings.NameValueTable.NAME -> { values[i] = setting.getName(); Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +45 −22 Original line number Diff line number Diff line Loading @@ -1364,7 +1364,10 @@ final class SettingsState { } try { if (writeSingleSetting(mVersion, serializer, setting.getId(), if (writeSingleSetting( mVersion, serializer, Long.toString(setting.getId()), setting.getName(), setting.getValue(), setting.getDefaultValue(), setting.getPackageName(), Loading Loading @@ -1633,7 +1636,7 @@ final class SettingsState { TypedXmlPullParser parser = Xml.resolvePullParser(in); parseStateLocked(parser); return true; } catch (XmlPullParserException | IOException e) { } catch (XmlPullParserException | IOException | NumberFormatException e) { Slog.e(LOG_TAG, "parse settings xml failed", e); return false; } finally { Loading @@ -1653,7 +1656,7 @@ final class SettingsState { } private void parseStateLocked(TypedXmlPullParser parser) throws IOException, XmlPullParserException { throws IOException, XmlPullParserException, NumberFormatException { final int outerDepth = parser.getDepth(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT Loading Loading @@ -1709,7 +1712,7 @@ final class SettingsState { @GuardedBy("mLock") private void parseSettingsLocked(TypedXmlPullParser parser) throws IOException, XmlPullParserException { throws IOException, XmlPullParserException, NumberFormatException { mVersion = parser.getAttributeInt(null, ATTR_VERSION); Loading Loading @@ -1777,7 +1780,7 @@ final class SettingsState { } } mSettings.put(name, new Setting(name, value, defaultValue, packageName, tag, fromSystem, id, isPreservedInRestore)); fromSystem, Long.valueOf(id), isPreservedInRestore)); if (DEBUG_PERSISTENCE) { Slog.i(LOG_TAG, "[RESTORED] " + name + "=" + value); Loading Loading @@ -1867,7 +1870,7 @@ final class SettingsState { private String value; private String defaultValue; private String packageName; private String id; private long id; private String tag; // Whether the default is set by the system private boolean defaultFromSystem; Loading Loading @@ -1899,30 +1902,27 @@ final class SettingsState { } public Setting(String name, String value, String defaultValue, String packageName, String tag, boolean fromSystem, String id) { String packageName, String tag, boolean fromSystem, long id) { this(name, value, defaultValue, packageName, tag, fromSystem, id, /* isOverrideableByRestore */ false); } Setting(String name, String value, String defaultValue, String packageName, String tag, boolean fromSystem, String id, String packageName, String tag, boolean fromSystem, long id, boolean isValuePreservedInRestore) { mNextId = Math.max(mNextId, Long.parseLong(id) + 1); if (NULL_VALUE.equals(value)) { value = null; } mNextId = Math.max(mNextId, id + 1); init(name, value, tag, defaultValue, packageName, fromSystem, id, isValuePreservedInRestore); } private void init(String name, String value, String tag, String defaultValue, String packageName, boolean fromSystem, String id, String packageName, boolean fromSystem, long id, boolean isValuePreservedInRestore) { this.name = name; this.value = value; this.value = internValue(value); this.tag = tag; this.defaultValue = defaultValue; this.packageName = packageName; this.defaultValue = internValue(defaultValue); this.packageName = TextUtils.safeIntern(packageName); this.id = id; this.defaultFromSystem = fromSystem; this.isValuePreservedInRestore = isValuePreservedInRestore; Loading Loading @@ -1960,7 +1960,7 @@ final class SettingsState { return isValuePreservedInRestore; } public String getId() { public long getId() { return id; } Loading Loading @@ -1993,9 +1993,6 @@ final class SettingsState { private boolean update(String value, boolean setDefault, String packageName, String tag, boolean forceNonSystemPackage, boolean overrideableByRestore, boolean resetToDefault) { if (NULL_VALUE.equals(value)) { value = null; } final boolean callerSystem = !forceNonSystemPackage && !isNull() && (isCalledFromSystem(packageName) || isSystemPackage(mContext, packageName)); Loading Loading @@ -2040,7 +2037,7 @@ final class SettingsState { } init(name, value, tag, defaultValue, packageName, defaultFromSystem, String.valueOf(mNextId++), isPreserved); mNextId++, isPreserved); return true; } Loading @@ -2052,6 +2049,32 @@ final class SettingsState { + " defaultFromSystem=" + defaultFromSystem + "}"; } /** * Interns a string if it's a common setting value. * Otherwise returns the given string. */ static String internValue(String str) { if (str == null) { return null; } switch (str) { case "true": return "true"; case "false": return "false"; case "0": return "0"; case "1": return "1"; case "": return ""; case "null": return null; // explicit null has special handling default: return str; } } private boolean shouldPreserveSetting(boolean overrideableByRestore, boolean resetToDefault, String packageName, String value) { if (resetToDefault) { Loading Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +2 −2 Original line number Diff line number Diff line Loading @@ -967,7 +967,7 @@ public class SettingsProvider extends ContentProvider { for (int i = 0; i < nameCount; i++) { String name = names.get(i); Setting setting = settingsState.getSettingLocked(name); pw.print("_id:"); pw.print(toDumpString(setting.getId())); pw.print("_id:"); pw.print(toDumpString(String.valueOf(setting.getId()))); pw.print(" name:"); pw.print(toDumpString(name)); if (setting.getPackageName() != null) { pw.print(" pkg:"); pw.print(setting.getPackageName()); Loading Loading @@ -2785,7 +2785,7 @@ public class SettingsProvider extends ContentProvider { switch (column) { case Settings.NameValueTable._ID -> { values[i] = setting.getId(); values[i] = String.valueOf(setting.getId()); } case Settings.NameValueTable.NAME -> { values[i] = setting.getName(); Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +45 −22 Original line number Diff line number Diff line Loading @@ -1364,7 +1364,10 @@ final class SettingsState { } try { if (writeSingleSetting(mVersion, serializer, setting.getId(), if (writeSingleSetting( mVersion, serializer, Long.toString(setting.getId()), setting.getName(), setting.getValue(), setting.getDefaultValue(), setting.getPackageName(), Loading Loading @@ -1633,7 +1636,7 @@ final class SettingsState { TypedXmlPullParser parser = Xml.resolvePullParser(in); parseStateLocked(parser); return true; } catch (XmlPullParserException | IOException e) { } catch (XmlPullParserException | IOException | NumberFormatException e) { Slog.e(LOG_TAG, "parse settings xml failed", e); return false; } finally { Loading @@ -1653,7 +1656,7 @@ final class SettingsState { } private void parseStateLocked(TypedXmlPullParser parser) throws IOException, XmlPullParserException { throws IOException, XmlPullParserException, NumberFormatException { final int outerDepth = parser.getDepth(); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT Loading Loading @@ -1709,7 +1712,7 @@ final class SettingsState { @GuardedBy("mLock") private void parseSettingsLocked(TypedXmlPullParser parser) throws IOException, XmlPullParserException { throws IOException, XmlPullParserException, NumberFormatException { mVersion = parser.getAttributeInt(null, ATTR_VERSION); Loading Loading @@ -1777,7 +1780,7 @@ final class SettingsState { } } mSettings.put(name, new Setting(name, value, defaultValue, packageName, tag, fromSystem, id, isPreservedInRestore)); fromSystem, Long.valueOf(id), isPreservedInRestore)); if (DEBUG_PERSISTENCE) { Slog.i(LOG_TAG, "[RESTORED] " + name + "=" + value); Loading Loading @@ -1867,7 +1870,7 @@ final class SettingsState { private String value; private String defaultValue; private String packageName; private String id; private long id; private String tag; // Whether the default is set by the system private boolean defaultFromSystem; Loading Loading @@ -1899,30 +1902,27 @@ final class SettingsState { } public Setting(String name, String value, String defaultValue, String packageName, String tag, boolean fromSystem, String id) { String packageName, String tag, boolean fromSystem, long id) { this(name, value, defaultValue, packageName, tag, fromSystem, id, /* isOverrideableByRestore */ false); } Setting(String name, String value, String defaultValue, String packageName, String tag, boolean fromSystem, String id, String packageName, String tag, boolean fromSystem, long id, boolean isValuePreservedInRestore) { mNextId = Math.max(mNextId, Long.parseLong(id) + 1); if (NULL_VALUE.equals(value)) { value = null; } mNextId = Math.max(mNextId, id + 1); init(name, value, tag, defaultValue, packageName, fromSystem, id, isValuePreservedInRestore); } private void init(String name, String value, String tag, String defaultValue, String packageName, boolean fromSystem, String id, String packageName, boolean fromSystem, long id, boolean isValuePreservedInRestore) { this.name = name; this.value = value; this.value = internValue(value); this.tag = tag; this.defaultValue = defaultValue; this.packageName = packageName; this.defaultValue = internValue(defaultValue); this.packageName = TextUtils.safeIntern(packageName); this.id = id; this.defaultFromSystem = fromSystem; this.isValuePreservedInRestore = isValuePreservedInRestore; Loading Loading @@ -1960,7 +1960,7 @@ final class SettingsState { return isValuePreservedInRestore; } public String getId() { public long getId() { return id; } Loading Loading @@ -1993,9 +1993,6 @@ final class SettingsState { private boolean update(String value, boolean setDefault, String packageName, String tag, boolean forceNonSystemPackage, boolean overrideableByRestore, boolean resetToDefault) { if (NULL_VALUE.equals(value)) { value = null; } final boolean callerSystem = !forceNonSystemPackage && !isNull() && (isCalledFromSystem(packageName) || isSystemPackage(mContext, packageName)); Loading Loading @@ -2040,7 +2037,7 @@ final class SettingsState { } init(name, value, tag, defaultValue, packageName, defaultFromSystem, String.valueOf(mNextId++), isPreserved); mNextId++, isPreserved); return true; } Loading @@ -2052,6 +2049,32 @@ final class SettingsState { + " defaultFromSystem=" + defaultFromSystem + "}"; } /** * Interns a string if it's a common setting value. * Otherwise returns the given string. */ static String internValue(String str) { if (str == null) { return null; } switch (str) { case "true": return "true"; case "false": return "false"; case "0": return "0"; case "1": return "1"; case "": return ""; case "null": return null; // explicit null has special handling default: return str; } } private boolean shouldPreserveSetting(boolean overrideableByRestore, boolean resetToDefault, String packageName, String value) { if (resetToDefault) { Loading