summaryrefslogtreecommitdiffstats
path: root/src/core/printing/printing_message_filter_qt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/printing/printing_message_filter_qt.cpp')
-rw-r--r--src/core/printing/printing_message_filter_qt.cpp98
1 files changed, 27 insertions, 71 deletions
diff --git a/src/core/printing/printing_message_filter_qt.cpp b/src/core/printing/printing_message_filter_qt.cpp
index c95e334d8..8d6833dce 100644
--- a/src/core/printing/printing_message_filter_qt.cpp
+++ b/src/core/printing/printing_message_filter_qt.cpp
@@ -46,20 +46,14 @@
#include "web_engine_context.h"
-#include <string>
-
#include "base/bind.h"
#include "chrome/browser/printing/print_job_manager.h"
#include "chrome/browser/printing/printer_query.h"
#include "components/printing/browser/print_manager_utils.h"
#include "components/printing/common/print_messages.h"
#include "content/public/browser/browser_thread.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
#include "content/public/common/child_process_host.h"
-using content::BrowserThread;
-
namespace QtWebEngineCore {
PrintingMessageFilterQt::PrintingMessageFilterQt(int render_process_id)
@@ -72,15 +66,14 @@ PrintingMessageFilterQt::PrintingMessageFilterQt(int render_process_id)
PrintingMessageFilterQt::~PrintingMessageFilterQt() {
}
-void PrintingMessageFilterQt::OverrideThreadForMessage(
- const IPC::Message& message, BrowserThread::ID* thread) {
+void PrintingMessageFilterQt::OnDestruct() const
+{
+ content::BrowserThread::DeleteOnUIThread::Destruct(this);
}
bool PrintingMessageFilterQt::OnMessageReceived(const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(PrintingMessageFilterQt, message)
- IPC_MESSAGE_HANDLER_DELAY_REPLY(PrintHostMsg_GetDefaultPrintSettings,
- OnGetDefaultPrintSettings)
IPC_MESSAGE_HANDLER_DELAY_REPLY(PrintHostMsg_ScriptedPrint, OnScriptedPrint)
IPC_MESSAGE_HANDLER_DELAY_REPLY(PrintHostMsg_UpdatePrintSettings,
OnUpdatePrintSettings)
@@ -90,54 +83,8 @@ bool PrintingMessageFilterQt::OnMessageReceived(const IPC::Message& message) {
return handled;
}
-void PrintingMessageFilterQt::OnGetDefaultPrintSettings(IPC::Message* reply_msg) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- std::unique_ptr<printing::PrinterQuery> printer_query;
-
- printer_query = queue_->PopPrinterQuery(0);
- if (!printer_query) {
- printer_query =
- queue_->CreatePrinterQuery(render_process_id_, reply_msg->routing_id());
- }
-
- // Loads default settings. This is asynchronous, only the IPC message sender
- // will hang until the settings are retrieved.
- printer_query->GetSettings(
- printing::PrinterQuery::GetSettingsAskParam::DEFAULTS,
- 0,
- false,
- printing::mojom::MarginType::kDefaultMargins,
- false,
- false,
- base::BindOnce(&PrintingMessageFilterQt::OnGetDefaultPrintSettingsReply,
- this,
- std::move(printer_query),
- reply_msg));
-}
-
-void PrintingMessageFilterQt::OnGetDefaultPrintSettingsReply(std::unique_ptr<printing::PrinterQuery> printer_query,
- IPC::Message *reply_msg)
-{
- printing::mojom::PrintParams params;
- if (printer_query && printer_query->last_status() == printing::PrintingContext::OK) {
- printing::RenderParamsFromPrintSettings(printer_query->settings(), &params);
- params.document_cookie = printer_query->cookie();
- }
- PrintHostMsg_GetDefaultPrintSettings::WriteReplyParams(reply_msg, params);
- Send(reply_msg);
- // If printing was enabled.
- if (printer_query) {
- // If user hasn't cancelled.
- if (printer_query->cookie() && printer_query->settings().dpi()) {
- queue_->QueuePrinterQuery(std::move(printer_query));
- } else {
- printer_query->StopWorker();
- }
- }
-}
-
void PrintingMessageFilterQt::OnScriptedPrint(
- const PrintHostMsg_ScriptedPrint_Params& params,
+ const printing::mojom::ScriptedPrintParams& params,
IPC::Message* reply_msg) {
std::unique_ptr<printing::PrinterQuery> printer_query =
queue_->PopPrinterQuery(params.cookie);
@@ -161,19 +108,19 @@ void PrintingMessageFilterQt::OnScriptedPrint(
void PrintingMessageFilterQt::OnScriptedPrintReply(
std::unique_ptr<printing::PrinterQuery> printer_query,
IPC::Message* reply_msg) {
- PrintMsg_PrintPages_Params params;
-
+ printing::mojom::PrintPagesParams params;
+ params.params = printing::mojom::PrintParams::New();
if (printer_query->last_status() != printing::PrintingContext::OK ||
!printer_query->settings().dpi()) {
- params.Reset();
+ params.params.reset();
} else {
- RenderParamsFromPrintSettings(printer_query->settings(), &params.params);
- params.params.document_cookie = printer_query->cookie();
+ RenderParamsFromPrintSettings(printer_query->settings(), params.params.get());
+ params.params->document_cookie = printer_query->cookie();
params.pages = printing::PageRange::GetPages(printer_query->settings().ranges());
}
PrintHostMsg_ScriptedPrint::WriteReplyParams(reply_msg, params);
Send(reply_msg);
- if (!params.params.dpi.IsEmpty() && params.params.document_cookie) {
+ if (!params.params->dpi.IsEmpty() && params.params->document_cookie) {
queue_->QueuePrinterQuery(std::move(printer_query));
} else {
printer_query->StopWorker();
@@ -183,13 +130,21 @@ void PrintingMessageFilterQt::OnScriptedPrintReply(
void PrintingMessageFilterQt::OnUpdatePrintSettings(int document_cookie,
base::Value job_settings,
IPC::Message* reply_msg) {
- std::unique_ptr<printing::PrinterQuery> printer_query;
- printer_query = queue_->PopPrinterQuery(document_cookie);
+ if (!job_settings.is_dict() ||
+ !job_settings.FindIntKey(printing::kSettingPrinterType)) {
+ // Reply with null query.
+ OnUpdatePrintSettingsReply(nullptr, reply_msg);
+ return;
+ }
+
+ std::unique_ptr<printing::PrinterQuery> printer_query =
+ queue_->PopPrinterQuery(document_cookie);
if (!printer_query.get()) {
printer_query = queue_->CreatePrinterQuery(
content::ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE);
}
- printer_query->SetSettings(
+ auto* printer_query_ptr = printer_query.get();
+ printer_query_ptr->SetSettings(
std::move(job_settings),
base::BindOnce(&PrintingMessageFilterQt::OnUpdatePrintSettingsReply, this,
std::move(printer_query), reply_msg));
@@ -197,13 +152,14 @@ void PrintingMessageFilterQt::OnUpdatePrintSettings(int document_cookie,
void PrintingMessageFilterQt::OnUpdatePrintSettingsReply(std::unique_ptr<printing::PrinterQuery> printer_query,
IPC::Message* reply_msg) {
- PrintMsg_PrintPages_Params params;
+ printing::mojom::PrintPagesParams params;
+ params.params = printing::mojom::PrintParams::New();
if (!printer_query.get() ||
printer_query->last_status() != printing::PrintingContext::OK) {
- params.Reset();
+ params.params.reset();
} else {
- RenderParamsFromPrintSettings(printer_query->settings(), &params.params);
- params.params.document_cookie = printer_query->cookie();
+ RenderParamsFromPrintSettings(printer_query->settings(), params.params.get());
+ params.params->document_cookie = printer_query->cookie();
params.pages = printing::PageRange::GetPages(printer_query->settings().ranges());
}
@@ -223,7 +179,7 @@ void PrintingMessageFilterQt::OnUpdatePrintSettingsReply(std::unique_ptr<printin
}
}
-void PrintingMessageFilterQt::OnCheckForCancel(const PrintHostMsg_PreviewIds& ids,
+void PrintingMessageFilterQt::OnCheckForCancel(const printing::mojom::PreviewIds& ids,
bool* cancel) {
*cancel = false;
}