| Index: chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java
|
| index e66b192b8d373819dd56a9168441daa0a5725eb8..afeda544c824c10659c094429c56bfe291bd7347 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java
|
| @@ -5,7 +5,7 @@
|
| package org.chromium.chrome.browser.contextmenu;
|
|
|
| import android.app.Activity;
|
| -import android.content.Context;
|
| +import android.content.ComponentName;
|
| import android.graphics.Bitmap;
|
| import android.graphics.BitmapFactory;
|
| import android.util.Pair;
|
| @@ -36,11 +36,12 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
|
|
| private ContextMenuPopulator mPopulator;
|
| private ContextMenuParams mCurrentContextMenuParams;
|
| - private Context mContext;
|
| + private Activity mActivity;
|
| private Callback<Integer> mCallback;
|
| private Runnable mOnMenuShown;
|
| private Runnable mOnMenuClosed;
|
| private Callback<Bitmap> mOnThumbnailReceivedCallback;
|
| + private ComponentName mComponentName;
|
|
|
| private ContextMenuHelper(long nativeContextMenuHelper) {
|
| mNativeContextMenuHelper = nativeContextMenuHelper;
|
| @@ -79,13 +80,13 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| final WindowAndroid windowAndroid = contentViewCore.getWindowAndroid();
|
|
|
| if (view == null || view.getVisibility() != View.VISIBLE || view.getParent() == null
|
| - || windowAndroid == null || windowAndroid.getContext().get() == null
|
| + || windowAndroid == null || windowAndroid.getActivity().get() == null
|
| || mPopulator == null) {
|
| return;
|
| }
|
|
|
| mCurrentContextMenuParams = params;
|
| - mContext = windowAndroid.getContext().get();
|
| + mActivity = windowAndroid.getActivity().get();
|
| mCallback = new Callback<Integer>() {
|
| @Override
|
| public void onResult(Integer result) {
|
| @@ -110,10 +111,15 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
|
|
| if (ChromeFeatureList.isEnabled(ChromeFeatureList.CUSTOM_CONTEXT_MENU)) {
|
| List<Pair<Integer, List<ContextMenuItem>>> items =
|
| - mPopulator.buildContextMenu(null, mContext, mCurrentContextMenuParams);
|
| + mPopulator.buildContextMenu(null, mActivity, mCurrentContextMenuParams);
|
|
|
| - final ContextMenuUi menuUi = new TabularContextMenuUi();
|
| - menuUi.displayMenu(mContext, mCurrentContextMenuParams, items, mCallback, mOnMenuShown,
|
| + final ContextMenuUi menuUi = new TabularContextMenuUi(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + shareImageDirectly(ShareHelper.getLastShareComponentName());
|
| + }
|
| + });
|
| + menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCallback, mOnMenuShown,
|
| mOnMenuClosed);
|
| if (mCurrentContextMenuParams.isImage()) {
|
| getThumbnail(new Callback<Bitmap>() {
|
| @@ -173,7 +179,19 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| Activity activity = windowAndroid.getActivity().get();
|
| if (activity == null) return;
|
|
|
| - ShareHelper.shareImage(activity, jpegImageData);
|
| + ShareHelper.shareImage(activity, jpegImageData, mComponentName);
|
| + // This needs to be reset to null after a share. This way the next time a user shares an
|
| + // image it won't share with the last shared app unless explicitly told.
|
| + mComponentName = null;
|
| + }
|
| +
|
| + /**
|
| + * Share image triggered with the current context menu directly with a specific app.
|
| + * @param name The {@link ComponentName} of the app to share the image directly with.
|
| + */
|
| + public void shareImageDirectly(ComponentName name) {
|
| + mComponentName = name;
|
| + shareImage();
|
| }
|
|
|
| /**
|
| @@ -183,7 +201,7 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| private void getThumbnail(Callback<Bitmap> callback) {
|
| mOnThumbnailReceivedCallback = callback;
|
| if (mNativeContextMenuHelper == 0) return;
|
| - int maxSizePx = mContext.getResources().getDimensionPixelSize(
|
| + int maxSizePx = mActivity.getResources().getDimensionPixelSize(
|
| R.dimen.context_menu_header_image_max_size);
|
| nativeRetrieveHeaderThumbnail(mNativeContextMenuHelper, maxSizePx);
|
| }
|
| @@ -202,8 +220,8 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| List<Pair<Integer, List<ContextMenuItem>>> items =
|
| mPopulator.buildContextMenu(menu, v.getContext(), mCurrentContextMenuParams);
|
| ContextMenuUi menuUi = new PlatformContextMenuUi(menu);
|
| - menuUi.displayMenu(
|
| - mContext, mCurrentContextMenuParams, items, mCallback, mOnMenuShown, mOnMenuClosed);
|
| + menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCallback, mOnMenuShown,
|
| + mOnMenuClosed);
|
| }
|
|
|
| /**
|
|
|