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

Commit 318530d0 authored by Patrick Baumann's avatar Patrick Baumann Committed by Automerger Merge Worker
Browse files

Merge "Skip post install if package was deleted" into rvc-dev am: 9f9ffca0 am: 94296585

Change-Id: I3b22f3f00838784a314b8ec3ff3ab53eccde4abf
parents 9e5bed7e 94296585
Loading
Loading
Loading
Loading
+16 −11
Original line number Diff line number Diff line
@@ -2072,8 +2072,18 @@ public class PackageManagerService extends IPackageManager.Stub
            int autoRevokePermissionsMode,
            boolean launchedForRestore, String installerPackage,
            IPackageInstallObserver2 installObserver, int dataLoaderType) {
        final boolean succeeded = res.returnCode == PackageManager.INSTALL_SUCCEEDED;
        boolean succeeded = res.returnCode == PackageManager.INSTALL_SUCCEEDED;
        final boolean update = res.removedInfo != null && res.removedInfo.removedPackage != null;
        final String packageName = res.name;
        final PackageSetting pkgSetting = succeeded ? getPackageSetting(packageName) : null;
        if (succeeded && pkgSetting == null) {
            Slog.e(TAG, packageName + " was removed before handlePackagePostInstall "
                    + "could be executed");
            res.returnCode = INSTALL_FAILED_PACKAGE_CHANGED;
            res.returnMsg = "Package was removed before install could complete.";
            notifyInstallObserver(res, installObserver);
            return;
        }
        if (succeeded) {
            // Send the removed broadcasts
@@ -2117,8 +2127,6 @@ public class PackageManagerService extends IPackageManager.Stub
                mInstantAppRegistry.onPackageInstalledLPw(res.pkg, res.newUsers);
            }
            final String packageName = res.pkg.getPackageName();
            // Determine the set of users who are adding this package for
            // the first time vs. those who are seeing an update.
            int[] firstUserIds = EMPTY_INT_ARRAY;
@@ -2126,7 +2134,7 @@ public class PackageManagerService extends IPackageManager.Stub
            int[] updateUserIds = EMPTY_INT_ARRAY;
            int[] instantUserIds = EMPTY_INT_ARRAY;
            final boolean allNewUsers = res.origUsers == null || res.origUsers.length == 0;
            final PackageSetting ps = getPackageSetting(res.pkg.getPackageName());
            final PackageSetting ps = pkgSetting;
            for (int newUser : res.newUsers) {
                final boolean isInstantApp = ps.getInstantApp(newUser);
                if (allNewUsers) {
@@ -2263,7 +2271,7 @@ public class PackageManagerService extends IPackageManager.Stub
                        if (packageExternalStorageType != StorageEnums.UNKNOWN) {
                            FrameworkStatsLog.write(
                                    FrameworkStatsLog.APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED,
                                    packageExternalStorageType, res.pkg.getPackageName());
                                    packageExternalStorageType, packageName);
                        }
                    }
                    if (DEBUG_INSTALL) {
@@ -2295,14 +2303,11 @@ public class PackageManagerService extends IPackageManager.Stub
                    if (packageIsBrowser(packageName, userId)) {
                        // If this browser is restored from user's backup, do not clear
                        // default-browser state for this user
                        synchronized (mLock) {
                            final PackageSetting pkgSetting = mSettings.mPackages.get(packageName);
                        if (pkgSetting.getInstallReason(userId)
                                != PackageManager.INSTALL_REASON_DEVICE_RESTORE) {
                            mPermissionManager.setDefaultBrowser(null, true, true, userId);
                        }
                    }
                    }
                    // We may also need to apply pending (restored) runtime permission grants
                    // within these users.