OSDN Git Service

Adding support for passing arbitrary extras when requesting to pin a widget.
authorSunny Goyal <sunnygoyal@google.com>
Tue, 28 Feb 2017 19:11:51 +0000 (11:11 -0800)
committerSunny Goyal <sunnygoyal@google.com>
Thu, 2 Mar 2017 00:58:21 +0000 (16:58 -0800)
Also defining an extra constant for widget preview which can be used by
developers to provide a snapshot of the widget with the pin request

Bug: 35811129
Test: All exisiting tests passing
 for f in 1 2 3 4 5 6 7 8 9 10; do \
   adb shell am instrument -e class com.android.server.pm.ShortcutManagerTest$f \
      -w com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner; \
        done;

 adb shell am instrument -e class com.android.server.appwidget.AppWidgetServiceImplTest \
   -w com.android.frameworks.servicestests/android.support.test.runner.AndroidJUnitRunner

Change-Id: Id854bd28468a5bf0416ff1a1b19c44d850016f32

13 files changed:
api/current.txt
api/system-current.txt
api/test-current.txt
core/java/android/appwidget/AppWidgetManager.java
core/java/android/content/pm/IPinItemRequest.aidl
core/java/android/content/pm/LauncherApps.java
core/java/android/content/pm/ShortcutServiceInternal.java
core/java/com/android/internal/appwidget/IAppWidgetService.aidl
services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
services/core/java/com/android/server/pm/ShortcutRequestPinProcessor.java
services/core/java/com/android/server/pm/ShortcutService.java
services/tests/servicestests/src/com/android/server/appwidget/AppWidgetServiceImplTest.java
services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest9.java

