diff options
Diffstat (limited to 'services/java/com/android/server/GadgetService.java')
-rw-r--r-- | services/java/com/android/server/GadgetService.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/services/java/com/android/server/GadgetService.java b/services/java/com/android/server/GadgetService.java index 4a430e03c5a1..09437785a5ab 100644 --- a/services/java/com/android/server/GadgetService.java +++ b/services/java/com/android/server/GadgetService.java @@ -229,7 +229,7 @@ class GadgetService extends IGadgetService.Stub int callingUid = getCallingUid(); final int N = mHosts.size(); boolean changed = false; - for (int i=0; i<N; i++) { + for (int i=N-1; i>=0; i--) { Host host = mHosts.get(i); if (host.uid == callingUid) { deleteHostLocked(host); @@ -244,7 +244,7 @@ class GadgetService extends IGadgetService.Stub void deleteHostLocked(Host host) { final int N = host.instances.size(); - for (int i=0; i<N; i++) { + for (int i=N-1; i>=0; i--) { GadgetId id = host.instances.get(i); deleteGadgetLocked(id); } @@ -622,6 +622,17 @@ class GadgetService extends IGadgetService.Stub } return gadgetIds; } + + public int[] getGadgetIds(ComponentName provider) { + synchronized (mGadgetIds) { + Provider p = lookupProviderLocked(provider); + if (p != null && getCallingUid() == p.uid) { + return getGadgetIds(p); + } else { + return new int[0]; + } + } + } private Provider parseProviderInfoXml(ComponentName component, ResolveInfo ri) { Provider p = null; |