Loading core/java/android/content/ContentResolver.java +2 −2 Original line number Diff line number Diff line Loading @@ -1219,7 +1219,7 @@ public abstract class ContentResolver { public final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer) { registerContentObserver(uri, notifyForDescendents, observer, UserHandle.myUserId()); registerContentObserver(uri, notifyForDescendents, observer, UserHandle.getCallingUserId()); } /** @hide - designated user version */ Loading Loading @@ -1283,7 +1283,7 @@ public abstract class ContentResolver { * @see #requestSync(android.accounts.Account, String, android.os.Bundle) */ public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) { notifyChange(uri, observer, syncToNetwork, UserHandle.myUserId()); notifyChange(uri, observer, syncToNetwork, UserHandle.getCallingUserId()); } /** Loading core/java/android/content/ContentService.java +0 −4 Original line number Diff line number Diff line Loading @@ -154,15 +154,11 @@ public final class ContentService extends IContentService.Stub { throw new IllegalArgumentException("You must pass a valid uri and observer"); } // STOPSHIP: disable the multi-user permission checks until a solid fix for the // content provider / observer case is in place. /* final int callingUser = UserHandle.getCallingUserId(); if (callingUser != userHandle) { mContext.enforceCallingOrSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL, "no permission to observe other users' provider view"); } */ if (userHandle < 0) { if (userHandle == UserHandle.USER_CURRENT) { Loading packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +53 −51 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import android.app.ActivityManager; import android.app.ActivityManagerNative; import android.app.backup.BackupManager; import android.content.BroadcastReceiver; import android.content.ContentProvider; Loading @@ -33,20 +32,17 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.content.res.AssetFileDescriptor; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteQueryBuilder; import android.database.sqlite.SQLiteStatement; import android.media.RingtoneManager; import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.FileObserver; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; Loading Loading @@ -656,10 +652,13 @@ public class SettingsProvider extends ContentProvider { } } // Okay, permission checks have cleared. Reset to our own identity so we can // manipulate all users' data with impunity. long oldId = Binder.clearCallingIdentity(); try { // Note: we assume that get/put operations for moved-to-global names have already // been directed to the new location on the caller side (otherwise we'd fix them // up here). DatabaseHelper dbHelper; SettingsCache cache; Loading Loading @@ -704,6 +703,9 @@ public class SettingsProvider extends ContentProvider { } else { Slog.w(TAG, "call() with invalid method: " + method); } } finally { Binder.restoreCallingIdentity(oldId); } return null; } Loading Loading @@ -758,7 +760,7 @@ public class SettingsProvider extends ContentProvider { return queryForUser(url, select, where, whereArgs, sort, UserHandle.getCallingUserId()); } public Cursor queryForUser(Uri url, String[] select, String where, String[] whereArgs, private Cursor queryForUser(Uri url, String[] select, String where, String[] whereArgs, String sort, int forUser) { if (LOCAL_LOGV) Slog.v(TAG, "query(" + url + ") for user " + forUser); SqlArguments args = new SqlArguments(url, where, whereArgs); Loading Loading
core/java/android/content/ContentResolver.java +2 −2 Original line number Diff line number Diff line Loading @@ -1219,7 +1219,7 @@ public abstract class ContentResolver { public final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer) { registerContentObserver(uri, notifyForDescendents, observer, UserHandle.myUserId()); registerContentObserver(uri, notifyForDescendents, observer, UserHandle.getCallingUserId()); } /** @hide - designated user version */ Loading Loading @@ -1283,7 +1283,7 @@ public abstract class ContentResolver { * @see #requestSync(android.accounts.Account, String, android.os.Bundle) */ public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) { notifyChange(uri, observer, syncToNetwork, UserHandle.myUserId()); notifyChange(uri, observer, syncToNetwork, UserHandle.getCallingUserId()); } /** Loading
core/java/android/content/ContentService.java +0 −4 Original line number Diff line number Diff line Loading @@ -154,15 +154,11 @@ public final class ContentService extends IContentService.Stub { throw new IllegalArgumentException("You must pass a valid uri and observer"); } // STOPSHIP: disable the multi-user permission checks until a solid fix for the // content provider / observer case is in place. /* final int callingUser = UserHandle.getCallingUserId(); if (callingUser != userHandle) { mContext.enforceCallingOrSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS_FULL, "no permission to observe other users' provider view"); } */ if (userHandle < 0) { if (userHandle == UserHandle.USER_CURRENT) { Loading
packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +53 −51 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import android.app.ActivityManager; import android.app.ActivityManagerNative; import android.app.backup.BackupManager; import android.content.BroadcastReceiver; import android.content.ContentProvider; Loading @@ -33,20 +32,17 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.content.res.AssetFileDescriptor; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteQueryBuilder; import android.database.sqlite.SQLiteStatement; import android.media.RingtoneManager; import android.net.Uri; import android.os.Binder; import android.os.Bundle; import android.os.FileObserver; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; Loading Loading @@ -656,10 +652,13 @@ public class SettingsProvider extends ContentProvider { } } // Okay, permission checks have cleared. Reset to our own identity so we can // manipulate all users' data with impunity. long oldId = Binder.clearCallingIdentity(); try { // Note: we assume that get/put operations for moved-to-global names have already // been directed to the new location on the caller side (otherwise we'd fix them // up here). DatabaseHelper dbHelper; SettingsCache cache; Loading Loading @@ -704,6 +703,9 @@ public class SettingsProvider extends ContentProvider { } else { Slog.w(TAG, "call() with invalid method: " + method); } } finally { Binder.restoreCallingIdentity(oldId); } return null; } Loading Loading @@ -758,7 +760,7 @@ public class SettingsProvider extends ContentProvider { return queryForUser(url, select, where, whereArgs, sort, UserHandle.getCallingUserId()); } public Cursor queryForUser(Uri url, String[] select, String where, String[] whereArgs, private Cursor queryForUser(Uri url, String[] select, String where, String[] whereArgs, String sort, int forUser) { if (LOCAL_LOGV) Slog.v(TAG, "query(" + url + ") for user " + forUser); SqlArguments args = new SqlArguments(url, where, whereArgs); Loading