Merge "[pm] fix missing PACKAGE_CHANGED broadcasts" into tm-dev am: d70fd7a211 am: 5fe1b1fbd6
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18750072 Change-Id: Id2752d9413200dc2eb308d8d8ed06b0647d1ba9e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -2548,28 +2548,31 @@ final class InstallPackageHelper {
|
|||||||
public void sendPendingBroadcasts() {
|
public void sendPendingBroadcasts() {
|
||||||
String[] packages;
|
String[] packages;
|
||||||
ArrayList<String>[] components;
|
ArrayList<String>[] components;
|
||||||
int size = 0;
|
int numBroadcasts = 0, numUsers;
|
||||||
int[] uids;
|
int[] uids;
|
||||||
|
|
||||||
synchronized (mPm.mLock) {
|
synchronized (mPm.mLock) {
|
||||||
final SparseArray<ArrayMap<String, ArrayList<String>>> userIdToPackagesToComponents =
|
final SparseArray<ArrayMap<String, ArrayList<String>>> userIdToPackagesToComponents =
|
||||||
mPm.mPendingBroadcasts.copiedMap();
|
mPm.mPendingBroadcasts.copiedMap();
|
||||||
size = userIdToPackagesToComponents.size();
|
numUsers = userIdToPackagesToComponents.size();
|
||||||
if (size <= 0) {
|
for (int n = 0; n < numUsers; n++) {
|
||||||
|
numBroadcasts += userIdToPackagesToComponents.valueAt(n).size();
|
||||||
|
}
|
||||||
|
if (numBroadcasts == 0) {
|
||||||
// Nothing to be done. Just return
|
// Nothing to be done. Just return
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
packages = new String[size];
|
packages = new String[numBroadcasts];
|
||||||
components = new ArrayList[size];
|
components = new ArrayList[numBroadcasts];
|
||||||
uids = new int[size];
|
uids = new int[numBroadcasts];
|
||||||
int i = 0; // filling out the above arrays
|
int i = 0; // filling out the above arrays
|
||||||
|
|
||||||
for (int n = 0; n < size; n++) {
|
for (int n = 0; n < numUsers; n++) {
|
||||||
final int packageUserId = userIdToPackagesToComponents.keyAt(n);
|
final int packageUserId = userIdToPackagesToComponents.keyAt(n);
|
||||||
final ArrayMap<String, ArrayList<String>> componentsToBroadcast =
|
final ArrayMap<String, ArrayList<String>> componentsToBroadcast =
|
||||||
userIdToPackagesToComponents.valueAt(n);
|
userIdToPackagesToComponents.valueAt(n);
|
||||||
final int numComponents = CollectionUtils.size(componentsToBroadcast);
|
final int numComponents = CollectionUtils.size(componentsToBroadcast);
|
||||||
for (int index = 0; i < size && index < numComponents; index++) {
|
for (int index = 0; index < numComponents; index++) {
|
||||||
packages[i] = componentsToBroadcast.keyAt(index);
|
packages[i] = componentsToBroadcast.keyAt(index);
|
||||||
components[i] = componentsToBroadcast.valueAt(index);
|
components[i] = componentsToBroadcast.valueAt(index);
|
||||||
final PackageSetting ps = mPm.mSettings.getPackageLPr(packages[i]);
|
final PackageSetting ps = mPm.mSettings.getPackageLPr(packages[i]);
|
||||||
@@ -2579,12 +2582,12 @@ final class InstallPackageHelper {
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
size = i;
|
numBroadcasts = i;
|
||||||
mPm.mPendingBroadcasts.clear();
|
mPm.mPendingBroadcasts.clear();
|
||||||
}
|
}
|
||||||
final Computer snapshot = mPm.snapshotComputer();
|
final Computer snapshot = mPm.snapshotComputer();
|
||||||
// Send broadcasts
|
// Send broadcasts
|
||||||
for (int i = 0; i < size; i++) {
|
for (int i = 0; i < numBroadcasts; i++) {
|
||||||
mPm.sendPackageChangedBroadcast(snapshot, packages[i], true /* dontKillApp */,
|
mPm.sendPackageChangedBroadcast(snapshot, packages[i], true /* dontKillApp */,
|
||||||
components[i], uids[i], null /* reason */);
|
components[i], uids[i], null /* reason */);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user