Merge "Not fetching MediaProvider from Clone Profile" into tm-qpr-dev am: 00773c6a8e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20419514 Change-Id: I65be7b97d2c15ee1d688c82333746a821edc720f Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -80,6 +80,7 @@ import com.android.internal.util.FrameworkStatsLog;
|
||||
import com.android.server.LocalServices;
|
||||
import com.android.server.RescueParty;
|
||||
import com.android.server.pm.UserManagerInternal;
|
||||
import com.android.server.pm.UserManagerService;
|
||||
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
@@ -162,7 +163,7 @@ public class ContentProviderHelper {
|
||||
private ContentProviderHolder getContentProviderImpl(IApplicationThread caller,
|
||||
String name, IBinder token, int callingUid, String callingPackage, String callingTag,
|
||||
boolean stable, int userId) {
|
||||
ContentProviderRecord cpr;
|
||||
ContentProviderRecord cpr = null;
|
||||
ContentProviderConnection conn = null;
|
||||
ProviderInfo cpi = null;
|
||||
boolean providerRunning = false;
|
||||
@@ -184,8 +185,21 @@ public class ContentProviderHelper {
|
||||
|
||||
checkTime(startTime, "getContentProviderImpl: getProviderByName");
|
||||
|
||||
// First check if this content provider has been published...
|
||||
cpr = mProviderMap.getProviderByName(name, userId);
|
||||
UserManagerService userManagerService = UserManagerService.getInstance();
|
||||
|
||||
/*
|
||||
For clone user profile and allowed authority, skipping finding provider and redirecting
|
||||
it to owner profile. Ideally clone profile should not have MediaProvider instance
|
||||
installed and mProviderMap would not have entry for clone user. This is just fallback
|
||||
check to ensure even if MediaProvider is installed in Clone Profile, it should not be
|
||||
used and redirect to owner user's MediaProvider.
|
||||
*/
|
||||
//todo(b/236121588) MediaProvider should not be installed in clone profile.
|
||||
if (!isAuthorityRedirectedForCloneProfile(name)
|
||||
|| !userManagerService.isMediaSharedWithParent(userId)) {
|
||||
// First check if this content provider has been published...
|
||||
cpr = mProviderMap.getProviderByName(name, userId);
|
||||
}
|
||||
// If that didn't work, check if it exists for user 0 and then
|
||||
// verify that it's a singleton provider before using it.
|
||||
if (cpr == null && userId != UserHandle.USER_SYSTEM) {
|
||||
@@ -200,11 +214,9 @@ public class ContentProviderHelper {
|
||||
userId = UserHandle.USER_SYSTEM;
|
||||
checkCrossUser = false;
|
||||
} else if (isAuthorityRedirectedForCloneProfile(name)) {
|
||||
UserManagerInternal umInternal = LocalServices.getService(
|
||||
UserManagerInternal.class);
|
||||
UserInfo userInfo = umInternal.getUserInfo(userId);
|
||||
|
||||
if (userInfo != null && userInfo.isCloneProfile()) {
|
||||
if (userManagerService.isMediaSharedWithParent(userId)) {
|
||||
UserManagerInternal umInternal = LocalServices.getService(
|
||||
UserManagerInternal.class);
|
||||
userId = umInternal.getProfileParentId(userId);
|
||||
checkCrossUser = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user