diff options
| author | 2012-08-20 10:45:12 -0700 | |
|---|---|---|
| committer | 2012-08-20 10:45:12 -0700 | |
| commit | ff7735b0ee8c3347d0f3cb1866e454be0e9534e2 (patch) | |
| tree | e571e445edf93de74fc0827cfc26e88b43264a68 | |
| parent | c48ee60426a741d0a8e7df7df8af2a9ac24cee85 (diff) | |
| parent | a3db5297cda370ce41db99b6839cd9528c31ef7c (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.java | 14 |
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); + } } } |