summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Songchun Fan <schfan@google.com> 2022-03-04 01:58:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-03-04 01:58:06 +0000
commitda014b5532bf69d7838c2a6be6b67b7be83aae55 (patch)
treeb729469b206215534efe79ae1ef91eadb7e5d50d
parentbf7cac55e5cbcda8c75a76c7b2e5d6fd71a08278 (diff)
parent88ef6ed2b293e48436f2ef22ab5fe7a4fb73eccc (diff)
Merge "[pm] stop sending broadcast from commitPackagesLocked()" into tm-dev
-rw-r--r--services/core/java/com/android/server/pm/DeletePackageHelper.java1
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java27
-rw-r--r--services/core/java/com/android/server/pm/PackageRemovedInfo.java1
-rw-r--r--services/core/java/com/android/server/pm/RemovePackageHelper.java1
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);