OLD | NEW |
---|---|
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 Loading... | |
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 { | |
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 Loading... | |
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 Loading... | |
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 public void getThumbnail() { | |
Theresa
2017/03/27 18:28:26
nit: this needs a JavaDoc
JJ
2017/03/27 20:47:12
Done.
| |
174 if (mNativeContextMenuHelper == 0) return; | |
175 nativeRetrieveHeaderThumbnail(mNativeContextMenuHelper); | |
176 } | |
177 | |
178 @CalledByNative | |
179 private void onHeaderThumbnailReceived(WindowAndroid windowAndroid, byte[] j pegImageData) { | |
180 Bitmap bitmap = BitmapFactory.decodeByteArray(jpegImageData, 0, jpegImag eData.length); | |
181 if (mOnThumbnailReceivedListener != null) { | |
182 mOnThumbnailReceivedListener.onThumbnailReceived(bitmap); | |
183 } | |
184 } | |
185 | |
166 @Override | 186 @Override |
167 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo me nuInfo) { | 187 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo me nuInfo) { |
168 List<Pair<Integer, List<ContextMenuItem>>> items = | 188 List<Pair<Integer, List<ContextMenuItem>>> items = |
169 mPopulator.buildContextMenu(menu, v.getContext(), mCurrentContex tMenuParams); | 189 mPopulator.buildContextMenu(menu, v.getContext(), mCurrentContex tMenuParams); |
170 ContextMenuUi menuUi = new PlatformContextMenuUi(menu); | 190 ContextMenuUi menuUi = new PlatformContextMenuUi(menu); |
171 menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCallbac k, mOnMenuShown, | 191 menuUi.displayMenu(mActivity, mCurrentContextMenuParams, items, mCallbac k, mOnMenuShown, |
172 mOnMenuClosed); | 192 mOnMenuClosed); |
173 } | 193 } |
174 | 194 |
195 public void setOnThumbnailReceivedListener(OnThumbnailReceivedListener liste ner) { | |
196 mOnThumbnailReceivedListener = listener; | |
197 } | |
198 | |
175 /** | 199 /** |
176 * @return The {@link ContextMenuPopulator} responsible for populating the c ontext menu. | 200 * @return The {@link ContextMenuPopulator} responsible for populating the c ontext menu. |
177 */ | 201 */ |
178 @VisibleForTesting | 202 @VisibleForTesting |
179 public ContextMenuPopulator getPopulator() { | 203 public ContextMenuPopulator getPopulator() { |
180 return mPopulator; | 204 return mPopulator; |
181 } | 205 } |
182 | 206 |
183 private native void nativeOnStartDownload( | 207 private native void nativeOnStartDownload( |
184 long nativeContextMenuHelper, boolean isLink, boolean isDataReductio nProxyEnabled); | 208 long nativeContextMenuHelper, boolean isLink, boolean isDataReductio nProxyEnabled); |
185 private native void nativeSearchForImage(long nativeContextMenuHelper); | 209 private native void nativeSearchForImage(long nativeContextMenuHelper); |
186 private native void nativeShareImage(long nativeContextMenuHelper); | 210 private native void nativeShareImage(long nativeContextMenuHelper); |
187 private native void nativeOnContextMenuClosed(long nativeContextMenuHelper); | 211 private native void nativeOnContextMenuClosed(long nativeContextMenuHelper); |
212 private native void nativeRetrieveHeaderThumbnail(long nativeContextMenuHelp er); | |
188 } | 213 } |
OLD | NEW |