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

Commit 92049431 authored by Joanne Chung's avatar Joanne Chung
Browse files

Move freezer start after reconcile.

Bug: 321140531
Test: manual. Install app and work fine
Test: atest PackageManagerShellCommandInstallTest

Change-Id: Id932a2fd2e2b17038893e56575371991e6a4f318
parent 6bf8e9bd
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -1043,6 +1043,18 @@ final class InstallPackageHelper {
                } finally {
                    Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                }
                if (Flags.improveInstallFreeze()) {
                    // Postpone freezer until after reconcile
                    for (ReconciledPackage reconciledPkg : reconciledPackages) {
                        InstallRequest installRequest = reconciledPkg.mInstallRequest;
                        String packageName = installRequest.getParsedPackage().getPackageName();
                        PackageFreezer freezer = freezePackageForInstall(packageName,
                                UserHandle.USER_ALL, installRequest.getInstallFlags(),
                                "installPackageLI", ApplicationExitInfo.REASON_PACKAGE_UPDATED,
                                installRequest);
                        installRequest.setFreezer(freezer);
                    }
                }
                try {
                    Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "commitPackages");
                    commitPackagesLocked(reconciledPackages, mPm.mUserManager.getUserIds());
@@ -1607,9 +1619,12 @@ final class InstallPackageHelper {
            parsedPackage.setBaseApkPath(request.getApexInfo().modulePath);
        }

        final PackageFreezer freezer =
                freezePackageForInstall(pkgName, UserHandle.USER_ALL, installFlags,
        PackageFreezer freezer = null;
        if (!Flags.improveInstallFreeze()) {
            freezer = freezePackageForInstall(pkgName, UserHandle.USER_ALL, installFlags,
                    "installPackageLI", ApplicationExitInfo.REASON_PACKAGE_UPDATED, request);
        }


        boolean shouldCloseFreezerBeforeReturn = true;
        try {
@@ -1859,12 +1874,14 @@ final class InstallPackageHelper {
                    oldPackageState, parsedPackage, archivedPackage,
                    replace /* clearCodeCache */, sysPkg, ps, disabledPs);
        } finally {
            if (freezer != null) {
                request.setFreezer(freezer);
                if (shouldCloseFreezerBeforeReturn) {
                    freezer.close();
                }
            }
        }
    }

    /**
     * Rename package into final resting place. All paths on the given