Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c4471e2 authored by Nicolas Prevot's avatar Nicolas Prevot Committed by Android Git Automerger
Browse files

am 1c4a44e5: Do not return cross-profile intent results to a non-enabled user.

* commit '1c4a44e5':
  Do not return cross-profile intent results to a non-enabled user.
parents af275e15 1c4a44e5
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -3929,19 +3929,20 @@ public class PackageManagerService extends IPackageManager.Stub {
                // Check for results that need to skip the current profile.
                ResolveInfo resolveInfo  = querySkipCurrentProfileIntents(matchingFilters, intent,
                        resolvedType, flags, userId);
                if (resolveInfo != null) {
                if (resolveInfo != null && isUserEnabled(resolveInfo.targetUserId)) {
                    List<ResolveInfo> result = new ArrayList<ResolveInfo>(1);
                    result.add(resolveInfo);
                    return filterIfNotPrimaryUser(result, userId);
                }
                // Check for cross profile results.
                resolveInfo = queryCrossProfileIntents(
                        matchingFilters, intent, resolvedType, flags, userId);
                // Check for results in the current profile.
                List<ResolveInfo> result = mActivities.queryIntent(
                        intent, resolvedType, flags, userId);
                if (resolveInfo != null) {
                // Check for cross profile results.
                resolveInfo = queryCrossProfileIntents(
                        matchingFilters, intent, resolvedType, flags, userId);
                if (resolveInfo != null && isUserEnabled(resolveInfo.targetUserId)) {
                    result.add(resolveInfo);
                    Collections.sort(result, mResolvePrioritySorter);
                }
@@ -3962,6 +3963,16 @@ public class PackageManagerService extends IPackageManager.Stub {
        }
    }
    private boolean isUserEnabled(int userId) {
        long callingId = Binder.clearCallingIdentity();
        try {
            UserInfo userInfo = sUserManager.getUserInfo(userId);
            return userInfo != null && userInfo.isEnabled();
        } finally {
            Binder.restoreCallingIdentity(callingId);
        }
    }
    /**
     * Filter out activities with primaryUserOnly flag set, when current user is not the owner.
     *