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

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

Issue 7647010: Print preview page selection should not require a rerendering of draft pages. (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 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 #if defined(OS_MACOSX) && !defined(USE_SKIA) 7 #if defined(OS_MACOSX) && !defined(USE_SKIA)
8 #include <CoreGraphics/CGContext.h> 8 #include <CoreGraphics/CGContext.h>
9 #endif 9 #endif
10 10
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 if (WebFrame* web_frame = web_view_->mainFrame()) 492 if (WebFrame* web_frame = web_view_->mainFrame())
493 web_frame->setScrollOffset(prev_scroll_offset_); 493 web_frame->setScrollOffset(prev_scroll_offset_);
494 } 494 }
495 } 495 }
496 496
497 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) 497 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view)
498 : RenderViewObserver(render_view), 498 : RenderViewObserver(render_view),
499 RenderViewObserverTracker<PrintWebViewHelper>(render_view), 499 RenderViewObserverTracker<PrintWebViewHelper>(render_view),
500 print_web_view_(NULL), 500 print_web_view_(NULL),
501 is_preview_(switches::IsPrintPreviewEnabled()), 501 is_preview_(switches::IsPrintPreviewEnabled()),
502 is_print_ready_metafile_sent_(false),
502 user_cancelled_scripted_print_count_(0), 503 user_cancelled_scripted_print_count_(0),
503 notify_browser_of_print_failure_(true) { 504 notify_browser_of_print_failure_(true) {
504 } 505 }
505 506
506 PrintWebViewHelper::~PrintWebViewHelper() {} 507 PrintWebViewHelper::~PrintWebViewHelper() {}
507 508
508 // Prints |frame| which called window.print(). 509 // Prints |frame| which called window.print().
509 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { 510 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) {
510 DCHECK(frame); 511 DCHECK(frame);
511 512
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
651 preview_params.reuse_existing_data = true; 652 preview_params.reuse_existing_data = true;
652 preview_params.data_size = 0; 653 preview_params.data_size = 0;
653 preview_params.document_cookie = 654 preview_params.document_cookie =
654 print_pages_params_->params.document_cookie; 655 print_pages_params_->params.document_cookie;
655 preview_params.expected_pages_count = 656 preview_params.expected_pages_count =
656 print_preview_context_.total_page_count(); 657 print_preview_context_.total_page_count();
657 preview_params.modifiable = print_preview_context_.IsModifiable(); 658 preview_params.modifiable = print_preview_context_.IsModifiable();
658 preview_params.preview_request_id = 659 preview_params.preview_request_id =
659 print_pages_params_->params.preview_request_id; 660 print_pages_params_->params.preview_request_id;
660 661
661 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); 662 Send(new PrintHostMsg_MetafileReadyForPrinting(routing_id(),
663 preview_params));
662 return; 664 return;
663 } 665 }
664 // Always clear |old_print_pages_params_| before rendering the pages. 666 // Always clear |old_print_pages_params_| before rendering the pages.
665 old_print_pages_params_.reset(); 667 old_print_pages_params_.reset();
668 is_print_ready_metafile_sent_ = false;
666 669
667 // PDF printer device supports alpha blending. 670 // PDF printer device supports alpha blending.
668 print_pages_params_->params.supports_alpha_blend = true; 671 print_pages_params_->params.supports_alpha_blend = true;
672
673 bool generate_draft_pages;
vandebo (ex-Chrome) 2011/08/29 18:21:56 default value?
kmadhusu 2011/08/30 17:27:00 Done.
674 if (!settings.GetBoolean(printing::kSettingGenerateDraftData,
675 &generate_draft_pages)) {
676 NOTREACHED();
677 }
678 print_preview_context_.set_generate_draft_pages(generate_draft_pages);
679
669 if (CreatePreviewDocument()) { 680 if (CreatePreviewDocument()) {
670 DidFinishPrinting(OK); 681 DidFinishPrinting(OK);
671 } else { 682 } else {
672 if (notify_browser_of_print_failure_) 683 if (notify_browser_of_print_failure_)
673 LOG(ERROR) << "CreatePreviewDocument failed"; 684 LOG(ERROR) << "CreatePreviewDocument failed";
674 DidFinishPrinting(FAIL_PREVIEW); 685 DidFinishPrinting(FAIL_PREVIEW);
675 } 686 }
676 } 687 }
677 688
678 bool PrintWebViewHelper::CreatePreviewDocument() { 689 bool PrintWebViewHelper::CreatePreviewDocument() {
679 PrintMsg_Print_Params print_params = print_pages_params_->params; 690 PrintMsg_Print_Params print_params = print_pages_params_->params;
680 const std::vector<int>& pages = print_pages_params_->pages; 691 const std::vector<int>& pages = print_pages_params_->pages;
681 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages)) 692 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages))
682 return false; 693 return false;
683 PrintHostMsg_DidGetPreviewPageCount_Params params; 694 PrintHostMsg_DidGetPreviewPageCount_Params params;
684 params.page_count = print_preview_context_.total_page_count(); 695 params.page_count = print_preview_context_.total_page_count();
685 params.is_modifiable = print_preview_context_.IsModifiable(); 696 params.is_modifiable = print_preview_context_.IsModifiable();
686 params.document_cookie = print_pages_params_->params.document_cookie; 697 params.document_cookie = print_pages_params_->params.document_cookie;
687 params.preview_request_id = print_pages_params_->params.preview_request_id; 698 params.preview_request_id = print_pages_params_->params.preview_request_id;
699 params.clear_preview_data = print_preview_context_.generate_draft_pages();
688 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params)); 700 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params));
689 if (CheckForCancel()) 701 if (CheckForCancel())
690 return false; 702 return false;
691 703
692 int page_number; 704 int page_number;
693 while ((page_number = print_preview_context_.GetNextPageNumber()) >= 0) { 705 while ((page_number = print_preview_context_.GetNextPageNumber()) >= 0) {
694 if (!RenderPreviewPage(page_number)) 706 if (!RenderPreviewPage(page_number))
695 return false; 707 return false;
696 if (CheckForCancel()) 708 if (CheckForCancel())
697 return false; 709 return false;
698 }; 710 if (print_preview_context_.IsLastPageOfPrintReadyMetafile()) {
699 711 // Finished generating preview. Finalize the document.
700 // Finished generating preview. Finalize the document. 712 if (!FinalizePrintReadyDocument())
701 if (!FinalizePreviewDocument()) 713 return false;
702 return false; 714 }
715 }
716 print_preview_context_.AllPagesRendered();
703 print_preview_context_.Finished(); 717 print_preview_context_.Finished();
704 return true; 718 return true;
705 } 719 }
706 720
707 bool PrintWebViewHelper::FinalizePreviewDocument() { 721 bool PrintWebViewHelper::FinalizePrintReadyDocument() {
708 print_preview_context_.FinalizePreviewDocument(); 722 DCHECK(!is_print_ready_metafile_sent_);
723 print_preview_context_.FinalizePrintReadyDocument();
709 724
710 // Get the size of the resulting metafile. 725 // Get the size of the resulting metafile.
711 printing::PreviewMetafile* metafile = print_preview_context_.metafile(); 726 printing::PreviewMetafile* metafile = print_preview_context_.metafile();
712 uint32 buf_size = metafile->GetDataSize(); 727 uint32 buf_size = metafile->GetDataSize();
713 DCHECK_GT(buf_size, 0u); 728 DCHECK_GT(buf_size, 0u);
714 729
715 PrintHostMsg_DidPreviewDocument_Params preview_params; 730 PrintHostMsg_DidPreviewDocument_Params preview_params;
716 preview_params.reuse_existing_data = false; 731 preview_params.reuse_existing_data = false;
717 preview_params.data_size = buf_size; 732 preview_params.data_size = buf_size;
718 preview_params.document_cookie = print_pages_params_->params.document_cookie; 733 preview_params.document_cookie = print_pages_params_->params.document_cookie;
719 preview_params.expected_pages_count = 734 preview_params.expected_pages_count =
720 print_preview_context_.total_page_count(); 735 print_preview_context_.total_page_count();
721 preview_params.modifiable = print_preview_context_.IsModifiable(); 736 preview_params.modifiable = print_preview_context_.IsModifiable();
722 preview_params.preview_request_id = 737 preview_params.preview_request_id =
723 print_pages_params_->params.preview_request_id; 738 print_pages_params_->params.preview_request_id;
724 739
725 // Ask the browser to create the shared memory for us. 740 // Ask the browser to create the shared memory for us.
726 if (!CopyMetafileDataToSharedMem(metafile, 741 if (!CopyMetafileDataToSharedMem(metafile,
727 &(preview_params.metafile_data_handle))) { 742 &(preview_params.metafile_data_handle))) {
728 LOG(ERROR) << "CopyMetafileDataToSharedMem failed"; 743 LOG(ERROR) << "CopyMetafileDataToSharedMem failed";
729 return false; 744 return false;
730 } 745 }
731 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); 746 is_print_ready_metafile_sent_ = true;
747
748 Send(new PrintHostMsg_MetafileReadyForPrinting(routing_id(), preview_params));
732 return true; 749 return true;
733 } 750 }
734 751
735 void PrintWebViewHelper::OnPrintingDone(bool success) { 752 void PrintWebViewHelper::OnPrintingDone(bool success) {
736 notify_browser_of_print_failure_ = false; 753 notify_browser_of_print_failure_ = false;
737 if (success == FAIL_PRINT) 754 if (success == FAIL_PRINT)
738 LOG(ERROR) << "Failure in OnPrintingDone"; 755 LOG(ERROR) << "Failure in OnPrintingDone";
739 DidFinishPrinting(success ? OK : FAIL_PRINT); 756 DidFinishPrinting(success ? OK : FAIL_PRINT);
740 } 757 }
741 758
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 if (cancel) 1265 if (cancel)
1249 notify_browser_of_print_failure_ = false; 1266 notify_browser_of_print_failure_ = false;
1250 return cancel; 1267 return cancel;
1251 } 1268 }
1252 1269
1253 bool PrintWebViewHelper::PreviewPageRendered(int page_number, 1270 bool PrintWebViewHelper::PreviewPageRendered(int page_number,
1254 printing::Metafile* metafile) { 1271 printing::Metafile* metafile) {
1255 DCHECK_GE(page_number, printing::FIRST_PAGE_INDEX); 1272 DCHECK_GE(page_number, printing::FIRST_PAGE_INDEX);
1256 1273
1257 // For non-modifiable files, |metafile| should be NULL, so do not bother 1274 // For non-modifiable files, |metafile| should be NULL, so do not bother
1258 // sending a message. 1275 // sending a message. If we don't generate draft metafiles, |metafile| is
1259 if (!print_preview_context_.IsModifiable()) { 1276 // NULL.
1277 if (!print_preview_context_.IsModifiable() ||
1278 !print_preview_context_.generate_draft_pages()) {
1260 DCHECK(!metafile); 1279 DCHECK(!metafile);
1261 return true; 1280 return true;
1262 } 1281 }
1263 1282
1264 if (!metafile) { 1283 if (!metafile) {
1265 NOTREACHED(); 1284 NOTREACHED();
1266 return false; 1285 return false;
1267 } 1286 }
1268 1287
1269 PrintHostMsg_DidPreviewPage_Params preview_page_params; 1288 PrintHostMsg_DidPreviewPage_Params preview_page_params;
(...skipping 10 matching lines...) Expand all
1280 preview_page_params.preview_request_id = 1299 preview_page_params.preview_request_id =
1281 print_pages_params_->params.preview_request_id; 1300 print_pages_params_->params.preview_request_id;
1282 1301
1283 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params)); 1302 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params));
1284 return true; 1303 return true;
1285 } 1304 }
1286 1305
1287 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext() 1306 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext()
1288 : frame_(NULL), 1307 : frame_(NULL),
1289 total_page_count_(0), 1308 total_page_count_(0),
1290 actual_page_count_(0), 1309 render_page_list_index_(-1),
1291 current_page_index_(0), 1310 generate_draft_pages_(true),
1311 print_ready_metafile_page_count_(0),
1292 state_(UNINITIALIZED) { 1312 state_(UNINITIALIZED) {
1293 } 1313 }
1294 1314
1295 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() { 1315 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() {
1296 } 1316 }
1297 1317
1298 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame( 1318 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame(
1299 WebKit::WebFrame* web_frame) { 1319 WebKit::WebFrame* web_frame) {
1300 DCHECK(web_frame); 1320 DCHECK(web_frame);
1301 state_ = INITIALIZED; 1321 state_ = INITIALIZED;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1335 node())); 1355 node()));
1336 UpdatePrintableSizeInPrintParameters(frame_, node_.get(), 1356 UpdatePrintableSizeInPrintParameters(frame_, node_.get(),
1337 prep_frame_view_.get(), print_params); 1357 prep_frame_view_.get(), print_params);
1338 1358
1339 total_page_count_ = prep_frame_view_->GetExpectedPageCount(); 1359 total_page_count_ = prep_frame_view_->GetExpectedPageCount();
1340 if (total_page_count_ == 0) { 1360 if (total_page_count_ == 0) {
1341 LOG(ERROR) << "CreatePreviewDocument got 0 page count"; 1361 LOG(ERROR) << "CreatePreviewDocument got 0 page count";
1342 return false; 1362 return false;
1343 } 1363 }
1344 1364
1345 current_page_index_ = 0; 1365 int selected_page_count = pages.size();
1346 if (pages.empty()) { 1366 render_page_list_index_ = -1;
1347 actual_page_count_ = total_page_count_; 1367 print_ready_metafile_page_count_ = pages.empty() ? total_page_count_ :
vandebo (ex-Chrome) 2011/08/29 18:21:56 Just use an if here... count_ = selected_page_coun
kmadhusu 2011/08/30 17:27:00 Done.
1348 for (int i = 0; i < actual_page_count_; ++i) 1368 selected_page_count;
1349 pages_to_render_.push_back(i); 1369 render_page_list_ = pages;
1350 } else { 1370 if (selected_page_count == 0) {
1351 actual_page_count_ = pages.size(); 1371 // Render all pages.
vandebo (ex-Chrome) 2011/08/29 18:21:56 Acutally, you already have the if...
kmadhusu 2011/08/30 17:27:00 Fixed.
1352 for (int i = 0; i < actual_page_count_; ++i) { 1372 for (int i = 0; i < total_page_count_; i++)
1353 int page_number = pages[i]; 1373 render_page_list_.push_back(i);
1354 if (page_number < printing::FIRST_PAGE_INDEX || 1374 } else if (generate_draft_pages_) {
1355 page_number >= total_page_count_) { 1375 int pages_index = 0;
1356 LOG(ERROR) << "CreatePreviewDocument got invalid page count " 1376 for (int i = 0; i < total_page_count_; i++) {
1357 << page_number << " at index " << i; 1377 if (pages_index < selected_page_count && i == pages[pages_index]) {
1358 return false; 1378 pages_index++;
1379 continue;
1359 } 1380 }
1360 pages_to_render_.push_back(page_number); 1381 render_page_list_.push_back(i);
1361 } 1382 }
1362 } 1383 }
1363 1384
1364 document_render_time_ = base::TimeDelta(); 1385 document_render_time_ = base::TimeDelta();
1365 begin_time_ = base::TimeTicks::Now(); 1386 begin_time_ = base::TimeTicks::Now();
1366 1387
1367 return true; 1388 return true;
1368 } 1389 }
1369 1390
1370 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage( 1391 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage(
1371 const base::TimeDelta& page_time) { 1392 const base::TimeDelta& page_time) {
1372 DCHECK_EQ(RENDERING, state_); 1393 DCHECK_EQ(RENDERING, state_);
1373 document_render_time_ += page_time; 1394 document_render_time_ += page_time;
1374 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time); 1395 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time);
1375 } 1396 }
1376 1397
1377 void PrintWebViewHelper::PrintPreviewContext::FinalizePreviewDocument() { 1398 void PrintWebViewHelper::PrintPreviewContext::AllPagesRendered() {
1378 DCHECK_EQ(RENDERING, state_); 1399 DCHECK_EQ(RENDERING, state_);
1379 state_ = DONE; 1400 state_ = DONE;
1401 prep_frame_view_->FinishPrinting();
1402 }
1403
1404 void PrintWebViewHelper::PrintPreviewContext::FinalizePrintReadyDocument() {
1405 if (state_ != DONE && state_ != RENDERING)
1406 NOTREACHED();
1380 1407
1381 base::TimeTicks begin_time = base::TimeTicks::Now(); 1408 base::TimeTicks begin_time = base::TimeTicks::Now();
1382
1383 prep_frame_view_->FinishPrinting();
1384 metafile_->FinishDocument(); 1409 metafile_->FinishDocument();
1385 1410
1386 if (actual_page_count_ <= 0) { 1411 if (print_ready_metafile_page_count_ <= 0) {
1387 NOTREACHED(); 1412 NOTREACHED();
1388 return; 1413 return;
1389 } 1414 }
1390 1415
1391 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime", 1416 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime",
1392 document_render_time_); 1417 document_render_time_);
1393 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) + 1418 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) +
1394 document_render_time_; 1419 document_render_time_;
1395 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime", 1420 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime",
1396 total_time); 1421 total_time);
1397 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage", 1422 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage",
1398 total_time / actual_page_count_); 1423 total_time / render_page_list_.size());
1399 } 1424 }
1400 1425
1401 void PrintWebViewHelper::PrintPreviewContext::Finished() { 1426 void PrintWebViewHelper::PrintPreviewContext::Finished() {
1402 DCHECK_EQ(DONE, state_); 1427 DCHECK_EQ(DONE, state_);
1403 ClearContext(); 1428 ClearContext();
1404 } 1429 }
1405 1430
1406 void PrintWebViewHelper::PrintPreviewContext::Failed() { 1431 void PrintWebViewHelper::PrintPreviewContext::Failed() {
1407 DCHECK(state_ == INITIALIZED || state_ == RENDERING); 1432 DCHECK(state_ == INITIALIZED || state_ == RENDERING);
1408 state_ = INITIALIZED; 1433 state_ = INITIALIZED;
1409 ClearContext(); 1434 ClearContext();
1410 } 1435 }
1411 1436
1412 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() { 1437 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() {
1413 DCHECK_EQ(RENDERING, state_); 1438 DCHECK_EQ(RENDERING, state_);
1414 if (current_page_index_ >= actual_page_count_) 1439 if ((size_t)(render_page_list_index_ + 1) == render_page_list_.size())
1415 return -1; 1440 return -1;
1416 return pages_to_render_[current_page_index_++]; 1441 render_page_list_index_++;
vandebo (ex-Chrome) 2011/08/29 18:21:56 nit: Maybe init to 0 and post increment is clenaer
kmadhusu 2011/08/30 17:27:00 Done.
1442 return render_page_list_[render_page_list_index_];
1417 } 1443 }
1418 1444
1419 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const { 1445 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const {
1420 return state_ != UNINITIALIZED; 1446 return state_ != UNINITIALIZED;
1421 } 1447 }
1422 1448
1423 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const { 1449 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const {
1424 // TODO(vandebo) I think this should only return false if the content is a 1450 // TODO(vandebo) I think this should only return false if the content is a
1425 // PDF, just because we are printing a particular node does not mean it's 1451 // PDF, just because we are printing a particular node does not mean it's
1426 // a PDF (right?), we should check the mime type of the node. 1452 // a PDF (right?), we should check the mime type of the node.
1427 if (node()) 1453 if (node())
1428 return false; 1454 return false;
1429 std::string mime(frame()->dataSource()->response().mimeType().utf8()); 1455 std::string mime(frame()->dataSource()->response().mimeType().utf8());
1430 return mime != "application/pdf"; 1456 return mime != "application/pdf";
1431 } 1457 }
1432 1458
1459 bool PrintWebViewHelper::PrintPreviewContext::IsLastPageOfPrintReadyMetafile()
1460 const {
1461 return render_page_list_index_ == print_ready_metafile_page_count_ - 1;
1462 }
1463
1464 void PrintWebViewHelper::PrintPreviewContext::set_generate_draft_pages(
1465 bool generate_draft_pages) {
1466 generate_draft_pages_ = generate_draft_pages;
1467 }
1468
1433 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { 1469 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const {
1434 return frame_; 1470 return frame_;
1435 } 1471 }
1436 1472
1437 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { 1473 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const {
1438 return node_.get(); 1474 return node_.get();
1439 } 1475 }
1440 1476
1441 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const { 1477 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const {
1442 DCHECK(IsReadyToRender()); 1478 DCHECK(IsReadyToRender());
1443 return total_page_count_; 1479 return total_page_count_;
1444 } 1480 }
1445 1481
1482 bool PrintWebViewHelper::PrintPreviewContext::generate_draft_pages() {
1483 return generate_draft_pages_;
1484 }
1485
1446 printing::PreviewMetafile* 1486 printing::PreviewMetafile*
1447 PrintWebViewHelper::PrintPreviewContext::metafile() const { 1487 PrintWebViewHelper::PrintPreviewContext::metafile() const {
1448 return metafile_.get(); 1488 return metafile_.get();
1449 } 1489 }
1450 1490
1451 const PrintMsg_Print_Params& 1491 const PrintMsg_Print_Params&
1452 PrintWebViewHelper::PrintPreviewContext::print_params() const { 1492 PrintWebViewHelper::PrintPreviewContext::print_params() const {
1453 return *print_params_; 1493 return *print_params_;
1454 } 1494 }
1455 1495
1456 const gfx::Size& 1496 const gfx::Size&
1457 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { 1497 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const {
1458 return prep_frame_view_->GetPrintCanvasSize(); 1498 return prep_frame_view_->GetPrintCanvasSize();
1459 } 1499 }
1460 1500
1461 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { 1501 void PrintWebViewHelper::PrintPreviewContext::ClearContext() {
1462 prep_frame_view_.reset(); 1502 prep_frame_view_.reset();
1463 metafile_.reset(); 1503 metafile_.reset();
1464 pages_to_render_.clear(); 1504 render_page_list_.clear();
1465 } 1505 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698