From b4e2ddde4f08ba25f57c97a4fe7c339cbe805559 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Fri, 3 Feb 2017 15:15:57 -0800 Subject: [PATCH] Use context's userId in ContentResolver class. - When registering and notifying observers, we should use the user in the context as opposed to current user. - Relax the permission check while registering and notifying content observers to use INTERACT_ACROSS_USERS instead of INTERACT_ACROSS_USERS_FULL permission. Change-Id: I973936903d4a2272c5722f3b98a057a40c0402be Fixes: 32955100 Test: Created managed profile and verified that there are not failures. runtest -x core/tests/coretests/src/android/content/SecondaryUserContentResolverTest.java runtest -x core/tests/coretests/src/android/content/ManagedUserContentResolverTest.java --- .../java/android/content/ContentResolver.java | 6 +- core/tests/coretests/AndroidManifest.xml | 3 + .../android/app/activity/LocalProvider.java | 32 +++- .../AbstractCrossUserContentResolverTest.java | 178 ++++++++++++++++++ .../content/CrossUserContentService.java | 45 +++++ .../content/ICrossUserContentService.aidl | 24 +++ .../ManagedUserContentResolverTest.java | 42 +++++ .../SecondaryUserContentResolverTest.java | 40 ++++ .../server/content/ContentService.java | 27 ++- 9 files changed, 385 insertions(+), 12 deletions(-) create mode 100644 core/tests/coretests/src/android/content/AbstractCrossUserContentResolverTest.java create mode 100644 core/tests/coretests/src/android/content/CrossUserContentService.java create mode 100644 core/tests/coretests/src/android/content/ICrossUserContentService.aidl create mode 100644 core/tests/coretests/src/android/content/ManagedUserContentResolverTest.java create mode 100644 core/tests/coretests/src/android/content/SecondaryUserContentResolverTest.java diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 4480b41ed73a2..5bbbcc295fd03 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -1886,7 +1886,7 @@ public abstract class ContentResolver { ContentProvider.getUriWithoutUserId(uri), notifyForDescendants, observer, - ContentProvider.getUserIdFromUri(uri, UserHandle.myUserId())); + ContentProvider.getUserIdFromUri(uri, mContext.getUserId())); } /** @hide - designated user version */ @@ -1956,7 +1956,7 @@ public abstract class ContentResolver { ContentProvider.getUriWithoutUserId(uri), observer, syncToNetwork, - ContentProvider.getUserIdFromUri(uri, UserHandle.myUserId())); + ContentProvider.getUserIdFromUri(uri, mContext.getUserId())); } /** @@ -1982,7 +1982,7 @@ public abstract class ContentResolver { ContentProvider.getUriWithoutUserId(uri), observer, flags, - ContentProvider.getUserIdFromUri(uri, UserHandle.myUserId())); + ContentProvider.getUserIdFromUri(uri, mContext.getUserId())); } /** diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml index 91ce7a468484e..7b8c22962bccd 100644 --- a/core/tests/coretests/AndroidManifest.xml +++ b/core/tests/coretests/AndroidManifest.xml @@ -1357,6 +1357,9 @@ + +