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 4df68f09ebe9fb0d1fea2161c7d888c6ed5e51cc..05b7f42ad5c085510abd233e7ba1c79dd4084dfd 100644 |
--- a/chrome/renderer/print_web_view_helper.cc |
+++ b/chrome/renderer/print_web_view_helper.cc |
@@ -372,11 +372,8 @@ PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( |
WebFrame* frame, |
const WebNode& node) |
: frame_(frame), |
- node_to_print_(node), |
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); |
@@ -385,7 +382,8 @@ PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( |
prev_scroll_offset_ = web_frame->scrollOffset(); |
prev_view_size_ = web_view_->size(); |
- StartPrinting(canvas_size); |
+ frame_->printBegin(node); |
+ StartPrinting(canvas_size, static_cast<int>(print_params.dpi)); |
} |
PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() { |
@@ -397,17 +395,22 @@ void PrepareFrameAndViewForPrint::UpdatePrintParams( |
DCHECK(!finished_); |
gfx::Size canvas_size; |
CalculatePrintCanvasSize(print_params, &canvas_size); |
- if (canvas_size == print_canvas_size_) |
+ int dpi = static_cast<int>(print_params.dpi); |
+ if (canvas_size == print_canvas_size_ && dpi == dpi_) |
return; |
- frame_->printEnd(); |
- dpi_ = static_cast<int>(print_params.dpi); |
- StartPrinting(canvas_size); |
+ StartPrinting(canvas_size, 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; |
+ dpi_ = dpi; |
// Layout page according to printer page size. Since WebKit shrinks the |
// size of the page automatically (from 125% to 200%) we trick it to |
@@ -420,8 +423,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() { |
@@ -748,10 +751,6 @@ void PrintWebViewHelper::Print(WebKit::WebFrame* frame, |
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(); |
- |
// Some full screen plugins can say they don't want to print. |
if (!expected_page_count) { |
DidFinishPrinting(OK); // Release resources and fail silently. |
@@ -766,7 +765,7 @@ void PrintWebViewHelper::Print(WebKit::WebFrame* frame, |
} |
// Render Pages for printing. |
- if (!RenderPagesForPrint(frame, node, NULL)) { |
+ if (!RenderPagesForPrint(frame, node, prepare.get())) { |
LOG(ERROR) << "RenderPagesForPrint failed"; |
DidFinishPrinting(FAIL_PRINT); |
} |