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

Commit c13e7277 authored by Songchun Fan's avatar Songchun Fan Committed by Android (Google) Code Review
Browse files

Merge "[pm] fix NPE in deletePackageX"

parents 37b74bdb d598257a
Loading
Loading
Loading
Loading
+20 −11
Original line number Diff line number Diff line
@@ -251,21 +251,30 @@ final class DeletePackageHelper {

            if (priorUserStates != null) {
                synchronized (mPm.mLock) {
                    PackageSetting pkgSetting = mPm.getPackageSettingForMutation(packageName);
                    if (pkgSetting != null) {
                        AndroidPackage aPkg = pkgSetting.getPkg();
                        boolean pkgEnabled = aPkg != null && aPkg.isEnabled();
                        for (int i = 0; i < allUsers.length; i++) {
                            TempUserState priorUserState = priorUserStates.get(allUsers[i]);
                            int enabledState = priorUserState.enabledState;
                        PackageSetting pkgSetting = mPm.getPackageSettingForMutation(packageName);
                            pkgSetting.setEnabled(enabledState, allUsers[i],
                                    priorUserState.lastDisableAppCaller);

                        AndroidPackage aPkg = pkgSetting.getPkg();
                        boolean pkgEnabled = aPkg != null && aPkg.isEnabled();
                            if (!reEnableStub && priorUserState.installed
                                && ((enabledState == COMPONENT_ENABLED_STATE_DEFAULT && pkgEnabled)
                                    && (
                                    (enabledState == COMPONENT_ENABLED_STATE_DEFAULT && pkgEnabled)
                                            || enabledState == COMPONENT_ENABLED_STATE_ENABLED)) {
                                reEnableStub = true;
                            }
                        }
                    } else {
                        // This should not happen. If priorUserStates != null, we are uninstalling
                        // an update of a system app. In that case, mPm.mSettings.getPackageLpr()
                        // should return a non-null value for the target packageName because
                        // restoreDisabledSystemPackageLIF() is called during deletePackageLIF().
                        Slog.w(TAG, "Missing PackageSetting after uninstalling the update for"
                                + " system app: " + packageName + ". This should not happen.");
                    }
                    mPm.mSettings.writeAllUsersPackageRestrictionsLPr();
                }
            }
+3 −3
Original line number Diff line number Diff line
@@ -126,13 +126,13 @@ final class InitAndSystemPackageHelper {
        return null;
    }

    public OverlayConfig setUpSystemPackages(
    public OverlayConfig initPackages(
            WatchedArrayMap<String, PackageSetting> packageSettings, int[] userIds,
            long startTime) {
        PackageParser2 packageParser = mPm.mInjector.getScanningCachingPackageParser();

        ExecutorService executorService = ParallelPackageParser.makeExecutorService();
        // Prepare apex package info before scanning APKs, these information are needed when
        // Prepare apex package info before scanning APKs, this information is needed when
        // scanning apk in apex.
        mPm.mApexManager.scanApexPackagesTraced(packageParser, executorService);

@@ -289,7 +289,7 @@ final class InitAndSystemPackageHelper {
            long currentTime, PackageParser2 packageParser, ExecutorService executorService) {
        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "scanDir [" + scanDir.getAbsolutePath() + "]");
        try {
            mInstallPackageHelper.installSystemPackagesFromDir(scanDir, parseFlags, scanFlags,
            mInstallPackageHelper.installPackagesFromDir(scanDir, parseFlags, scanFlags,
                    currentTime, packageParser, executorService);
        } finally {
            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+1 −1
Original line number Diff line number Diff line
@@ -3720,7 +3720,7 @@ final class InstallPackageHelper {
    }

    @GuardedBy({"mPm.mInstallLock", "mPm.mLock"})
    public void installSystemPackagesFromDir(File scanDir, int parseFlags, int scanFlags,
    public void installPackagesFromDir(File scanDir, int parseFlags, int scanFlags,
            long currentTime, PackageParser2 packageParser, ExecutorService executorService) {
        final File[] files = scanDir.listFiles();
        if (ArrayUtils.isEmpty(files)) {
+1 −1
Original line number Diff line number Diff line
@@ -1975,7 +1975,7 @@ public class PackageManagerService extends IPackageManager.Stub
                    mIsEngBuild, mIsUserDebugBuild, mIncrementalVersion);

            final int[] userIds = mUserManager.getUserIds();
            mOverlayConfig = mInitAndSystemPackageHelper.setUpSystemPackages(packageSettings,
            mOverlayConfig = mInitAndSystemPackageHelper.initPackages(packageSettings,
                    userIds, startTime);

            // Resolve the storage manager.