diff options
author | Makoto Onuki <omakoto@google.com> | 2015-06-18 11:21:58 -0700 |
---|---|---|
committer | Makoto Onuki <omakoto@google.com> | 2015-06-22 11:16:14 -0700 |
commit | 3a2c3578ba5bf8642c994fa357a96eaa4a38cdc9 (patch) | |
tree | 6d0a76ed9f7418f708b31eae07c906c0e3c27244 /packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java | |
parent | 45bb0ca49a052cd6da3e4ced7709372972abdf55 (diff) | |
download | frameworks_base-3a2c3578ba5bf8642c994fa357a96eaa4a38cdc9.zip frameworks_base-3a2c3578ba5bf8642c994fa357a96eaa4a38cdc9.tar.gz frameworks_base-3a2c3578ba5bf8642c994fa357a96eaa4a38cdc9.tar.bz2 |
Allow binary value in SettingsProvider
Now a text value will be written to "value" but a binary value will be encoded
in base64 and stored in "valueBase64".
A null value will have neither value nor valueBase64.
Bug 20202004
Change-Id: I1eae936ff38e3460dc76ca20cc38f8d7e5ec6215
Diffstat (limited to 'packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java')
-rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 5137e1b..aff6ad8 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -342,7 +342,7 @@ public class SettingsProvider extends ContentProvider { } String name = values.getAsString(Settings.Secure.NAME); - if (TextUtils.isEmpty(name)) { + if (!isKeyValid(name)) { return null; } @@ -406,11 +406,10 @@ public class SettingsProvider extends ContentProvider { return 0; } - if (TextUtils.isEmpty(args.name)) { + if (!isKeyValid(args.name)) { return 0; } - switch (args.table) { case TABLE_GLOBAL: { final int userId = UserHandle.getCallingUserId(); @@ -446,10 +445,11 @@ public class SettingsProvider extends ContentProvider { return 0; } - String value = values.getAsString(Settings.Secure.VALUE); - if (TextUtils.isEmpty(value)) { + String name = values.getAsString(Settings.Secure.NAME); + if (!isKeyValid(name)) { return 0; } + String value = values.getAsString(Settings.Secure.VALUE); switch (args.table) { case TABLE_GLOBAL: { @@ -525,13 +525,20 @@ public class SettingsProvider extends ContentProvider { final int valueColumnIdx = cursor.getColumnIndex(Settings.NameValueTable.VALUE); do { - pw.append("_id:").append(cursor.getString(idColumnIdx)); - pw.append(" name:").append(cursor.getString(nameColumnIdx)); - pw.append(" value:").append(cursor.getString(valueColumnIdx)); + pw.append("_id:").append(toDumpString(cursor.getString(idColumnIdx))); + pw.append(" name:").append(toDumpString(cursor.getString(nameColumnIdx))); + pw.append(" value:").append(toDumpString(cursor.getString(valueColumnIdx))); pw.println(); } while (cursor.moveToNext()); } + private static final String toDumpString(String s) { + if (s != null) { + return s; + } + return "{null}"; + } + private void registerBroadcastReceivers() { IntentFilter userFilter = new IntentFilter(); userFilter.addAction(Intent.ACTION_USER_REMOVED); @@ -1280,6 +1287,10 @@ public class SettingsProvider extends ContentProvider { cursor.addRow(values); } + private static boolean isKeyValid(String key) { + return !(TextUtils.isEmpty(key) || SettingsState.isBinary(key)); + } + private static final class Arguments { private static final Pattern WHERE_PATTERN_WITH_PARAM_NO_BRACKETS = Pattern.compile("[\\s]*name[\\s]*=[\\s]*\\?[\\s]*"); @@ -1812,7 +1823,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 120; + private static final int SETTINGS_VERSION = 121; private final int mUserId; @@ -1940,6 +1951,10 @@ public class SettingsProvider extends ContentProvider { currentVersion = 120; } + // Before 121, we used a different string encoding logic. We just bump the version + // here; SettingsState knows how to handle pre-version 120 files. + currentVersion = 121; + // vXXX: Add new settings above this point. // Return the current version. |