Chromium Code Reviews| 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 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 695 PrintHostMsg_DidGetPreviewPageCount_Params params; | 695 PrintHostMsg_DidGetPreviewPageCount_Params params; |
| 696 params.page_count = print_preview_context_.total_page_count(); | 696 params.page_count = print_preview_context_.total_page_count(); |
| 697 params.is_modifiable = print_preview_context_.IsModifiable(); | 697 params.is_modifiable = print_preview_context_.IsModifiable(); |
| 698 params.document_cookie = print_pages_params_->params.document_cookie; | 698 params.document_cookie = print_pages_params_->params.document_cookie; |
| 699 params.preview_request_id = print_pages_params_->params.preview_request_id; | 699 params.preview_request_id = print_pages_params_->params.preview_request_id; |
| 700 params.clear_preview_data = print_preview_context_.generate_draft_pages(); | 700 params.clear_preview_data = print_preview_context_.generate_draft_pages(); |
| 701 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params)); | 701 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params)); |
| 702 if (CheckForCancel()) | 702 if (CheckForCancel()) |
| 703 return false; | 703 return false; |
| 704 | 704 |
| 705 int page_number; | 705 while (!print_preview_context_.IsFinalPageRendered()) { |
|
kmadhusu
2011/09/01 18:40:20
GetNextPageNumber() function needs to be called wh
| |
| 706 while ((page_number = print_preview_context_.GetNextPageNumber()) >= 0) { | 706 int page_number = print_preview_context_.GetNextPageNumber(); |
| 707 DCHECK(page_number >= 0); | |
| 707 if (!RenderPreviewPage(page_number)) | 708 if (!RenderPreviewPage(page_number)) |
| 708 return false; | 709 return false; |
| 710 | |
| 709 if (CheckForCancel()) | 711 if (CheckForCancel()) |
| 710 return false; | 712 return false; |
| 713 | |
| 714 // AllPagesRendered() will be called only once i.e., after rendering the | |
|
vandebo (ex-Chrome)
2011/09/01 18:53:56
I wouldn't include the second part of this comment
kmadhusu
2011/09/01 20:07:14
Done..
| |
| 715 // required pages. This code is here because if we are previewing a PDF | |
| 716 // file, we need to invoke PrepareFrameAndViewForPrint::FinishPrinting() | |
| 717 // before calling PreviewMetafile::FinishDocument(). | |
| 718 // | |
| 719 // This function call ordering is not required if we are previewing a | |
| 720 // normal html page. We can invoke PreviewMetafile::FinishDocument() as | |
| 721 // soon as the print ready doucment is available. | |
| 722 if (print_preview_context_.IsFinalPageRendered()) | |
| 723 print_preview_context_.AllPagesRendered(); | |
| 724 | |
| 711 if (print_preview_context_.IsLastPageOfPrintReadyMetafile()) { | 725 if (print_preview_context_.IsLastPageOfPrintReadyMetafile()) { |
|
vandebo (ex-Chrome)
2011/09/01 18:53:56
To help enforce the comment, you can add a DCHECK
kmadhusu
2011/09/01 20:07:14
Done.
| |
| 712 // Finished generating preview. Finalize the document. | |
| 713 if (!FinalizePrintReadyDocument()) | 726 if (!FinalizePrintReadyDocument()) |
| 714 return false; | 727 return false; |
| 715 } | 728 } |
| 716 } | 729 } |
| 717 print_preview_context_.AllPagesRendered(); | |
| 718 print_preview_context_.Finished(); | 730 print_preview_context_.Finished(); |
| 719 return true; | 731 return true; |
| 720 } | 732 } |
| 721 | 733 |
| 722 bool PrintWebViewHelper::FinalizePrintReadyDocument() { | 734 bool PrintWebViewHelper::FinalizePrintReadyDocument() { |
| 723 DCHECK(!is_print_ready_metafile_sent_); | 735 DCHECK(!is_print_ready_metafile_sent_); |
| 724 print_preview_context_.FinalizePrintReadyDocument(); | 736 print_preview_context_.FinalizePrintReadyDocument(); |
| 725 | 737 |
| 726 // Get the size of the resulting metafile. | 738 // Get the size of the resulting metafile. |
| 727 printing::PreviewMetafile* metafile = print_preview_context_.metafile(); | 739 printing::PreviewMetafile* metafile = print_preview_context_.metafile(); |
| (...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1463 return false; | 1475 return false; |
| 1464 std::string mime(frame()->dataSource()->response().mimeType().utf8()); | 1476 std::string mime(frame()->dataSource()->response().mimeType().utf8()); |
| 1465 return mime != "application/pdf"; | 1477 return mime != "application/pdf"; |
| 1466 } | 1478 } |
| 1467 | 1479 |
| 1468 bool PrintWebViewHelper::PrintPreviewContext::IsLastPageOfPrintReadyMetafile() | 1480 bool PrintWebViewHelper::PrintPreviewContext::IsLastPageOfPrintReadyMetafile() |
| 1469 const { | 1481 const { |
| 1470 return current_page_index_ == print_ready_metafile_page_count_; | 1482 return current_page_index_ == print_ready_metafile_page_count_; |
| 1471 } | 1483 } |
| 1472 | 1484 |
| 1485 bool PrintWebViewHelper::PrintPreviewContext::IsFinalPageRendered() const { | |
| 1486 return (size_t)current_page_index_ == pages_to_render_.size(); | |
|
vandebo (ex-Chrome)
2011/09/01 18:53:56
static_cast<size_t>
kmadhusu
2011/09/01 20:07:14
Done.
| |
| 1487 } | |
| 1488 | |
| 1473 void PrintWebViewHelper::PrintPreviewContext::set_generate_draft_pages( | 1489 void PrintWebViewHelper::PrintPreviewContext::set_generate_draft_pages( |
| 1474 bool generate_draft_pages) { | 1490 bool generate_draft_pages) { |
| 1475 generate_draft_pages_ = generate_draft_pages; | 1491 generate_draft_pages_ = generate_draft_pages; |
| 1476 } | 1492 } |
| 1477 | 1493 |
| 1478 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { | 1494 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { |
| 1479 return frame_; | 1495 return frame_; |
| 1480 } | 1496 } |
| 1481 | 1497 |
| 1482 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { | 1498 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 1505 const gfx::Size& | 1521 const gfx::Size& |
| 1506 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { | 1522 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { |
| 1507 return prep_frame_view_->GetPrintCanvasSize(); | 1523 return prep_frame_view_->GetPrintCanvasSize(); |
| 1508 } | 1524 } |
| 1509 | 1525 |
| 1510 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { | 1526 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { |
| 1511 prep_frame_view_.reset(); | 1527 prep_frame_view_.reset(); |
| 1512 metafile_.reset(); | 1528 metafile_.reset(); |
| 1513 pages_to_render_.clear(); | 1529 pages_to_render_.clear(); |
| 1514 } | 1530 } |
| OLD | NEW |