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

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

Moving startObservingHealth API to PackageWatchdog

Based on the API review, moving the API to PackageWatchdog instead of
going through the observer route

Bug: 377888325
Test: TH
Flag: android.crashrecovery.flags.enable_crashrecovery
Change-Id: I50e6381ff947f4ec6324bca2292cb0562c34e7c0
parent 276b3b65
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -274,16 +274,6 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
        Preconditions.checkState(mHandler.getLooper().isCurrentThread());
    }

    /**
     * Start observing health of {@code packages} for {@code durationMs}.
     * This may cause {@code packages} to be rolled back if they crash too freqeuntly.
     */
    @AnyThread
    @NonNull
    public void startObservingHealth(@NonNull List<String> packages, @NonNull long durationMs) {
        PackageWatchdog.getInstance(mContext).startExplicitHealthCheck(this, packages, durationMs);
    }

    @AnyThread
    @NonNull
    public void notifyRollbackAvailable(@NonNull RollbackInfo rollback) {
+7 −5
Original line number Diff line number Diff line
@@ -163,6 +163,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba
    private final RollbackPackageHealthObserver mPackageHealthObserver;
    private final AppDataRollbackHelper mAppDataRollbackHelper;
    private final Runnable mRunExpiration = this::runExpiration;
    private final PackageWatchdog mPackageWatchdog;

    // The # of milli-seconds to sleep for each received ACTION_PACKAGE_ENABLE_ROLLBACK.
    // Used by #blockRollbackManager to test timeout in enabling rollbacks.
@@ -190,6 +191,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba

        mPackageHealthObserver = new RollbackPackageHealthObserver(mContext);
        mAppDataRollbackHelper = new AppDataRollbackHelper(mInstaller);
        mPackageWatchdog = PackageWatchdog.getInstance(mContext);

        // Kick off and start monitoring the handler thread.
        HandlerThread handlerThread = new HandlerThread("RollbackManagerServiceHandler");
@@ -1249,12 +1251,12 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba
                // should document in PackageInstaller.SessionParams#setEnableRollback
                // After enabling and committing any rollback, observe packages and
                // prepare to rollback if packages crashes too frequently.
                mPackageHealthObserver.startObservingHealth(rollback.getPackageNames(),
                        mRollbackLifetimeDurationInMillis);
                mPackageWatchdog.startExplicitHealthCheck(mPackageHealthObserver,
                        rollback.getPackageNames(), mRollbackLifetimeDurationInMillis);
            }
        } else {
            mPackageHealthObserver.startObservingHealth(rollback.getPackageNames(),
                    mRollbackLifetimeDurationInMillis);
            mPackageWatchdog.startExplicitHealthCheck(mPackageHealthObserver,
                    rollback.getPackageNames(), mRollbackLifetimeDurationInMillis);
        }
        runExpiration();
    }
@@ -1317,7 +1319,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub implements Rollba
            }

        });
        PackageWatchdog.getInstance(mContext).dump(ipw);
        mPackageWatchdog.dump(ipw);
    }

    @AnyThread