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