summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/autofill/java/com/android/server/autofill/AutofillManagerService.java19
1 files changed, 14 insertions, 5 deletions
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
index 9b833f71869b..21398e37e6c5 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerService.java
@@ -588,7 +588,7 @@ public final class AutofillManagerService extends SystemService {
private void addCompatibilityModeRequestsLocked(@NonNull AutofillManagerServiceImpl service
, int userId) {
- mAutofillCompatState.reset();
+ mAutofillCompatState.reset(userId);
final ArrayMap<String, Long> compatPackages =
service.getCompatibilityPackagesLocked();
if (compatPackages == null || compatPackages.isEmpty()) {
@@ -721,6 +721,9 @@ public final class AutofillManagerService extends SystemService {
static final class AutofillCompatState {
private final Object mLock = new Object();
+ /**
+ * Map of app->compat_state per user.
+ */
@GuardedBy("mLock")
private SparseArray<ArrayMap<String, PackageCompatState>> mUserSpecs;
@@ -787,11 +790,17 @@ public final class AutofillManagerService extends SystemService {
}
}
- void reset() {
+ void reset(int userId) {
synchronized (mLock) {
if (mUserSpecs != null) {
- mUserSpecs.clear();
- mUserSpecs = null;
+ mUserSpecs.delete(userId);
+ final int newSize = mUserSpecs.size();
+ if (newSize == 0) {
+ if (sVerbose) Slog.v(TAG, "reseting mUserSpecs");
+ mUserSpecs = null;
+ } else {
+ if (sVerbose) Slog.v(TAG, "mUserSpecs down to " + newSize);
+ }
}
}
}
@@ -806,7 +815,7 @@ public final class AutofillManagerService extends SystemService {
for (int i = 0; i < mUserSpecs.size(); i++) {
final int user = mUserSpecs.keyAt(i);
pw.print(prefix); pw.print("User: "); pw.println(user);
- final ArrayMap<String,PackageCompatState> perUser = mUserSpecs.get(i);
+ final ArrayMap<String, PackageCompatState> perUser = mUserSpecs.valueAt(i);
for (int j = 0; j < perUser.size(); j++) {
final String packageName = perUser.keyAt(j);
final PackageCompatState state = perUser.valueAt(j);