diff options
Diffstat (limited to 'services/java/com/android/server/am/ProviderMap.java')
-rw-r--r-- | services/java/com/android/server/am/ProviderMap.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ProviderMap.java b/services/java/com/android/server/am/ProviderMap.java index 7a4fef6..2d7167b 100644 --- a/services/java/com/android/server/am/ProviderMap.java +++ b/services/java/com/android/server/am/ProviderMap.java @@ -180,6 +180,49 @@ public class ProviderMap { } } + private boolean collectForceStopProvidersLocked(String name, int appId, + boolean doit, boolean evenPersistent, int userId, + HashMap<ComponentName, ContentProviderRecord> providers, + ArrayList<ContentProviderRecord> result) { + boolean didSomething = false; + for (ContentProviderRecord provider : providers.values()) { + if ((name == null || provider.info.packageName.equals(name)) + && (provider.proc == null || evenPersistent || !provider.proc.persistent)) { + if (!doit) { + return true; + } + didSomething = true; + result.add(provider); + } + } + return didSomething; + } + + boolean collectForceStopProviders(String name, int appId, + boolean doit, boolean evenPersistent, int userId, + ArrayList<ContentProviderRecord> result) { + boolean didSomething = collectForceStopProvidersLocked(name, appId, doit, + evenPersistent, userId, mSingletonByClass, result); + if (!doit && didSomething) { + return true; + } + if (userId == UserHandle.USER_ALL) { + for (int i=0; i<mProvidersByClassPerUser.size(); i++) { + if (collectForceStopProvidersLocked(name, appId, doit, evenPersistent, + userId, mProvidersByClassPerUser.valueAt(i), result)) { + if (!doit) { + return true; + } + didSomething = true; + } + } + } else { + didSomething |= collectForceStopProvidersLocked(name, appId, doit, evenPersistent, + userId, getProvidersByClass(userId), result); + } + return didSomething; + } + private void dumpProvidersByClassLocked(PrintWriter pw, boolean dumpAll, HashMap<ComponentName, ContentProviderRecord> map) { Iterator<Map.Entry<ComponentName, ContentProviderRecord>> it = map.entrySet().iterator(); |