| 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 dbb62b1694e5b2f51452d42dbae5dffa2134433f..e66b192b8d373819dd56a9168441daa0a5725eb8 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
|
| @@ -6,6 +6,8 @@ package org.chromium.chrome.browser.contextmenu;
|
|
|
| import android.app.Activity;
|
| import android.content.Context;
|
| +import android.graphics.Bitmap;
|
| +import android.graphics.BitmapFactory;
|
| import android.util.Pair;
|
| import android.view.ContextMenu;
|
| import android.view.ContextMenu.ContextMenuInfo;
|
| @@ -16,6 +18,7 @@ import org.chromium.base.Callback;
|
| import org.chromium.base.VisibleForTesting;
|
| import org.chromium.base.annotations.CalledByNative;
|
| import org.chromium.base.metrics.RecordHistogram;
|
| +import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.ChromeFeatureList;
|
| import org.chromium.chrome.browser.share.ShareHelper;
|
| import org.chromium.content.browser.ContentViewCore;
|
| @@ -37,6 +40,7 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| private Callback<Integer> mCallback;
|
| private Runnable mOnMenuShown;
|
| private Runnable mOnMenuClosed;
|
| + private Callback<Bitmap> mOnThumbnailReceivedCallback;
|
|
|
| private ContextMenuHelper(long nativeContextMenuHelper) {
|
| mNativeContextMenuHelper = nativeContextMenuHelper;
|
| @@ -108,9 +112,17 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| List<Pair<Integer, List<ContextMenuItem>>> items =
|
| mPopulator.buildContextMenu(null, mContext, mCurrentContextMenuParams);
|
|
|
| - ContextMenuUi menuUi = new TabularContextMenuUi();
|
| + final ContextMenuUi menuUi = new TabularContextMenuUi();
|
| menuUi.displayMenu(mContext, mCurrentContextMenuParams, items, mCallback, mOnMenuShown,
|
| mOnMenuClosed);
|
| + if (mCurrentContextMenuParams.isImage()) {
|
| + getThumbnail(new Callback<Bitmap>() {
|
| + @Override
|
| + public void onResult(Bitmap result) {
|
| + ((TabularContextMenuUi) menuUi).onImageThumbnailRetrieved(result);
|
| + }
|
| + });
|
| + }
|
| return;
|
| }
|
|
|
| @@ -164,6 +176,27 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| ShareHelper.shareImage(activity, jpegImageData);
|
| }
|
|
|
| + /**
|
| + * Gets the thumbnail of the current image that triggered the context menu.
|
| + * @param callback Called once the the thumbnail is received.
|
| + */
|
| + private void getThumbnail(Callback<Bitmap> callback) {
|
| + mOnThumbnailReceivedCallback = callback;
|
| + if (mNativeContextMenuHelper == 0) return;
|
| + int maxSizePx = mContext.getResources().getDimensionPixelSize(
|
| + R.dimen.context_menu_header_image_max_size);
|
| + nativeRetrieveHeaderThumbnail(mNativeContextMenuHelper, maxSizePx);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private void onHeaderThumbnailReceived(WindowAndroid windowAndroid, byte[] jpegImageData) {
|
| + // TODO(tedchoc): Decode in separate process before launch.
|
| + Bitmap bitmap = BitmapFactory.decodeByteArray(jpegImageData, 0, jpegImageData.length);
|
| + if (mOnThumbnailReceivedCallback != null) {
|
| + mOnThumbnailReceivedCallback.onResult(bitmap);
|
| + }
|
| + }
|
| +
|
| @Override
|
| public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
| List<Pair<Integer, List<ContextMenuItem>>> items =
|
| @@ -186,4 +219,5 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
|
| private native void nativeSearchForImage(long nativeContextMenuHelper);
|
| private native void nativeShareImage(long nativeContextMenuHelper);
|
| private native void nativeOnContextMenuClosed(long nativeContextMenuHelper);
|
| + private native void nativeRetrieveHeaderThumbnail(long nativeContextMenuHelper, int maxSizePx);
|
| }
|
|
|