summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author JW Wang <wangchun@google.com> 2021-02-20 10:45:27 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-02-20 10:45:27 +0000
commitc43bbe80d96d0fb4303b5177c71ad8bc1aef22e7 (patch)
tree45f6121eeb3f41d321aa7f26cea9b18b824c8551
parent515af7889f6ea9db5317c23a648adb2573fca7ab (diff)
parent07afc8b6fe973da5ba8f4c11cf90329a2e788fc2 (diff)
Merge changes I17d87bae,Ie975e591,I6880b9b9,Ic752c7f3 into sc-dev
* changes: Add a TEST_MAPPING (9/n) Fix insufficient synchronization (8/n) Fix a race in the callback (7/n) setExplicitHealthCheckEnabled() needs to set mSyncRequired (6/n)
-rw-r--r--services/core/java/com/android/server/PackageWatchdog.java13
-rw-r--r--tests/PackageWatchdog/TEST_MAPPING7
2 files changed, 16 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java
index 67f6ec9f9a41..f5c2aacaebb0 100644
--- a/services/core/java/com/android/server/PackageWatchdog.java
+++ b/services/core/java/com/android/server/PackageWatchdog.java
@@ -259,10 +259,7 @@ public class PackageWatchdog {
mIsPackagesReady = true;
mHealthCheckController.setCallbacks(packageName -> onHealthCheckPassed(packageName),
packages -> onSupportedPackages(packages),
- () -> {
- syncRequestsAsync();
- mSyncRequired = true;
- });
+ this::onSyncRequestNotified);
setPropertyChangedListenerLocked();
updateConfigs();
registerConnectivityModuleHealthListener();
@@ -537,6 +534,7 @@ public class PackageWatchdog {
synchronized (mLock) {
mIsHealthCheckEnabled = enabled;
mHealthCheckController.setEnabled(enabled);
+ mSyncRequired = true;
// Prune to update internal state whenever health check is enabled/disabled
syncState("health check state " + (enabled ? "enabled" : "disabled"));
}
@@ -788,6 +786,13 @@ public class PackageWatchdog {
}
}
+ private void onSyncRequestNotified() {
+ synchronized (mLock) {
+ mSyncRequired = true;
+ syncRequestsAsync();
+ }
+ }
+
@GuardedBy("mLock")
private Set<String> getPackagesPendingHealthChecksLocked() {
Set<String> packages = new ArraySet<>();
diff --git a/tests/PackageWatchdog/TEST_MAPPING b/tests/PackageWatchdog/TEST_MAPPING
new file mode 100644
index 000000000000..6494a273eced
--- /dev/null
+++ b/tests/PackageWatchdog/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "presubmit": [
+ {
+ "name": "PackageWatchdogTest"
+ }
+ ]
+}