Commit 514a77b5 authored by Julie Jeongeun Kim's avatar Julie Jeongeun Kim Committed by Chromium LUCI CQ

[printing] Convert PrintHostMsg_RequestPrintPreview to Mojo

This CL converts PrintHostMsg_RequestPrintPreview message to
RequestPrintPreview() in mojom::PrintManagerHost.

Since PrintHostMsg_RequestPrintPreview is a message to
request a print preview, a Preview ID is not generated yet
when the message is requested. So, the converted message is
added to mojom::PrintManagerHost, not mojom::PrintPreviewUI.

This change also updates PrintPreviewDialogControllerBrowserTest
to use TestPrintViewManager instead of
RequestPrintPreviewObserver::OnMessageReceived.

Bug: 1008939
Change-Id: Id5db2862ddb01a91f80cf5534fde71e88c2d2b7b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2593847Reviewed-by: default avatarWei Li <weili@chromium.org>
Reviewed-by: default avatarDave Tapuska <dtapuska@chromium.org>
Reviewed-by: default avatarSam McNally <sammc@chromium.org>
Commit-Queue: Julie Kim <jkim@igalia.com>
Cr-Commit-Position: refs/heads/master@{#840939}
parent 25be8f6b
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/extensions/extension_browsertest.h" #include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/printing/print_job_manager.h" #include "chrome/browser/printing/print_job_manager.h"
#include "chrome/browser/printing/print_view_manager_base.h" #include "chrome/browser/printing/print_view_manager.h"
#include "chrome/browser/printing/print_view_manager_common.h" #include "chrome/browser/printing/print_view_manager_common.h"
#include "chrome/browser/printing/printer_query.h" #include "chrome/browser/printing/printer_query.h"
#include "chrome/browser/printing/printing_message_filter.h" #include "chrome/browser/printing/printing_message_filter.h"
...@@ -317,10 +317,10 @@ class KillPrintRenderFrame ...@@ -317,10 +317,10 @@ class KillPrintRenderFrame
} // namespace } // namespace
class TestPrintViewManager : public PrintViewManagerBase { class TestPrintViewManager : public PrintViewManager {
public: public:
explicit TestPrintViewManager(content::WebContents* web_contents) explicit TestPrintViewManager(content::WebContents* web_contents)
: PrintViewManagerBase(web_contents) {} : PrintViewManager(web_contents) {}
TestPrintViewManager(const TestPrintViewManager&) = delete; TestPrintViewManager(const TestPrintViewManager&) = delete;
TestPrintViewManager& operator=(const TestPrintViewManager&) = delete; TestPrintViewManager& operator=(const TestPrintViewManager&) = delete;
~TestPrintViewManager() override = default; ~TestPrintViewManager() override = default;
......
...@@ -51,60 +51,61 @@ using content::WebContentsObserver; ...@@ -51,60 +51,61 @@ using content::WebContentsObserver;
namespace { namespace {
class RequestPrintPreviewObserver : public WebContentsObserver { class TestPrintViewManager : public printing::PrintViewManager {
public: public:
explicit RequestPrintPreviewObserver(WebContents* dialog) explicit TestPrintViewManager(content::WebContents* web_contents)
: WebContentsObserver(dialog) {} : PrintViewManager(web_contents) {}
~RequestPrintPreviewObserver() override = default; TestPrintViewManager(const TestPrintViewManager&) = delete;
TestPrintViewManager& operator=(const TestPrintViewManager&) = delete;
~TestPrintViewManager() override = default;
static TestPrintViewManager* FromWebContents(WebContents* web_contents) {
return static_cast<TestPrintViewManager*>(
printing::PrintViewManager::FromWebContents(web_contents));
}
// Create TestPrintViewManager with PrintViewManager::UserDataKey() so that
// PrintViewManager::FromWebContents() in printing path returns
// TestPrintViewManager*.
static void CreateForWebContents(WebContents* web_contents) {
TestPrintViewManager* print_manager =
new TestPrintViewManager(web_contents);
web_contents->SetUserData(printing::PrintViewManager::UserDataKey(),
base::WrapUnique(print_manager));
}
void set_quit_closure(base::OnceClosure quit_closure) { void set_quit_closure(base::OnceClosure quit_closure) {
quit_closure_ = std::move(quit_closure); quit_closure_ = std::move(quit_closure);
} }
private: private:
// content::WebContentsObserver implementation. // printing::mojom::PrintManagerHost:
bool OnMessageReceived(const IPC::Message& message, void RequestPrintPreview(
content::RenderFrameHost* render_frame_host) override { printing::mojom::RequestPrintPreviewParamsPtr params) override {
IPC_BEGIN_MESSAGE_MAP(RequestPrintPreviewObserver, message)
IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview,
OnRequestPrintPreview)
IPC_MESSAGE_UNHANDLED(break)
IPC_END_MESSAGE_MAP()
return false; // Report not handled so the real handler receives it.
}
void OnRequestPrintPreview(
const printing::mojom::RequestPrintPreviewParams& /* params */) {
base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
std::move(quit_closure_)); std::move(quit_closure_));
printing::PrintViewManager::RequestPrintPreview(std::move(params));
} }
base::OnceClosure quit_closure_; base::OnceClosure quit_closure_;
DISALLOW_COPY_AND_ASSIGN(RequestPrintPreviewObserver);
}; };
class PrintPreviewDialogClonedObserver : public WebContentsObserver { class PrintPreviewDialogClonedObserver : public WebContentsObserver {
public: public:
explicit PrintPreviewDialogClonedObserver(WebContents* dialog) explicit PrintPreviewDialogClonedObserver(WebContents* dialog)
: WebContentsObserver(dialog) {} : WebContentsObserver(dialog) {}
PrintPreviewDialogClonedObserver(const PrintPreviewDialogClonedObserver&) =
delete;
PrintPreviewDialogClonedObserver& operator=(
const PrintPreviewDialogClonedObserver&) = delete;
~PrintPreviewDialogClonedObserver() override = default; ~PrintPreviewDialogClonedObserver() override = default;
RequestPrintPreviewObserver* request_preview_dialog_observer() {
return request_preview_dialog_observer_.get();
}
private: private:
// content::WebContentsObserver implementation. // content::WebContentsObserver implementation.
void DidCloneToNewWebContents(WebContents* old_web_contents, void DidCloneToNewWebContents(WebContents* old_web_contents,
WebContents* new_web_contents) override { WebContents* new_web_contents) override {
request_preview_dialog_observer_ = TestPrintViewManager::CreateForWebContents(new_web_contents);
std::make_unique<RequestPrintPreviewObserver>(new_web_contents);
} }
std::unique_ptr<RequestPrintPreviewObserver> request_preview_dialog_observer_;
DISALLOW_COPY_AND_ASSIGN(PrintPreviewDialogClonedObserver);
}; };
void PluginsLoadedCallback( void PluginsLoadedCallback(
...@@ -142,6 +143,10 @@ void CheckPdfPluginForRenderFrame(content::RenderFrameHost* frame) { ...@@ -142,6 +143,10 @@ void CheckPdfPluginForRenderFrame(content::RenderFrameHost* frame) {
class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest { class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
public: public:
PrintPreviewDialogControllerBrowserTest() = default; PrintPreviewDialogControllerBrowserTest() = default;
PrintPreviewDialogControllerBrowserTest(
const PrintPreviewDialogControllerBrowserTest&) = delete;
PrintPreviewDialogControllerBrowserTest& operator=(
const PrintPreviewDialogControllerBrowserTest&) = delete;
~PrintPreviewDialogControllerBrowserTest() override = default; ~PrintPreviewDialogControllerBrowserTest() override = default;
WebContents* initiator() { WebContents* initiator() {
...@@ -150,7 +155,7 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest { ...@@ -150,7 +155,7 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
void PrintPreview() { void PrintPreview() {
base::RunLoop run_loop; base::RunLoop run_loop;
request_preview_dialog_observer()->set_quit_closure(run_loop.QuitClosure()); test_print_view_manager_->set_quit_closure(run_loop.QuitClosure());
chrome::Print(browser()); chrome::Print(browser());
run_loop.Run(); run_loop.Run();
} }
...@@ -161,11 +166,7 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest { ...@@ -161,11 +166,7 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
return dialog_controller->GetPrintPreviewForContents(initiator_); return dialog_controller->GetPrintPreviewForContents(initiator_);
} }
void PrintPreviewDone() { void PrintPreviewDone() { test_print_view_manager_->PrintPreviewDone(); }
auto* print_view_manager =
printing::PrintViewManager::FromWebContents(initiator());
print_view_manager->PrintPreviewDone();
}
void SetAlwaysOpenPdfExternallyForTests() { void SetAlwaysOpenPdfExternallyForTests() {
PluginPrefs::GetForProfile(browser()->profile()) PluginPrefs::GetForProfile(browser()->profile())
...@@ -183,11 +184,12 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest { ...@@ -183,11 +184,12 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
browser()->tab_strip_model()->GetActiveWebContents(); browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(first_tab); ASSERT_TRUE(first_tab);
// Open a new tab so |cloned_tab_observer_| can see it first and attach a // Open a new tab so |cloned_tab_observer_| can see it and create a
// RequestPrintPreviewObserver to it before the real // TestPrintViewManager for it before the real PrintViewManager gets
// PrintPreviewMessageHandler gets created. Thus enabling // created. Since TestPrintViewManager is created with
// RequestPrintPreviewObserver to get messages first for the purposes of // PrintViewManager::UserDataKey(), the real PrintViewManager is not
// this test. // created and TestPrintViewManager gets mojo messages for the
// purposes of this test.
cloned_tab_observer_ = cloned_tab_observer_ =
std::make_unique<PrintPreviewDialogClonedObserver>(first_tab); std::make_unique<PrintPreviewDialogClonedObserver>(first_tab);
chrome::DuplicateTab(browser()); chrome::DuplicateTab(browser());
...@@ -196,6 +198,8 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest { ...@@ -196,6 +198,8 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
ASSERT_TRUE(initiator_); ASSERT_TRUE(initiator_);
ASSERT_NE(first_tab, initiator_); ASSERT_NE(first_tab, initiator_);
test_print_view_manager_ =
TestPrintViewManager::FromWebContents(initiator_);
content::PluginService::GetInstance()->Init(); content::PluginService::GetInstance()->Init();
} }
...@@ -204,14 +208,10 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest { ...@@ -204,14 +208,10 @@ class PrintPreviewDialogControllerBrowserTest : public InProcessBrowserTest {
initiator_ = nullptr; initiator_ = nullptr;
} }
RequestPrintPreviewObserver* request_preview_dialog_observer() {
return cloned_tab_observer_->request_preview_dialog_observer();
}
std::unique_ptr<PrintPreviewDialogClonedObserver> cloned_tab_observer_; std::unique_ptr<PrintPreviewDialogClonedObserver> cloned_tab_observer_;
TestPrintViewManager* test_print_view_manager_;
WebContents* initiator_ = nullptr; WebContents* initiator_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(PrintPreviewDialogControllerBrowserTest);
}; };
// Test to verify that when a initiator navigates, we can create a new preview // Test to verify that when a initiator navigates, we can create a new preview
......
...@@ -99,22 +99,6 @@ PrintPreviewUI* PrintPreviewMessageHandler::GetPrintPreviewUI( ...@@ -99,22 +99,6 @@ PrintPreviewUI* PrintPreviewMessageHandler::GetPrintPreviewUI(
return (id && *id == preview_ui_id) ? preview_ui : nullptr; return (id && *id == preview_ui_id) ? preview_ui : nullptr;
} }
void PrintPreviewMessageHandler::OnRequestPrintPreview(
content::RenderFrameHost* render_frame_host,
const mojom::RequestPrintPreviewParams& params) {
PrintViewManager* print_view_manager =
PrintViewManager::FromWebContents(web_contents());
if (print_view_manager->RejectPrintPreviewRequestIfRestricted(
render_frame_host)) {
return;
}
if (params.webnode_only) {
print_view_manager->PrintPreviewForWebNode(render_frame_host);
}
PrintPreviewDialogController::PrintPreview(web_contents());
PrintPreviewUI::SetInitialParams(GetPrintPreviewDialog(), params);
}
void PrintPreviewMessageHandler::OnDidStartPreview( void PrintPreviewMessageHandler::OnDidStartPreview(
const mojom::DidStartPreviewParams& params, const mojom::DidStartPreviewParams& params,
const mojom::PreviewIds& ids) { const mojom::PreviewIds& ids) {
...@@ -496,8 +480,6 @@ bool PrintPreviewMessageHandler::OnMessageReceived( ...@@ -496,8 +480,6 @@ bool PrintPreviewMessageHandler::OnMessageReceived(
bool handled = true; bool handled = true;
IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(PrintPreviewMessageHandler, message, IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(PrintPreviewMessageHandler, message,
render_frame_host) render_frame_host)
IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview,
OnRequestPrintPreview)
IPC_MESSAGE_HANDLER(PrintHostMsg_DidPrepareDocumentForPreview, IPC_MESSAGE_HANDLER(PrintHostMsg_DidPrepareDocumentForPreview,
OnDidPrepareForDocumentToPdf) OnDidPrepareForDocumentToPdf)
IPC_MESSAGE_HANDLER(PrintHostMsg_DidPreviewPage, OnDidPreviewPage) IPC_MESSAGE_HANDLER(PrintHostMsg_DidPreviewPage, OnDidPreviewPage)
......
...@@ -57,8 +57,6 @@ class PrintPreviewMessageHandler ...@@ -57,8 +57,6 @@ class PrintPreviewMessageHandler
PrintPreviewUI* GetPrintPreviewUI(int preview_ui_id); PrintPreviewUI* GetPrintPreviewUI(int preview_ui_id);
// Message handlers. // Message handlers.
void OnRequestPrintPreview(content::RenderFrameHost* render_frame_host,
const mojom::RequestPrintPreviewParams& params);
void OnDidGetDefaultPageLayout( void OnDidGetDefaultPageLayout(
const mojom::PageSizeMargins& page_layout_in_points, const mojom::PageSizeMargins& page_layout_in_points,
const gfx::Rect& printable_area_in_points, const gfx::Rect& printable_area_in_points,
......
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
using content::BrowserThread; using content::BrowserThread;
namespace printing {
namespace { namespace {
// Keeps track of pending scripted print preview closures. // Keeps track of pending scripted print preview closures.
...@@ -58,9 +60,16 @@ void EnableInternalPDFPluginForContents(int render_process_id, ...@@ -58,9 +60,16 @@ void EnableInternalPDFPluginForContents(int render_process_id,
render_process_id, render_frame_id, info->ToWebPluginInfo()); render_process_id, render_frame_id, info->ToWebPluginInfo());
} }
} // namespace content::WebContents* GetPrintPreviewDialog(
content::WebContents* web_contents) {
PrintPreviewDialogController* dialog_controller =
PrintPreviewDialogController::GetInstance();
if (!dialog_controller)
return nullptr;
return dialog_controller->GetPrintPreviewForContents(web_contents);
}
namespace printing { } // namespace
struct PrintViewManager::FrameDispatchHelper { struct PrintViewManager::FrameDispatchHelper {
PrintViewManager* manager; PrintViewManager* manager;
...@@ -326,6 +335,22 @@ void PrintViewManager::ShowScriptedPrintPreview(bool source_is_modifiable) { ...@@ -326,6 +335,22 @@ void PrintViewManager::ShowScriptedPrintPreview(bool source_is_modifiable) {
dialog_controller->GetPrintPreviewForContents(web_contents()), params); dialog_controller->GetPrintPreviewForContents(web_contents()), params);
} }
void PrintViewManager::RequestPrintPreview(
mojom::RequestPrintPreviewParamsPtr params) {
content::RenderFrameHost* render_frame_host =
print_manager_host_receivers_.GetCurrentTargetFrame();
if (RejectPrintPreviewRequestIfRestricted(render_frame_host))
return;
if (params->webnode_only) {
PrintPreviewForWebNode(render_frame_host);
}
PrintPreviewDialogController::PrintPreview(web_contents());
PrintPreviewUI::SetInitialParams(GetPrintPreviewDialog(web_contents()),
*params);
}
void PrintViewManager::OnScriptedPrintPreviewReply(IPC::Message* reply_msg) { void PrintViewManager::OnScriptedPrintPreviewReply(IPC::Message* reply_msg) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
print_preview_rfh_->Send(reply_msg); print_preview_rfh_->Send(reply_msg);
......
...@@ -58,13 +58,10 @@ class PrintViewManager : public PrintViewManagerBase, ...@@ -58,13 +58,10 @@ class PrintViewManager : public PrintViewManagerBase,
// renderer in the case of scripted print preview if needed. // renderer in the case of scripted print preview if needed.
void PrintPreviewDone(); void PrintPreviewDone();
// Checks whether printing is currently restricted and aborts print preview if
// needed.
bool RejectPrintPreviewRequestIfRestricted(content::RenderFrameHost* rfh);
// mojom::PrintManagerHost: // mojom::PrintManagerHost:
void DidShowPrintDialog() override; void DidShowPrintDialog() override;
void ShowScriptedPrintPreview(bool source_is_modifiable) override; void ShowScriptedPrintPreview(bool source_is_modifiable) override;
void RequestPrintPreview(mojom::RequestPrintPreviewParamsPtr params) override;
// content::WebContentsObserver implementation. // content::WebContentsObserver implementation.
void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override; void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
...@@ -108,6 +105,10 @@ class PrintViewManager : public PrintViewManagerBase, ...@@ -108,6 +105,10 @@ class PrintViewManager : public PrintViewManagerBase,
// Checks whether printing is restricted due to Data Leak Protection rules. // Checks whether printing is restricted due to Data Leak Protection rules.
bool IsPrintingRestricted() const; bool IsPrintingRestricted() const;
// Checks whether printing is currently restricted and aborts print preview if
// needed.
bool RejectPrintPreviewRequestIfRestricted(content::RenderFrameHost* rfh);
base::OnceClosure on_print_dialog_shown_callback_; base::OnceClosure on_print_dialog_shown_callback_;
// Current state of print preview for this view. // Current state of print preview for this view.
......
...@@ -94,6 +94,9 @@ void PrintManager::PrintingFailed(int32_t cookie) { ...@@ -94,6 +94,9 @@ void PrintManager::PrintingFailed(int32_t cookie) {
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
void PrintManager::ShowScriptedPrintPreview(bool source_is_modifiable) {} void PrintManager::ShowScriptedPrintPreview(bool source_is_modifiable) {}
void PrintManager::RequestPrintPreview(
mojom::RequestPrintPreviewParamsPtr params) {}
#endif #endif
bool PrintManager::IsPrintRenderFrameConnected(content::RenderFrameHost* rfh) { bool PrintManager::IsPrintRenderFrameConnected(content::RenderFrameHost* rfh) {
......
...@@ -62,6 +62,7 @@ class PrintManager : public content::WebContentsObserver, ...@@ -62,6 +62,7 @@ class PrintManager : public content::WebContentsObserver,
void PrintingFailed(int32_t cookie) override; void PrintingFailed(int32_t cookie) override;
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
void ShowScriptedPrintPreview(bool source_is_modifiable) override; void ShowScriptedPrintPreview(bool source_is_modifiable) override;
void RequestPrintPreview(mojom::RequestPrintPreviewParamsPtr params) override;
#endif #endif
protected: protected:
......
...@@ -330,4 +330,8 @@ interface PrintManagerHost { ...@@ -330,4 +330,8 @@ interface PrintManagerHost {
// modifiable or not. // modifiable or not.
[EnableIf=enable_print_preview] [EnableIf=enable_print_preview]
ShowScriptedPrintPreview(bool is_modifiable); ShowScriptedPrintPreview(bool is_modifiable);
// Asks the browser to do print preview.
[EnableIf=enable_print_preview]
RequestPrintPreview(RequestPrintPreviewParams params);
}; };
...@@ -127,15 +127,6 @@ IPC_STRUCT_TRAITS_BEGIN(printing::PageRange) ...@@ -127,15 +127,6 @@ IPC_STRUCT_TRAITS_BEGIN(printing::PageRange)
IPC_STRUCT_TRAITS_END() IPC_STRUCT_TRAITS_END()
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
IPC_STRUCT_TRAITS_BEGIN(printing::mojom::RequestPrintPreviewParams)
IPC_STRUCT_TRAITS_MEMBER(is_from_arc)
IPC_STRUCT_TRAITS_MEMBER(is_modifiable)
IPC_STRUCT_TRAITS_MEMBER(is_pdf)
IPC_STRUCT_TRAITS_MEMBER(webnode_only)
IPC_STRUCT_TRAITS_MEMBER(has_selection)
IPC_STRUCT_TRAITS_MEMBER(selection_only)
IPC_STRUCT_TRAITS_END()
IPC_STRUCT_TRAITS_BEGIN(printing::mojom::PreviewIds) IPC_STRUCT_TRAITS_BEGIN(printing::mojom::PreviewIds)
IPC_STRUCT_TRAITS_MEMBER(request_id) IPC_STRUCT_TRAITS_MEMBER(request_id)
IPC_STRUCT_TRAITS_MEMBER(ui_id) IPC_STRUCT_TRAITS_MEMBER(ui_id)
...@@ -259,10 +250,6 @@ IPC_SYNC_MESSAGE_ROUTED1_1(PrintHostMsg_ScriptedPrint, ...@@ -259,10 +250,6 @@ IPC_SYNC_MESSAGE_ROUTED1_1(PrintHostMsg_ScriptedPrint,
/* settings chosen by the user*/) /* settings chosen by the user*/)
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
// Asks the browser to do print preview.
IPC_MESSAGE_ROUTED1(PrintHostMsg_RequestPrintPreview,
printing::mojom::RequestPrintPreviewParams /* params */)
// Notify the browser the about the to-be-rendered print preview document. // Notify the browser the about the to-be-rendered print preview document.
IPC_MESSAGE_ROUTED2(PrintHostMsg_DidStartPreview, IPC_MESSAGE_ROUTED2(PrintHostMsg_DidStartPreview,
printing::mojom::DidStartPreviewParams /* params */, printing::mojom::DidStartPreviewParams /* params */,
......
...@@ -2404,11 +2404,11 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { ...@@ -2404,11 +2404,11 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) {
if (delegate_->ShouldGenerateTaggedPDF()) if (delegate_->ShouldGenerateTaggedPDF())
snapshotter_ = render_frame()->CreateAXTreeSnapshotter(); snapshotter_ = render_frame()->CreateAXTreeSnapshotter();
mojom::RequestPrintPreviewParams params; auto params = mojom::RequestPrintPreviewParams::New();
params.is_from_arc = is_from_arc; params->is_from_arc = is_from_arc;
params.is_modifiable = is_modifiable; params->is_modifiable = is_modifiable;
params.is_pdf = is_pdf; params->is_pdf = is_pdf;
params.has_selection = has_selection; params->has_selection = has_selection;
switch (type) { switch (type) {
case PRINT_PREVIEW_SCRIPTED: { case PRINT_PREVIEW_SCRIPTED: {
// Shows scripted print preview in two stages. // Shows scripted print preview in two stages.
...@@ -2456,7 +2456,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { ...@@ -2456,7 +2456,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) {
case PRINT_PREVIEW_USER_INITIATED_SELECTION: { case PRINT_PREVIEW_USER_INITIATED_SELECTION: {
DCHECK(has_selection); DCHECK(has_selection);
DCHECK(!print_preview_context_.IsPlugin()); DCHECK(!print_preview_context_.IsPlugin());
params.selection_only = has_selection; params->selection_only = has_selection;
break; break;
} }
case PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE: { case PRINT_PREVIEW_USER_INITIATED_CONTEXT_NODE: {
...@@ -2467,7 +2467,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { ...@@ -2467,7 +2467,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) {
return; return;
} }
params.webnode_only = true; params->webnode_only = true;
break; break;
} }
default: { default: {
...@@ -2480,7 +2480,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { ...@@ -2480,7 +2480,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) {
base::UmaHistogramEnumeration("Arc.PrintPreview.PreviewEvent", base::UmaHistogramEnumeration("Arc.PrintPreview.PreviewEvent",
PREVIEW_EVENT_INITIATED, PREVIEW_EVENT_MAX); PREVIEW_EVENT_INITIATED, PREVIEW_EVENT_MAX);
} }
Send(new PrintHostMsg_RequestPrintPreview(routing_id(), params)); GetPrintManagerHost()->RequestPrintPreview(std::move(params));
} }
bool PrintRenderFrameHelper::CheckForCancel() { bool PrintRenderFrameHelper::CheckForCancel() {
......
...@@ -333,6 +333,8 @@ class TestPrintManagerHost ...@@ -333,6 +333,8 @@ class TestPrintManagerHost
void DidShowPrintDialog() override {} void DidShowPrintDialog() override {}
#if BUILDFLAG(ENABLE_PRINT_PREVIEW) #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
void ShowScriptedPrintPreview(bool source_is_modifiable) override {} void ShowScriptedPrintPreview(bool source_is_modifiable) override {}
void RequestPrintPreview(
mojom::RequestPrintPreviewParamsPtr params) override {}
#endif #endif
bool IsPrinted() { return is_printed_; } bool IsPrinted() { return is_printed_; }
......
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