|
@@ -11,10 +11,10 @@ majority of changes originally come from these PRs:
|
|
|
This patch also fixes callback for manual user cancellation and success.
|
|
|
|
|
|
diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc
|
|
|
-index 668a14bff461e83b2c6d9d7f23d9674ff081ef12..674f141e80c0316fd47558c4d428a9706ac5a7b6 100644
|
|
|
+index 792f6ac614a159cd28c8ebefde627b13796a4f67..0aa8f73852aa33a174f75251d8862b0c0d355ff1 100644
|
|
|
--- a/chrome/browser/printing/print_job.cc
|
|
|
+++ b/chrome/browser/printing/print_job.cc
|
|
|
-@@ -353,12 +353,14 @@ void PrintJob::StartPdfToEmfConversion(
|
|
|
+@@ -354,12 +354,14 @@ void PrintJob::StartPdfToEmfConversion(
|
|
|
// TODO(thestig): Figure out why crbug.com/1083911 occurred, which is likely
|
|
|
// because |web_contents| was null. As a result, this section has many more
|
|
|
// pointer checks to avoid crashing.
|
|
@@ -31,7 +31,7 @@ index 668a14bff461e83b2c6d9d7f23d9674ff081ef12..674f141e80c0316fd47558c4d428a970
|
|
|
using RenderMode = PdfRenderSettings::Mode;
|
|
|
RenderMode mode;
|
|
|
diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc
|
|
|
-index 977ad787270844b218a87fbe04fea616619e84ba..592fe4459cdae22d23a933a31c452c44992feb95 100644
|
|
|
+index 17788cb2b506bbf04d8d5fe533e4374fddd8b9d2..a935d79806c3281fd7e75617fd226d8481fd0d80 100644
|
|
|
--- a/chrome/browser/printing/print_job_worker.cc
|
|
|
+++ b/chrome/browser/printing/print_job_worker.cc
|
|
|
@@ -20,7 +20,6 @@
|
|
@@ -90,7 +90,7 @@ index 977ad787270844b218a87fbe04fea616619e84ba..592fe4459cdae22d23a933a31c452c44
|
|
|
}
|
|
|
|
|
|
diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
|
|
|
-index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7c18a6adc 100644
|
|
|
+index dc7ff3ef3447d756936f77fdcec102e06a32908f..2850bc543cb1c95da992067cabd5bf456a505d9d 100644
|
|
|
--- a/chrome/browser/printing/print_view_manager_base.cc
|
|
|
+++ b/chrome/browser/printing/print_view_manager_base.cc
|
|
|
@@ -27,10 +27,7 @@
|
|
@@ -129,8 +129,8 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
}
|
|
|
|
|
|
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
|
|
-@@ -116,12 +117,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents)
|
|
|
- printing_succeeded_(false),
|
|
|
+@@ -114,12 +115,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents)
|
|
|
+ : PrintManager(web_contents),
|
|
|
queue_(g_browser_process->print_job_manager()->queue()) {
|
|
|
DCHECK(queue_);
|
|
|
+#if 0
|
|
@@ -144,7 +144,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
}
|
|
|
|
|
|
PrintViewManagerBase::~PrintViewManagerBase() {
|
|
|
-@@ -129,7 +132,10 @@ PrintViewManagerBase::~PrintViewManagerBase() {
|
|
|
+@@ -127,7 +130,10 @@ PrintViewManagerBase::~PrintViewManagerBase() {
|
|
|
DisconnectFromCurrentPrintJob();
|
|
|
}
|
|
|
|
|
@@ -156,7 +156,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
DisconnectFromCurrentPrintJob();
|
|
|
|
|
|
// Don't print / print preview crashed tabs.
|
|
|
-@@ -137,7 +143,14 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) {
|
|
|
+@@ -135,7 +141,14 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) {
|
|
|
return false;
|
|
|
|
|
|
SetPrintingRFH(rfh);
|
|
@@ -172,7 +172,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-@@ -258,9 +271,9 @@ void PrintViewManagerBase::StartLocalPrintJob(
|
|
|
+@@ -256,9 +269,9 @@ void PrintViewManagerBase::StartLocalPrintJob(
|
|
|
void PrintViewManagerBase::UpdatePrintingEnabled() {
|
|
|
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
|
|
// The Unretained() is safe because ForEachFrame() is synchronous.
|
|
@@ -185,7 +185,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
}
|
|
|
|
|
|
void PrintViewManagerBase::NavigationStopped() {
|
|
|
-@@ -363,7 +376,7 @@ void PrintViewManagerBase::OnPrintingFailed(int cookie) {
|
|
|
+@@ -361,7 +374,7 @@ void PrintViewManagerBase::OnPrintingFailed(int cookie) {
|
|
|
PrintManager::OnPrintingFailed(cookie);
|
|
|
|
|
|
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
|
@@ -194,7 +194,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
#endif
|
|
|
|
|
|
ReleasePrinterQuery();
|
|
|
-@@ -382,6 +395,11 @@ void PrintViewManagerBase::OnScriptedPrint(
|
|
|
+@@ -380,6 +393,11 @@ void PrintViewManagerBase::OnScriptedPrint(
|
|
|
}
|
|
|
|
|
|
void PrintViewManagerBase::OnShowInvalidPrinterSettingsError() {
|
|
@@ -206,7 +206,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
|
|
FROM_HERE, base::BindOnce(&ShowWarningMessageBox,
|
|
|
l10n_util::GetStringUTF16(
|
|
|
-@@ -463,9 +481,13 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent(
|
|
|
+@@ -461,9 +479,13 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent(
|
|
|
content::NotificationService::NoDetails());
|
|
|
break;
|
|
|
}
|
|
@@ -222,7 +222,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
NOTREACHED();
|
|
|
break;
|
|
|
}
|
|
|
-@@ -560,8 +582,10 @@ bool PrintViewManagerBase::CreateNewPrintJob(
|
|
|
+@@ -558,8 +580,10 @@ bool PrintViewManagerBase::CreateNewPrintJob(
|
|
|
DCHECK(!quit_inner_loop_);
|
|
|
DCHECK(query);
|
|
|
|
|
@@ -235,7 +235,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
|
|
|
// We can't print if there is no renderer.
|
|
|
if (!web_contents()->GetRenderViewHost() ||
|
|
|
-@@ -582,8 +606,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
|
|
|
+@@ -580,8 +604,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
|
|
|
print_job_->SetSource(source, /*source_id=*/"");
|
|
|
#endif
|
|
|
|
|
@@ -244,7 +244,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
printing_succeeded_ = false;
|
|
|
return true;
|
|
|
}
|
|
|
-@@ -632,14 +654,22 @@ void PrintViewManagerBase::ReleasePrintJob() {
|
|
|
+@@ -630,14 +652,22 @@ void PrintViewManagerBase::ReleasePrintJob() {
|
|
|
content::RenderFrameHost* rfh = printing_rfh_;
|
|
|
printing_rfh_ = nullptr;
|
|
|
|
|
@@ -269,7 +269,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
// Don't close the worker thread.
|
|
|
print_job_ = nullptr;
|
|
|
}
|
|
|
-@@ -675,7 +705,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() {
|
|
|
+@@ -673,7 +703,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() {
|
|
|
}
|
|
|
|
|
|
bool PrintViewManagerBase::OpportunisticallyCreatePrintJob(int cookie) {
|
|
@@ -279,7 +279,7 @@ index 2917e93c3f22b3bcbe683c2b944c7af25e66f950..33f48f473efd04e165ec7b9a8738b8d7
|
|
|
|
|
|
if (!cookie) {
|
|
|
diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h
|
|
|
-index 9ad03ae28904050d540661038f6ba15b7a5c5c54..6d1c4f338dde79abddbaf3ad55500c4e7e8767ec 100644
|
|
|
+index 234f422e7b4cc0c424eefbfcb78eef8e7d7b446d..99b8f8ee8c9e9ca83728def1fccfe899e2bf0104 100644
|
|
|
--- a/chrome/browser/printing/print_view_manager_base.h
|
|
|
+++ b/chrome/browser/printing/print_view_manager_base.h
|
|
|
@@ -34,6 +34,8 @@ class PrintJob;
|
|
@@ -305,13 +305,13 @@ index 9ad03ae28904050d540661038f6ba15b7a5c5c54..6d1c4f338dde79abddbaf3ad55500c4e
|
|
|
// Prints the document in |print_data| with settings specified in
|
|
|
@@ -208,9 +213,15 @@ class PrintViewManagerBase : public content::NotificationObserver,
|
|
|
// The current RFH that is printing with a system printing dialog.
|
|
|
- content::RenderFrameHost* printing_rfh_;
|
|
|
+ content::RenderFrameHost* printing_rfh_ = nullptr;
|
|
|
|
|
|
+ // Respond with success of the print job.
|
|
|
+ CompletionCallback callback_;
|
|
|
+
|
|
|
// Indication of success of the print job.
|
|
|
- bool printing_succeeded_;
|
|
|
+ bool printing_succeeded_ = false;
|
|
|
|
|
|
+ // Indication of whether the print job was manually cancelled
|
|
|
+ bool printing_cancelled_ = false;
|
|
@@ -320,18 +320,18 @@ index 9ad03ae28904050d540661038f6ba15b7a5c5c54..6d1c4f338dde79abddbaf3ad55500c4e
|
|
|
// This means we are _blocking_ until all the necessary pages have been
|
|
|
// rendered or the print settings are being loaded.
|
|
|
diff --git a/chrome/browser/printing/printing_message_filter.cc b/chrome/browser/printing/printing_message_filter.cc
|
|
|
-index 64569c4c89b1e034a19b85bb3f6443d3ab76fcd8..164368028a6f3cf14ed6199e0f69717c514090a6 100644
|
|
|
+index f7754394876d0d5a2613ed9bfd75a0ff220a7c42..1f8150f7c65a3d3ef51144a6589c9f78334564d1 100644
|
|
|
--- a/chrome/browser/printing/printing_message_filter.cc
|
|
|
+++ b/chrome/browser/printing/printing_message_filter.cc
|
|
|
-@@ -21,6 +21,7 @@
|
|
|
- #include "components/keyed_service/content/browser_context_keyed_service_shutdown_notifier_factory.h"
|
|
|
+@@ -22,6 +22,7 @@
|
|
|
#include "components/printing/browser/print_manager_utils.h"
|
|
|
+ #include "components/printing/common/print.mojom.h"
|
|
|
#include "components/printing/common/print_messages.h"
|
|
|
+#include "content/public/browser/browser_context.h"
|
|
|
#include "content/public/browser/browser_task_traits.h"
|
|
|
#include "content/public/browser/render_frame_host.h"
|
|
|
#include "content/public/browser/web_contents.h"
|
|
|
-@@ -90,19 +91,22 @@ void PrintingMessageFilter::SetDelegateForTesting(TestDelegate* delegate) {
|
|
|
+@@ -91,19 +92,22 @@ void PrintingMessageFilter::SetDelegateForTesting(TestDelegate* delegate) {
|
|
|
g_test_delegate = delegate;
|
|
|
}
|
|
|
|
|
@@ -357,7 +357,7 @@ index 64569c4c89b1e034a19b85bb3f6443d3ab76fcd8..164368028a6f3cf14ed6199e0f69717c
|
|
|
}
|
|
|
|
|
|
PrintingMessageFilter::~PrintingMessageFilter() {
|
|
|
-@@ -137,11 +141,13 @@ bool PrintingMessageFilter::OnMessageReceived(const IPC::Message& message) {
|
|
|
+@@ -138,11 +142,13 @@ bool PrintingMessageFilter::OnMessageReceived(const IPC::Message& message) {
|
|
|
|
|
|
void PrintingMessageFilter::OnGetDefaultPrintSettings(IPC::Message* reply_msg) {
|
|
|
DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
|
@@ -371,7 +371,7 @@ index 64569c4c89b1e034a19b85bb3f6443d3ab76fcd8..164368028a6f3cf14ed6199e0f69717c
|
|
|
std::unique_ptr<PrinterQuery> printer_query = queue_->PopPrinterQuery(0);
|
|
|
if (!printer_query) {
|
|
|
printer_query =
|
|
|
-@@ -225,12 +231,13 @@ void PrintingMessageFilter::OnScriptedPrintReply(
|
|
|
+@@ -226,12 +232,13 @@ void PrintingMessageFilter::OnScriptedPrintReply(
|
|
|
void PrintingMessageFilter::OnUpdatePrintSettings(int document_cookie,
|
|
|
base::Value job_settings,
|
|
|
IPC::Message* reply_msg) {
|
|
@@ -386,7 +386,7 @@ index 64569c4c89b1e034a19b85bb3f6443d3ab76fcd8..164368028a6f3cf14ed6199e0f69717c
|
|
|
if (!job_settings.is_dict() ||
|
|
|
!job_settings.FindIntKey(kSettingPrinterType)) {
|
|
|
// Reply with null query.
|
|
|
-@@ -263,7 +270,9 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
|
|
|
+@@ -264,7 +271,9 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
|
|
|
std::unique_ptr<PrinterQuery> printer_query,
|
|
|
IPC::Message* reply_msg) {
|
|
|
PrintMsg_PrintPages_Params params;
|
|
@@ -397,7 +397,7 @@ index 64569c4c89b1e034a19b85bb3f6443d3ab76fcd8..164368028a6f3cf14ed6199e0f69717c
|
|
|
params.Reset();
|
|
|
} else {
|
|
|
RenderParamsFromPrintSettings(printer_query->settings(), ¶ms.params);
|
|
|
-@@ -301,7 +310,7 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
|
|
|
+@@ -302,7 +311,7 @@ void PrintingMessageFilter::OnUpdatePrintSettingsReply(
|
|
|
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
|
|
void PrintingMessageFilter::OnCheckForCancel(const PrintHostMsg_PreviewIds& ids,
|
|
|
bool* cancel) {
|
|
@@ -407,11 +407,11 @@ index 64569c4c89b1e034a19b85bb3f6443d3ab76fcd8..164368028a6f3cf14ed6199e0f69717c
|
|
|
#endif
|
|
|
|
|
|
diff --git a/chrome/browser/printing/printing_message_filter.h b/chrome/browser/printing/printing_message_filter.h
|
|
|
-index adb4ff6ece476a99ae12d9e3ecfb78931c04c81e..894148c8847b333be8636907e85476dcd46862e2 100644
|
|
|
+index 478183cd3e5c2022ad3f484daf2f56b16f091203..951cedc75abb1e4a1e6da1a1371ba42a0ecd698c 100644
|
|
|
--- a/chrome/browser/printing/printing_message_filter.h
|
|
|
+++ b/chrome/browser/printing/printing_message_filter.h
|
|
|
-@@ -24,6 +24,10 @@ struct PrintHostMsg_PreviewIds;
|
|
|
- struct PrintHostMsg_ScriptedPrint_Params;
|
|
|
+@@ -23,6 +23,10 @@
|
|
|
+ struct PrintHostMsg_PreviewIds;
|
|
|
class Profile;
|
|
|
|
|
|
+namespace content {
|
|
@@ -421,7 +421,7 @@ index adb4ff6ece476a99ae12d9e3ecfb78931c04c81e..894148c8847b333be8636907e85476dc
|
|
|
namespace printing {
|
|
|
|
|
|
class PrintQueriesQueue;
|
|
|
-@@ -44,7 +48,8 @@ class PrintingMessageFilter : public content::BrowserMessageFilter {
|
|
|
+@@ -43,7 +47,8 @@ class PrintingMessageFilter : public content::BrowserMessageFilter {
|
|
|
|
|
|
static void SetDelegateForTesting(TestDelegate* delegate);
|
|
|
|
|
@@ -432,10 +432,10 @@ index adb4ff6ece476a99ae12d9e3ecfb78931c04c81e..894148c8847b333be8636907e85476dc
|
|
|
// content::BrowserMessageFilter:
|
|
|
bool OnMessageReceived(const IPC::Message& message) override;
|
|
|
diff --git a/components/printing/common/print.mojom b/components/printing/common/print.mojom
|
|
|
-index 948c86689c2779a8dc41b458ac670ec8a94e0efa..2e160658ff5ea814b9133c925e8b461a0d9bcfbc 100644
|
|
|
+index 177a590b5f4586274ad60b83262567a87052838a..5e918f733179fd12f2544db0ff11d73d6af51155 100644
|
|
|
--- a/components/printing/common/print.mojom
|
|
|
+++ b/components/printing/common/print.mojom
|
|
|
-@@ -197,7 +197,7 @@ interface PrintPreviewUI {
|
|
|
+@@ -209,7 +209,7 @@ interface PrintPreviewUI {
|
|
|
interface PrintRenderFrame {
|
|
|
// Tells the RenderFrame to switch the CSS to print media type, render every
|
|
|
// requested page, and then switch back the CSS to display media type.
|
|
@@ -445,10 +445,10 @@ index 948c86689c2779a8dc41b458ac670ec8a94e0efa..2e160658ff5ea814b9133c925e8b461a
|
|
|
// Tells the RenderFrame to switch the CSS to print media type, render every
|
|
|
// requested page using the print preview document's frame/node, and then
|
|
|
diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc
|
|
|
-index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc3813fa5d2e0 100644
|
|
|
+index a33f55540de28603273876ffbcb649a3ef8e008c..6d1ae5f05077ac02bca796828f9801a313966708 100644
|
|
|
--- a/components/printing/renderer/print_render_frame_helper.cc
|
|
|
+++ b/components/printing/renderer/print_render_frame_helper.cc
|
|
|
-@@ -40,6 +40,7 @@
|
|
|
+@@ -39,6 +39,7 @@
|
|
|
#include "printing/buildflags/buildflags.h"
|
|
|
#include "printing/metafile_skia.h"
|
|
|
#include "printing/mojom/print.mojom.h"
|
|
@@ -456,17 +456,15 @@ index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc381
|
|
|
#include "printing/units.h"
|
|
|
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
|
|
|
#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
|
|
|
-@@ -1156,7 +1157,8 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
|
|
|
- web_frame->DispatchBeforePrintEvent();
|
|
|
- if (!weak_this)
|
|
|
- return;
|
|
|
-- Print(web_frame, blink::WebNode(), PrintRequestType::kScripted);
|
|
|
-+ Print(web_frame, blink::WebNode(), PrintRequestType::kScripted,
|
|
|
-+ false /* silent */, base::DictionaryValue() /* new_settings */);
|
|
|
+@@ -1161,6 +1162,7 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
|
|
|
+ // Pause between onbeforeprint and onafterprint events.
|
|
|
+ // https://html.spec.whatwg.org/C/#printing-steps
|
|
|
+ Print(web_frame, blink::WebNode(), PrintRequestType::kScripted,
|
|
|
++ false /* silent */, base::DictionaryValue() /* new_settings */,
|
|
|
+ blink::WebScopedPagePauser::Create());
|
|
|
+
|
|
|
if (weak_this)
|
|
|
- web_frame->DispatchAfterPrintEvent();
|
|
|
- }
|
|
|
-@@ -1177,7 +1179,7 @@ void PrintRenderFrameHelper::BindPrintRenderFrameReceiver(
|
|
|
+@@ -1189,7 +1191,7 @@ void PrintRenderFrameHelper::BindPrintRenderFrameReceiver(
|
|
|
receivers_.Add(this, std::move(receiver));
|
|
|
}
|
|
|
|
|
@@ -475,25 +473,25 @@ index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc381
|
|
|
ScopedIPC scoped_ipc(weak_ptr_factory_.GetWeakPtr());
|
|
|
if (ipc_nesting_level_ > 1)
|
|
|
return;
|
|
|
-@@ -1191,7 +1193,7 @@ void PrintRenderFrameHelper::PrintRequestedPages() {
|
|
|
- // If we are printing a PDF extension frame, find the plugin node and print
|
|
|
- // that instead.
|
|
|
- auto plugin = delegate_->GetPdfElement(frame);
|
|
|
-- Print(frame, plugin, PrintRequestType::kRegular);
|
|
|
-+ Print(frame, plugin, PrintRequestType::kRegular, silent, std::move(settings));
|
|
|
+@@ -1206,7 +1208,7 @@ void PrintRenderFrameHelper::PrintRequestedPages() {
|
|
|
+
|
|
|
+ // Pause between onbeforeprint and onafterprint events.
|
|
|
+ // https://html.spec.whatwg.org/C/#printing-steps
|
|
|
+- Print(frame, plugin, PrintRequestType::kRegular,
|
|
|
++ Print(frame, plugin, PrintRequestType::kRegular, silent, std::move(settings),
|
|
|
+ blink::WebScopedPagePauser::Create());
|
|
|
+
|
|
|
if (!render_frame_gone_)
|
|
|
- frame->DispatchAfterPrintEvent();
|
|
|
- // WARNING: |this| may be gone at this point. Do not do any more work here and
|
|
|
-@@ -1208,7 +1210,7 @@ void PrintRenderFrameHelper::PrintForSystemDialog() {
|
|
|
- return;
|
|
|
- }
|
|
|
- Print(frame, print_preview_context_.source_node(),
|
|
|
-- PrintRequestType::kRegular);
|
|
|
-+ PrintRequestType::kRegular, false, base::DictionaryValue());
|
|
|
+@@ -1228,7 +1230,7 @@ void PrintRenderFrameHelper::PrintForSystemDialog() {
|
|
|
+ // Hand over control, including Print Preview's WebScopedPagePauser, to the
|
|
|
+ // system print dialog.
|
|
|
+ Print(frame, print_preview_context_.source_node(), PrintRequestType::kRegular,
|
|
|
+- print_preview_context_.TakePauser());
|
|
|
++ false, base::DictionaryValue(), print_preview_context_.TakePauser());
|
|
|
if (!render_frame_gone_)
|
|
|
- frame->DispatchAfterPrintEvent();
|
|
|
+ print_preview_context_.DispatchAfterPrintEvent();
|
|
|
// WARNING: |this| may be gone at this point. Do not do any more work here and
|
|
|
-@@ -1256,6 +1258,8 @@ void PrintRenderFrameHelper::PrintPreview(base::Value settings) {
|
|
|
+@@ -1276,6 +1278,8 @@ void PrintRenderFrameHelper::PrintPreview(base::Value settings) {
|
|
|
if (ipc_nesting_level_ > 1)
|
|
|
return;
|
|
|
|
|
@@ -502,29 +500,27 @@ index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc381
|
|
|
print_preview_context_.OnPrintPreview();
|
|
|
|
|
|
if (print_preview_context_.IsForArc()) {
|
|
|
-@@ -1790,7 +1794,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
|
|
|
+@@ -1828,7 +1832,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
|
|
|
return;
|
|
|
|
|
|
Print(duplicate_node.GetDocument().GetFrame(), duplicate_node,
|
|
|
-- PrintRequestType::kRegular);
|
|
|
-+ PrintRequestType::kRegular,
|
|
|
-+ false /* silent */,
|
|
|
-+ base::DictionaryValue() /* new_settings */);
|
|
|
+- PrintRequestType::kRegular, blink::WebScopedPagePauser::Create());
|
|
|
++ PrintRequestType::kRegular, false /* silent */,
|
|
|
++ base::DictionaryValue() /* new_settings */,
|
|
|
++ blink::WebScopedPagePauser::Create());
|
|
|
// Check if |this| is still valid.
|
|
|
if (!weak_this)
|
|
|
return;
|
|
|
-@@ -1805,7 +1811,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) {
|
|
|
-
|
|
|
- void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
|
|
|
- const blink::WebNode& node,
|
|
|
-- PrintRequestType print_request_type) {
|
|
|
-+ PrintRequestType print_request_type,
|
|
|
-+ bool silent,
|
|
|
-+ base::Value settings) {
|
|
|
+@@ -1845,6 +1851,8 @@ void PrintRenderFrameHelper::Print(
|
|
|
+ blink::WebLocalFrame* frame,
|
|
|
+ const blink::WebNode& node,
|
|
|
+ PrintRequestType print_request_type,
|
|
|
++ bool silent,
|
|
|
++ base::Value settings,
|
|
|
+ std::unique_ptr<blink::WebScopedPagePauser> pauser) {
|
|
|
// If still not finished with earlier print request simply ignore.
|
|
|
if (prep_frame_view_)
|
|
|
- return;
|
|
|
-@@ -1813,7 +1821,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
|
|
|
+@@ -1853,7 +1861,7 @@ void PrintRenderFrameHelper::Print(
|
|
|
FrameReference frame_ref(frame);
|
|
|
|
|
|
int expected_page_count = 0;
|
|
@@ -533,7 +529,7 @@ index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc381
|
|
|
DidFinishPrinting(FAIL_PRINT_INIT);
|
|
|
return; // Failed to init print page settings.
|
|
|
}
|
|
|
-@@ -1833,8 +1841,11 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame,
|
|
|
+@@ -1873,8 +1881,11 @@ void PrintRenderFrameHelper::Print(
|
|
|
|
|
|
PrintMsg_PrintPages_Params print_settings;
|
|
|
auto self = weak_ptr_factory_.GetWeakPtr();
|
|
@@ -547,7 +543,7 @@ index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc381
|
|
|
// Check if |this| is still valid.
|
|
|
if (!self)
|
|
|
return;
|
|
|
-@@ -2075,10 +2086,23 @@ void PrintRenderFrameHelper::IPCProcessed() {
|
|
|
+@@ -2120,10 +2131,23 @@ void PrintRenderFrameHelper::IPCProcessed() {
|
|
|
base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
|
|
|
}
|
|
|
|
|
@@ -574,7 +570,7 @@ index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc381
|
|
|
// Check if the printer returned any settings, if the settings is empty, we
|
|
|
// can safely assume there are no printer drivers configured. So we safely
|
|
|
// terminate.
|
|
|
-@@ -2098,12 +2122,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
|
|
|
+@@ -2143,12 +2167,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -594,10 +590,10 @@ index 788257825daa531d2f878c4ee53272dd265dc8aa..e25c8cb1be55df8ae3af62a5738fc381
|
|
|
Send(new PrintHostMsg_ShowInvalidPrinterSettingsError(routing_id()));
|
|
|
return false;
|
|
|
diff --git a/components/printing/renderer/print_render_frame_helper.h b/components/printing/renderer/print_render_frame_helper.h
|
|
|
-index b5ec1df59c37ac18c64abe58955e676f546b3da8..6323915537c22bce36c3289fd51d73946bd72d61 100644
|
|
|
+index dcf833ec1ba661509b4046a2f16ee36611e6cb9b..c2b6739b268fdd05185dbee7ab40f91c3e54d413 100644
|
|
|
--- a/components/printing/renderer/print_render_frame_helper.h
|
|
|
+++ b/components/printing/renderer/print_render_frame_helper.h
|
|
|
-@@ -226,7 +226,7 @@ class PrintRenderFrameHelper
|
|
|
+@@ -233,7 +233,7 @@ class PrintRenderFrameHelper
|
|
|
mojo::PendingAssociatedReceiver<mojom::PrintRenderFrame> receiver);
|
|
|
|
|
|
// printing::mojom::PrintRenderFrame:
|
|
@@ -606,18 +602,16 @@ index b5ec1df59c37ac18c64abe58955e676f546b3da8..6323915537c22bce36c3289fd51d7394
|
|
|
void PrintForSystemDialog() override;
|
|
|
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
|
|
void SetPrintPreviewUI(
|
|
|
-@@ -293,7 +293,9 @@ class PrintRenderFrameHelper
|
|
|
- // WARNING: |this| may be gone after this method returns.
|
|
|
+@@ -301,6 +301,8 @@ class PrintRenderFrameHelper
|
|
|
void Print(blink::WebLocalFrame* frame,
|
|
|
const blink::WebNode& node,
|
|
|
-- PrintRequestType print_request_type);
|
|
|
-+ PrintRequestType print_request_type,
|
|
|
+ PrintRequestType print_request_type,
|
|
|
+ bool silent,
|
|
|
-+ base::Value settings);
|
|
|
++ base::Value settings,
|
|
|
+ std::unique_ptr<blink::WebScopedPagePauser> pauser);
|
|
|
|
|
|
// Notification when printing is done - signal tear-down/free resources.
|
|
|
- void DidFinishPrinting(PrintingResult result);
|
|
|
-@@ -302,12 +304,14 @@ class PrintRenderFrameHelper
|
|
|
+@@ -310,12 +312,14 @@ class PrintRenderFrameHelper
|
|
|
|
|
|
// Initialize print page settings with default settings.
|
|
|
// Used only for native printing workflow.
|
|
@@ -635,10 +629,10 @@ index b5ec1df59c37ac18c64abe58955e676f546b3da8..6323915537c22bce36c3289fd51d7394
|
|
|
#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
|
|
|
// Set options for print preset from source PDF document.
|
|
|
diff --git a/printing/printing_context.cc b/printing/printing_context.cc
|
|
|
-index 83e845e8093db6569d77255442c315920803b033..e7505757f2ea1fb8cef0b493336976768ff910d1 100644
|
|
|
+index 5f82472c0123c4a71be6c18561229ce2261b93e4..ed7db3d8463eb1353d7cadea33ded3c4d4ef21fe 100644
|
|
|
--- a/printing/printing_context.cc
|
|
|
+++ b/printing/printing_context.cc
|
|
|
-@@ -94,8 +94,6 @@ PrintingContext::Result PrintingContext::UsePdfSettings() {
|
|
|
+@@ -95,8 +95,6 @@ PrintingContext::Result PrintingContext::UsePdfSettings() {
|
|
|
|
|
|
PrintingContext::Result PrintingContext::UpdatePrintSettings(
|
|
|
base::Value job_settings) {
|
|
@@ -648,10 +642,10 @@ index 83e845e8093db6569d77255442c315920803b033..e7505757f2ea1fb8cef0b49333697676
|
|
|
NOTREACHED();
|
|
|
return OnError();
|
|
|
diff --git a/printing/printing_context.h b/printing/printing_context.h
|
|
|
-index 02144650a9ede47c69fd363a3f275166774aa3de..130d6e433925c509eb9728e99de3b53fee97b95c 100644
|
|
|
+index 7ac9ce996ca7cbf8bcd21cb0c8161b63050ff684..43f5383bfed965c3d8cd3102dc18309a65c457ae 100644
|
|
|
--- a/printing/printing_context.h
|
|
|
+++ b/printing/printing_context.h
|
|
|
-@@ -132,12 +132,12 @@ class PRINTING_EXPORT PrintingContext {
|
|
|
+@@ -133,12 +133,12 @@ class PRINTING_EXPORT PrintingContext {
|
|
|
|
|
|
int job_id() const { return job_id_; }
|
|
|
|