mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
fix: window.print() only working once (#21908)
This commit is contained in:
@@ -63,7 +63,7 @@ index aacffd44658cac701c9683fcb3b20135a64c18bd..01cd31eb174e198724cab082e5056444
|
||||
}
|
||||
|
||||
diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc
|
||||
index 3d026cd11aa2c0b009812317995cd4e02161251e..2778bfd64270a2e93153f39e849316ed1ad8dbbf 100644
|
||||
index 3d026cd11aa2c0b009812317995cd4e02161251e..99aac7f3932d3a8eb988337cd8dbf5c6965c87a7 100644
|
||||
--- a/chrome/browser/printing/print_view_manager_base.cc
|
||||
+++ b/chrome/browser/printing/print_view_manager_base.cc
|
||||
@@ -27,10 +27,7 @@
|
||||
@@ -183,16 +183,20 @@ index 3d026cd11aa2c0b009812317995cd4e02161251e..2778bfd64270a2e93153f39e849316ed
|
||||
NOTREACHED();
|
||||
break;
|
||||
}
|
||||
@@ -548,8 +565,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
|
||||
@@ -548,8 +565,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() ||
|
||||
@@ -564,8 +579,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
|
||||
@@ -564,8 +583,6 @@ bool PrintViewManagerBase::CreateNewPrintJob(
|
||||
print_job_->SetSource(PrintJob::Source::PRINT_PREVIEW, /*source_id=*/"");
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
@@ -226,6 +230,15 @@ index 3d026cd11aa2c0b009812317995cd4e02161251e..2778bfd64270a2e93153f39e849316ed
|
||||
// Don't close the worker thread.
|
||||
print_job_ = nullptr;
|
||||
}
|
||||
@@ -657,7 +684,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() {
|
||||
}
|
||||
|
||||
bool PrintViewManagerBase::OpportunisticallyCreatePrintJob(int cookie) {
|
||||
- if (print_job_)
|
||||
+ if (print_job_ && print_job_->document())
|
||||
return true;
|
||||
|
||||
if (!cookie) {
|
||||
diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h
|
||||
index af49d3e2f8abaf7dc4d82dc3f9beccdf4fbd9f18..c5ef1a4c1577c509e5fbe0fcf06e6dfdba30c92c 100644
|
||||
--- a/chrome/browser/printing/print_view_manager_base.h
|
||||
|
||||
Reference in New Issue
Block a user