Skip to content

Commit a3db529

Browse files
Amith Yamasaniandroid code review
authored andcommitted
Merge "ProviderMap: remove hashmap when entire user specific entries are removed"
2 parents 6626398 + 8809004 commit a3db529

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

services/java/com/android/server/am/ProviderMap.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,12 @@ void removeProviderByName(String name, int optionalUserId) {
127127
Slog.i(TAG,
128128
"Removing from providersByName name=" + name + " user="
129129
+ (optionalUserId == -1 ? Binder.getOrigCallingUser() : optionalUserId));
130-
getProvidersByName(optionalUserId).remove(name);
130+
HashMap<String, ContentProviderRecord> map = getProvidersByName(optionalUserId);
131+
// map returned by getProvidersByName wouldn't be null
132+
map.remove(name);
133+
if (map.size() == 0) {
134+
mProvidersByNamePerUser.remove(optionalUserId);
135+
}
131136
}
132137
}
133138

@@ -141,7 +146,12 @@ void removeProviderByClass(ComponentName name, int optionalUserId) {
141146
Slog.i(TAG,
142147
"Removing from providersByClass name=" + name + " user="
143148
+ (optionalUserId == -1 ? Binder.getOrigCallingUser() : optionalUserId));
144-
getProvidersByClass(optionalUserId).remove(name);
149+
HashMap<ComponentName, ContentProviderRecord> map = getProvidersByClass(optionalUserId);
150+
// map returned by getProvidersByClass wouldn't be null
151+
map.remove(name);
152+
if (map.size() == 0) {
153+
mProvidersByClassPerUser.remove(optionalUserId);
154+
}
145155
}
146156
}
147157

0 commit comments

Comments
 (0)