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 cc3da5190a98f2c1488ebdd1dcbcb25624765244..fc34f7859e9563042c053c293afc0d7cc6986114 100644 |
--- a/chrome/renderer/print_web_view_helper.cc |
+++ b/chrome/renderer/print_web_view_helper.cc |
@@ -75,8 +75,11 @@ PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( |
WebFrame* frame, |
WebNode* node, |
WebView* web_view) |
- : frame_(frame), web_view_(web_view), expected_pages_count_(0), |
- use_browser_overlays_(true) { |
+ : frame_(frame), |
+ web_view_(web_view), |
+ expected_pages_count_(0), |
+ use_browser_overlays_(true), |
+ finished_(false) { |
int dpi = GetDPI(&print_params); |
print_canvas_size_.set_width( |
ConvertUnit(print_params.printable_size.width(), dpi, |
@@ -110,12 +113,18 @@ PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( |
} |
PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() { |
- frame_->printEnd(); |
- web_view_->resize(prev_view_size_); |
- if (WebFrame* web_frame = web_view_->mainFrame()) |
- web_frame->setScrollOffset(prev_scroll_offset_); |
+ FinishPrinting(); |
} |
+void PrepareFrameAndViewForPrint::FinishPrinting() { |
+ if (!finished_) { |
+ finished_ = true; |
+ frame_->printEnd(); |
+ web_view_->resize(prev_view_size_); |
+ if (WebFrame* web_frame = web_view_->mainFrame()) |
+ web_frame->setScrollOffset(prev_scroll_offset_); |
+ } |
+} |
PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) |
: RenderViewObserver(render_view), |