Merge "Add a cross-profile intent filter only if it wasn\'t previously added." into lmp-mr1-dev
automerge: b9744c1
* commit 'b9744c1c1f5e8cc936da7f1832665f77ad5bb18f':
Add a cross-profile intent filter only if it wasn't previously added.
This commit is contained in:
@@ -141,4 +141,11 @@ class CrossProfileIntentFilter extends IntentFilter {
|
|||||||
return "CrossProfileIntentFilter{0x" + Integer.toHexString(System.identityHashCode(this))
|
return "CrossProfileIntentFilter{0x" + Integer.toHexString(System.identityHashCode(this))
|
||||||
+ " " + Integer.toString(mTargetUserId) + "}";
|
+ " " + 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;
|
return;
|
||||||
}
|
}
|
||||||
synchronized (mPackages) {
|
synchronized (mPackages) {
|
||||||
CrossProfileIntentFilter filter = new CrossProfileIntentFilter(intentFilter,
|
CrossProfileIntentFilter newFilter = new CrossProfileIntentFilter(intentFilter,
|
||||||
ownerPackage, UserHandle.getUserId(callingUid), targetUserId, flags);
|
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);
|
scheduleWritePackageRestrictionsLocked(sourceUserId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user