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

Unified Diff: chrome/renderer/chrome_render_frame_observer.cc

Issue 2737893002: Mojoify the RequestThumbnailForContextNode IPC message and reply (Closed)
Patch Set: Remove watcher; use ContextMenuWaiter 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/chrome_render_frame_observer.cc
diff --git a/chrome/renderer/chrome_render_frame_observer.cc b/chrome/renderer/chrome_render_frame_observer.cc
index 729e75b33b0d1226356cf5c05b26a404246f02d2..5a6c6b8d864ca5b454656e6df52ae1e37cf14b62 100644
--- a/chrome/renderer/chrome_render_frame_observer.cc
+++ b/chrome/renderer/chrome_render_frame_observer.cc
@@ -28,6 +28,7 @@
#include "content/public/renderer/render_view.h"
#include "extensions/common/constants.h"
#include "printing/features/features.h"
+#include "services/service_manager/public/cpp/interface_registry.h"
#include "skia/ext/image_operations.h"
#include "third_party/WebKit/public/platform/WebImage.h"
#include "third_party/WebKit/public/platform/WebURLRequest.h"
@@ -123,6 +124,10 @@ ChromeRenderFrameObserver::ChromeRenderFrameObserver(
translate_helper_ = new translate::TranslateHelper(
render_frame, chrome::ISOLATED_WORLD_ID_TRANSLATE,
extensions::kExtensionScheme);
+
+ render_frame->GetInterfaceRegistry()->AddInterface(
+ base::Bind(&ChromeRenderFrameObserver::OnThumbnailCapturerRequest,
+ base::Unretained(this)));
}
ChromeRenderFrameObserver::~ChromeRenderFrameObserver() {
@@ -141,8 +146,6 @@ bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) {
IPC_BEGIN_MESSAGE_MAP(ChromeRenderFrameObserver, message)
IPC_MESSAGE_HANDLER(ChromeViewMsg_RequestReloadImageForContextNode,
OnRequestReloadImageForContextNode)
- IPC_MESSAGE_HANDLER(ChromeViewMsg_RequestThumbnailForContextNode,
- OnRequestThumbnailForContextNode)
IPC_MESSAGE_HANDLER(ChromeViewMsg_SetClientSidePhishingDetection,
OnSetClientSidePhishingDetection)
#if BUILDFLAG(ENABLE_PRINTING)
@@ -181,19 +184,23 @@ void ChromeRenderFrameObserver::OnRequestReloadImageForContextNode() {
}
}
-void ChromeRenderFrameObserver::OnRequestThumbnailForContextNode(
- int thumbnail_min_area_pixels,
+void ChromeRenderFrameObserver::OnThumbnailCapturerRequest(
+ chrome::mojom::ThumbnailCapturerRequest request) {
+ thumbnail_capturer_bindings_.AddBinding(this, std::move(request));
+}
+
+void ChromeRenderFrameObserver::RequestThumbnailForContextNode(
+ int32_t thumbnail_min_area_pixels,
const gfx::Size& thumbnail_max_size_pixels,
- int callback_id) {
+ const RequestThumbnailForContextNodeCallback& callback) {
WebNode context_node = render_frame()->GetWebFrame()->contextMenuNode();
SkBitmap thumbnail;
gfx::Size original_size;
if (!context_node.isNull() && context_node.isElementNode()) {
blink::WebImage image = context_node.to<WebElement>().imageContents();
original_size = image.size();
- thumbnail = Downscale(image,
- thumbnail_min_area_pixels,
- thumbnail_max_size_pixels);
+ thumbnail =
+ Downscale(image, thumbnail_min_area_pixels, thumbnail_max_size_pixels);
}
SkBitmap bitmap;
@@ -210,12 +217,12 @@ void ChromeRenderFrameObserver::OnRequestThumbnailForContextNode(
if (gfx::JPEGCodec::Encode(
reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)),
gfx::JPEGCodec::FORMAT_SkBitmap, bitmap.width(), bitmap.height(),
- static_cast<int>(bitmap.rowBytes()), kDefaultQuality, &data))
+ static_cast<int>(bitmap.rowBytes()), kDefaultQuality, &data)) {
thumbnail_data = std::string(data.begin(), data.end());
+ }
}
- Send(new ChromeViewHostMsg_RequestThumbnailForContextNode_ACK(
- routing_id(), thumbnail_data, original_size, callback_id));
+ callback.Run(thumbnail_data, original_size);
}
void ChromeRenderFrameObserver::OnPrintNodeUnderContextMenu() {
« chrome/common/thumbnail_capturer.mojom ('K') | « chrome/renderer/chrome_render_frame_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698