Skip to content

Commit

Permalink
fix: window.print() only working once (#21911)
Browse files Browse the repository at this point in the history
  • Loading branch information
codebytere committed Jan 27, 2020
1 parent 7908013 commit ae9ee76
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions patches/chromium/printing.patch
Expand Up @@ -61,7 +61,7 @@ index 13f9d7af3ae796ecec3a9189aa59f4b20171fd7a..9c35b294340cce070a9f428dac6aa587
}

diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
index da3383624ff83c20fd94578a80e94d00689bfefc..fcf7264c590f72b26cbcea328cc1f0e718a8c791 100644
index da3383624ff83c20fd94578a80e94d00689bfefc..aa61f780aafb205c33009dc84c2d237b622994ae 100644
--- a/chrome/browser/printing/print_view_manager_base.cc
+++ b/chrome/browser/printing/print_view_manager_base.cc
@@ -27,10 +27,7 @@
Expand Down Expand Up @@ -171,16 +171,20 @@ index da3383624ff83c20fd94578a80e94d00689bfefc..fcf7264c590f72b26cbcea328cc1f0e7
NOTREACHED();
break;
}
@@ -542,8 +551,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
@@ -542,8 +551,10 @@ bool PrintViewManagerBase::CreateNewPrintJob(
DCHECK(!quit_inner_loop_);
DCHECK(query);

- // Disconnect the current |print_job_|.
- DisconnectFromCurrentPrintJob();
+ if (callback_.is_null()) {
+ // Disconnect the current |print_job_| only when calling window.print()
+ DisconnectFromCurrentPrintJob();
+ }

// We can't print if there is no renderer.
if (!web_contents()->GetRenderViewHost() ||
@@ -557,9 +564,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
@@ -557,9 +568,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
#if defined(OS_CHROMEOS)
print_job_->SetSource(PrintJob::Source::PRINT_PREVIEW, /*source_id=*/"");
#endif // defined(OS_CHROMEOS)
Expand All @@ -190,7 +194,7 @@ index da3383624ff83c20fd94578a80e94d00689bfefc..fcf7264c590f72b26cbcea328cc1f0e7
printing_succeeded_ = false;
return true;
}
@@ -608,6 +612,13 @@ void PrintViewManagerBase::ReleasePrintJob() {
@@ -608,6 +616,13 @@ void PrintViewManagerBase::ReleasePrintJob() {
content::RenderFrameHost* rfh = printing_rfh_;
printing_rfh_ = nullptr;

Expand All @@ -204,7 +208,7 @@ index da3383624ff83c20fd94578a80e94d00689bfefc..fcf7264c590f72b26cbcea328cc1f0e7
if (!print_job_)
return;

@@ -617,8 +628,9 @@ void PrintViewManagerBase::ReleasePrintJob() {
@@ -617,8 +632,9 @@ void PrintViewManagerBase::ReleasePrintJob() {
rfh->Send(msg.release());
}

Expand All @@ -216,7 +220,16 @@ index da3383624ff83c20fd94578a80e94d00689bfefc..fcf7264c590f72b26cbcea328cc1f0e7
// Don't close the worker thread.
print_job_ = nullptr;
}
@@ -688,6 +700,9 @@ bool PrintViewManagerBase::PrintNowInternal(
@@ -654,7 +670,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() {
}

bool PrintViewManagerBase::OpportunisticallyCreatePrintJob(int cookie) {
- if (print_job_)
+ if (print_job_ && print_job_->document())
return true;

if (!cookie) {
@@ -688,6 +704,9 @@ bool PrintViewManagerBase::PrintNowInternal(
// Don't print / print preview interstitials or crashed tabs.
if (web_contents()->ShowingInterstitialPage() || web_contents()->IsCrashed())
return false;
Expand Down

0 comments on commit ae9ee76

Please sign in to comment.