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

Commit 87698d8e authored by Zimuzo's avatar Zimuzo
Browse files

Fix changing package installer after rollback

When executing rollbacks, we now set the SessionParams installerPackageName
to the targetPackage installer instead of using the default which is the
calling package.

Test: atest RollbackTest with Ic85464583f7c6b0778d853a87670d250a42c33de in
succession works.
Bug: 112431924

Change-Id: Id115c2c0d6838d81213dfc0d186ef30e13d6f879
parent be749520
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -357,8 +357,14 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
        PackageManager pm = context.getPackageManager();
        try {
            PackageInstaller packageInstaller = pm.getPackageInstaller();
            String installerPackageName = pm.getInstallerPackageName(targetPackageName);
            if (installerPackageName == null) {
                sendFailure(statusReceiver, "Cannot find installer package");
                return;
            }
            PackageInstaller.SessionParams parentParams = new PackageInstaller.SessionParams(
                    PackageInstaller.SessionParams.MODE_FULL_INSTALL);
            parentParams.setInstallerPackageName(installerPackageName);
            parentParams.setAllowDowngrade(true);
            parentParams.setMultiPackage();
            int parentSessionId = packageInstaller.createSession(parentParams);
@@ -367,6 +373,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
            for (PackageRollbackInfo info : data.packages) {
                PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(
                        PackageInstaller.SessionParams.MODE_FULL_INSTALL);
                params.setInstallerPackageName(installerPackageName);
                params.setAllowDowngrade(true);
                int sessionId = packageInstaller.createSession(params);
                PackageInstaller.Session session = packageInstaller.openSession(sessionId);