summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Songchun Fan <schfan@google.com> 2022-05-20 22:18:49 +0000
committer Songchun Fan <schfan@google.com> 2022-05-23 16:00:04 +0000
commit3eaec4122d7444f8f290061fff525ee6a2c01b1f (patch)
treeb5b379616f05cf8ae74d33102760218d942fb169
parentc0ac1d37d5bf8b7517588ee193e5e94a9df151f8 (diff)
[pm] skip sending PACKAGE_CHANGED broadcast if package has been deleted
ag/15926042 introduced a regression when the broadcast could still be sent if the package has been deleted. It's unlikely that this caused b/231318806 (where the broadcast has already been sent out before the package was deleted), but this still needs to be fixed. + Also remove an unnessary handler.post() because it is already inside the post. BUG: 233612768 Test: presubmit Change-Id: I25d906575a61d051df87a8985a5bb754642cc92b
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java5
-rw-r--r--services/core/java/com/android/server/pm/SuspendPackageHelper.java4
2 files changed, 7 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 386c4372ca65..7a6bf4ed8e86 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -3951,6 +3951,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService
void sendPackageChangedBroadcast(@NonNull Computer snapshot, String packageName,
boolean dontKillApp, ArrayList<String> componentNames, int packageUid, String reason) {
+ PackageStateInternal setting = snapshot.getPackageStateInternal(packageName,
+ Process.SYSTEM_UID);
+ if (setting == null) {
+ return;
+ }
final int userId = UserHandle.getUserId(packageUid);
final boolean isInstantApp =
snapshot.isInstantAppInternal(packageName, userId, Process.SYSTEM_UID);
diff --git a/services/core/java/com/android/server/pm/SuspendPackageHelper.java b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
index 29c926c5f790..908b12e1752d 100644
--- a/services/core/java/com/android/server/pm/SuspendPackageHelper.java
+++ b/services/core/java/com/android/server/pm/SuspendPackageHelper.java
@@ -680,9 +680,9 @@ public final class SuspendPackageHelper {
} else {
intentExtras = null;
}
- handler.post(() -> mBroadcastHelper.doSendBroadcast(action, null, intentExtras,
+ mBroadcastHelper.doSendBroadcast(action, null, intentExtras,
Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND, packageName, null,
- targetUserIds, false, null, null));
+ targetUserIds, false, null, null);
}
});
}