Commit 84569e13 authored by Jesse Schettler's avatar Jesse Schettler Committed by Commit Bot

printing: Mojofy PrintMsg_PrintNodeUnderContextMenu

Replace the PrintMsg_PrintNodeUnderContextMenu IPC message with a new
Mojo method, and update RenderViewContextMenu to use this method.

Bug: 1008939
Change-Id: I6cf5e4429c7c057b8b48d386177daf3989a3988d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1999322Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Reviewed-by: default avatarShimi Zhang <ctzsm@chromium.org>
Reviewed-by: default avatarChangwan Ryu <changwan@chromium.org>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Commit-Queue: Jesse Schettler <jschettler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732681}
parent 4549a4ed
...@@ -30,8 +30,6 @@ source_set("renderer") { ...@@ -30,8 +30,6 @@ source_set("renderer") {
"js_java_interaction/js_binding.h", "js_java_interaction/js_binding.h",
"js_java_interaction/js_java_configurator.cc", "js_java_interaction/js_java_configurator.cc",
"js_java_interaction/js_java_configurator.h", "js_java_interaction/js_java_configurator.h",
"print_render_frame_observer.cc",
"print_render_frame_observer.h",
] ]
deps = [ deps = [
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include "android_webview/renderer/aw_websocket_handshake_throttle_provider.h" #include "android_webview/renderer/aw_websocket_handshake_throttle_provider.h"
#include "android_webview/renderer/browser_exposed_renderer_interfaces.h" #include "android_webview/renderer/browser_exposed_renderer_interfaces.h"
#include "android_webview/renderer/js_java_interaction/js_java_configurator.h" #include "android_webview/renderer/js_java_interaction/js_java_configurator.h"
#include "android_webview/renderer/print_render_frame_observer.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/i18n/rtl.h" #include "base/i18n/rtl.h"
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
...@@ -148,7 +147,6 @@ bool AwContentRendererClient::HandleNavigation( ...@@ -148,7 +147,6 @@ bool AwContentRendererClient::HandleNavigation(
void AwContentRendererClient::RenderFrameCreated( void AwContentRendererClient::RenderFrameCreated(
content::RenderFrame* render_frame) { content::RenderFrame* render_frame) {
new AwContentSettingsClient(render_frame); new AwContentSettingsClient(render_frame);
new PrintRenderFrameObserver(render_frame);
new printing::PrintRenderFrameHelper( new printing::PrintRenderFrameHelper(
render_frame, std::make_unique<AwPrintRenderFrameHelperDelegate>()); render_frame, std::make_unique<AwPrintRenderFrameHelperDelegate>());
new AwRenderFrameExt(render_frame); new AwRenderFrameExt(render_frame);
......
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "android_webview/renderer/print_render_frame_observer.h"
#include "components/printing/common/print_messages.h"
#include "components/printing/renderer/print_render_frame_helper.h"
#include "content/public/renderer/render_frame.h"
#include "third_party/blink/public/web/web_local_frame.h"
namespace android_webview {
PrintRenderFrameObserver::PrintRenderFrameObserver(
content::RenderFrame* render_frame)
: content::RenderFrameObserver(render_frame) {
}
PrintRenderFrameObserver::~PrintRenderFrameObserver() {
}
bool PrintRenderFrameObserver::OnMessageReceived(
const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(PrintRenderFrameObserver, message)
IPC_MESSAGE_HANDLER(PrintMsg_PrintNodeUnderContextMenu,
OnPrintNodeUnderContextMenu)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
}
void PrintRenderFrameObserver::OnPrintNodeUnderContextMenu() {
printing::PrintRenderFrameHelper* helper =
printing::PrintRenderFrameHelper::Get(render_frame());
if (helper)
helper->PrintNode(render_frame()->GetWebFrame()->ContextMenuNode());
}
void PrintRenderFrameObserver::OnDestruct() {
delete this;
}
} // namespace android_webview
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ANDROID_WEBVIEW_RENDERER_PRINT_RENDER_FRAME_OBSERVER_H_
#define ANDROID_WEBVIEW_RENDERER_PRINT_RENDER_FRAME_OBSERVER_H_
#include "base/macros.h"
#include "content/public/renderer/render_frame_observer.h"
namespace android_webview {
class PrintRenderFrameObserver : public content::RenderFrameObserver {
public:
explicit PrintRenderFrameObserver(content::RenderFrame* render_view);
private:
~PrintRenderFrameObserver() override;
// RenderFrameObserver implementation.
bool OnMessageReceived(const IPC::Message& message) override;
void OnDestruct() override;
// IPC handlers
void OnPrintNodeUnderContextMenu();
DISALLOW_COPY_AND_ASSIGN(PrintRenderFrameObserver);
};
} // namespace android_webview
#endif // ANDROID_WEBVIEW_RENDERER_PRINT_RENDER_FRAME_OBSERVER_H_
...@@ -181,7 +181,7 @@ ...@@ -181,7 +181,7 @@
#if BUILDFLAG(ENABLE_PRINTING) #if BUILDFLAG(ENABLE_PRINTING)
#include "chrome/browser/printing/print_view_manager_common.h" #include "chrome/browser/printing/print_view_manager_common.h"
#include "components/printing/common/print_messages.h" #include "components/printing/common/print.mojom.h"
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
#include "chrome/browser/printing/print_preview_context_menu_observer.h" #include "chrome/browser/printing/print_preview_context_menu_observer.h"
...@@ -2954,10 +2954,11 @@ void RenderViewContextMenu::ExecRestartPackagedApp() { ...@@ -2954,10 +2954,11 @@ void RenderViewContextMenu::ExecRestartPackagedApp() {
void RenderViewContextMenu::ExecPrint() { void RenderViewContextMenu::ExecPrint() {
#if BUILDFLAG(ENABLE_PRINTING) #if BUILDFLAG(ENABLE_PRINTING)
if (params_.media_type != ContextMenuDataMediaType::kNone) { if (params_.media_type != ContextMenuDataMediaType::kNone) {
RenderFrameHost* render_frame_host = GetRenderFrameHost(); RenderFrameHost* rfh = GetRenderFrameHost();
if (render_frame_host) { if (rfh) {
render_frame_host->Send(new PrintMsg_PrintNodeUnderContextMenu( mojo::AssociatedRemote<printing::mojom::PrintRenderFrame> remote;
render_frame_host->GetRoutingID())); rfh->GetRemoteAssociatedInterfaces()->GetInterface(&remote);
remote->PrintNodeUnderContextMenu();
} }
return; return;
} }
......
...@@ -39,6 +39,8 @@ void FakePrintRenderFrame::PrintingDone(bool success) {} ...@@ -39,6 +39,8 @@ void FakePrintRenderFrame::PrintingDone(bool success) {}
void FakePrintRenderFrame::SetPrintingEnabled(bool enabled) {} void FakePrintRenderFrame::SetPrintingEnabled(bool enabled) {}
void FakePrintRenderFrame::PrintNodeUnderContextMenu() {}
void FakePrintRenderFrame::BindPrintRenderFrameReceiver( void FakePrintRenderFrame::BindPrintRenderFrameReceiver(
mojo::ScopedInterfaceEndpointHandle handle) { mojo::ScopedInterfaceEndpointHandle handle) {
receiver_.Bind(mojo::PendingAssociatedReceiver<mojom::PrintRenderFrame>( receiver_.Bind(mojo::PendingAssociatedReceiver<mojom::PrintRenderFrame>(
......
...@@ -34,6 +34,7 @@ class FakePrintRenderFrame : public mojom::PrintRenderFrame { ...@@ -34,6 +34,7 @@ class FakePrintRenderFrame : public mojom::PrintRenderFrame {
void PrintFrameContent(mojom::PrintFrameContentParamsPtr params) override; void PrintFrameContent(mojom::PrintFrameContentParamsPtr params) override;
void PrintingDone(bool success) override; void PrintingDone(bool success) override;
void SetPrintingEnabled(bool enabled) override; void SetPrintingEnabled(bool enabled) override;
void PrintNodeUnderContextMenu() override;
void BindPrintRenderFrameReceiver(mojo::ScopedInterfaceEndpointHandle handle); void BindPrintRenderFrameReceiver(mojo::ScopedInterfaceEndpointHandle handle);
......
...@@ -69,11 +69,6 @@ ...@@ -69,11 +69,6 @@
#include "chrome/common/mhtml_page_notifier.mojom.h" #include "chrome/common/mhtml_page_notifier.mojom.h"
#endif #endif
#if BUILDFLAG(ENABLE_PRINTING)
#include "components/printing/common/print_messages.h"
#include "components/printing/renderer/print_render_frame_helper.h"
#endif
using blink::WebDocumentLoader; using blink::WebDocumentLoader;
using blink::WebElement; using blink::WebElement;
using blink::WebFrameContentDumper; using blink::WebFrameContentDumper;
...@@ -180,6 +175,8 @@ bool ChromeRenderFrameObserver::OnAssociatedInterfaceRequestForFrame( ...@@ -180,6 +175,8 @@ bool ChromeRenderFrameObserver::OnAssociatedInterfaceRequestForFrame(
bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) { bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) {
// Filter only. // Filter only.
bool handled = true; bool handled = true;
// Messages in this message map have multiple handlers. Please do not add more
// messages here.
IPC_BEGIN_MESSAGE_MAP(ChromeRenderFrameObserver, message) IPC_BEGIN_MESSAGE_MAP(ChromeRenderFrameObserver, message)
IPC_MESSAGE_HANDLER(PrerenderMsg_SetIsPrerendering, OnSetIsPrerendering) IPC_MESSAGE_HANDLER(PrerenderMsg_SetIsPrerendering, OnSetIsPrerendering)
IPC_MESSAGE_UNHANDLED(handled = false) IPC_MESSAGE_UNHANDLED(handled = false)
...@@ -187,11 +184,10 @@ bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) { ...@@ -187,11 +184,10 @@ bool ChromeRenderFrameObserver::OnMessageReceived(const IPC::Message& message) {
if (handled) if (handled)
return false; return false;
// Normal message handlers. Legacy IPC is deprecated, but leaving this as a
// placeholder in case new messages are added before legacy IPC handling is
// wholly removed from this class.
IPC_BEGIN_MESSAGE_MAP(ChromeRenderFrameObserver, message) IPC_BEGIN_MESSAGE_MAP(ChromeRenderFrameObserver, message)
#if BUILDFLAG(ENABLE_PRINTING)
IPC_MESSAGE_HANDLER(PrintMsg_PrintNodeUnderContextMenu,
OnPrintNodeUnderContextMenu)
#endif
IPC_MESSAGE_UNHANDLED(handled = false) IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP() IPC_END_MESSAGE_MAP()
...@@ -270,15 +266,6 @@ void ChromeRenderFrameObserver::RequestThumbnailForContextNode( ...@@ -270,15 +266,6 @@ void ChromeRenderFrameObserver::RequestThumbnailForContextNode(
std::move(callback).Run(thumbnail_data, original_size); std::move(callback).Run(thumbnail_data, original_size);
} }
void ChromeRenderFrameObserver::OnPrintNodeUnderContextMenu() {
#if BUILDFLAG(ENABLE_PRINTING)
printing::PrintRenderFrameHelper* helper =
printing::PrintRenderFrameHelper::Get(render_frame());
if (helper)
helper->PrintNode(render_frame()->GetWebFrame()->ContextMenuNode());
#endif
}
void ChromeRenderFrameObserver::GetWebApplicationInfo( void ChromeRenderFrameObserver::GetWebApplicationInfo(
GetWebApplicationInfoCallback callback) { GetWebApplicationInfoCallback callback) {
WebLocalFrame* frame = render_frame()->GetWebFrame(); WebLocalFrame* frame = render_frame()->GetWebFrame();
......
...@@ -74,7 +74,6 @@ class ChromeRenderFrameObserver : public content::RenderFrameObserver, ...@@ -74,7 +74,6 @@ class ChromeRenderFrameObserver : public content::RenderFrameObserver,
int thumbnail_min_area_pixels, int thumbnail_min_area_pixels,
const gfx::Size& thumbnail_max_size_pixels, const gfx::Size& thumbnail_max_size_pixels,
int callback_id); int callback_id);
void OnPrintNodeUnderContextMenu();
void OnSetClientSidePhishingDetection(bool enable_phishing_detection); void OnSetClientSidePhishingDetection(bool enable_phishing_detection);
// chrome::mojom::ChromeRenderFrame: // chrome::mojom::ChromeRenderFrame:
......
...@@ -66,4 +66,8 @@ interface PrintRenderFrame { ...@@ -66,4 +66,8 @@ interface PrintRenderFrame {
// Tells the RenderFrame that printing is done so it can clean up. // Tells the RenderFrame that printing is done so it can clean up.
PrintingDone(bool success); PrintingDone(bool success);
// Tells the RenderFrame to initiate printing or print preview for a
// particular node, depending on which mode the RenderFrame is in.
PrintNodeUnderContextMenu();
}; };
...@@ -341,12 +341,6 @@ IPC_STRUCT_BEGIN(PrintHostMsg_ScriptedPrint_Params) ...@@ -341,12 +341,6 @@ IPC_STRUCT_BEGIN(PrintHostMsg_ScriptedPrint_Params)
IPC_STRUCT_END() IPC_STRUCT_END()
// Messages sent from the browser to the renderer.
// Tells the RenderFrame to initiate printing or print preview for a particular
// node, depending on which mode the RenderFrame is in.
IPC_MESSAGE_ROUTED0(PrintMsg_PrintNodeUnderContextMenu)
// Messages sent from the renderer to the browser. // Messages sent from the renderer to the browser.
// Tells the browser that the renderer is done calculating the number of // Tells the browser that the renderer is done calculating the number of
......
...@@ -1347,6 +1347,11 @@ void PrintRenderFrameHelper::SetPrintingEnabled(bool enabled) { ...@@ -1347,6 +1347,11 @@ void PrintRenderFrameHelper::SetPrintingEnabled(bool enabled) {
is_printing_enabled_ = enabled; is_printing_enabled_ = enabled;
} }
void PrintRenderFrameHelper::PrintNodeUnderContextMenu() {
ScopedIPC scoped_ipc(weak_ptr_factory_.GetWeakPtr());
PrintNode(render_frame()->GetWebFrame()->ContextMenuNode());
}
void PrintRenderFrameHelper::GetPageSizeAndContentAreaFromPageLayout( void PrintRenderFrameHelper::GetPageSizeAndContentAreaFromPageLayout(
const PageSizeMargins& page_layout_in_points, const PageSizeMargins& page_layout_in_points,
gfx::Size* page_size, gfx::Size* page_size,
......
...@@ -234,6 +234,7 @@ class PrintRenderFrameHelper ...@@ -234,6 +234,7 @@ class PrintRenderFrameHelper
void PrintFrameContent(mojom::PrintFrameContentParamsPtr params) override; void PrintFrameContent(mojom::PrintFrameContentParamsPtr params) override;
void PrintingDone(bool success) override; void PrintingDone(bool success) override;
void SetPrintingEnabled(bool enabled) override; void SetPrintingEnabled(bool enabled) override;
void PrintNodeUnderContextMenu() override;
// Get |page_size| and |content_area| information from // Get |page_size| and |content_area| information from
// |page_layout_in_points|. // |page_layout_in_points|.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment