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

Commit 479a296d authored by Richard Uhler's avatar Richard Uhler
Browse files

Rename RollbackData.inProgress to restoreUserDataInProgress.

Which is much more explicit about what is in progress.

Also, persist restoreUserDataInProgress in preparation for properly
handling that flag for staged installs.

Bug: 124044231
Test: atest RollbackTest
Change-Id: Icbb67c3c0dbba7ee74597d14f7de4a53cf884608
parent 803db6cf
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -69,12 +69,12 @@ class RollbackData {
    public int apkSessionId = -1;

    /**
     * Whether this Rollback is currently in progress. This field is true from the point
     * we commit a {@code PackageInstaller} session containing these packages to the point the
     * {@code PackageInstaller} calls into the {@code onFinished} callback.
     * True if we are expecting the package manager to call restoreUserData
     * for this rollback because it has just been committed but the rollback
     * has not yet been fully applied.
     */
    // NOTE: All accesses to this field are from the RollbackManager handler thread.
    public boolean inProgress = false;
    public boolean restoreUserDataInProgress = false;

    RollbackData(int rollbackId, File backupDir, int stagedSessionId, boolean isAvailable) {
        this.rollbackId = rollbackId;
+4 −4
Original line number Diff line number Diff line
@@ -335,7 +335,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
            return;
        }

        if (data.inProgress) {
        if (data.restoreUserDataInProgress) {
            sendFailure(statusReceiver, RollbackManager.STATUS_FAILURE_ROLLBACK_UNAVAILABLE,
                    "Rollback for package is already in progress.");
            return;
@@ -441,7 +441,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
                        getHandler().post(() -> {
                            // We've now completed the rollback, so we mark it as no longer in
                            // progress.
                            data.inProgress = false;
                            data.restoreUserDataInProgress = false;

                            int status = result.getIntExtra(PackageInstaller.EXTRA_STATUS,
                                    PackageInstaller.STATUS_FAILURE);
@@ -469,7 +469,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
                    }
            );

            data.inProgress = true;
            data.restoreUserDataInProgress = true;
            parentSession.commit(receiver.getIntentSender());
        } catch (IOException e) {
            Log.e(TAG, "Rollback failed", e);
@@ -1044,7 +1044,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
            return;
        }

        if (!rollbackData.inProgress) {
        if (!rollbackData.restoreUserDataInProgress) {
            Log.e(TAG, "Request to restore userData for: " + packageName
                    + ", but no rollback in progress.");
            return;
+2 −0
Original line number Diff line number Diff line
@@ -274,6 +274,7 @@ class RollbackStore {
            dataJson.put("stagedSessionId", data.stagedSessionId);
            dataJson.put("isAvailable", data.isAvailable);
            dataJson.put("apkSessionId", data.apkSessionId);
            dataJson.put("restoreUserDataInProgress", data.restoreUserDataInProgress);

            PrintWriter pw = new PrintWriter(new File(data.backupDir, "rollback.json"));
            pw.println(dataJson.toString());
@@ -338,6 +339,7 @@ class RollbackStore {
            data.packages.addAll(packageRollbackInfosFromJson(dataJson.getJSONArray("packages")));
            data.timestamp = Instant.parse(dataJson.getString("timestamp"));
            data.apkSessionId = dataJson.getInt("apkSessionId");
            data.restoreUserDataInProgress = dataJson.getBoolean("restoreUserDataInProgress");
            return data;
        } catch (JSONException | DateTimeParseException e) {
            throw new IOException(e);