summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Samiul Islam <samiul@google.com> 2024-11-22 12:47:21 +0000
committer Samiul Islam <samiul@google.com> 2024-11-25 11:35:16 +0000
commit6daf8545ca70c968f119f840dcb431f88a035c91 (patch)
treec1bc58721512324788a7bad4a0fa54e829716834
parent369d0425c1c2df5ee1221de6516d9213bc3f4d6e (diff)
Handle session abandonment correctly for Dependency Installer
Bug: 372862145 Test: atest PackageManagerShellCommandInstallTest FLAG: android.content.pm.sdk_dependency_installer Change-Id: I55eb598bc74fb61a82ce8ee2d4426930c5fd44f7
-rw-r--r--services/core/java/com/android/server/pm/InstallDependencyHelper.java5
-rw-r--r--services/core/java/com/android/server/pm/InstallPackageHelper.java9
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerService.java2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java3
-rw-r--r--services/tests/mockingservicestests/src/com/android/server/pm/ApexManagerTest.java2
5 files changed, 7 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/pm/InstallDependencyHelper.java b/services/core/java/com/android/server/pm/InstallDependencyHelper.java
index 8d9ec31ec30e..13aab11595d2 100644
--- a/services/core/java/com/android/server/pm/InstallDependencyHelper.java
+++ b/services/core/java/com/android/server/pm/InstallDependencyHelper.java
@@ -97,7 +97,7 @@ public class InstallDependencyHelper {
if (missing.isEmpty()) {
if (DEBUG) {
- Slog.i(TAG, "No missing dependency for " + pkg);
+ Slog.d(TAG, "No missing dependency for " + pkg);
}
// No need for dependency resolution. Move to installation directly.
callback.onResult(null);
@@ -125,7 +125,7 @@ public class InstallDependencyHelper {
void notifySessionComplete(int sessionId, boolean success) {
if (DEBUG) {
- Slog.i(TAG, "Session complete for " + sessionId + " result: " + success);
+ Slog.d(TAG, "Session complete for " + sessionId + " result: " + success);
}
synchronized (mTrackers) {
List<DependencyInstallTracker> completedTrackers = new ArrayList<>();
@@ -451,7 +451,6 @@ public class InstallDependencyHelper {
if (!success) {
// If one of the dependency fails, the orig session would fail too.
onError(mCallback, "Failed to install all dependencies");
- // TODO(b/372862145): Abandon the rest of the pending sessions.
return false; // No point in tracking anymore
}
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index e5e274450655..8168c5493304 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -229,7 +229,6 @@ final class InstallPackageHelper {
private final SharedLibrariesImpl mSharedLibraries;
private final PackageManagerServiceInjector mInjector;
private final UpdateOwnershipHelper mUpdateOwnershipHelper;
- private final InstallDependencyHelper mInstallDependencyHelper;
private final Object mInternalLock = new Object();
@GuardedBy("mInternalLock")
@@ -240,8 +239,7 @@ final class InstallPackageHelper {
AppDataHelper appDataHelper,
RemovePackageHelper removePackageHelper,
DeletePackageHelper deletePackageHelper,
- BroadcastHelper broadcastHelper,
- InstallDependencyHelper installDependencyHelper) {
+ BroadcastHelper broadcastHelper) {
mPm = pm;
mInjector = pm.mInjector;
mAppDataHelper = appDataHelper;
@@ -255,7 +253,6 @@ final class InstallPackageHelper {
mPackageAbiHelper = pm.mInjector.getAbiHelper();
mSharedLibraries = pm.mInjector.getSharedLibrariesImpl();
mUpdateOwnershipHelper = pm.mInjector.getUpdateOwnershipHelper();
- mInstallDependencyHelper = installDependencyHelper;
}
/**
@@ -1367,10 +1364,6 @@ final class InstallPackageHelper {
}
}
}
-
- for (InstallRequest request : requests) {
- mInstallDependencyHelper.notifySessionComplete(request.getSessionId(), success);
- }
}
@GuardedBy("mPm.mInstallLock")
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 47b785040d44..ceb931400d48 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -2329,6 +2329,8 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
}
}
+ mInstallDependencyHelper.notifySessionComplete(session.sessionId, success);
+
final File appIconFile = buildAppIconFile(session.sessionId);
if (appIconFile.exists()) {
appIconFile.delete();
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 040b1943b23d..ab26f024a18a 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -2118,8 +2118,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
mDeletePackageHelper = new DeletePackageHelper(this, mRemovePackageHelper,
mBroadcastHelper);
mInstallPackageHelper = new InstallPackageHelper(this, mAppDataHelper, mRemovePackageHelper,
- mDeletePackageHelper, mBroadcastHelper,
- injector.getPackageInstallerService().getInstallDependencyHelper());
+ mDeletePackageHelper, mBroadcastHelper);
mInstantAppRegistry = new InstantAppRegistry(mContext, mPermissionManager,
mInjector.getUserManagerInternal(), mDeletePackageHelper);
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/ApexManagerTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/ApexManagerTest.java
index 405024cc0e34..769f071e3ddc 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/ApexManagerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/ApexManagerTest.java
@@ -134,7 +134,7 @@ public class ApexManagerTest {
mMockSystem.system().validateFinalState();
mInstallPackageHelper = new InstallPackageHelper(mPmService, mock(AppDataHelper.class),
mock(RemovePackageHelper.class), mock(DeletePackageHelper.class),
- mock(BroadcastHelper.class), mock(InstallDependencyHelper.class));
+ mock(BroadcastHelper.class));
}
@NonNull