index c7074cc..b4686c4 100644 (file)
@@ -6994,7 +6994,7 @@ package android.appwidget {
     method public void notifyAppWidgetViewDataChanged(int, int);
     method public void partiallyUpdateAppWidget(int[], android.widget.RemoteViews);
     method public void partiallyUpdateAppWidget(int, android.widget.RemoteViews);
-    method public boolean requestPinAppWidget(android.content.ComponentName, android.app.PendingIntent);
+    method public boolean requestPinAppWidget(android.content.ComponentName, android.os.Bundle, android.app.PendingIntent);
     method public void updateAppWidget(int[], android.widget.RemoteViews);
     method public void updateAppWidget(int, android.widget.RemoteViews);
     method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
@@ -7013,6 +7013,7 @@ package android.appwidget {
     field public static final java.lang.String EXTRA_APPWIDGET_IDS = "appWidgetIds";
     field public static final java.lang.String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
     field public static final java.lang.String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
+    field public static final java.lang.String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
     field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
     field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
     field public static final java.lang.String EXTRA_CUSTOM_EXTRAS = "customExtras";
@@ -10095,6 +10096,7 @@ package android.content.pm {
     method public boolean accept();
     method public int describeContents();
     method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
+    method public android.os.Bundle getExtras();
     method public int getRequestType();
     method public android.content.pm.ShortcutInfo getShortcutInfo();
     method public boolean isValid();
@@ -30125,12 +30127,12 @@ package android.os {
     field public static final int BATTERY_PLUGGED_AC = 1; // 0x1
     field public static final int BATTERY_PLUGGED_USB = 2; // 0x2
     field public static final int BATTERY_PLUGGED_WIRELESS = 4; // 0x4
-    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
     field public static final int BATTERY_PROPERTY_CAPACITY = 4; // 0x4
     field public static final int BATTERY_PROPERTY_CHARGE_COUNTER = 1; // 0x1
     field public static final int BATTERY_PROPERTY_CURRENT_AVERAGE = 3; // 0x3
     field public static final int BATTERY_PROPERTY_CURRENT_NOW = 2; // 0x2
     field public static final int BATTERY_PROPERTY_ENERGY_COUNTER = 5; // 0x5
+    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
     field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2
     field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3
     field public static final int BATTERY_STATUS_FULL = 5; // 0x5
index a467351..b079d05 100644 (file)
@@ -7417,7 +7417,7 @@ package android.appwidget {
     method public void notifyAppWidgetViewDataChanged(int, int);
     method public void partiallyUpdateAppWidget(int[], android.widget.RemoteViews);
     method public void partiallyUpdateAppWidget(int, android.widget.RemoteViews);
-    method public boolean requestPinAppWidget(android.content.ComponentName, android.app.PendingIntent);
+    method public boolean requestPinAppWidget(android.content.ComponentName, android.os.Bundle, android.app.PendingIntent);
     method public void updateAppWidget(int[], android.widget.RemoteViews);
     method public void updateAppWidget(int, android.widget.RemoteViews);
     method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
@@ -7436,6 +7436,7 @@ package android.appwidget {
     field public static final java.lang.String EXTRA_APPWIDGET_IDS = "appWidgetIds";
     field public static final java.lang.String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
     field public static final java.lang.String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
+    field public static final java.lang.String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
     field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
     field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
     field public static final java.lang.String EXTRA_CUSTOM_EXTRAS = "customExtras";
@@ -10632,6 +10633,7 @@ package android.content.pm {
     method public boolean accept();
     method public int describeContents();
     method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
+    method public android.os.Bundle getExtras();
     method public int getRequestType();
     method public android.content.pm.ShortcutInfo getShortcutInfo();
     method public boolean isValid();
@@ -32727,12 +32729,12 @@ package android.os {
     field public static final int BATTERY_PLUGGED_AC = 1; // 0x1
     field public static final int BATTERY_PLUGGED_USB = 2; // 0x2
     field public static final int BATTERY_PLUGGED_WIRELESS = 4; // 0x4
-    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
     field public static final int BATTERY_PROPERTY_CAPACITY = 4; // 0x4
     field public static final int BATTERY_PROPERTY_CHARGE_COUNTER = 1; // 0x1
     field public static final int BATTERY_PROPERTY_CURRENT_AVERAGE = 3; // 0x3
     field public static final int BATTERY_PROPERTY_CURRENT_NOW = 2; // 0x2
     field public static final int BATTERY_PROPERTY_ENERGY_COUNTER = 5; // 0x5
+    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
     field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2
     field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3
     field public static final int BATTERY_STATUS_FULL = 5; // 0x5
index 1a12b4c..c885ad4 100644 (file)
@@ -7020,7 +7020,7 @@ package android.appwidget {
     method public void notifyAppWidgetViewDataChanged(int, int);
     method public void partiallyUpdateAppWidget(int[], android.widget.RemoteViews);
     method public void partiallyUpdateAppWidget(int, android.widget.RemoteViews);
-    method public boolean requestPinAppWidget(android.content.ComponentName, android.app.PendingIntent);
+    method public boolean requestPinAppWidget(android.content.ComponentName, android.os.Bundle, android.app.PendingIntent);
     method public void updateAppWidget(int[], android.widget.RemoteViews);
     method public void updateAppWidget(int, android.widget.RemoteViews);
     method public void updateAppWidget(android.content.ComponentName, android.widget.RemoteViews);
@@ -7039,6 +7039,7 @@ package android.appwidget {
     field public static final java.lang.String EXTRA_APPWIDGET_IDS = "appWidgetIds";
     field public static final java.lang.String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
     field public static final java.lang.String EXTRA_APPWIDGET_OPTIONS = "appWidgetOptions";
+    field public static final java.lang.String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
     field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER = "appWidgetProvider";
     field public static final java.lang.String EXTRA_APPWIDGET_PROVIDER_PROFILE = "appWidgetProviderProfile";
     field public static final java.lang.String EXTRA_CUSTOM_EXTRAS = "customExtras";
@@ -10127,6 +10128,7 @@ package android.content.pm {
     method public boolean accept();
     method public int describeContents();
     method public android.appwidget.AppWidgetProviderInfo getAppWidgetProviderInfo(android.content.Context);
+    method public android.os.Bundle getExtras();
     method public int getRequestType();
     method public android.content.pm.ShortcutInfo getShortcutInfo();
     method public boolean isValid();
@@ -30221,12 +30223,12 @@ package android.os {
     field public static final int BATTERY_PLUGGED_AC = 1; // 0x1
     field public static final int BATTERY_PLUGGED_USB = 2; // 0x2
     field public static final int BATTERY_PLUGGED_WIRELESS = 4; // 0x4
-    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
     field public static final int BATTERY_PROPERTY_CAPACITY = 4; // 0x4
     field public static final int BATTERY_PROPERTY_CHARGE_COUNTER = 1; // 0x1
     field public static final int BATTERY_PROPERTY_CURRENT_AVERAGE = 3; // 0x3
     field public static final int BATTERY_PROPERTY_CURRENT_NOW = 2; // 0x2
     field public static final int BATTERY_PROPERTY_ENERGY_COUNTER = 5; // 0x5
+    field public static final int BATTERY_PROPERTY_STATUS = 6; // 0x6
     field public static final int BATTERY_STATUS_CHARGING = 2; // 0x2
     field public static final int BATTERY_STATUS_DISCHARGING = 3; // 0x3
     field public static final int BATTERY_STATUS_FULL = 5; // 0x5
index 077331e..67c791d 100644 (file)
@@ -417,6 +417,17 @@ public class AppWidgetManager {
     public static final String EXTRA_APPWIDGET_OLD_IDS = "appWidgetOldIds";
 
     /**
+     * An extra that can be passed to
+     * {@link #requestPinAppWidget(ComponentName, Bundle, PendingIntent)}. This would allow the
+     * launcher app to present a custom preview to the user.
+     *
+     * <p>
+     * The value should be a {@link RemoteViews} similar to what is used with
+     * {@link #updateAppWidget} calls.
+     */
+    public static final String EXTRA_APPWIDGET_PREVIEW = "appWidgetPreview";
+
+    /**
      * Field for the manifest meta-data tag.
      *
      * @see AppWidgetProviderInfo
@@ -1073,7 +1084,7 @@ public class AppWidgetManager {
 
     /**
      * Return {@code TRUE} if the default launcher supports
-     * {@link #requestPinAppWidget(ComponentName, PendingIntent)}
+     * {@link #requestPinAppWidget(ComponentName, Bundle, PendingIntent)}
      */
     public boolean isRequestPinAppWidgetSupported() {
         try {
@@ -1084,6 +1095,15 @@ public class AppWidgetManager {
     }
 
     /**
+     * Only used during development. Can be deleted before release.
+     * @hide
+     */
+    public boolean requestPinAppWidget(@NonNull ComponentName provider,
+            @Nullable PendingIntent successCallback) {
+        return requestPinAppWidget(provider, null, successCallback);
+    }
+
+    /**
      * Request to pin an app widget on the current launcher. It's up to the launcher to accept this
      * request (optionally showing a user confirmation). If the request is accepted, the caller will
      * get a confirmation with extra {@link #EXTRA_APPWIDGET_ID}.
@@ -1099,6 +1119,8 @@ public class AppWidgetManager {
      *
      * @param provider The {@link ComponentName} for the {@link
      *    android.content.BroadcastReceiver BroadcastReceiver} provider for your AppWidget.
+     * @param extras In not null, this is passed to the launcher app. For eg {@link
+     *    #EXTRA_APPWIDGET_PREVIEW} can be used for a custom preview.
      * @param successCallback If not null, this intent will be sent when the widget is created.
      *
      * @return {@code TRUE} if the launcher supports this feature. Note the API will return without
@@ -1113,10 +1135,10 @@ public class AppWidgetManager {
      * service or when the user is locked.
      */
     public boolean requestPinAppWidget(@NonNull ComponentName provider,
-            @Nullable PendingIntent successCallback) {
+            @Nullable Bundle extras, @Nullable PendingIntent successCallback) {
         try {
-            return mService.requestPinAppWidget(mPackageName, provider,
-                successCallback == null ? null : successCallback.getIntentSender());
+            return mService.requestPinAppWidget(mPackageName, provider, extras,
+                    successCallback == null ? null : successCallback.getIntentSender());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
index eddce58..4b4dffa 100644 (file)
@@ -27,4 +27,5 @@ interface IPinItemRequest {
     boolean accept(in Bundle options);
     ShortcutInfo getShortcutInfo();
     AppWidgetProviderInfo getAppWidgetProviderInfo();
+    Bundle getExtras();
 }
index 776492a..bc81a19 100644 (file)
@@ -1365,6 +1365,18 @@ public class LauncherApps {
         }
 
         /**
+         * Any extras sent by the requesting app.
+         */
+        @Nullable
+        public Bundle getExtras() {
+            try {
+                return mInner.getExtras();
+            } catch (RemoteException e) {
+                throw e.rethrowAsRuntimeException();
+            }
+        }
+
+        /**
          * Return {@code TRUE} if a request is valid -- i.e. {@link #accept(Bundle)} has not been
          * called yet.
          */
index 696fe81..3de19d1 100644 (file)
@@ -24,6 +24,7 @@ import android.content.ComponentName;
 import android.content.Intent;
 import android.content.IntentSender;
 import android.content.pm.LauncherApps.ShortcutQuery;
+import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
 
 import java.util.List;
@@ -72,8 +73,8 @@ public abstract class ShortcutServiceInternal {
             @NonNull String callingPackage);
 
     public abstract boolean requestPinAppWidget(@NonNull String callingPackage,
-            @NonNull AppWidgetProviderInfo appWidget, @Nullable IntentSender resultIntent,
-            int userId);
+            @NonNull AppWidgetProviderInfo appWidget, @Nullable Bundle extras,
+            @Nullable IntentSender resultIntent, int userId);
 
     public abstract boolean isRequestPinItemSupported(int callingUserId, int requestType);
 }
index 81db93d..f987a9f 100644 (file)
@@ -68,7 +68,7 @@ interface IAppWidgetService {
     int[] getAppWidgetIds(in ComponentName providerComponent);
     boolean isBoundWidgetPackage(String packageName, int userId);
     boolean requestPinAppWidget(String packageName, in ComponentName providerComponent,
-            in IntentSender resultIntent);
+            in Bundle extras, in IntentSender resultIntent);
     boolean isRequestPinAppWidgetSupported();
 }
 
index c50623e..8aa37ef 100644 (file)
@@ -1603,7 +1603,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
 
     @Override
     public boolean requestPinAppWidget(String callingPackage, ComponentName componentName,
-            IntentSender resultSender) {
+            Bundle extras, IntentSender resultSender) {
         final int callingUid = Binder.getCallingUid();
         final int userId = UserHandle.getUserId(callingUid);
 
@@ -1628,7 +1628,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku
         }
 
         return LocalServices.getService(ShortcutServiceInternal.class)
-                .requestPinAppWidget(callingPackage, info, resultSender, userId);
+                .requestPinAppWidget(callingPackage, info, extras, resultSender, userId);
     }
 
     @Override
index b0689b8..8a8128d 100644 (file)
@@ -26,6 +26,7 @@ import android.content.pm.LauncherApps;
 import android.content.pm.LauncherApps.PinItemRequest;
 import android.content.pm.ShortcutInfo;
 import android.os.Bundle;
+import android.os.RemoteException;
 import android.os.UserHandle;
 import android.util.Log;
 import android.util.Pair;
@@ -63,14 +64,21 @@ class ShortcutRequestPinProcessor {
             mLauncherUid = launcherUid;
         }
 
+        @Override
         public ShortcutInfo getShortcutInfo() {
             return null;
         }
 
+        @Override
         public AppWidgetProviderInfo getAppWidgetProviderInfo() {
             return null;
         }
 
+        @Override
+        public Bundle getExtras() {
+            return null;
+        }
+
         /**
          * Returns true if the caller is same as the default launcher app when this request
          * object was created.
@@ -136,19 +144,26 @@ class ShortcutRequestPinProcessor {
      */
     private static class PinAppWidgetRequestInner extends PinItemRequestInner {
         final AppWidgetProviderInfo mAppWidgetProviderInfo;
+        final Bundle mExtras;
 
         private PinAppWidgetRequestInner(ShortcutRequestPinProcessor processor,
                 IntentSender resultIntent, int launcherUid,
-                AppWidgetProviderInfo appWidgetProviderInfo) {
+                AppWidgetProviderInfo appWidgetProviderInfo, Bundle extras) {
             super(processor, resultIntent, launcherUid);
 
             mAppWidgetProviderInfo = appWidgetProviderInfo;
+            mExtras = extras;
         }
 
         @Override
         public AppWidgetProviderInfo getAppWidgetProviderInfo() {
             return mAppWidgetProviderInfo;
         }
+
+        @Override
+        public Bundle getExtras() {
+            return mExtras;
+        }
     }
 
     /**
@@ -212,7 +227,7 @@ class ShortcutRequestPinProcessor {
      * always null.
      */
     public boolean requestPinItemLocked(ShortcutInfo inShortcut, AppWidgetProviderInfo inAppWidget,
-        int userId, IntentSender resultIntent) {
+        Bundle extras, int userId, IntentSender resultIntent) {
 
         // First, make sure the launcher supports it.
 
@@ -242,7 +257,8 @@ class ShortcutRequestPinProcessor {
             int launcherUid = mService.injectGetPackageUid(
                     confirmActivity.first.getPackageName(), launcherUserId);
             request = new PinItemRequest(
-                    new PinAppWidgetRequestInner(this, resultIntent, launcherUid, inAppWidget),
+                    new PinAppWidgetRequestInner(this, resultIntent, launcherUid, inAppWidget,
+                            extras),
                     PinItemRequest.REQUEST_TYPE_APPWIDGET);
         }
         return startRequestConfirmActivity(confirmActivity.first, launcherUserId, request,
index 74eb340..65c6f54 100644 (file)
@@ -60,6 +60,7 @@ import android.graphics.drawable.Icon;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Build;
+import android.os.Bundle;
 import android.os.Environment;
 import android.os.FileUtils;
 import android.os.Handler;
@@ -1868,7 +1869,7 @@ public class ShortcutService extends IShortcutService.Stub {
             IntentSender resultIntent, int userId) {
         Preconditions.checkNotNull(shortcut);
         Preconditions.checkArgument(shortcut.isEnabled(), "Shortcut must be enabled");
-        return requestPinItem(packageName, userId, shortcut, null, resultIntent);
+        return requestPinItem(packageName, userId, shortcut, null, null, resultIntent);
     }
 
     @Override
@@ -1895,8 +1896,8 @@ public class ShortcutService extends IShortcutService.Stub {
      * After validating the caller, it passes the request to {@link #mShortcutRequestPinProcessor}.
      * Either {@param shortcut} or {@param appWidget} should be non-null.
      */
-    private boolean requestPinItem(String packageName, int userId,
-            ShortcutInfo shortcut, AppWidgetProviderInfo appWidget, IntentSender resultIntent) {
+    private boolean requestPinItem(String packageName, int userId, ShortcutInfo shortcut,
+            AppWidgetProviderInfo appWidget, Bundle extras, IntentSender resultIntent) {
         verifyCaller(packageName, userId);
 
         final boolean ret;
@@ -1907,8 +1908,8 @@ public class ShortcutService extends IShortcutService.Stub {
                     "Calling application must have a foreground activity or a foreground service");
 
             // Send request to the launcher, if supported.
-            ret = mShortcutRequestPinProcessor.requestPinItemLocked(shortcut, appWidget, userId,
-                    resultIntent);
+            ret = mShortcutRequestPinProcessor.requestPinItemLocked(shortcut, appWidget, extras,
+                    userId, resultIntent);
         }
 
         verifyStates();
@@ -2650,10 +2651,10 @@ public class ShortcutService extends IShortcutService.Stub {
 
         @Override
         public boolean requestPinAppWidget(@NonNull String callingPackage,
-                @NonNull AppWidgetProviderInfo appWidget, @Nullable IntentSender resultIntent,
-                int userId) {
+                @NonNull AppWidgetProviderInfo appWidget, @Nullable Bundle extras,
+                @Nullable IntentSender resultIntent, int userId) {
             Preconditions.checkNotNull(appWidget);
-            return requestPinItem(callingPackage, userId, null, appWidget, resultIntent);
+            return requestPinItem(callingPackage, userId, null, appWidget, extras, resultIntent);
         }
 
         @Override
index d7bfc44..f3f68ff 100644 (file)
@@ -38,6 +38,7 @@ import android.content.IntentFilter;
 import android.content.IntentSender;
 import android.content.pm.LauncherApps;
 import android.content.pm.ShortcutServiceInternal;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.UserHandle;
 import android.test.InstrumentationTestCase;
@@ -104,21 +105,21 @@ public class AppWidgetServiceImplTest extends InstrumentationTestCase {
         if (otherProvider == null) {
             // No other provider found. Ignore this test.
         }
-        assertFalse(mManager.requestPinAppWidget(otherProvider, null));
+        assertFalse(mManager.requestPinAppWidget(otherProvider, null, null));
     }
 
     public void testRequestPinAppWidget() {
         ComponentName provider = new ComponentName(mTestContext, DummyAppWidget.class);
         // Set up users.
         when(mMockShortcutService.requestPinAppWidget(anyString(),
-                any(AppWidgetProviderInfo.class), any(IntentSender.class), anyInt()))
+                any(AppWidgetProviderInfo.class), any(Bundle.class), any(IntentSender.class), anyInt()))
                 .thenReturn(true);
-        assertTrue(mManager.requestPinAppWidget(provider, null));
+        assertTrue(mManager.requestPinAppWidget(provider, null, null));
 
         final ArgumentCaptor<AppWidgetProviderInfo> providerCaptor =
                 ArgumentCaptor.forClass(AppWidgetProviderInfo.class);
         verify(mMockShortcutService, times(1)).requestPinAppWidget(anyString(),
-                providerCaptor.capture(), eq(null), anyInt());
+                providerCaptor.capture(), any(null), eq(null), anyInt());
         assertEquals(provider, providerCaptor.getValue().provider);
     }
 
index 26033a3..012024f 100644 (file)
@@ -95,7 +95,7 @@ public class ShortcutManagerTest9 extends BaseShortcutManagerTest {
 
             assertExpectException(IllegalStateException.class, "foreground activity", () -> {
                 mInternal.requestPinAppWidget(CALLING_PACKAGE_1, makeProviderInfo("dummy"),
-            /* resultIntent= */ null, USER_P0);
+                        null /* extras */, null /* resultIntent= */, USER_P0);
             });
 
             verify(mServiceContext, times(0)).sendIntentSender(any(IntentSender.class));
@@ -111,7 +111,7 @@ public class ShortcutManagerTest9 extends BaseShortcutManagerTest {
         runWithCaller(CALLING_PACKAGE_1, USER_P0, () -> {
             AppWidgetProviderInfo info = makeProviderInfo("c1");
 
-            assertTrue(mInternal.requestPinAppWidget(CALLING_PACKAGE_1, info,
+            assertTrue(mInternal.requestPinAppWidget(CALLING_PACKAGE_1, info, null,
                     resultIntent == null ? null : resultIntent.getIntentSender(), USER_P0));
 
             verify(mServiceContext, times(0)).sendIntentSender(any(IntentSender.class));