diff options
| author | 2015-06-17 15:23:31 -0700 | |
|---|---|---|
| committer | 2015-06-17 15:23:31 -0700 | |
| commit | ccf6c6814736e368949b64aadce676ab6d045fdc (patch) | |
| tree | b04c73f26b72f1ae6247fffa83370844da16e1ab | |
| parent | a11ffa64366e39899bcda7448e5b5ffe727bea48 (diff) | |
AppWidgetServiceImpl should use ParceledListSlice as return object
b/19904873
> Reason: to prevent TransactionTooLargeException from occuring when
binder transaction size goes over the limit.
Change-Id: I054cb161d235234f3ccdaadd70314163e690b0db
3 files changed, 9 insertions, 6 deletions
diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index 1205708478a7..278c9d6f8699 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -20,6 +20,7 @@ import android.annotation.Nullable; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.ParceledListSlice; import android.os.Bundle; import android.os.IBinder; import android.os.Process; @@ -753,16 +754,16 @@ public class AppWidgetManager { } try { - List<AppWidgetProviderInfo> providers = mService.getInstalledProvidersForProfile( + ParceledListSlice<AppWidgetProviderInfo> providers = mService.getInstalledProvidersForProfile( categoryFilter, profile.getIdentifier()); if (providers == null) { return Collections.emptyList(); } - for (AppWidgetProviderInfo info : providers) { + for (AppWidgetProviderInfo info : providers.getList()) { // Converting complex to dp. convertSizesToPixels(info); } - return providers; + return providers.getList(); } catch (RemoteException e) { throw new RuntimeException("system server dead?", e); diff --git a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl index 7d3db02d6bca..5a195cb7dd20 100644 --- a/core/java/com/android/internal/appwidget/IAppWidgetService.aidl +++ b/core/java/com/android/internal/appwidget/IAppWidgetService.aidl @@ -20,6 +20,7 @@ import android.content.ComponentName; import android.content.Intent; import android.content.IntentSender; import android.content.pm.ApplicationInfo; +import android.content.pm.ParceledListSlice; import android.appwidget.AppWidgetProviderInfo; import com.android.internal.appwidget.IAppWidgetHost; import android.os.Bundle; @@ -54,7 +55,7 @@ interface IAppWidgetService { in RemoteViews views); void updateAppWidgetProvider(in ComponentName provider, in RemoteViews views); void notifyAppWidgetViewDataChanged(String packageName, in int[] appWidgetIds, int viewId); - List<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter, + ParceledListSlice getInstalledProvidersForProfile(int categoryFilter, int profileId); AppWidgetProviderInfo getAppWidgetInfo(String callingPackage, int appWidgetId); boolean hasBindAppWidgetPermission(in String packageName, int userId); diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index 17d70789c782..b737de3cd64e 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -37,6 +37,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.ParceledListSlice; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; @@ -1281,7 +1282,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } @Override - public List<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter, + public ParceledListSlice<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter, int profileId) { final int userId = UserHandle.getCallingUserId(); @@ -1321,7 +1322,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku } } - return result; + return new ParceledListSlice<AppWidgetProviderInfo>(result); } } |