From 39b30b76ea806e25b9331d142cefcb24419f89dd Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Fri, 13 Apr 2018 14:13:52 +0530 Subject: [PATCH] Printing: Remove PrintedPage on non-Windows https://chromium-review.googlesource.com/c/chromium/src/+/804178 https://chromium-review.googlesource.com/c/chromium/src/+/770492 https://chromium-review.googlesource.com/c/chromium/src/+/704262 --- .../chrome/browser/printing/print_job.cc | 25 +-- .../chrome/browser/printing/print_job.h | 16 +- .../browser/printing/print_job_manager.cc | 1 - .../browser/printing/print_job_worker.cc | 148 +++++++++++------- .../browser/printing/print_job_worker.h | 10 ++ .../printing/print_job_worker_owner.cc | 4 +- .../browser/printing/print_job_worker_owner.h | 2 +- .../printing/print_view_manager_base.cc | 19 ++- .../printing/print_view_manager_base.h | 2 - .../printing/printing_message_filter.cc | 12 +- .../printing/print_web_view_helper.cc | 5 +- .../renderer/printing/print_web_view_helper.h | 1 - .../printing/print_web_view_helper_mac.mm | 6 +- 13 files changed, 154 insertions(+), 97 deletions(-) diff --git a/chromium_src/chrome/browser/printing/print_job.cc b/chromium_src/chrome/browser/printing/print_job.cc index 5c9deb095b42..d471b47a9cc2 100644 --- a/chromium_src/chrome/browser/printing/print_job.cc +++ b/chromium_src/chrome/browser/printing/print_job.cc @@ -14,7 +14,6 @@ #include "base/run_loop.h" #include "base/single_thread_task_runner.h" #include "base/task_scheduler/post_task.h" -#include "base/threading/sequenced_worker_pool.h" #include "base/threading/thread_restrictions.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" @@ -22,7 +21,6 @@ #include "chrome/browser/printing/print_job_worker.h" #include "content/public/browser/notification_service.h" #include "printing/printed_document.h" -#include "printing/printed_page.h" #if defined(OS_WIN) #include "chrome/browser/printing/pdf_to_emf_converter.h" @@ -129,7 +127,7 @@ void PrintJob::StartPrinting() { // Tell everyone! scoped_refptr details( - new JobEventDetails(JobEventDetails::NEW_DOC, document_.get(), nullptr)); + new JobEventDetails(JobEventDetails::NEW_DOC, 0, document_.get())); content::NotificationService::current()->Notify( chrome::NOTIFICATION_PRINT_JOB_EVENT, content::Source(this), content::Details(details.get())); @@ -173,7 +171,7 @@ void PrintJob::Cancel() { } // Make sure a Cancel() is broadcast. scoped_refptr details( - new JobEventDetails(JobEventDetails::FAILED, nullptr, nullptr)); + new JobEventDetails(JobEventDetails::FAILED, 0, nullptr)); content::NotificationService::current()->Notify( chrome::NOTIFICATION_PRINT_JOB_EVENT, content::Source(this), content::Details(details.get())); @@ -393,7 +391,7 @@ void PrintJob::OnDocumentDone() { Stop(); scoped_refptr details( - new JobEventDetails(JobEventDetails::JOB_DONE, document_.get(), nullptr)); + new JobEventDetails(JobEventDetails::JOB_DONE, 0, document_.get())); content::NotificationService::current()->Notify( chrome::NOTIFICATION_PRINT_JOB_EVENT, content::Source(this), content::Details(details.get())); @@ -445,10 +443,18 @@ void PrintJob::Quit() { } // Takes settings_ ownership and will be deleted in the receiving thread. +#if defined(OS_WIN) JobEventDetails::JobEventDetails(Type type, + int job_id, PrintedDocument* document, PrintedPage* page) - : document_(document), page_(page), type_(type) {} + : document_(document), page_(page), type_(type), job_id_(job_id) {} +#endif + +JobEventDetails::JobEventDetails(Type type, + int job_id, + PrintedDocument* document) + : document_(document), type_(type), job_id_(job_id) {} JobEventDetails::~JobEventDetails() {} @@ -456,8 +462,7 @@ PrintedDocument* JobEventDetails::document() const { return document_.get(); } -PrintedPage* JobEventDetails::page() const { - return page_.get(); -} - +#if defined(OS_WIN) +PrintedPage* JobEventDetails::page() const { return page_.get(); } +#endif } // namespace printing diff --git a/chromium_src/chrome/browser/printing/print_job.h b/chromium_src/chrome/browser/printing/print_job.h index 9f6dad11a793..1187b36960aa 100644 --- a/chromium_src/chrome/browser/printing/print_job.h +++ b/chromium_src/chrome/browser/printing/print_job.h @@ -26,7 +26,9 @@ class MetafilePlayer; class PdfToEmfConverter; class PrintJobWorker; class PrintedDocument; +#if defined(OS_WIN) class PrintedPage; +#endif class PrinterQuery; // Manages the print work for a specific document. Talks to the printer through @@ -204,12 +206,21 @@ class JobEventDetails : public base::RefCountedThreadSafe { FAILED, }; - JobEventDetails(Type type, PrintedDocument* document, PrintedPage* page); +#if defined(OS_WIN) + JobEventDetails(Type type, + int job_id, + PrintedDocument* document, + PrintedPage* page); +#endif + JobEventDetails(Type type, int job_id, PrintedDocument* document); // Getters. PrintedDocument* document() const; +#if defined(OS_WIN) PrintedPage* page() const; +#endif Type type() const { return type_; } + int job_id() const { return job_id_; } private: friend class base::RefCountedThreadSafe; @@ -217,8 +228,11 @@ class JobEventDetails : public base::RefCountedThreadSafe { ~JobEventDetails(); scoped_refptr document_; +#if defined(OS_WIN) scoped_refptr page_; +#endif const Type type_; + int job_id_; DISALLOW_COPY_AND_ASSIGN(JobEventDetails); }; diff --git a/chromium_src/chrome/browser/printing/print_job_manager.cc b/chromium_src/chrome/browser/printing/print_job_manager.cc index 68d1602fa49a..a7a4f48b86f9 100644 --- a/chromium_src/chrome/browser/printing/print_job_manager.cc +++ b/chromium_src/chrome/browser/printing/print_job_manager.cc @@ -10,7 +10,6 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_service.h" #include "printing/printed_document.h" -#include "printing/printed_page.h" namespace printing { diff --git a/chromium_src/chrome/browser/printing/print_job_worker.cc b/chromium_src/chrome/browser/printing/print_job_worker.cc index ea6a3e252a41..9ea7c075ea99 100644 --- a/chromium_src/chrome/browser/printing/print_job_worker.cc +++ b/chromium_src/chrome/browser/printing/print_job_worker.cc @@ -25,7 +25,6 @@ #include "content/public/browser/web_contents.h" #include "printing/print_job_constants.h" #include "printing/printed_document.h" -#include "printing/printed_page.h" #include "printing/printing_utils.h" #include "ui/base/l10n/l10n_util.h" @@ -43,6 +42,10 @@ #include "printing/print_settings.h" #include "printing/units.h" +#if defined(OS_WIN) +#include "printing/printed_page_win.h" +#endif + using content::BrowserThread; namespace printing { @@ -51,8 +54,8 @@ namespace { // Helper function to ensure |owner| is valid until at least |callback| returns. void HoldRefCallback(const scoped_refptr& owner, - const base::Closure& callback) { - callback.Run(); + base::OnceClosure callback) { + std::move(callback).Run(); } void SetCustomMarginsToJobSettings(const PageSizeMargins& page_size_margins, @@ -175,9 +178,9 @@ std::string PrintingContextDelegate::GetAppLocale() { void NotificationCallback(PrintJobWorkerOwner* print_job, JobEventDetails::Type detail_type, - PrintedDocument* document, - PrintedPage* page) { - JobEventDetails* details = new JobEventDetails(detail_type, document, page); + int job_id, + PrintedDocument* document) { + JobEventDetails* details = new JobEventDetails(detail_type, job_id, document); content::NotificationService::current()->Notify( chrome::NOTIFICATION_PRINT_JOB_EVENT, // We know that is is a PrintJob object in this circumstance. @@ -186,12 +189,29 @@ void NotificationCallback(PrintJobWorkerOwner* print_job, } void PostOnOwnerThread(const scoped_refptr& owner, - const PrintingContext::PrintSettingsCallback& callback, + PrintingContext::PrintSettingsCallback callback, PrintingContext::Result result) { - owner->PostTask(FROM_HERE, base::Bind(&HoldRefCallback, owner, - base::Bind(callback, result))); + owner->PostTask(FROM_HERE, + base::BindOnce(&HoldRefCallback, owner, + base::BindOnce(std::move(callback), result))); } +#if defined(OS_WIN) +void PageNotificationCallback(PrintJobWorkerOwner* print_job, + JobEventDetails::Type detail_type, + int job_id, + PrintedDocument* document, + PrintedPage* page) { + JobEventDetails* details = + new JobEventDetails(detail_type, job_id, document, page); + content::NotificationService::current()->Notify( + chrome::NOTIFICATION_PRINT_JOB_EVENT, + // We know that is is a PrintJob object in this circumstance. + content::Source(static_cast(print_job)), + content::Details(details)); +} +#endif + } // namespace PrintJobWorker::PrintJobWorker(int render_process_id, @@ -243,22 +263,23 @@ void PrintJobWorker::GetSettings(bool ask_user_for_settings, if (ask_user_for_settings) { BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&HoldRefCallback, WrapRefCounted(owner_), - base::Bind(&PrintJobWorker::GetSettingsWithUI, - base::Unretained(this), document_page_count, - has_selection, is_scripted))); + base::BindOnce( + &HoldRefCallback, WrapRefCounted(owner_), + base::BindOnce(&PrintJobWorker::GetSettingsWithUI, + base::Unretained(this), document_page_count, + has_selection, is_scripted))); } else if (!device_name.empty()) { BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&HoldRefCallback, WrapRefCounted(owner_), - base::Bind(&PrintJobWorker::InitWithDeviceName, - base::Unretained(this), device_name))); + base::BindOnce(&HoldRefCallback, WrapRefCounted(owner_), + base::BindOnce(&PrintJobWorker::InitWithDeviceName, + base::Unretained(this), device_name))); } else { BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind(&HoldRefCallback, WrapRefCounted(owner_), - base::Bind(&PrintJobWorker::UseDefaultSettings, - base::Unretained(this)))); + base::BindOnce(&HoldRefCallback, WrapRefCounted(owner_), + base::BindOnce(&PrintJobWorker::UseDefaultSettings, + base::Unretained(this)))); } } @@ -268,10 +289,10 @@ void PrintJobWorker::SetSettings( BrowserThread::PostTask( BrowserThread::UI, FROM_HERE, - base::Bind( + base::BindOnce( &HoldRefCallback, WrapRefCounted(owner_), - base::Bind(&PrintJobWorker::UpdatePrintSettings, - base::Unretained(this), base::Passed(&new_settings)))); + base::BindOnce(&PrintJobWorker::UpdatePrintSettings, + base::Unretained(this), base::Passed(&new_settings)))); } void PrintJobWorker::UpdatePrintSettings( @@ -307,9 +328,9 @@ void PrintJobWorker::GetSettingsWithUI(int document_page_count, // weak_factory_ creates pointers valid only on owner_ thread. printing_context_->AskUserForSettings( document_page_count, has_selection, is_scripted, - base::Bind(&PostOnOwnerThread, WrapRefCounted(owner_), - base::Bind(&PrintJobWorker::GetSettingsDone, - weak_factory_.GetWeakPtr()))); + base::BindOnce(&PostOnOwnerThread, WrapRefCounted(owner_), + base::BindOnce(&PrintJobWorker::GetSettingsDone, + weak_factory_.GetWeakPtr()))); } void PrintJobWorker::UseDefaultSettings() { @@ -364,6 +385,15 @@ void PrintJobWorker::OnDocumentChanged(PrintedDocument* new_document) { document_ = new_document; } +void PrintJobWorker::PostWaitForPage() { + // We need to wait for the page to be available. + base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, + base::BindOnce(&PrintJobWorker::OnNewPage, weak_factory_.GetWeakPtr()), + base::TimeDelta::FromMilliseconds(500)); +} + +#if defined(OS_WIN) void PrintJobWorker::OnNewPage() { if (!document_.get()) // Spurious message. return; @@ -383,17 +413,13 @@ void PrintJobWorker::OnNewPage() { // We have enough information to initialize page_number_. page_number_.Init(document_->settings(), page_count); } - DCHECK_NE(page_number_, PageNumber::npos()); + DCHECK_NE(page_number_, PageNumber::npos()); while (true) { // Is the page available? scoped_refptr page = document_->GetPage(page_number_.ToInt()); if (!page.get()) { - // We need to wait for the page to be available. - base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( - FROM_HERE, - base::Bind(&PrintJobWorker::OnNewPage, weak_factory_.GetWeakPtr()), - base::TimeDelta::FromMilliseconds(500)); + PostWaitForPage(); break; } // The page is there, print it. @@ -406,6 +432,24 @@ void PrintJobWorker::OnNewPage() { } } } +#else +void PrintJobWorker::OnNewPage() { + if (!document_.get()) // Spurious message. + return; + + // message_loop() could return NULL when the print job is cancelled. + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + + const MetafilePlayer* metafile = document_->GetMetafile(); + if (!metafile) { + PostWaitForPage(); + return; + } + SpoolJob(); + // Don't touch this anymore since the instance could be destroyed. + OnDocumentDone(); +} +#endif // defined(OS_WIN) void PrintJobWorker::Cancel() { // This is the only function that can be called from any thread. @@ -444,6 +488,7 @@ void PrintJobWorker::OnDocumentDone() { DCHECK_EQ(page_number_, PageNumber::npos()); DCHECK(document_.get()); + int job_id = printing_context_->job_id(); if (printing_context_->DocumentDone() != PrintingContext::OK) { OnFailure(); return; @@ -451,24 +496,18 @@ void PrintJobWorker::OnDocumentDone() { owner_->PostTask(FROM_HERE, base::Bind(&NotificationCallback, base::RetainedRef(owner_), - JobEventDetails::DOC_DONE, - base::RetainedRef(document_), nullptr)); + JobEventDetails::DOC_DONE, job_id, + base::RetainedRef(document_))); // Makes sure the variables are reinitialized. document_ = NULL; } +#if defined(OS_WIN) void PrintJobWorker::SpoolPage(PrintedPage* page) { DCHECK(task_runner_->RunsTasksInCurrentSequence()); DCHECK_NE(page_number_, PageNumber::npos()); - // Signal everyone that the page is about to be printed. - owner_->PostTask( - FROM_HERE, - base::Bind(&NotificationCallback, base::RetainedRef(owner_), - JobEventDetails::NEW_PAGE, base::RetainedRef(document_), - base::RetainedRef(page))); - // Preprocess. if (printing_context_->NewPage() != PrintingContext::OK) { OnFailure(); @@ -476,11 +515,7 @@ void PrintJobWorker::SpoolPage(PrintedPage* page) { } // Actual printing. -#if defined(OS_WIN) || defined(OS_MACOSX) document_->RenderPrintedPage(*page, printing_context_->context()); -#elif defined(OS_POSIX) - document_->RenderPrintedPage(*page, printing_context_.get()); -#endif // Postprocess. if (printing_context_->PageDone() != PrintingContext::OK) { @@ -489,12 +524,19 @@ void PrintJobWorker::SpoolPage(PrintedPage* page) { } // Signal everyone that the page is printed. - owner_->PostTask( - FROM_HERE, - base::Bind(&NotificationCallback, base::RetainedRef(owner_), - JobEventDetails::PAGE_DONE, base::RetainedRef(document_), - base::RetainedRef(page))); + owner_->PostTask(FROM_HERE, + base::BindRepeating( + &PageNotificationCallback, base::RetainedRef(owner_), + JobEventDetails::PAGE_DONE, printing_context_->job_id(), + base::RetainedRef(document_), base::RetainedRef(page))); } +#else +void PrintJobWorker::SpoolJob() { + DCHECK(task_runner_->RunsTasksInCurrentSequence()); + if (!document_->RenderPrintedDocument(printing_context_.get())) + OnFailure(); +} +#endif void PrintJobWorker::OnFailure() { DCHECK(task_runner_->RunsTasksInCurrentSequence()); @@ -502,10 +544,10 @@ void PrintJobWorker::OnFailure() { // We may loose our last reference by broadcasting the FAILED event. scoped_refptr handle(owner_); - owner_->PostTask(FROM_HERE, - base::Bind(&NotificationCallback, base::RetainedRef(owner_), - JobEventDetails::FAILED, - base::RetainedRef(document_), nullptr)); + owner_->PostTask( + FROM_HERE, base::BindRepeating( + &NotificationCallback, base::RetainedRef(owner_), + JobEventDetails::FAILED, 0, base::RetainedRef(document_))); Cancel(); // Makes sure the variables are reinitialized. diff --git a/chromium_src/chrome/browser/printing/print_job_worker.h b/chromium_src/chrome/browser/printing/print_job_worker.h index 042ee82cd0d1..411b6071bf42 100644 --- a/chromium_src/chrome/browser/printing/print_job_worker.h +++ b/chromium_src/chrome/browser/printing/print_job_worker.h @@ -12,6 +12,7 @@ #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread.h" +#include "build/build_config.h" #include "chrome/browser/printing/printer_query.h" #include "content/public/browser/browser_thread.h" #include "printing/page_number.h" @@ -100,8 +101,17 @@ class PrintJobWorker { // and DEFAULT_INIT_DONE. These three are sent through PrintJob::InitDone(). class NotificationTask; + // Posts a task to call OnNewPage(). Used to wait for pages/document to be + // available. + void PostWaitForPage(); + +#if defined(OS_WIN) // Renders a page in the printer. void SpoolPage(PrintedPage* page); +#else + // Renders the document to the printer. + void SpoolJob(); +#endif // Closes the job since spooling is done. void OnDocumentDone(); diff --git a/chromium_src/chrome/browser/printing/print_job_worker_owner.cc b/chromium_src/chrome/browser/printing/print_job_worker_owner.cc index 013c3dae5afd..b3235c7be318 100644 --- a/chromium_src/chrome/browser/printing/print_job_worker_owner.cc +++ b/chromium_src/chrome/browser/printing/print_job_worker_owner.cc @@ -20,8 +20,8 @@ bool PrintJobWorkerOwner::RunsTasksInCurrentSequence() const { } bool PrintJobWorkerOwner::PostTask(const base::Location& from_here, - const base::Closure& task) { - return task_runner_->PostTask(from_here, task); + base::OnceClosure task) { + return task_runner_->PostTask(from_here, std::move(task)); } } // namespace printing diff --git a/chromium_src/chrome/browser/printing/print_job_worker_owner.h b/chromium_src/chrome/browser/printing/print_job_worker_owner.h index cd1c9fa8905d..45e824f6f1d0 100644 --- a/chromium_src/chrome/browser/printing/print_job_worker_owner.h +++ b/chromium_src/chrome/browser/printing/print_job_worker_owner.h @@ -48,7 +48,7 @@ class PrintJobWorkerOwner bool RunsTasksInCurrentSequence() const; // Posts the given task to be run. - bool PostTask(const base::Location& from_here, const base::Closure& task); + bool PostTask(const base::Location& from_here, base::OnceClosure task); protected: friend class base::RefCountedThreadSafe; diff --git a/chromium_src/chrome/browser/printing/print_view_manager_base.cc b/chromium_src/chrome/browser/printing/print_view_manager_base.cc index 21e1b0b5ce71..3c7055a6f4c0 100644 --- a/chromium_src/chrome/browser/printing/print_view_manager_base.cc +++ b/chromium_src/chrome/browser/printing/print_view_manager_base.cc @@ -52,9 +52,7 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents) cookie_(0), queue_(g_browser_process->print_job_manager()->queue()) { DCHECK(queue_.get()); -#if !defined(OS_MACOSX) expecting_first_page_ = true; -#endif // OS_MACOSX printing_enabled_ = true; } @@ -113,6 +111,13 @@ void PrintViewManagerBase::OnDidGetDocumentCookie(int cookie) { void PrintViewManagerBase::OnDidPrintPage( const PrintHostMsg_DidPrintPage_Params& params) { +// TODO(rbpotter): Remove this check once there are no more spurious +// DidPrintPage messages. +#if !defined(OS_WIN) + if (!expecting_first_page_) + return; +#endif + if (!OpportunisticallyCreatePrintJob(params.document_cookie)) return; @@ -123,12 +128,8 @@ void PrintViewManagerBase::OnDidPrintPage( return; } -#if defined(OS_MACOSX) - const bool metafile_must_be_valid = true; -#else const bool metafile_must_be_valid = expecting_first_page_; expecting_first_page_ = false; -#endif // OS_MACOSX base::SharedMemory shared_buf(params.metafile_data_handle, true); if (metafile_must_be_valid) { @@ -150,8 +151,8 @@ void PrintViewManagerBase::OnDidPrintPage( #if !defined(OS_WIN) // Update the rendered document. It will send notifications to the listener. - document->SetPage(params.page_number, std::move(metafile), params.page_size, - params.content_area); + document->SetDocument(std::move(metafile), params.page_size, + params.content_area); ShouldQuitFromInnerMessageLoop(); #else @@ -361,9 +362,7 @@ void PrintViewManagerBase::DisconnectFromCurrentPrintJob() { // DO NOT wait for the job to finish. ReleasePrintJob(); } -#if !defined(OS_MACOSX) expecting_first_page_ = true; -#endif // OS_MACOSX } void PrintViewManagerBase::PrintingDone(bool success) { diff --git a/chromium_src/chrome/browser/printing/print_view_manager_base.h b/chromium_src/chrome/browser/printing/print_view_manager_base.h index 8f20cead1aa3..393e43bedd9c 100644 --- a/chromium_src/chrome/browser/printing/print_view_manager_base.h +++ b/chromium_src/chrome/browser/printing/print_view_manager_base.h @@ -150,10 +150,8 @@ class PrintViewManagerBase : public content::NotificationObserver, // print settings are being loaded. bool inside_inner_message_loop_; -#if !defined(OS_MACOSX) // Set to true when OnDidPrintPage() should be expecting the first page. bool expecting_first_page_; -#endif // OS_MACOSX // The document cookie of the current PrinterQuery. int cookie_; diff --git a/chromium_src/chrome/browser/printing/printing_message_filter.cc b/chromium_src/chrome/browser/printing/printing_message_filter.cc index ae9735c61d4e..52c6ecee8116 100644 --- a/chromium_src/chrome/browser/printing/printing_message_filter.cc +++ b/chromium_src/chrome/browser/printing/printing_message_filter.cc @@ -289,16 +289,8 @@ void PrintingMessageFilter::OnUpdatePrintSettings( scoped_refptr printer_query; printer_query = queue_->PopPrinterQuery(document_cookie); if (!printer_query.get()) { - int host_id = render_process_id_; - int routing_id = reply_msg->routing_id(); - if (!new_settings->GetInteger(printing::kPreviewInitiatorHostId, - &host_id) || - !new_settings->GetInteger(printing::kPreviewInitiatorRoutingId, - &routing_id)) { - host_id = content::ChildProcessHost::kInvalidUniqueID; - routing_id = content::ChildProcessHost::kInvalidUniqueID; - } - printer_query = queue_->CreatePrinterQuery(host_id, routing_id); + printer_query = queue_->CreatePrinterQuery( + content::ChildProcessHost::kInvalidUniqueID, MSG_ROUTING_NONE); } printer_query->SetSettings( std::move(new_settings), diff --git a/chromium_src/chrome/renderer/printing/print_web_view_helper.cc b/chromium_src/chrome/renderer/printing/print_web_view_helper.cc index b623619b3baf..506223fc82e6 100644 --- a/chromium_src/chrome/renderer/printing/print_web_view_helper.cc +++ b/chromium_src/chrome/renderer/printing/print_web_view_helper.cc @@ -25,6 +25,7 @@ #include "net/base/escape.h" #include "printing/pdf_metafile_skia.h" #include "printing/units.h" +#include "third_party/WebKit/public/mojom/page/page_visibility_state.mojom.h" #include "third_party/WebKit/public/platform/WebDoubleSize.h" #include "third_party/WebKit/public/platform/WebSize.h" #include "third_party/WebKit/public/platform/WebURLRequest.h" @@ -510,8 +511,8 @@ void PrepareFrameAndViewForPrint::CopySelection( WebPreferences prefs = preferences; prefs.javascript_enabled = false; - blink::WebView* web_view = - blink::WebView::Create(this, blink::kWebPageVisibilityStateVisible); + blink::WebView* web_view = blink::WebView::Create( + this, blink::mojom::PageVisibilityState::kVisible, nullptr); owns_web_view_ = true; content::RenderView::ApplyWebPreferences(prefs, web_view); blink::WebLocalFrame* main_frame = diff --git a/chromium_src/chrome/renderer/printing/print_web_view_helper.h b/chromium_src/chrome/renderer/printing/print_web_view_helper.h index 7655ef4efe5c..f69ab823751b 100644 --- a/chromium_src/chrome/renderer/printing/print_web_view_helper.h +++ b/chromium_src/chrome/renderer/printing/print_web_view_helper.h @@ -203,7 +203,6 @@ class PrintWebViewHelper void RenderPage(const PrintMsg_Print_Params& params, int page_number, blink::WebLocalFrame* frame, - bool is_preview, PdfMetafileSkia* metafile, gfx::Size* page_size, gfx::Rect* content_rect); diff --git a/chromium_src/chrome/renderer/printing/print_web_view_helper_mac.mm b/chromium_src/chrome/renderer/printing/print_web_view_helper_mac.mm index dabaf2ac7df2..31dea2ea33cf 100644 --- a/chromium_src/chrome/renderer/printing/print_web_view_helper_mac.mm +++ b/chromium_src/chrome/renderer/printing/print_web_view_helper_mac.mm @@ -28,7 +28,7 @@ void PrintWebViewHelper::PrintPageInternal( int page_number = params.page_number; gfx::Size page_size_in_dpi; gfx::Rect content_area_in_dpi; - RenderPage(print_pages_params_->params, page_number, frame, false, &metafile, + RenderPage(print_pages_params_->params, page_number, frame, &metafile, &page_size_in_dpi, &content_area_in_dpi); metafile.FinishDocument(); @@ -68,7 +68,7 @@ bool PrintWebViewHelper::RenderPreviewPage( base::TimeTicks begin_time = base::TimeTicks::Now(); gfx::Size page_size; RenderPage(printParams, page_number, print_preview_context_.prepared_frame(), - true, initial_render_metafile, &page_size, NULL); + initial_render_metafile, &page_size, nullptr); print_preview_context_.RenderedPreviewPage(base::TimeTicks::Now() - begin_time); @@ -89,7 +89,6 @@ bool PrintWebViewHelper::RenderPreviewPage( void PrintWebViewHelper::RenderPage(const PrintMsg_Print_Params& params, int page_number, WebLocalFrame* frame, - bool is_preview, PdfMetafileSkia* metafile, gfx::Size* page_size, gfx::Rect* content_rect) { @@ -117,7 +116,6 @@ void PrintWebViewHelper::RenderPage(const PrintMsg_Print_Params& params, return; MetafileSkiaWrapper::SetMetafileOnCanvas(canvas, metafile); - cc::SetIsPreviewMetafile(canvas, is_preview); RenderPageContent(frame, page_number, canvas_area, content_area, scale_factor, static_cast(canvas)); }