diff options
Diffstat (limited to 'chromium/chrome/browser/printing/print_view_manager_base.cc')
-rw-r--r-- | chromium/chrome/browser/printing/print_view_manager_base.cc | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/chromium/chrome/browser/printing/print_view_manager_base.cc b/chromium/chrome/browser/printing/print_view_manager_base.cc index 59761b2d817..9c3ba082e01 100644 --- a/chromium/chrome/browser/printing/print_view_manager_base.cc +++ b/chromium/chrome/browser/printing/print_view_manager_base.cc @@ -190,6 +190,11 @@ void PrintViewManagerBase::PrintDocument( print_job_->StartPdfToEmfConversion(print_data, page_size, content_area, print_text_with_gdi); } + // Indicate that the PDF is fully rendered and we no longer need the renderer + // and web contents, so the print job does not need to be cancelled if they + // die. This is needed on Windows because the PrintedDocument will not be + // considered complete until PDF conversion finishes. + document->SetConvertingPdf(); #else std::unique_ptr<PdfMetafileSkia> metafile = std::make_unique<PdfMetafileSkia>(SkiaDocumentType::PDF); @@ -260,11 +265,9 @@ void PrintViewManagerBase::StartLocalPrintJob( gfx::Size page_size = settings.page_setup_device_units().physical_size(); gfx::Rect content_area = gfx::Rect(0, 0, page_size.width(), page_size.height()); - gfx::Point offsets = - gfx::Point(settings.page_setup_device_units().content_area().x(), - settings.page_setup_device_units().content_area().y()); - PrintDocument(document, print_data, page_size, content_area, offsets); + PrintDocument(document, print_data, page_size, content_area, + settings.page_setup_device_units().printable_area().origin()); std::move(callback).Run(base::Value()); } #endif // BUILDFLAG(ENABLE_PRINT_PREVIEW) @@ -506,6 +509,12 @@ bool PrintViewManagerBase::RenderAllMissingPagesNow() { if (!print_job_.get() || !print_job_->is_job_pending()) return false; + // Is the document already complete? + if (print_job_->document() && print_job_->document()->IsComplete()) { + printing_succeeded_ = true; + return true; + } + // We can't print if there is no renderer. if (!web_contents() || !web_contents()->GetRenderViewHost() || @@ -513,12 +522,6 @@ bool PrintViewManagerBase::RenderAllMissingPagesNow() { return false; } - // Is the document already complete? - if (print_job_->document() && print_job_->document()->IsComplete()) { - printing_succeeded_ = true; - return true; - } - // WebContents is either dying or a second consecutive request to print // happened before the first had time to finish. We need to render all the // pages in an hurry if a print_job_ is still pending. No need to wait for it |