diff options
| author | 2022-03-04 01:58:06 +0000 | |
|---|---|---|
| committer | 2022-03-04 01:58:06 +0000 | |
| commit | da014b5532bf69d7838c2a6be6b67b7be83aae55 (patch) | |
| tree | b729469b206215534efe79ae1ef91eadb7e5d50d | |
| parent | bf7cac55e5cbcda8c75a76c7b2e5d6fd71a08278 (diff) | |
| parent | 88ef6ed2b293e48436f2ef22ab5fe7a4fb73eccc (diff) | |
Merge "[pm] stop sending broadcast from commitPackagesLocked()" into tm-dev
4 files changed, 15 insertions, 15 deletions
diff --git a/services/core/java/com/android/server/pm/DeletePackageHelper.java b/services/core/java/com/android/server/pm/DeletePackageHelper.java index 58f9bb2c1902..5b7cf2dc8559 100644 --- a/services/core/java/com/android/server/pm/DeletePackageHelper.java +++ b/services/core/java/com/android/server/pm/DeletePackageHelper.java @@ -508,6 +508,7 @@ final class DeletePackageHelper { outInfo.mRemovedAppId = ps.getAppId(); outInfo.mRemovedUsers = userIds; outInfo.mBroadcastUsers = userIds; + outInfo.mIsExternal = ps.isExternalStorage(); } } diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index ceab92577bb3..a780f3c7eac5 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -1663,6 +1663,7 @@ final class InstallPackageHelper { final int userId = uninstalledUsers[i]; res.mRemovedInfo.mUninstallReasons.put(userId, ps.getUninstallReason(userId)); } + res.mRemovedInfo.mIsExternal = oldPackage.isExternalStorage(); sysPkg = oldPackage.isSystem(); if (sysPkg) { @@ -1937,21 +1938,6 @@ final class InstallPackageHelper { } } // Successfully deleted the old package; proceed with replace. - - // If deleted package lived in a container, give users a chance to - // relinquish resources before killing. - if (oldPackage.isExternalStorage()) { - if (DEBUG_INSTALL) { - Slog.i(TAG, "upgrading pkg " + oldPackage - + " is ASEC-hosted -> UNAVAILABLE"); - } - final int[] uidArray = new int[]{oldPackage.getUid()}; - final ArrayList<String> pkgList = new ArrayList<>(1); - pkgList.add(oldPackage.getPackageName()); - mBroadcastHelper.sendResourcesChangedBroadcast( - false, true, pkgList, uidArray, null); - } - // Update the in-memory copy of the previous code paths. PackageSetting ps1 = mPm.mSettings.getPackageLPr( reconciledPkg.mPrepareResult.mExistingPackage.getPackageName()); @@ -2647,6 +2633,17 @@ final class InstallPackageHelper { // Send the removed broadcasts if (res.mRemovedInfo != null) { + if (res.mRemovedInfo.mIsExternal) { + if (DEBUG_INSTALL) { + Slog.i(TAG, "upgrading pkg " + res.mRemovedInfo.mRemovedPackage + + " is ASEC-hosted -> UNAVAILABLE"); + } + final int[] uidArray = new int[]{res.mRemovedInfo.mUid}; + final ArrayList<String> pkgList = new ArrayList<>(1); + pkgList.add(res.mRemovedInfo.mRemovedPackage); + mBroadcastHelper.sendResourcesChangedBroadcast( + false, true, pkgList, uidArray, null); + } res.mRemovedInfo.sendPackageRemovedBroadcasts(killApp, false /*removedBySystem*/); } diff --git a/services/core/java/com/android/server/pm/PackageRemovedInfo.java b/services/core/java/com/android/server/pm/PackageRemovedInfo.java index cdaf99c3c68b..fdad83347f24 100644 --- a/services/core/java/com/android/server/pm/PackageRemovedInfo.java +++ b/services/core/java/com/android/server/pm/PackageRemovedInfo.java @@ -51,6 +51,7 @@ final class PackageRemovedInfo { boolean mDataRemoved; boolean mRemovedForAllUsers; boolean mIsStaticSharedLib; + boolean mIsExternal; // a two dimensional array mapping userId to the set of appIds that can receive notice // of package changes SparseArray<int[]> mBroadcastAllowList; diff --git a/services/core/java/com/android/server/pm/RemovePackageHelper.java b/services/core/java/com/android/server/pm/RemovePackageHelper.java index 079903e09ba8..4d1519c361c9 100644 --- a/services/core/java/com/android/server/pm/RemovePackageHelper.java +++ b/services/core/java/com/android/server/pm/RemovePackageHelper.java @@ -239,6 +239,7 @@ final class RemovePackageHelper { && deletedPkg.getStaticSharedLibName() != null; outInfo.populateUsers(deletedPs.queryInstalledUsers( mUserManagerInternal.getUserIds(), true), deletedPs); + outInfo.mIsExternal = deletedPs.isExternalStorage(); } removePackageLI(deletedPs.getPackageName(), (flags & PackageManager.DELETE_CHATTY) != 0); |