Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4171)

Unified Diff: chrome/renderer/print_web_view_helper.cc

Issue 7993005: Reuse PrintContext to excessively triggering matchMedia('print') listeners. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | webkit/glue/webkit_glue.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/print_web_view_helper.cc
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc
index 784fc1042bc478e36746cb5ea3cff2c192878de8..bf696b025e3f4ed73be680d68acdab9c2fb5ec51 100644
--- a/chrome/renderer/print_web_view_helper.cc
+++ b/chrome/renderer/print_web_view_helper.cc
@@ -428,9 +428,7 @@ PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint(
WebNode* node)
: frame_(frame),
web_view_(frame->view()),
- dpi_(static_cast<int>(print_params.dpi)),
expected_pages_count_(0),
- use_browser_overlays_(true),
finished_(false) {
gfx::Size canvas_size;
CalculatePrintCanvasSize(print_params, &canvas_size);
@@ -439,10 +437,12 @@ PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint(
prev_scroll_offset_ = web_frame->scrollOffset();
prev_view_size_ = web_view_->size();
+ WebKit::WebNode node_to_print;
if (node)
- node_to_print_ = *node;
+ node_to_print = *node;
- StartPrinting(canvas_size);
+ frame_->printBegin(node_to_print);
+ StartPrinting(canvas_size, static_cast<int>(print_params.dpi));
}
PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() {
@@ -457,13 +457,17 @@ void PrepareFrameAndViewForPrint::UpdatePrintParams(
if (canvas_size == print_canvas_size_)
return;
- frame_->printEnd();
- dpi_ = static_cast<int>(print_params.dpi);
- StartPrinting(canvas_size);
+ StartPrinting(canvas_size, static_cast<int>(print_params.dpi));
+}
+
+bool PrepareFrameAndViewForPrint::ShouldUseBrowserOverlays() const
+{
+ return frame_->shouldUseBrowserOverlays();
}
void PrepareFrameAndViewForPrint::StartPrinting(
- const gfx::Size& print_canvas_size) {
+ const gfx::Size& print_canvas_size,
+ int dpi) {
print_canvas_size_ = print_canvas_size;
// Layout page according to printer page size. Since WebKit shrinks the
@@ -477,8 +481,8 @@ void PrepareFrameAndViewForPrint::StartPrinting(
web_view_->resize(print_layout_size);
- expected_pages_count_ = frame_->printBegin(print_canvas_size_, node_to_print_,
- dpi_, &use_browser_overlays_);
+ expected_pages_count_ =
+ frame_->setPageSizeResolution(print_canvas_size_, dpi);
}
void PrepareFrameAndViewForPrint::FinishPrinting() {
@@ -814,10 +818,6 @@ void PrintWebViewHelper::Print(WebKit::WebFrame* frame, WebKit::WebNode* node) {
if (expected_page_count)
use_browser_overlays = prepare->ShouldUseBrowserOverlays();
- // Release the prepare before going any further, since we are going to
- // show UI and wait for the user.
- prepare.reset();
vandebo (ex-Chrome) 2011/10/24 20:53:47 I think the reason this is done is not to make sur
dominicc (has gone to gerrit) 2011/10/25 04:44:39 Is that platform-specific, or specific to the new
Lei Zhang 2011/10/25 06:40:22 Unless you changed things in about:flags, in M15+
vandebo (ex-Chrome) 2011/10/25 17:03:11 As Lei noted, this code path is only used for the
-
// Some full screen plugins can say they don't want to print.
if (!expected_page_count) {
DidFinishPrinting(OK); // Release resources and fail silently.
@@ -832,7 +832,7 @@ void PrintWebViewHelper::Print(WebKit::WebFrame* frame, WebKit::WebNode* node) {
}
// Render Pages for printing.
- if (!RenderPagesForPrint(frame, node, NULL)) {
+ if (!RenderPagesForPrint(frame, node, prepare.get())) {
Lei Zhang 2011/09/22 21:48:30 Not sure if this is right. If you use the |prepare
dominicc (has gone to gerrit) 2011/10/24 08:45:13 This code is quite twisty, but don’t the settings
LOG(ERROR) << "RenderPagesForPrint failed";
DidFinishPrinting(FAIL_PRINT);
}
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | webkit/glue/webkit_glue.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698