Loading core/java/android/content/pm/IPinItemRequest.aidl +4 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.content.pm; import android.os.Bundle; import android.appwidget.AppWidgetProviderInfo; import android.content.pm.ShortcutInfo; /** * {@hide} Loading @@ -23,4 +25,6 @@ import android.os.Bundle; interface IPinItemRequest { boolean isValid(); boolean accept(in Bundle options); ShortcutInfo getShortcutInfo(); AppWidgetProviderInfo getAppWidgetProviderInfo(); } core/java/android/content/pm/LauncherApps.java +14 −30 Original line number Diff line number Diff line Loading @@ -1291,28 +1291,14 @@ public class LauncherApps { public @interface RequestType {} private final int mRequestType; private final ShortcutInfo mShortcutInfo; private final AppWidgetProviderInfo mAppWidgetInfo; private final IPinItemRequest mInner; /** * @hide */ public PinItemRequest(ShortcutInfo shortcutInfo, IPinItemRequest inner) { mRequestType = REQUEST_TYPE_SHORTCUT; mShortcutInfo = shortcutInfo; mAppWidgetInfo = null; mInner = inner; } /** * @hide */ public PinItemRequest(AppWidgetProviderInfo appWidgetInfo, IPinItemRequest inner) { mRequestType = REQUEST_TYPE_APPWIDGET; mShortcutInfo = null; mAppWidgetInfo = appWidgetInfo; public PinItemRequest(IPinItemRequest inner, int type) { mInner = inner; mRequestType = type; } /** Loading @@ -1330,7 +1316,11 @@ public class LauncherApps { */ @Nullable public ShortcutInfo getShortcutInfo() { return mShortcutInfo; try { return mInner.getShortcutInfo(); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } /** Loading @@ -1339,12 +1329,16 @@ public class LauncherApps { */ @Nullable public AppWidgetProviderInfo getAppWidgetProviderInfo(Context context) { if (mAppWidgetInfo != null) { AppWidgetProviderInfo info = mAppWidgetInfo.clone(); try { final AppWidgetProviderInfo info = mInner.getAppWidgetProviderInfo(); if (info == null) { return null; } info.updateDimensions(context.getResources().getDisplayMetrics()); return info; } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } return null; } /** Loading Loading @@ -1381,22 +1375,12 @@ public class LauncherApps { final ClassLoader cl = getClass().getClassLoader(); mRequestType = source.readInt(); mShortcutInfo = mRequestType == REQUEST_TYPE_SHORTCUT ? (ShortcutInfo) source.readParcelable(cl) : null; mAppWidgetInfo = mRequestType == REQUEST_TYPE_APPWIDGET ? (AppWidgetProviderInfo) source.readParcelable(cl) : null; mInner = IPinItemRequest.Stub.asInterface(source.readStrongBinder()); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mRequestType); if (mRequestType == REQUEST_TYPE_SHORTCUT) { dest.writeParcelable(mShortcutInfo, flags); } if (mRequestType == REQUEST_TYPE_APPWIDGET) { dest.writeParcelable(mAppWidgetInfo, flags); } dest.writeStrongBinder(mInner.asBinder()); } Loading services/core/java/com/android/server/pm/ShortcutRequestPinProcessor.java +38 −4 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ class ShortcutRequestPinProcessor { /** * Internal for {@link android.content.pm.LauncherApps.PinItemRequest} which receives callbacks. */ private static class PinItemRequestInner extends IPinItemRequest.Stub { private abstract static class PinItemRequestInner extends IPinItemRequest.Stub { protected final ShortcutRequestPinProcessor mProcessor; private final IntentSender mResultIntent; private final int mLauncherUid; Loading @@ -63,6 +63,14 @@ class ShortcutRequestPinProcessor { mLauncherUid = launcherUid; } public ShortcutInfo getShortcutInfo() { return null; } public AppWidgetProviderInfo getAppWidgetProviderInfo() { return null; } /** * Returns true if the caller is same as the default launcher app when this request * object was created. Loading Loading @@ -123,6 +131,26 @@ class ShortcutRequestPinProcessor { } } /** * Internal for {@link android.content.pm.LauncherApps.PinItemRequest} which receives callbacks. */ private static class PinAppWidgetRequestInner extends PinItemRequestInner { final AppWidgetProviderInfo mAppWidgetProviderInfo; private PinAppWidgetRequestInner(ShortcutRequestPinProcessor processor, IntentSender resultIntent, int launcherUid, AppWidgetProviderInfo appWidgetProviderInfo) { super(processor, resultIntent, launcherUid); mAppWidgetProviderInfo = appWidgetProviderInfo; } @Override public AppWidgetProviderInfo getAppWidgetProviderInfo() { return mAppWidgetProviderInfo; } } /** * Internal for {@link android.content.pm.LauncherApps.PinItemRequest} which receives callbacks. */ Loading Loading @@ -152,6 +180,11 @@ class ShortcutRequestPinProcessor { this.preExisting = preExisting; } @Override public ShortcutInfo getShortcutInfo() { return shortcutForLauncher; } @Override protected boolean tryAccept() { if (DEBUG) { Loading Loading @@ -208,8 +241,9 @@ class ShortcutRequestPinProcessor { } else { int launcherUid = mService.injectGetPackageUid( confirmActivity.first.getPackageName(), launcherUserId); request = new PinItemRequest(inAppWidget, new PinItemRequestInner(this, resultIntent, launcherUid)); request = new PinItemRequest( new PinAppWidgetRequestInner(this, resultIntent, launcherUid, inAppWidget), PinItemRequest.REQUEST_TYPE_APPWIDGET); } return startRequestConfirmActivity(confirmActivity.first, launcherUserId, request, requestType); Loading Loading @@ -319,7 +353,7 @@ class ShortcutRequestPinProcessor { mService.injectGetPackageUid(launcherPackage, launcherUserId), existsAlready); return new PinItemRequest(shortcutForLauncher, inner); return new PinItemRequest(inner, PinItemRequest.REQUEST_TYPE_SHORTCUT); } private void validateExistingShortcut(ShortcutInfo shortcutInfo) { Loading Loading
core/java/android/content/pm/IPinItemRequest.aidl +4 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.content.pm; import android.os.Bundle; import android.appwidget.AppWidgetProviderInfo; import android.content.pm.ShortcutInfo; /** * {@hide} Loading @@ -23,4 +25,6 @@ import android.os.Bundle; interface IPinItemRequest { boolean isValid(); boolean accept(in Bundle options); ShortcutInfo getShortcutInfo(); AppWidgetProviderInfo getAppWidgetProviderInfo(); }
core/java/android/content/pm/LauncherApps.java +14 −30 Original line number Diff line number Diff line Loading @@ -1291,28 +1291,14 @@ public class LauncherApps { public @interface RequestType {} private final int mRequestType; private final ShortcutInfo mShortcutInfo; private final AppWidgetProviderInfo mAppWidgetInfo; private final IPinItemRequest mInner; /** * @hide */ public PinItemRequest(ShortcutInfo shortcutInfo, IPinItemRequest inner) { mRequestType = REQUEST_TYPE_SHORTCUT; mShortcutInfo = shortcutInfo; mAppWidgetInfo = null; mInner = inner; } /** * @hide */ public PinItemRequest(AppWidgetProviderInfo appWidgetInfo, IPinItemRequest inner) { mRequestType = REQUEST_TYPE_APPWIDGET; mShortcutInfo = null; mAppWidgetInfo = appWidgetInfo; public PinItemRequest(IPinItemRequest inner, int type) { mInner = inner; mRequestType = type; } /** Loading @@ -1330,7 +1316,11 @@ public class LauncherApps { */ @Nullable public ShortcutInfo getShortcutInfo() { return mShortcutInfo; try { return mInner.getShortcutInfo(); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } } /** Loading @@ -1339,12 +1329,16 @@ public class LauncherApps { */ @Nullable public AppWidgetProviderInfo getAppWidgetProviderInfo(Context context) { if (mAppWidgetInfo != null) { AppWidgetProviderInfo info = mAppWidgetInfo.clone(); try { final AppWidgetProviderInfo info = mInner.getAppWidgetProviderInfo(); if (info == null) { return null; } info.updateDimensions(context.getResources().getDisplayMetrics()); return info; } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } return null; } /** Loading Loading @@ -1381,22 +1375,12 @@ public class LauncherApps { final ClassLoader cl = getClass().getClassLoader(); mRequestType = source.readInt(); mShortcutInfo = mRequestType == REQUEST_TYPE_SHORTCUT ? (ShortcutInfo) source.readParcelable(cl) : null; mAppWidgetInfo = mRequestType == REQUEST_TYPE_APPWIDGET ? (AppWidgetProviderInfo) source.readParcelable(cl) : null; mInner = IPinItemRequest.Stub.asInterface(source.readStrongBinder()); } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mRequestType); if (mRequestType == REQUEST_TYPE_SHORTCUT) { dest.writeParcelable(mShortcutInfo, flags); } if (mRequestType == REQUEST_TYPE_APPWIDGET) { dest.writeParcelable(mAppWidgetInfo, flags); } dest.writeStrongBinder(mInner.asBinder()); } Loading
services/core/java/com/android/server/pm/ShortcutRequestPinProcessor.java +38 −4 Original line number Diff line number Diff line Loading @@ -48,7 +48,7 @@ class ShortcutRequestPinProcessor { /** * Internal for {@link android.content.pm.LauncherApps.PinItemRequest} which receives callbacks. */ private static class PinItemRequestInner extends IPinItemRequest.Stub { private abstract static class PinItemRequestInner extends IPinItemRequest.Stub { protected final ShortcutRequestPinProcessor mProcessor; private final IntentSender mResultIntent; private final int mLauncherUid; Loading @@ -63,6 +63,14 @@ class ShortcutRequestPinProcessor { mLauncherUid = launcherUid; } public ShortcutInfo getShortcutInfo() { return null; } public AppWidgetProviderInfo getAppWidgetProviderInfo() { return null; } /** * Returns true if the caller is same as the default launcher app when this request * object was created. Loading Loading @@ -123,6 +131,26 @@ class ShortcutRequestPinProcessor { } } /** * Internal for {@link android.content.pm.LauncherApps.PinItemRequest} which receives callbacks. */ private static class PinAppWidgetRequestInner extends PinItemRequestInner { final AppWidgetProviderInfo mAppWidgetProviderInfo; private PinAppWidgetRequestInner(ShortcutRequestPinProcessor processor, IntentSender resultIntent, int launcherUid, AppWidgetProviderInfo appWidgetProviderInfo) { super(processor, resultIntent, launcherUid); mAppWidgetProviderInfo = appWidgetProviderInfo; } @Override public AppWidgetProviderInfo getAppWidgetProviderInfo() { return mAppWidgetProviderInfo; } } /** * Internal for {@link android.content.pm.LauncherApps.PinItemRequest} which receives callbacks. */ Loading Loading @@ -152,6 +180,11 @@ class ShortcutRequestPinProcessor { this.preExisting = preExisting; } @Override public ShortcutInfo getShortcutInfo() { return shortcutForLauncher; } @Override protected boolean tryAccept() { if (DEBUG) { Loading Loading @@ -208,8 +241,9 @@ class ShortcutRequestPinProcessor { } else { int launcherUid = mService.injectGetPackageUid( confirmActivity.first.getPackageName(), launcherUserId); request = new PinItemRequest(inAppWidget, new PinItemRequestInner(this, resultIntent, launcherUid)); request = new PinItemRequest( new PinAppWidgetRequestInner(this, resultIntent, launcherUid, inAppWidget), PinItemRequest.REQUEST_TYPE_APPWIDGET); } return startRequestConfirmActivity(confirmActivity.first, launcherUserId, request, requestType); Loading Loading @@ -319,7 +353,7 @@ class ShortcutRequestPinProcessor { mService.injectGetPackageUid(launcherPackage, launcherUserId), existsAlready); return new PinItemRequest(shortcutForLauncher, inner); return new PinItemRequest(inner, PinItemRequest.REQUEST_TYPE_SHORTCUT); } private void validateExistingShortcut(ShortcutInfo shortcutInfo) { Loading