diff options
| author | 2024-11-22 12:47:21 +0000 | |
|---|---|---|
| committer | 2024-11-25 11:35:16 +0000 | |
| commit | 6daf8545ca70c968f119f840dcb431f88a035c91 (patch) | |
| tree | c1bc58721512324788a7bad4a0fa54e829716834 | |
| parent | 369d0425c1c2df5ee1221de6516d9213bc3f4d6e (diff) | |
Handle session abandonment correctly for Dependency Installer
Bug: 372862145
Test: atest PackageManagerShellCommandInstallTest
FLAG: android.content.pm.sdk_dependency_installer
Change-Id: I55eb598bc74fb61a82ce8ee2d4426930c5fd44f7
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 |