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

Side by Side Diff: chrome/renderer/print_web_view_helper.cc

Issue 7544018: Print preview page selection should not require a rerendering of draft pages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/print_web_view_helper.h" 5 #include "chrome/renderer/print_web_view_helper.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 if (WebFrame* web_frame = web_view_->mainFrame()) 170 if (WebFrame* web_frame = web_view_->mainFrame())
171 web_frame->setScrollOffset(prev_scroll_offset_); 171 web_frame->setScrollOffset(prev_scroll_offset_);
172 } 172 }
173 } 173 }
174 174
175 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) 175 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view)
176 : RenderViewObserver(render_view), 176 : RenderViewObserver(render_view),
177 RenderViewObserverTracker<PrintWebViewHelper>(render_view), 177 RenderViewObserverTracker<PrintWebViewHelper>(render_view),
178 print_web_view_(NULL), 178 print_web_view_(NULL),
179 is_preview_(switches::IsPrintPreviewEnabled()), 179 is_preview_(switches::IsPrintPreviewEnabled()),
180 is_complete_metafile_already_sent_(false),
180 user_cancelled_scripted_print_count_(0), 181 user_cancelled_scripted_print_count_(0),
181 notify_browser_of_print_failure_(true) { 182 notify_browser_of_print_failure_(true) {
182 } 183 }
183 184
184 PrintWebViewHelper::~PrintWebViewHelper() {} 185 PrintWebViewHelper::~PrintWebViewHelper() {}
185 186
186 // Prints |frame| which called window.print(). 187 // Prints |frame| which called window.print().
187 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { 188 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) {
188 DCHECK(frame); 189 DCHECK(frame);
189 190
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 print_preview_context_.total_page_count(); 333 print_preview_context_.total_page_count();
333 preview_params.modifiable = print_preview_context_.IsModifiable(); 334 preview_params.modifiable = print_preview_context_.IsModifiable();
334 preview_params.preview_request_id = 335 preview_params.preview_request_id =
335 print_pages_params_->params.preview_request_id; 336 print_pages_params_->params.preview_request_id;
336 337
337 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); 338 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params));
338 return; 339 return;
339 } 340 }
340 // Always clear |old_print_pages_params_| before rendering the pages. 341 // Always clear |old_print_pages_params_| before rendering the pages.
341 old_print_pages_params_.reset(); 342 old_print_pages_params_.reset();
343 is_complete_metafile_already_sent_ = false;
342 344
343 // PDF printer device supports alpha blending. 345 // PDF printer device supports alpha blending.
344 print_pages_params_->params.supports_alpha_blend = true; 346 print_pages_params_->params.supports_alpha_blend = true;
347
348 bool generate_draft_pages;
349 if (!settings.GetBoolean(printing::kSettingGenerateDraftData,
350 &generate_draft_pages)) {
351 NOTREACHED();
352 }
353 print_preview_context_.set_generate_draft_pages(generate_draft_pages);
354
345 if (!CreatePreviewDocument()) 355 if (!CreatePreviewDocument())
346 DidFinishPrinting(FAIL_PREVIEW); 356 DidFinishPrinting(FAIL_PREVIEW);
347 } 357 }
348 358
349 bool PrintWebViewHelper::CreatePreviewDocument() { 359 bool PrintWebViewHelper::CreatePreviewDocument() {
350 PrintMsg_Print_Params print_params = print_pages_params_->params; 360 PrintMsg_Print_Params print_params = print_pages_params_->params;
351 const std::vector<int>& pages = print_pages_params_->pages; 361 const std::vector<int>& pages = print_pages_params_->pages;
352 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages)) 362 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages))
353 return false; 363 return false;
354 int page_count = print_preview_context_.total_page_count(); 364 int page_count = print_preview_context_.total_page_count();
355 bool is_modifiable = print_preview_context_.IsModifiable(); 365 bool is_modifiable = print_preview_context_.IsModifiable();
356 int document_cookie = print_pages_params_->params.document_cookie; 366 int document_cookie = print_pages_params_->params.document_cookie;
357 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), document_cookie, 367 Send(new PrintHostMsg_DidGetPreviewPageCount(
358 page_count, is_modifiable)); 368 routing_id(),
369 document_cookie,
370 page_count,
371 is_modifiable,
372 print_preview_context_.generate_draft_pages()));
359 PreviewPageRendered(printing::INVALID_PAGE_INDEX, NULL); 373 PreviewPageRendered(printing::INVALID_PAGE_INDEX, NULL);
360 return true; 374 return true;
361 } 375 }
362 376
363 void PrintWebViewHelper::OnContinuePreview(int requested_preview_page_index) { 377 void PrintWebViewHelper::OnContinuePreview() {
364 // Spurious message. We already finished/cancelled/aborted the print preview. 378 // Spurious message. We already finished/cancelled/aborted the print preview.
365 if (!print_preview_context_.IsBusy()) 379 if (!print_preview_context_.IsBusy())
366 return; 380 return;
367 int page_number; 381 int page_number = print_preview_context_.GetNextPageNumber();
368 #if defined(USE_SKIA)
369 if (requested_preview_page_index >= printing::FIRST_PAGE_INDEX) {
370 page_number = requested_preview_page_index;
371 } else
372 #endif
373 {
374 page_number = print_preview_context_.GetNextPageNumber();
375 }
376
377 if (page_number >= printing::FIRST_PAGE_INDEX) { 382 if (page_number >= printing::FIRST_PAGE_INDEX) {
378 // Continue generating the print preview. 383 // Continue generating the print preview.
379 RenderPreviewPage(page_number); 384 RenderPreviewPage(page_number);
380 return; 385 if (!print_preview_context_.IsCompleteMetafileReady())
vandebo (ex-Chrome) 2011/08/03 20:48:21 I think we want to return except for the one page
kmadhusu 2011/08/04 20:47:53 As we discussed, I renamed the function "IsComple
386 return;
381 } 387 }
382 388
383 // Finished generating preview. Finalize the document. 389 // Finished generating preview. Finalize the document.
384 if (FinalizePreviewDocument()) { 390 if (FinalizePreviewDocument()) {
385 print_preview_context_.Finished(); 391 if (page_number == printing::INVALID_PAGE_INDEX) {
386 DidFinishPrinting(OK); 392 print_preview_context_.Finished();
393 DidFinishPrinting(OK);
394 }
387 } else { 395 } else {
388 DidFinishPrinting(FAIL_PREVIEW); 396 DidFinishPrinting(FAIL_PREVIEW);
389 } 397 }
390 } 398 }
391 399
392 void PrintWebViewHelper::OnAbortPreview() { 400 void PrintWebViewHelper::OnAbortPreview() {
393 DidFinishPrinting(ABORT_PREVIEW); 401 DidFinishPrinting(ABORT_PREVIEW);
394 return; 402 return;
395 } 403 }
396 404
397 bool PrintWebViewHelper::FinalizePreviewDocument() { 405 bool PrintWebViewHelper::FinalizePreviewDocument() {
398 print_preview_context_.FinalizePreviewDocument(); 406 print_preview_context_.FinalizePreviewDocument(
407 is_complete_metafile_already_sent_);
408 if (is_complete_metafile_already_sent_)
vandebo (ex-Chrome) 2011/08/03 20:48:21 Ohh, I see you handle that here... I think it woul
kmadhusu 2011/08/04 20:47:53 Done.
409 return true;
399 410
400 // Get the size of the resulting metafile. 411 // Get the size of the resulting metafile.
401 printing::Metafile* metafile = print_preview_context_.metafile(); 412 printing::Metafile* metafile = print_preview_context_.metafile();
402 uint32 buf_size = metafile->GetDataSize(); 413 uint32 buf_size = metafile->GetDataSize();
403 DCHECK_GT(buf_size, 0u); 414 DCHECK_GT(buf_size, 0u);
404 415
405 PrintHostMsg_DidPreviewDocument_Params preview_params; 416 PrintHostMsg_DidPreviewDocument_Params preview_params;
406 preview_params.reuse_existing_data = false; 417 preview_params.reuse_existing_data = false;
407 preview_params.data_size = buf_size; 418 preview_params.data_size = buf_size;
408 preview_params.document_cookie = print_pages_params_->params.document_cookie; 419 preview_params.document_cookie = print_pages_params_->params.document_cookie;
409 preview_params.expected_pages_count = 420 preview_params.expected_pages_count =
410 print_preview_context_.total_page_count(); 421 print_preview_context_.total_page_count();
411 preview_params.modifiable = print_preview_context_.IsModifiable(); 422 preview_params.modifiable = print_preview_context_.IsModifiable();
412 preview_params.preview_request_id = 423 preview_params.preview_request_id =
413 print_pages_params_->params.preview_request_id; 424 print_pages_params_->params.preview_request_id;
414 425
415 // Ask the browser to create the shared memory for us. 426 // Ask the browser to create the shared memory for us.
416 if (!CopyMetafileDataToSharedMem(metafile, 427 if (!CopyMetafileDataToSharedMem(metafile,
417 &(preview_params.metafile_data_handle))) { 428 &(preview_params.metafile_data_handle))) {
418 return false; 429 return false;
419 } 430 }
431 is_complete_metafile_already_sent_ = true;
432
420 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); 433 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params));
421 return true; 434 return true;
422 } 435 }
423 436
424 void PrintWebViewHelper::OnPrintingDone(bool success) { 437 void PrintWebViewHelper::OnPrintingDone(bool success) {
425 notify_browser_of_print_failure_ = false; 438 notify_browser_of_print_failure_ = false;
426 DidFinishPrinting(success ? OK : FAIL_PRINT); 439 DidFinishPrinting(success ? OK : FAIL_PRINT);
427 } 440 }
428 441
429 void PrintWebViewHelper::OnPrintNodeUnderContextMenu() { 442 void PrintWebViewHelper::OnPrintNodeUnderContextMenu() {
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 } 943 }
931 } 944 }
932 preview_page_params.data_size = buf_size; 945 preview_page_params.data_size = buf_size;
933 preview_page_params.page_number = page_number; 946 preview_page_params.page_number = page_number;
934 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params)); 947 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params));
935 } 948 }
936 949
937 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext() 950 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext()
938 : frame_(NULL), 951 : frame_(NULL),
939 total_page_count_(0), 952 total_page_count_(0),
940 actual_page_count_(0), 953 generate_draft_pages_(true),
941 current_page_number_(0), 954 complete_metafile_page_count_(0),
955 render_page_list_index_(-1),
942 state_(UNINITIALIZED) { 956 state_(UNINITIALIZED) {
943 } 957 }
944 958
945 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() { 959 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() {
946 } 960 }
947 961
948 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame( 962 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame(
949 WebKit::WebFrame* web_frame) { 963 WebKit::WebFrame* web_frame) {
950 DCHECK(web_frame); 964 DCHECK(web_frame);
951 if (IsReadyToRender()) 965 if (IsReadyToRender())
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 // Need to make sure old object gets destroyed first. 999 // Need to make sure old object gets destroyed first.
986 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(*print_params, frame(), 1000 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(*print_params, frame(),
987 node())); 1001 node()));
988 UpdatePrintableSizeInPrintParameters(frame_, node_.get(), 1002 UpdatePrintableSizeInPrintParameters(frame_, node_.get(),
989 prep_frame_view_.get(), print_params); 1003 prep_frame_view_.get(), print_params);
990 1004
991 total_page_count_ = prep_frame_view_->GetExpectedPageCount(); 1005 total_page_count_ = prep_frame_view_->GetExpectedPageCount();
992 if (total_page_count_ == 0) 1006 if (total_page_count_ == 0)
993 return false; 1007 return false;
994 1008
995 current_page_number_ = 0; 1009 render_page_list_index_ = -1;
996 if (pages.empty()) { 1010 complete_metafile_page_count_ = pages.empty() ? total_page_count_ :
997 actual_page_count_ = total_page_count_; 1011 pages.size();
998 rendered_pages_ = std::vector<PreviewPageInfo>(total_page_count_, 1012 render_page_list_ = pages;
vandebo (ex-Chrome) 2011/08/03 20:48:21 what about if pages is empty? In most cases it'll
kmadhusu 2011/08/04 20:47:53 As we discussed, I added a DCHECK(generate_drate_p
999 std::make_pair(false, -1)); 1013 if (generate_draft_pages_) {
1000 } else { 1014 for (int i = 0; i < total_page_count_; i++) {
1001 actual_page_count_ = pages.size(); 1015 if (std::find(pages.begin(), pages.end(), i) == pages.end())
vandebo (ex-Chrome) 2011/08/03 20:48:21 if render_page_list_ is guaranteed to be in order,
kmadhusu 2011/08/04 20:47:53 Done.
1002 rendered_pages_ = std::vector<PreviewPageInfo>(total_page_count_, 1016 render_page_list_.push_back(i);
1003 std::make_pair(true, -1));
1004 for (int i = 0; i < actual_page_count_; ++i) {
1005 int page_number = pages[i];
1006 if (page_number < printing::FIRST_PAGE_INDEX ||
1007 page_number >= total_page_count_) {
1008 return false;
1009 }
1010 rendered_pages_[page_number].first = false;
1011 rendered_pages_[page_number].second = i;
1012 } 1017 }
1013 } 1018 }
1014
1015 document_render_time_ = base::TimeDelta(); 1019 document_render_time_ = base::TimeDelta();
1016 begin_time_ = base::TimeTicks::Now(); 1020 begin_time_ = base::TimeTicks::Now();
1017 1021
1018 return true; 1022 return true;
1019 } 1023 }
1020 1024
1021 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage( 1025 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage(
1022 const base::TimeDelta& page_time) { 1026 const base::TimeDelta& page_time) {
1023 DCHECK_EQ(RENDERING, state_); 1027 DCHECK_EQ(RENDERING, state_);
1024 document_render_time_ += page_time; 1028 document_render_time_ += page_time;
1025 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time); 1029 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time);
1026 } 1030 }
1027 1031
1028 void PrintWebViewHelper::PrintPreviewContext::FinalizePreviewDocument() { 1032 void PrintWebViewHelper::PrintPreviewContext::FinalizePreviewDocument(
1033 bool is_complete_metafile_already_sent) {
1029 DCHECK_EQ(RENDERING, state_); 1034 DCHECK_EQ(RENDERING, state_);
1030 state_ = DONE; 1035 if ((size_t)(render_page_list_index_ + 1) == render_page_list_.size()) {
1036 state_ = DONE;
1037 prep_frame_view_->FinishPrinting();
vandebo (ex-Chrome) 2011/08/03 20:48:21 Is this left over from trying to do PDFs?
kmadhusu 2011/08/04 20:47:53 No.
1038 if (is_complete_metafile_already_sent)
1039 return;
1040 }
1031 1041
1032 base::TimeTicks begin_time = base::TimeTicks::Now(); 1042 base::TimeTicks begin_time = base::TimeTicks::Now();
1033
1034 prep_frame_view_->FinishPrinting();
1035 metafile_->FinishDocument(); 1043 metafile_->FinishDocument();
1036 1044
1037 if (actual_page_count_ <= 0) { 1045 if (complete_metafile_page_count_ <= 0) {
1038 NOTREACHED(); 1046 NOTREACHED();
1039 return; 1047 return;
1040 } 1048 }
1041 1049
1042 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime", 1050 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime",
1043 document_render_time_); 1051 document_render_time_);
1044 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) + 1052 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) +
1045 document_render_time_; 1053 document_render_time_;
1046 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime", 1054 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime",
1047 total_time); 1055 total_time);
1048 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage", 1056 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage",
1049 total_time / actual_page_count_); 1057 total_time / complete_metafile_page_count_);
1050 } 1058 }
1051 1059
1052 void PrintWebViewHelper::PrintPreviewContext::Finished() { 1060 void PrintWebViewHelper::PrintPreviewContext::Finished() {
1053 DCHECK_EQ(DONE, state_); 1061 DCHECK_EQ(DONE, state_);
1054 ClearContext(); 1062 ClearContext();
1055 } 1063 }
1056 1064
1057 void PrintWebViewHelper::PrintPreviewContext::Abort() { 1065 void PrintWebViewHelper::PrintPreviewContext::Abort() {
1058 state_ = UNINITIALIZED; 1066 state_ = UNINITIALIZED;
1059 ClearContext(); 1067 ClearContext();
1060 frame_ = NULL; 1068 frame_ = NULL;
1061 node_.reset(); 1069 node_.reset();
1062 } 1070 }
1063 1071
1064 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() { 1072 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() {
1065 DCHECK_EQ(RENDERING, state_); 1073 DCHECK_EQ(RENDERING, state_);
1066 for (int i = 0; i < total_page_count_; i++) { 1074 if ((size_t)(render_page_list_index_ + 1) >= render_page_list_.size())
1067 if (!rendered_pages_[current_page_number_].first)
1068 break;
1069 current_page_number_ = (current_page_number_ + 1) % total_page_count_;
1070 }
1071 if (rendered_pages_[current_page_number_].first)
1072 return printing::INVALID_PAGE_INDEX; 1075 return printing::INVALID_PAGE_INDEX;
1073 rendered_pages_[current_page_number_].first = true; 1076 render_page_list_index_++;
1074 return current_page_number_; 1077 return render_page_list_[render_page_list_index_];
1075 } 1078 }
1076 1079
1077 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const { 1080 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const {
1078 return state_ != UNINITIALIZED; 1081 return state_ != UNINITIALIZED;
1079 } 1082 }
1080 1083
1081 bool PrintWebViewHelper::PrintPreviewContext::IsBusy() const { 1084 bool PrintWebViewHelper::PrintPreviewContext::IsBusy() const {
1082 return state_ == INITIALIZED || state_ == RENDERING; 1085 return state_ == INITIALIZED || state_ == RENDERING;
1083 } 1086 }
1084 1087
1085 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const { 1088 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const {
1086 // TODO(vandebo) I think this should only return false if the content is a 1089 // TODO(vandebo) I think this should only return false if the content is a
1087 // PDF, just because we are printing a particular node does not mean it's 1090 // PDF, just because we are printing a particular node does not mean it's
1088 // a PDF (right?), we should check the mime type of the node. 1091 // a PDF (right?), we should check the mime type of the node.
1089 if (node()) 1092 if (node())
1090 return false; 1093 return false;
1091 std::string mime(frame()->dataSource()->response().mimeType().utf8()); 1094 std::string mime(frame()->dataSource()->response().mimeType().utf8());
1092 return mime != "application/pdf"; 1095 return mime != "application/pdf";
1093 } 1096 }
1094 1097
1098 bool PrintWebViewHelper::PrintPreviewContext::IsCompleteMetafileReady() const {
1099 return render_page_list_index_ == complete_metafile_page_count_ - 1;
1100 }
1101
1095 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { 1102 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const {
1096 return frame_; 1103 return frame_;
1097 } 1104 }
1098 1105
1099 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { 1106 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const {
1100 return node_.get(); 1107 return node_.get();
1101 } 1108 }
1102 1109
1103 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const { 1110 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const {
1104 return total_page_count_; 1111 return total_page_count_;
1105 } 1112 }
1106 1113
1107 printing::Metafile* PrintWebViewHelper::PrintPreviewContext::metafile() const { 1114 printing::Metafile* PrintWebViewHelper::PrintPreviewContext::metafile() const {
1108 return metafile_.get(); 1115 return metafile_.get();
1109 } 1116 }
1110 1117
1111 const PrintMsg_Print_Params& 1118 const PrintMsg_Print_Params&
1112 PrintWebViewHelper::PrintPreviewContext::print_params() const { 1119 PrintWebViewHelper::PrintPreviewContext::print_params() const {
1113 return *print_params_; 1120 return *print_params_;
1114 } 1121 }
1115 1122
1116 const gfx::Size& 1123 const gfx::Size&
1117 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { 1124 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const {
1118 return prep_frame_view_->GetPrintCanvasSize(); 1125 return prep_frame_view_->GetPrintCanvasSize();
1119 } 1126 }
1120 1127
1121 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { 1128 void PrintWebViewHelper::PrintPreviewContext::ClearContext() {
1122 prep_frame_view_.reset(); 1129 prep_frame_view_.reset();
1123 metafile_.reset(); 1130 metafile_.reset();
1124 rendered_pages_.clear(); 1131 render_page_list_.clear();
1125 } 1132 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698