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

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

Issue 2777773002: Show the image header for the Context Menu (Closed)
Patch Set: Fixed based off twellington's comments Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.contextmenu; 5 package org.chromium.chrome.browser.contextmenu;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.graphics.Bitmap;
9 import android.graphics.BitmapFactory;
8 import android.util.Pair; 10 import android.util.Pair;
9 import android.view.ContextMenu; 11 import android.view.ContextMenu;
10 import android.view.ContextMenu.ContextMenuInfo; 12 import android.view.ContextMenu.ContextMenuInfo;
11 import android.view.View; 13 import android.view.View;
12 import android.view.View.OnCreateContextMenuListener; 14 import android.view.View.OnCreateContextMenuListener;
13 15
14 import org.chromium.base.Callback; 16 import org.chromium.base.Callback;
15 import org.chromium.base.VisibleForTesting; 17 import org.chromium.base.VisibleForTesting;
16 import org.chromium.base.annotations.CalledByNative; 18 import org.chromium.base.annotations.CalledByNative;
17 import org.chromium.base.metrics.RecordHistogram; 19 import org.chromium.base.metrics.RecordHistogram;
(...skipping 11 matching lines...) Expand all
29 */ 31 */
30 public class ContextMenuHelper implements OnCreateContextMenuListener { 32 public class ContextMenuHelper implements OnCreateContextMenuListener {
31 private long mNativeContextMenuHelper; 33 private long mNativeContextMenuHelper;
32 34
33 private ContextMenuPopulator mPopulator; 35 private ContextMenuPopulator mPopulator;
34 private ContextMenuParams mCurrentContextMenuParams; 36 private ContextMenuParams mCurrentContextMenuParams;
35 private Activity mActivity; 37 private Activity mActivity;
36 private Callback<Integer> mCallback; 38 private Callback<Integer> mCallback;
37 private Runnable mOnMenuShown; 39 private Runnable mOnMenuShown;
38 private Runnable mOnMenuClosed; 40 private Runnable mOnMenuClosed;
41 private OnThumbnailReceivedListener mOnThumbnailReceivedListener;
42
43 interface OnThumbnailReceivedListener {
Theresa 2017/03/28 17:23:08 nit: This should probably have a JavaDoc too
JJ 2017/03/28 23:19:20 Done.
44 void onThumbnailReceived(Bitmap bitmap);
45 }
39 46
40 private ContextMenuHelper(long nativeContextMenuHelper) { 47 private ContextMenuHelper(long nativeContextMenuHelper) {
41 mNativeContextMenuHelper = nativeContextMenuHelper; 48 mNativeContextMenuHelper = nativeContextMenuHelper;
42 } 49 }
43 50
44 @CalledByNative 51 @CalledByNative
45 private static ContextMenuHelper create(long nativeContextMenuHelper) { 52 private static ContextMenuHelper create(long nativeContextMenuHelper) {
46 return new ContextMenuHelper(nativeContextMenuHelper); 53 return new ContextMenuHelper(nativeContextMenuHelper);
47 } 54 }
48 55
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 public void run() { 107 public void run() {
101 if (mNativeContextMenuHelper == 0) return; 108 if (mNativeContextMenuHelper == 0) return;
102 nativeOnContextMenuClosed(mNativeContextMenuHelper); 109 nativeOnContextMenuClosed(mNativeContextMenuHelper);
103 } 110 }
104 }; 111 };
105 112
106 if (ChromeFeatureList.isEnabled(ChromeFeatureList.CUSTOM_CONTEXT_MENU)) { 113 if (ChromeFeatureList.isEnabled(ChromeFeatureList.CUSTOM_CONTEXT_MENU)) {
107 List<Pair<Integer, List<ContextMenuItem>>> items = 114 List<Pair<Integer, List<ContextMenuItem>>> items =
108 mPopulator.buildContextMenu(null, mActivity, mCurrentContext MenuParams); 115 mPopulator.buildContextMenu(null, mActivity, mCurrentContext MenuParams);
109 116
110 ContextMenuUi menuUi = new TabularContextMenuUi(); 117 ContextMenuUi menuUi = new TabularContextMenuUi(this);
111 menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCal lback, mOnMenuShown, 118 menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCal lback, mOnMenuShown,
112 mOnMenuClosed); 119 mOnMenuClosed);
113 return; 120 return;
114 } 121 }
115 122
116 // The Platform Context Menu requires the listener within this hepler si nce this helper and 123 // The Platform Context Menu requires the listener within this hepler si nce this helper and
117 // provides context menu for us to show. 124 // provides context menu for us to show.
118 view.setOnCreateContextMenuListener(this); 125 view.setOnCreateContextMenuListener(this);
119 if (view.showContextMenu()) { 126 if (view.showContextMenu()) {
120 mOnMenuShown.run(); 127 mOnMenuShown.run();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 163
157 @CalledByNative 164 @CalledByNative
158 private void onShareImageReceived( 165 private void onShareImageReceived(
159 WindowAndroid windowAndroid, byte[] jpegImageData) { 166 WindowAndroid windowAndroid, byte[] jpegImageData) {
160 Activity activity = windowAndroid.getActivity().get(); 167 Activity activity = windowAndroid.getActivity().get();
161 if (activity == null) return; 168 if (activity == null) return;
162 169
163 ShareHelper.shareImage(activity, jpegImageData); 170 ShareHelper.shareImage(activity, jpegImageData);
164 } 171 }
165 172
173 /**
174 * This gets the thumbnail of the current image that triggered the context m enu.
Theresa 2017/03/28 17:23:08 nit: s/This gets/Gets
JJ 2017/03/28 23:19:20 Done.
175 */
176 public void getThumbnail() {
177 if (mNativeContextMenuHelper == 0) return;
178 nativeRetrieveHeaderThumbnail(mNativeContextMenuHelper);
179 }
180
181 @CalledByNative
182 private void onHeaderThumbnailReceived(WindowAndroid windowAndroid, byte[] j pegImageData) {
183 Bitmap bitmap = BitmapFactory.decodeByteArray(jpegImageData, 0, jpegImag eData.length);
184 if (mOnThumbnailReceivedListener != null) {
185 mOnThumbnailReceivedListener.onThumbnailReceived(bitmap);
186 }
187 }
188
166 @Override 189 @Override
167 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo me nuInfo) { 190 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo me nuInfo) {
168 List<Pair<Integer, List<ContextMenuItem>>> items = 191 List<Pair<Integer, List<ContextMenuItem>>> items =
169 mPopulator.buildContextMenu(menu, v.getContext(), mCurrentContex tMenuParams); 192 mPopulator.buildContextMenu(menu, v.getContext(), mCurrentContex tMenuParams);
170 ContextMenuUi menuUi = new PlatformContextMenuUi(menu); 193 ContextMenuUi menuUi = new PlatformContextMenuUi(menu);
171 menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCallbac k, mOnMenuShown, 194 menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCallbac k, mOnMenuShown,
172 mOnMenuClosed); 195 mOnMenuClosed);
173 } 196 }
174 197
198 public void setOnThumbnailReceivedListener(OnThumbnailReceivedListener liste ner) {
Theresa 2017/03/28 17:23:08 nit: JavaDoc here too
JJ 2017/03/28 23:19:20 Done.
199 mOnThumbnailReceivedListener = listener;
200 }
201
175 /** 202 /**
176 * @return The {@link ContextMenuPopulator} responsible for populating the c ontext menu. 203 * @return The {@link ContextMenuPopulator} responsible for populating the c ontext menu.
177 */ 204 */
178 @VisibleForTesting 205 @VisibleForTesting
179 public ContextMenuPopulator getPopulator() { 206 public ContextMenuPopulator getPopulator() {
180 return mPopulator; 207 return mPopulator;
181 } 208 }
182 209
183 private native void nativeOnStartDownload( 210 private native void nativeOnStartDownload(
184 long nativeContextMenuHelper, boolean isLink, boolean isDataReductio nProxyEnabled); 211 long nativeContextMenuHelper, boolean isLink, boolean isDataReductio nProxyEnabled);
185 private native void nativeSearchForImage(long nativeContextMenuHelper); 212 private native void nativeSearchForImage(long nativeContextMenuHelper);
186 private native void nativeShareImage(long nativeContextMenuHelper); 213 private native void nativeShareImage(long nativeContextMenuHelper);
187 private native void nativeOnContextMenuClosed(long nativeContextMenuHelper); 214 private native void nativeOnContextMenuClosed(long nativeContextMenuHelper);
215 private native void nativeRetrieveHeaderThumbnail(long nativeContextMenuHelp er);
188 } 216 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698