summaryrefslogtreecommitdiff
path: root/chromium/components/printing/renderer/print_render_frame_helper.h
diff options
context:
space:
mode:
authorMichael BrĂ¼ning <michael.bruning@qt.io>2020-09-30 21:46:10 +0200
committerMichael BrĂ¼ning <michael.bruning@qt.io>2020-10-05 12:03:21 +0000
commit30570c933fce70af5a492587660a752b398140c2 (patch)
tree42f9b4006a3d284dea11e37bebce9d17d0d28f24 /chromium/components/printing/renderer/print_render_frame_helper.h
parentc89a12ce788db2829ef25f4da967cc62efdb42e8 (diff)
downloadqtwebengine-chromium-30570c933fce70af5a492587660a752b398140c2.tar.gz
[Backport] Security issue 1098860
M85: Correctly retrieve the plugin when printing. The logic in PrintRenderFrameHelper to retrieve a plugin is out of sync with the logic in WebLocalFrameImpl::PrintBegin(). If PrintRenderFrameHelper thinks it is printing a webpage, while WebLocalFrameImpl thinks it is printing a plugin, bad things happen. Fix this by adding WebLocalFrame::GetPluginToPrint(), to expose the plugin finding logic in WebLocalFrameImpl. With GetPluginToPrint() available, PrintRenderFrameHelper can delete its own GetPlugin() helper, and switch the GetPlugin() callers to use GetPluginToPrint() instead. Once synchronized, some use cases for printing Flash now work correctly. (cherry picked from commit f8d7d428b1549ff1f87e3d34c5ca0b53d6ce4e84) Tbr: japhet@chromium.org Bug: 1098860 Change-Id: I9500db9ed2d6da0f87dad84c197f738d3a1e3c84 Reviewed-by: Nate Chapin <japhet@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#791564} Reviewed-by: Lei Zhang <thestig@chromium.org> Cr-Commit-Position: refs/branch-heads/4183@{#1009} Cr-Branched-From: 740e9e8a40505392ba5c8e022a8024b3d018ca65-refs/heads/master@{#782793} Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/printing/renderer/print_render_frame_helper.h')
-rw-r--r--chromium/components/printing/renderer/print_render_frame_helper.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/chromium/components/printing/renderer/print_render_frame_helper.h b/chromium/components/printing/renderer/print_render_frame_helper.h
index 6e2d7e1467b..ce56acfd323 100644
--- a/chromium/components/printing/renderer/print_render_frame_helper.h
+++ b/chromium/components/printing/renderer/print_render_frame_helper.h
@@ -433,6 +433,7 @@ class PrintRenderFrameHelper
// Helper functions
int GetNextPageNumber();
bool IsRendering() const;
+ bool IsPlugin() const;
bool IsModifiable() const;
bool HasSelection();
bool IsLastPageOfPrintReadyMetafile() const;
@@ -469,7 +470,7 @@ class PrintRenderFrameHelper
// Reset some of the internal rendering context.
void ClearContext();
- void CalculateIsModifiable();
+ void CalculatePluginAttributes();
// Specifies what to render for print preview.
FrameReference source_frame_;
@@ -487,6 +488,9 @@ class PrintRenderFrameHelper
// List of page indices that need to be rendered.
std::vector<int> pages_to_render_;
+ // True, if the document source is a plugin.
+ bool is_plugin_ = false;
+
// True, if the document source is modifiable. e.g. HTML and not PDF.
bool is_modifiable_;