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

Commit 031fc607 authored by Alex Buynytskyy's avatar Alex Buynytskyy Committed by Automerger Merge Worker
Browse files

Merge "Always send result code to IntentSender, if present." into udc-dev am:...

Merge "Always send result code to IntentSender, if present." into udc-dev am: 65f443a6 am: 475ee6c9 am: 665c428f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23176391



Change-Id: I7aac707b8b932ba532626312502974c9e6658438
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 0394060e 665c428f
Loading
Loading
Loading
Loading
+13 −10
Original line number Diff line number Diff line
@@ -606,8 +606,8 @@ final class InstallPackageHelper {
        Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
    }

    public int installExistingPackageAsUser(@Nullable String packageName, @UserIdInt int userId,
            @PackageManager.InstallFlags int installFlags,
    public Pair<Integer, IntentSender> installExistingPackageAsUser(@Nullable String packageName,
            @UserIdInt int userId, @PackageManager.InstallFlags int installFlags,
            @PackageManager.InstallReason int installReason,
            @Nullable List<String> allowlistedRestrictedPermissions,
            @Nullable IntentSender intentSender) {
@@ -632,7 +632,7 @@ final class InstallPackageHelper {
                true /* requireFullPermission */, true /* checkShell */,
                "installExistingPackage for user " + userId);
        if (mPm.isUserRestricted(userId, UserManager.DISALLOW_INSTALL_APPS)) {
            return PackageManager.INSTALL_FAILED_USER_RESTRICTED;
            return Pair.create(PackageManager.INSTALL_FAILED_USER_RESTRICTED, intentSender);
        }

        final long callingId = Binder.clearCallingIdentity();
@@ -648,7 +648,7 @@ final class InstallPackageHelper {
                final Computer snapshot = mPm.snapshotComputer();
                pkgSetting = mPm.mSettings.getPackageLPr(packageName);
                if (pkgSetting == null || pkgSetting.getPkg() == null) {
                    return PackageManager.INSTALL_FAILED_INVALID_URI;
                    return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender);
                }
                if (!snapshot.canViewInstantApps(callingUid, UserHandle.getUserId(callingUid))) {
                    // only allow the existing package to be used if it's installed as a full
@@ -661,7 +661,7 @@ final class InstallPackageHelper {
                        }
                    }
                    if (!installAllowed) {
                        return PackageManager.INSTALL_FAILED_INVALID_URI;
                        return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender);
                    }
                }
                if (!pkgSetting.getInstalled(userId)) {
@@ -719,14 +719,17 @@ final class InstallPackageHelper {
                }
                // start async restore with no post-install since we finish install here

                final IntentSender onCompleteSender = intentSender;
                intentSender = null;

                InstallRequest request = new InstallRequest(userId,
                        PackageManager.INSTALL_SUCCEEDED, pkgSetting.getPkg(), new int[]{ userId },
                        () -> {
                            mPm.restorePermissionsAndUpdateRolesForNewUserInstall(packageName,
                                    userId);
                            if (intentSender != null) {
                                onRestoreComplete(PackageManager.INSTALL_SUCCEEDED, mContext,
                                        intentSender);
                            if (onCompleteSender != null) {
                                onInstallComplete(PackageManager.INSTALL_SUCCEEDED, mContext,
                                        onCompleteSender);
                            }
                        });
                restoreAndPostInstall(request);
@@ -735,10 +738,10 @@ final class InstallPackageHelper {
            Binder.restoreCallingIdentity(callingId);
        }

        return PackageManager.INSTALL_SUCCEEDED;
        return Pair.create(PackageManager.INSTALL_SUCCEEDED, intentSender);
    }

    private static void onRestoreComplete(int returnCode, Context context, IntentSender target) {
    static void onInstallComplete(int returnCode, Context context, IntentSender target) {
        Intent fillIn = new Intent();
        fillIn.putExtra(PackageInstaller.EXTRA_STATUS,
                PackageManager.installStatusToPublicStatus(returnCode));
+9 −2
Original line number Diff line number Diff line
@@ -1293,8 +1293,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
    public void installExistingPackage(String packageName, int installFlags, int installReason,
            IntentSender statusReceiver, int userId, List<String> allowListedPermissions) {
        final InstallPackageHelper installPackageHelper = new InstallPackageHelper(mPm);
        installPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags,
                installReason, allowListedPermissions, statusReceiver);

        var result = installPackageHelper.installExistingPackageAsUser(packageName, userId,
                installFlags, installReason, allowListedPermissions, statusReceiver);

        int returnCode = result.first;
        IntentSender onCompleteSender = result.second;
        if (onCompleteSender != null) {
            InstallPackageHelper.onInstallComplete(returnCode, mContext, onCompleteSender);
        }
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -5350,7 +5350,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        public int installExistingPackageAsUser(String packageName, int userId, int installFlags,
                int installReason, List<String> whiteListedPermissions) {
            return mInstallPackageHelper.installExistingPackageAsUser(packageName, userId, installFlags,
                    installReason, whiteListedPermissions, null);
                    installReason, whiteListedPermissions, null).first;
        }

        @Override