Merge "Rewrite raw insert()s and some raw query()s of moved-to-global keys" into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
35dd752238
@@ -135,6 +135,7 @@ public class SettingsProvider extends ContentProvider {
|
||||
/** Operate on existing rows. */
|
||||
SqlArguments(Uri url, String where, String[] args) {
|
||||
if (url.getPathSegments().size() == 1) {
|
||||
// of the form content://settings/secure, arbitrary where clause
|
||||
this.table = url.getPathSegments().get(0);
|
||||
if (!DatabaseHelper.isValidTable(this.table)) {
|
||||
throw new IllegalArgumentException("Bad root path: " + this.table);
|
||||
@@ -146,6 +147,7 @@ public class SettingsProvider extends ContentProvider {
|
||||
} else if (!TextUtils.isEmpty(where)) {
|
||||
throw new UnsupportedOperationException("WHERE clause not supported: " + url);
|
||||
} else {
|
||||
// of the form content://settings/secure/element_name, no where clause
|
||||
this.table = url.getPathSegments().get(0);
|
||||
if (!DatabaseHelper.isValidTable(this.table)) {
|
||||
throw new IllegalArgumentException("Bad root path: " + this.table);
|
||||
@@ -153,8 +155,16 @@ public class SettingsProvider extends ContentProvider {
|
||||
if (TABLE_SYSTEM.equals(this.table) || TABLE_SECURE.equals(this.table) ||
|
||||
TABLE_GLOBAL.equals(this.table)) {
|
||||
this.where = Settings.NameValueTable.NAME + "=?";
|
||||
this.args = new String[] { url.getPathSegments().get(1) };
|
||||
final String name = url.getPathSegments().get(1);
|
||||
this.args = new String[] { name };
|
||||
// Rewrite the table for known-migrated names
|
||||
if (TABLE_SYSTEM.equals(this.table) || TABLE_SECURE.equals(this.table)) {
|
||||
if (sSecureGlobalKeys.contains(name) || sSystemGlobalKeys.contains(name)) {
|
||||
this.table = TABLE_GLOBAL;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// of the form content://bookmarks/19
|
||||
this.where = "_id=" + ContentUris.parseId(url);
|
||||
this.args = null;
|
||||
}
|
||||
@@ -848,6 +858,17 @@ public class SettingsProvider extends ContentProvider {
|
||||
if (!parseProviderList(url, initialValues)) return null;
|
||||
}
|
||||
|
||||
// If this is an insert() of a key that has been migrated to the global store,
|
||||
// redirect the operation to that store
|
||||
if (name != null) {
|
||||
if (sSecureGlobalKeys.contains(name) || sSystemGlobalKeys.contains(name)) {
|
||||
if (!TABLE_GLOBAL.equals(args.table)) {
|
||||
if (LOCAL_LOGV) Slog.i(TAG, "Rewrite of insert() of now-global key " + name);
|
||||
}
|
||||
args.table = TABLE_GLOBAL; // next condition will rewrite the user handle
|
||||
}
|
||||
}
|
||||
|
||||
// The global table is stored under the owner, always
|
||||
if (TABLE_GLOBAL.equals(args.table)) {
|
||||
desiredUserHandle = UserHandle.USER_OWNER;
|
||||
|
||||
Reference in New Issue
Block a user