summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amith Yamasani <yamasani@google.com> 2012-08-20 10:45:12 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2012-08-20 10:45:12 -0700
commitff7735b0ee8c3347d0f3cb1866e454be0e9534e2 (patch)
treee571e445edf93de74fc0827cfc26e88b43264a68
parentc48ee60426a741d0a8e7df7df8af2a9ac24cee85 (diff)
parenta3db5297cda370ce41db99b6839cd9528c31ef7c (diff)
am a3db5297: Merge "ProviderMap: remove hashmap when entire user specific entries are removed"
* commit 'a3db5297cda370ce41db99b6839cd9528c31ef7c': ProviderMap: remove hashmap when entire user specific entries are removed
-rw-r--r--services/java/com/android/server/am/ProviderMap.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/services/java/com/android/server/am/ProviderMap.java b/services/java/com/android/server/am/ProviderMap.java
index d148ec310426..e4608a2272f6 100644
--- a/services/java/com/android/server/am/ProviderMap.java
+++ b/services/java/com/android/server/am/ProviderMap.java
@@ -127,7 +127,12 @@ public class ProviderMap {
Slog.i(TAG,
"Removing from providersByName name=" + name + " user="
+ (optionalUserId == -1 ? Binder.getOrigCallingUser() : optionalUserId));
- getProvidersByName(optionalUserId).remove(name);
+ HashMap<String, ContentProviderRecord> map = getProvidersByName(optionalUserId);
+ // map returned by getProvidersByName wouldn't be null
+ map.remove(name);
+ if (map.size() == 0) {
+ mProvidersByNamePerUser.remove(optionalUserId);
+ }
}
}
@@ -141,7 +146,12 @@ public class ProviderMap {
Slog.i(TAG,
"Removing from providersByClass name=" + name + " user="
+ (optionalUserId == -1 ? Binder.getOrigCallingUser() : optionalUserId));
- getProvidersByClass(optionalUserId).remove(name);
+ HashMap<ComponentName, ContentProviderRecord> map = getProvidersByClass(optionalUserId);
+ // map returned by getProvidersByClass wouldn't be null
+ map.remove(name);
+ if (map.size() == 0) {
+ mProvidersByClassPerUser.remove(optionalUserId);
+ }
}
}