diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp index 6eb3d7419..f2524e57d 100644 --- a/src/core/printing/print_view_manager_qt.cpp +++ b/src/core/printing/print_view_manager_qt.cpp @@ -240,11 +240,10 @@ bool PrintViewManagerQt::PrintToPDFInternal(const QPageLayout &pageLayout, if (web_contents()->IsCrashed()) return false; - content::RenderFrameHost* rfh = web_contents()->GetMainFrame(); - GetPrintRenderFrame(rfh)->InitiatePrintPreview(mojo::PendingAssociatedRemote(), false); + if (!m_printPreviewRfh) + m_printPreviewRfh = web_contents()->GetMainFrame(); + GetPrintRenderFrame(m_printPreviewRfh)->InitiatePrintPreview(mojo::PendingAssociatedRemote(), false); - DCHECK(!m_printPreviewRfh); - m_printPreviewRfh = rfh; return true; } @@ -321,14 +320,15 @@ void PrintViewManagerQt::SetupScriptedPrintPreview(SetupScriptedPrintPreviewCall content::WebContentsView *view = static_cast(web_contents())->GetView(); WebContentsAdapterClient *client = WebContentsViewQt::from(view)->client(); - content::RenderFrameHost *rfh = - print_manager_host_receivers_.GetCurrentTargetFrame(); if (!client) return; - // close preview - if (rfh) + if (content::RenderFrameHost *rfh = GetCurrentTargetFrame()) { + DCHECK(!m_printPreviewRfh); + m_printPreviewRfh = rfh; + // close preview GetPrintRenderFrame(rfh)->OnPrintPreviewDialogClosed(); + } client->printRequested(); }