diff options
| author | 2019-12-12 18:44:14 +0000 | |
|---|---|---|
| committer | 2019-12-12 18:44:14 +0000 | |
| commit | 703c18b18f5163c11ea41d503c3c595d9a1c386f (patch) | |
| tree | f2142f1211f1ad1369a71cae5cbf9627e04aad19 | |
| parent | 183ddf40f093834a1e8099c439147c65449bf509 (diff) | |
| parent | bfb96ce3e62a175c80b12af3c24504630fbc60f7 (diff) | |
Merge "Allow persistent observers to define packages they care about"
| -rw-r--r-- | services/core/java/com/android/server/PackageWatchdog.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java index 9115a8e42b97..deff440aa0a6 100644 --- a/services/core/java/com/android/server/PackageWatchdog.java +++ b/services/core/java/com/android/server/PackageWatchdog.java @@ -532,6 +532,17 @@ public class PackageWatchdog { default boolean isPersistent() { return false; } + + /** + * Returns {@code true} if this observer wishes to observe the given package, {@code false} + * otherwise + * + * <p> A persistent observer may choose to start observing certain failing packages, even if + * it has not explicitly asked to watch the package with {@link #startObservingHealth}. + */ + default boolean mayObservePackage(String packageName) { + return false; + } } long getTriggerFailureCount() { @@ -1016,6 +1027,11 @@ public class PackageWatchdog { */ @GuardedBy("mLock") public boolean onPackageFailureLocked(String packageName) { + if (packages.get(packageName) == null && registeredObserver.isPersistent() + && registeredObserver.mayObservePackage(packageName)) { + packages.put(packageName, sPackageWatchdog.newMonitoredPackage( + packageName, DEFAULT_OBSERVING_DURATION_MS, false)); + } MonitoredPackage p = packages.get(packageName); if (p != null) { return p.onFailureLocked(); |