Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f4eebad authored by Samiul Islam's avatar Samiul Islam Committed by Android (Google) Code Review
Browse files

Merge "Handle session abandonment correctly for Dependency Installer" into main

parents 2976e213 6daf8545
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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
                }

+1 −8
Original line number Diff line number Diff line
@@ -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")
+2 −0
Original line number Diff line number Diff line
@@ -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();
+1 −2
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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