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

Commit 72fb961c authored by Richard Uhler's avatar Richard Uhler
Browse files

Wire up info for staged/apex rollbacks.

Assuming we know if a rollback is staged or for apex, propagate that
information properly to RollbackInfo and when executing the rollback.

Test: atest RollbackTest
Bug: 112431924
Change-Id: Ia4d800d7e946206e75fd559aa77146f0010e0615
parent b495b6b4
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -68,4 +68,11 @@ class RollbackData {
        this.backupDir = backupDir;
        this.stagedSessionId = stagedSessionId;
    }

    /**
     * Whether the rollback is for rollback of a staged install.
     */
    public boolean isStaged() {
        return stagedSessionId != -1;
    }
}
+13 −7
Original line number Diff line number Diff line
@@ -221,9 +221,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
            List<RollbackInfo> rollbacks = new ArrayList<>();
            for (int i = 0; i < mAvailableRollbacks.size(); ++i) {
                RollbackData data = mAvailableRollbacks.get(i);
                // TODO: Pass the correct value for isStaged instead of
                // assuming always false.
                rollbacks.add(new RollbackInfo(data.rollbackId, data.packages, false));
                rollbacks.add(new RollbackInfo(data.rollbackId, data.packages, data.isStaged()));
            }
            return new ParceledListSlice<>(rollbacks);
        }
@@ -323,6 +321,10 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
                    PackageInstaller.SessionParams.MODE_FULL_INSTALL);
            parentParams.setAllowDowngrade(true);
            parentParams.setMultiPackage();
            if (data.isStaged()) {
                parentParams.setStaged();
            }

            int parentSessionId = packageInstaller.createSession(parentParams);
            PackageInstaller.Session parentSession = packageInstaller.openSession(parentSessionId);

@@ -337,6 +339,12 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
                }
                params.setInstallerPackageName(installerPackageName);
                params.setAllowDowngrade(true);
                if (data.isStaged()) {
                    params.setStaged();
                }
                if (info.isApex()) {
                    params.setInstallAsApex();
                }
                int sessionId = packageInstaller.createSession(params);
                PackageInstaller.Session session = packageInstaller.openSession(sessionId);

@@ -376,11 +384,9 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
                                return;
                            }

                            // TODO: Set the correct values for isStaged and
                            // committedSessionId.
                            addRecentlyExecutedRollback(new RollbackInfo(
                                        data.rollbackId, data.packages, false, causePackages,
                                        PackageInstaller.SessionInfo.INVALID_ID));
                                        data.rollbackId, data.packages, data.isStaged(),
                                        causePackages, parentSessionId));
                            sendSuccess(statusReceiver);

                            Intent broadcast = new Intent(Intent.ACTION_ROLLBACK_COMMITTED);