summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Gavin Corkery <gavincorkery@google.com> 2019-12-12 18:44:14 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-12-12 18:44:14 +0000
commit703c18b18f5163c11ea41d503c3c595d9a1c386f (patch)
treef2142f1211f1ad1369a71cae5cbf9627e04aad19
parent183ddf40f093834a1e8099c439147c65449bf509 (diff)
parentbfb96ce3e62a175c80b12af3c24504630fbc60f7 (diff)
Merge "Allow persistent observers to define packages they care about"
-rw-r--r--services/core/java/com/android/server/PackageWatchdog.java16
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();