Chromium Code Reviews| 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 |