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 #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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |