Reset compat mode settings on settings change.
Test: manual verification
Test: atest CtsAutoFillServiceTestCases:VirtualContainerActivityCompatModeTest
Bug: 73786629
Change-Id: Id77084fe38e75eaedba828d8737e6e465c015400
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
index db62961..05237af 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
@@ -524,6 +524,7 @@
private void addCompatibilityModeRequestsLocked(@NonNull AutofillManagerServiceImpl service
, int userId) {
+ mAutofillCompatState.reset();
final ArrayMap<String, Pair<Long, String>> compatPackages =
service.getCompatibilityPackagesLocked();
if (compatPackages == null || compatPackages.isEmpty()) {
@@ -626,6 +627,15 @@
}
}
}
+
+ void reset() {
+ synchronized (mLock) {
+ if (mUserSpecs != null) {
+ mUserSpecs.clear();
+ mUserSpecs = null;
+ }
+ }
+ }
}
final class AutoFillManagerServiceStub extends IAutoFillManager.Stub {
@@ -1045,6 +1055,9 @@
Settings.Secure.AUTOFILL_SERVICE), false, this, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.Secure.getUriFor(
Settings.Secure.USER_SETUP_COMPLETE), false, this, UserHandle.USER_ALL);
+ resolver.registerContentObserver(Settings.Global.getUriFor(
+ Settings.Global.AUTOFILL_COMPAT_ALLOWED_PACKAGES), false, this,
+ UserHandle.USER_ALL);
}
@Override