Chromium Code Reviews| Index: chrome/browser/ui/android/context_menu_helper.cc |
| diff --git a/chrome/browser/ui/android/context_menu_helper.cc b/chrome/browser/ui/android/context_menu_helper.cc |
| index f4ed7f8256c3df2acc3d29686fadecb093c13164..ca9b363e31e9da2bdf56e209bbeaac26021176e5 100644 |
| --- a/chrome/browser/ui/android/context_menu_helper.cc |
| +++ b/chrome/browser/ui/android/context_menu_helper.cc |
| @@ -188,6 +188,49 @@ void ContextMenuHelper::OnShareImage( |
| j_bytes); |
| } |
| +void ContextMenuHelper::RetrieveHeaderThumbnail( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& obj) { |
| + content::RenderFrameHost* render_frame_host = |
| + content::RenderFrameHost::FromID(render_process_id_, render_frame_id_); |
| + if (!render_frame_host) |
| + return; |
| + |
| + chrome::mojom::ThumbnailCapturerPtr thumbnail_capturer; |
| + render_frame_host->GetRemoteInterfaces()->GetInterface(&thumbnail_capturer); |
| + // Bind the InterfacePtr into the callback so that it's kept alive until |
| + // there's either a connection error or a response. |
| + auto* thumbnail_capturer_proxy = thumbnail_capturer.get(); |
| + thumbnail_capturer_proxy->RequestThumbnailForContextNode( |
| + 0, gfx::Size(kShareImageMaxWidth, kShareImageMaxHeight), |
|
David Trainor- moved to gerrit
2017/03/30 05:03:14
Our thumbnail size is the same size as the share?
JJ
2017/03/30 16:00:26
When running this morning I thought about the disp
David Trainor- moved to gerrit
2017/03/30 23:45:14
Should we scale this based on the density then? T
|
| + base::Bind(&ContextMenuHelper::OnHeaderThumbnailReceived, |
| + weak_factory_.GetWeakPtr(), |
| + base::Passed(&thumbnail_capturer))); |
| +} |
| + |
| +void ContextMenuHelper::OnHeaderThumbnailReceived( |
| + chrome::mojom::ThumbnailCapturerPtr thumbnail_capturer, |
| + const std::vector<uint8_t>& thumbnail_data, |
| + const gfx::Size& original_size) { |
| + content::ContentViewCore* content_view_core = |
| + content::ContentViewCore::FromWebContents(web_contents_); |
| + if (!content_view_core) |
| + return; |
| + |
| + base::android::ScopedJavaLocalRef<jobject> jwindow_android( |
| + content_view_core->GetWindowAndroid()->GetJavaObject()); |
| + |
| + if (jwindow_android.is_null()) |
| + return; |
| + |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + base::android::ScopedJavaLocalRef<jbyteArray> j_bytes = |
| + base::android::ToJavaByteArray(env, thumbnail_data); |
| + |
| + Java_ContextMenuHelper_onHeaderThumbnailReceived(env, java_obj_, |
| + jwindow_android, j_bytes); |
| +} |
| + |
| bool RegisterContextMenuHelper(JNIEnv* env) { |
| return RegisterNativesImpl(env); |
| } |