From 3e084b0c43c13f1c40165eb2394d9e80f99cdf1e Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Mon, 7 Feb 2022 15:59:26 -0800 Subject: [PATCH] Instant app uninstallation fix. Bug: 217020148 Fixes: 217020148 Test: atest InstantCookieHostTest Change-Id: I3f6292a4cbe69506265b3e25f6b6fc484bb1e46e --- .../java/com/android/server/pm/DeletePackageHelper.java | 6 +++++- .../core/java/com/android/server/pm/InstantAppRegistry.java | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java index db860fe079dae..3fb4ab1fefc87 100644 --- a/services/core/java/com/android/server/pm/DeletePackageHelper.java +++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java @@ -222,8 +222,12 @@ final class DeletePackageHelper { deleteFlags | PackageManager.DELETE_CHATTY, info, true); } if (res && pkg != null) { + final boolean packageInstalledForSomeUsers; + synchronized (mPm.mLock) { + packageInstalledForSomeUsers = mPm.mPackages.get(pkg.getPackageName()) != null; + } mPm.mInstantAppRegistry.onPackageUninstalled(pkg, uninstalledPs, - info.mRemovedUsers); + info.mRemovedUsers, packageInstalledForSomeUsers); } synchronized (mPm.mLock) { if (res) { diff --git a/services/core/java/com/android/server/pm/InstantAppRegistry.java b/services/core/java/com/android/server/pm/InstantAppRegistry.java index ea6e4583d7d77..39a28396608bf 100644 --- a/services/core/java/com/android/server/pm/InstantAppRegistry.java +++ b/services/core/java/com/android/server/pm/InstantAppRegistry.java @@ -444,14 +444,14 @@ public class InstantAppRegistry implements Watchable, Snappable { } public void onPackageUninstalled(@NonNull AndroidPackage pkg, @NonNull PackageSetting ps, - @NonNull int[] userIds) { + @NonNull int[] userIds, boolean packageInstalledForSomeUsers) { if (ps == null) { return; } synchronized (mLock) { for (int userId : userIds) { - if (ps.getInstalled(userId)) { + if (packageInstalledForSomeUsers && ps.getInstalled(userId)) { continue; }