summaryrefslogtreecommitdiffstats
path: root/src/core/printing/print_view_manager_qt.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-17 15:31:36 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-02-28 14:24:41 +0100
commitc3ab932f8b2f3a52383ce0db3ff67c925b138bde (patch)
tree48a9899f1ac5a4f29b6814c2e6c6717300cad137 /src/core/printing/print_view_manager_qt.cpp
parent26b4267a3b00ebedb560169d09f974cd87a6a370 (diff)
Adaptations for Chromium 79
Fixes: QTBUG-80737 Fixes: QTBUG-81556 Fixes: QTBUG-81614 Change-Id: Ie6a69cdbf46d0508bff226f1b8fed28a618e1949 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/printing/print_view_manager_qt.cpp')
-rw-r--r--src/core/printing/print_view_manager_qt.cpp37
1 files changed, 23 insertions, 14 deletions
diff --git a/src/core/printing/print_view_manager_qt.cpp b/src/core/printing/print_view_manager_qt.cpp
index 4c82faee8..ebaad9a80 100644
--- a/src/core/printing/print_view_manager_qt.cpp
+++ b/src/core/printing/print_view_manager_qt.cpp
@@ -66,6 +66,7 @@
#include "printing/metafile_skia.h"
#include "printing/print_job_constants.h"
#include "printing/units.h"
+#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
namespace {
@@ -120,10 +121,7 @@ static base::DictionaryValue *createPrintSettings()
printSettings->SetInteger(printing::kPreviewRequestID, internalRequestId);
// The following are standard settings that Chromium expects to be set.
- printSettings->SetBoolean(printing::kSettingPrintToPDF, true);
- printSettings->SetBoolean(printing::kSettingCloudPrintDialog, false);
- printSettings->SetBoolean(printing::kSettingPrintWithPrivet, false);
- printSettings->SetBoolean(printing::kSettingPrintWithExtension, false);
+ printSettings->SetInteger(printing::kSettingPrinterType, printing::kPdfPrinter);
printSettings->SetInteger(printing::kSettingDpiHorizontal, printing::kPointsPerInch);
printSettings->SetInteger(printing::kSettingDpiVertical, printing::kPointsPerInch);
@@ -272,15 +270,9 @@ bool PrintViewManagerQt::PrintToPDFInternal(const QPageLayout &pageLayout,
return false;
content::RenderFrameHost* rfh = web_contents()->GetMainFrame();
- auto message = std::make_unique<PrintMsg_InitiatePrintPreview>(
- rfh->GetRoutingID(), false);
+ GetPrintRenderFrame(rfh)->InitiatePrintPreview(nullptr, false);
DCHECK(!m_printPreviewRfh);
-
- if (!rfh->Send(message.release())) {
- return false;
- }
-
m_printPreviewRfh = rfh;
return true;
}
@@ -324,6 +316,24 @@ void PrintViewManagerQt::RenderFrameDeleted(content::RenderFrameHost *render_fra
if (render_frame_host == m_printPreviewRfh)
PrintPreviewDone();
PrintViewManagerBaseQt::RenderFrameDeleted(render_frame_host);
+ m_printRenderFrames.erase(render_frame_host);
+}
+
+const mojo::AssociatedRemote<printing::mojom::PrintRenderFrame> &PrintViewManagerQt::GetPrintRenderFrame(content::RenderFrameHost *rfh)
+{
+ auto it = m_printRenderFrames.find(rfh);
+ if (it == m_printRenderFrames.end()) {
+ mojo::AssociatedRemote<printing::mojom::PrintRenderFrame> remote;
+ rfh->GetRemoteAssociatedInterfaces()->GetInterface(&remote);
+ it = m_printRenderFrames.insert(std::make_pair(rfh, std::move(remote))).first;
+ } else if (it->second.is_bound() && !it->second.is_connected()) {
+ // When print preview is closed, the remote is disconnected from the
+ // receiver. Reset and bind the remote before using it again.
+ it->second.reset();
+ rfh->GetRemoteAssociatedInterfaces()->GetInterface(&it->second);
+ }
+
+ return it->second;
}
void PrintViewManagerQt::resetPdfState()
@@ -419,7 +429,7 @@ void PrintViewManagerQt::OnSetupScriptedPrintPreview(content::RenderFrameHost* r
return;
// close preview
- rfh->Send(new PrintMsg_ClosePrintPreviewDialog(rfh->GetRoutingID()));
+ GetPrintRenderFrame(rfh)->OnPrintPreviewDialogClosed();
client->printRequested();
}
@@ -431,8 +441,7 @@ void PrintViewManagerQt::OnShowScriptedPrintPreview(content::RenderFrameHost* rf
}
void PrintViewManagerQt::PrintPreviewDone() {
- m_printPreviewRfh->Send(new PrintMsg_ClosePrintPreviewDialog(
- m_printPreviewRfh->GetRoutingID()));
+ GetPrintRenderFrame(m_printPreviewRfh)->OnPrintPreviewDialogClosed();
m_printPreviewRfh = nullptr;
}