summaryrefslogtreecommitdiffstats
path: root/src/core/renderer
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2022-01-11 14:53:00 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-01-14 15:32:30 +0000
commit63e37ba2ad2c0752b9b54b7ed78bc7bbb2dbc77d (patch)
tree51278cb570df0058a2a42bbf0f72a4792a2e264e /src/core/renderer
parentb9698d13843680cac871634612413108452788c7 (diff)
Fix printing PDF files
Delegate printing task down to the guest WebContents if any is present. Also update PrintWebViewHelperDelegateQt to find the plugin element properly for printing. Task-number: QTBUG-98941 Change-Id: I81004a2275e0870a17565af527b1450472afb24b Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io> (cherry picked from commit 455efe7ef204c6cd8de72b9b1f922f1681f58589) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/core/renderer')
-rw-r--r--src/core/renderer/print_web_view_helper_delegate_qt.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/core/renderer/print_web_view_helper_delegate_qt.cpp b/src/core/renderer/print_web_view_helper_delegate_qt.cpp
index beae6ecfa..5dcfaafd6 100644
--- a/src/core/renderer/print_web_view_helper_delegate_qt.cpp
+++ b/src/core/renderer/print_web_view_helper_delegate_qt.cpp
@@ -43,11 +43,17 @@
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_view.h"
+#include "extensions/buildflags/buildflags.h"
#include "extensions/common/constants.h"
#include "third_party/blink/public/web/web_document.h"
#include "third_party/blink/public/web/web_element.h"
#include "third_party/blink/public/web/web_local_frame.h"
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+#include "chrome/common/webui_url_constants.h"
+#include "extensions/common/constants.h"
+#endif // BUILDFLAG(ENABLE_EXTENSIONS)
+
#include "print_web_view_helper_delegate_qt.h"
#include "web_engine_library_info.h"
@@ -56,14 +62,23 @@ PrintWebViewHelperDelegateQt::~PrintWebViewHelperDelegateQt() {}
blink::WebElement PrintWebViewHelperDelegateQt::GetPdfElement(blink::WebLocalFrame *frame)
{
+#if BUILDFLAG(ENABLE_EXTENSIONS)
GURL url = frame->GetDocument().Url();
- if (url.SchemeIs(extensions::kExtensionScheme) && url.host() == extension_misc::kPdfExtensionId) {
+ bool inside_print_preview = url.GetOrigin() == chrome::kChromeUIPrintURL;
+ bool inside_pdf_extension = url.SchemeIs(extensions::kExtensionScheme) &&
+ url.host_piece() == extension_misc::kPdfExtensionId;
+ if (inside_print_preview || inside_pdf_extension) {
// <object> with id="plugin" is created in
- // chrome/browser/resources/pdf/pdf.js.
- auto plugin_element = frame->GetDocument().GetElementById("plugin");
- CHECK(!plugin_element.IsNull());
- return plugin_element;
+ // chrome/browser/resources/pdf/pdf_viewer_base.js.
+ auto viewer_element = frame->GetDocument().GetElementById("viewer");
+ if (!viewer_element.IsNull() && !viewer_element.ShadowRoot().IsNull()) {
+ auto plugin_element = viewer_element.ShadowRoot().QuerySelector("#plugin");
+ if (!plugin_element.IsNull())
+ return plugin_element;
+ }
+ NOTREACHED();
}
+#endif // BUILDFLAG(ENABLE_EXTENSIONS)
return blink::WebElement();
}