summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/printing/print_view_manager_base.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/browser/printing/print_view_manager_base.cc')
-rw-r--r--chromium/chrome/browser/printing/print_view_manager_base.cc23
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