Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2749)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ContextMenuHelper.java

Issue 2804913003: Remove redundant code from Android context menu native. (Closed)
Patch Set: Address dtrainor@ comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 afeda544c824c10659c094429c56bfe291bd7347..cd508545aa7a47b1b2f4e3f3a30fdb72ef67c7fa 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
@@ -28,10 +28,14 @@ import org.chromium.ui.base.WindowAndroid.OnCloseContextMenuListener;
import java.util.List;
+import javax.annotation.Nullable;
+
/**
* A helper class that handles generating context menus for {@link ContentViewCore}s.
*/
public class ContextMenuHelper implements OnCreateContextMenuListener {
+ private static final int MAX_SHARE_DIMEN_PX = 2048;
+
private long mNativeContextMenuHelper;
private ContextMenuPopulator mPopulator;
@@ -40,8 +44,6 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
private Callback<Integer> mCallback;
private Runnable mOnMenuShown;
private Runnable mOnMenuClosed;
- private Callback<Bitmap> mOnThumbnailReceivedCallback;
- private ComponentName mComponentName;
private ContextMenuHelper(long nativeContextMenuHelper) {
mNativeContextMenuHelper = nativeContextMenuHelper;
@@ -169,50 +171,47 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
* Share the image that triggered the current context menu.
*/
public void shareImage() {
- if (mNativeContextMenuHelper == 0) return;
- nativeShareImage(mNativeContextMenuHelper);
- }
-
- @CalledByNative
- private void onShareImageReceived(
- WindowAndroid windowAndroid, byte[] jpegImageData) {
- Activity activity = windowAndroid.getActivity().get();
- if (activity == null) return;
-
- 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;
+ shareImageDirectly(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();
+ public void shareImageDirectly(@Nullable final ComponentName name) {
+ if (mNativeContextMenuHelper == 0) return;
+ Callback<byte[]> callback = new Callback<byte[]>() {
+ @Override
+ public void onResult(byte[] result) {
+ WebContents webContents = nativeGetJavaWebContents(mNativeContextMenuHelper);
+ WindowAndroid windowAndroid = webContents.getTopLevelNativeWindow();
+
+ Activity activity = windowAndroid.getActivity().get();
+ if (activity == null) return;
+
+ ShareHelper.shareImage(activity, result, name);
+ }
+ };
+ nativeRetrieveImage(mNativeContextMenuHelper, callback, MAX_SHARE_DIMEN_PX);
}
/**
* 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;
+ private void getThumbnail(final Callback<Bitmap> callback) {
if (mNativeContextMenuHelper == 0) return;
int maxSizePx = mActivity.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);
- }
+ Callback<byte[]> rawDataCallback = new Callback<byte[]>() {
+ @Override
+ public void onResult(byte[] result) {
+ // TODO(tedchoc): Decode in separate process before launch.
+ Bitmap bitmap = BitmapFactory.decodeByteArray(result, 0, result.length);
+ callback.onResult(bitmap);
+ }
+ };
+ nativeRetrieveImage(mNativeContextMenuHelper, rawDataCallback, maxSizePx);
}
@Override
@@ -232,10 +231,11 @@ public class ContextMenuHelper implements OnCreateContextMenuListener {
return mPopulator;
}
+ private native WebContents nativeGetJavaWebContents(long nativeContextMenuHelper);
private native void nativeOnStartDownload(
long nativeContextMenuHelper, boolean isLink, boolean isDataReductionProxyEnabled);
private native void nativeSearchForImage(long nativeContextMenuHelper);
- private native void nativeShareImage(long nativeContextMenuHelper);
+ private native void nativeRetrieveImage(
+ long nativeContextMenuHelper, Callback<byte[]> callback, int maxSizePx);
private native void nativeOnContextMenuClosed(long nativeContextMenuHelper);
- private native void nativeRetrieveHeaderThumbnail(long nativeContextMenuHelper, int maxSizePx);
}
« no previous file with comments | « base/android/java/src/org/chromium/base/Callback.java ('k') | chrome/browser/ui/android/context_menu_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698