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

Commit f25aeda0 authored by Harshit Mahajan's avatar Harshit Mahajan
Browse files

Fix rollback reason in rollback all case

Prior to the changes ag/21612554, the only case where rollback all
was being executed only when there was NATIVE_CRASH, so hardcoding it
was working. Since now it's not the case, we need to pass the correct
failure reason for execution of rollback all.

Bug: b/273585148
Test: atest CtsRootRollbackManagerHostTestCases:com.android.cts_root.rollback.host.RollbackManagerHostTest#testBadApkOnly -- --abi x86_64
Change-Id: I7f77a77ec7935a6327bb758c3398f35389facaf2
parent c4e21743
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -129,7 +129,7 @@ final class RollbackPackageHealthObserver implements PackageHealthObserver {
    public boolean execute(@Nullable VersionedPackage failedPackage,
            @FailureReasons int rollbackReason, int mitigationCount) {
        if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) {
            mHandler.post(this::rollbackAll);
            mHandler.post(() -> rollbackAll(rollbackReason));
            return true;
        }

@@ -141,7 +141,7 @@ final class RollbackPackageHealthObserver implements PackageHealthObserver {
            }
            mHandler.post(() -> rollbackPackage(rollback, failedPackage, rollbackReason));
        } else if (mitigationCount > 1) {
            mHandler.post(this::rollbackAll);
            mHandler.post(() -> rollbackAll(rollbackReason));
        }

        // Assume rollbacks executed successfully
@@ -478,7 +478,7 @@ final class RollbackPackageHealthObserver implements PackageHealthObserver {
    }

    @WorkerThread
    private void rollbackAll() {
    private void rollbackAll(@FailureReasons int rollbackReason) {
        assertInWorkerThread();
        RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class);
        List<RollbackInfo> rollbacks = rollbackManager.getAvailableRollbacks();
@@ -497,7 +497,7 @@ final class RollbackPackageHealthObserver implements PackageHealthObserver {

        for (RollbackInfo rollback : rollbacks) {
            VersionedPackage sample = rollback.getPackages().get(0).getVersionRolledBackFrom();
            rollbackPackage(rollback, sample, PackageWatchdog.FAILURE_REASON_NATIVE_CRASH);
            rollbackPackage(rollback, sample, rollbackReason);
        }
    }
}