Skip to content
Snippets Groups Projects
Commit 2c0dff90 authored by Ivan Chiang's avatar Ivan Chiang
Browse files

[RESTRICT AUTOMERGE][PM] Send ACTION_PACKAGE_CHANGED when mimeGroups are changed

Test: atest CtsPackageManagerTestCases:PackageManagerShellCommandMultiUserTest
Test: atest CtsPackageManagerTestCases:PackageManagerTest
Bug: 297517712
Merged-In: I271a3526ea4555249e3a2797605269257330e0e9
Change-Id: I271a3526ea4555249e3a2797605269257330e0e9
parent 5b695073
No related branches found
No related tags found
No related merge requests found
......@@ -28719,10 +28719,20 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
 
private void applyMimeGroupChanges(String packageName, String mimeGroup) {
private void applyMimeGroupChanges(String packageName, String mimeGroup,
List<Integer> packageUids) {
if (mComponentResolver.updateMimeGroup(packageName, mimeGroup)) {
Binder.withCleanCallingIdentity(() ->
clearPackagePreferredActivities(packageName, UserHandle.USER_ALL));
Binder.withCleanCallingIdentity(() -> {
clearPackagePreferredActivities(packageName, UserHandle.USER_ALL);
// Send the ACTION_PACKAGE_CHANGED when the mimeGroup has changes
final ArrayList<String> components = new ArrayList<>(
Collections.singletonList(packageName));
final String reason = "The mimeGroup is changed";
for (int i = 0; i < packageUids.size(); i++) {
sendPackageChangedBroadcast(packageName, true /* dontKillApp */,
components, packageUids.get(i), reason);
}
});
}
 
mPmInternal.writeSettings(false);
......@@ -28732,11 +28742,23 @@ public class PackageManagerService extends IPackageManager.Stub
public void setMimeGroup(String packageName, String mimeGroup, List<String> mimeTypes) {
enforceOwnerRights(packageName, Binder.getCallingUid());
final boolean changed;
final List<Integer> packageUids = new ArrayList<Integer>();
synchronized (mLock) {
changed = mSettings.getPackageLPr(packageName).setMimeGroup(mimeGroup, mimeTypes);
final PackageSetting ps = mSettings.getPackageLPr(packageName);
changed = ps.setMimeGroup(mimeGroup, mimeTypes);
if (changed) {
final int appId = ps.appId;
final int[] userIds = resolveUserIds(UserHandle.USER_ALL);
for (int i = 0; i < userIds.length; i++) {
final int userId = userIds[i];
if (ps.getInstalled(userId)) {
packageUids.add(UserHandle.getUid(userId, appId));
}
}
}
}
if (changed) {
applyMimeGroupChanges(packageName, mimeGroup);
applyMimeGroupChanges(packageName, mimeGroup, packageUids);
}
}
 
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment