Merge "Add a cross-profile intent filter only if it wasn't previously added." into lmp-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b9744c1c1f
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user