Loading services/core/java/com/android/server/pm/CrossProfileIntentFilter.java +7 −0 Original line number Diff line number Diff line Loading @@ -141,4 +141,11 @@ class CrossProfileIntentFilter extends IntentFilter { return "CrossProfileIntentFilter{0x" + Integer.toHexString(System.identityHashCode(this)) + " " + Integer.toString(mTargetUserId) + "}"; } boolean equalsIgnoreFilter(CrossProfileIntentFilter other) { return mTargetUserId == other.mTargetUserId && mOwnerUserId == other.mOwnerUserId && mOwnerPackage.equals(other.mOwnerPackage) && mFlags == other.mFlags; } } services/core/java/com/android/server/pm/PackageManagerService.java +14 −2 Original line number Diff line number Diff line Loading @@ -11844,9 +11844,21 @@ public class PackageManagerService extends IPackageManager.Stub { return; } synchronized (mPackages) { CrossProfileIntentFilter filter = new CrossProfileIntentFilter(intentFilter, CrossProfileIntentFilter newFilter = new CrossProfileIntentFilter(intentFilter, ownerPackage, UserHandle.getUserId(callingUid), targetUserId, flags); mSettings.editCrossProfileIntentResolverLPw(sourceUserId).addFilter(filter); CrossProfileIntentResolver resolver = mSettings.editCrossProfileIntentResolverLPw(sourceUserId); ArrayList<CrossProfileIntentFilter> existing = resolver.findFilters(intentFilter); // We have all those whose filter is equal. Now checking if the rest is equal as well. if (existing != null) { int size = existing.size(); for (int i = 0; i < size; i++) { if (newFilter.equalsIgnoreFilter(existing.get(i))) { return; } } } resolver.addFilter(newFilter); scheduleWritePackageRestrictionsLocked(sourceUserId); } } Loading
services/core/java/com/android/server/pm/CrossProfileIntentFilter.java +7 −0 Original line number Diff line number Diff line Loading @@ -141,4 +141,11 @@ class CrossProfileIntentFilter extends IntentFilter { return "CrossProfileIntentFilter{0x" + Integer.toHexString(System.identityHashCode(this)) + " " + Integer.toString(mTargetUserId) + "}"; } boolean equalsIgnoreFilter(CrossProfileIntentFilter other) { return mTargetUserId == other.mTargetUserId && mOwnerUserId == other.mOwnerUserId && mOwnerPackage.equals(other.mOwnerPackage) && mFlags == other.mFlags; } }
services/core/java/com/android/server/pm/PackageManagerService.java +14 −2 Original line number Diff line number Diff line Loading @@ -11844,9 +11844,21 @@ public class PackageManagerService extends IPackageManager.Stub { return; } synchronized (mPackages) { CrossProfileIntentFilter filter = new CrossProfileIntentFilter(intentFilter, CrossProfileIntentFilter newFilter = new CrossProfileIntentFilter(intentFilter, ownerPackage, UserHandle.getUserId(callingUid), targetUserId, flags); mSettings.editCrossProfileIntentResolverLPw(sourceUserId).addFilter(filter); CrossProfileIntentResolver resolver = mSettings.editCrossProfileIntentResolverLPw(sourceUserId); ArrayList<CrossProfileIntentFilter> existing = resolver.findFilters(intentFilter); // We have all those whose filter is equal. Now checking if the rest is equal as well. if (existing != null) { int size = existing.size(); for (int i = 0; i < size; i++) { if (newFilter.equalsIgnoreFilter(existing.get(i))) { return; } } } resolver.addFilter(newFilter); scheduleWritePackageRestrictionsLocked(sourceUserId); } }