Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ccf6c681 authored by Hyunyoung Song's avatar Hyunyoung Song
Browse files

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
parent a11ffa64
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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);
+2 −1
Original line number Diff line number Diff line
@@ -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);
+3 −2
Original line number Diff line number Diff line
@@ -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);
        }
    }