OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/printing/print_web_view_helper.h" | 5 #include "chrome/renderer/printing/print_web_view_helper.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
554 } | 554 } |
555 | 555 |
556 const blink::WebNode& node() const { | 556 const blink::WebNode& node() const { |
557 return node_to_print_; | 557 return node_to_print_; |
558 } | 558 } |
559 | 559 |
560 int GetExpectedPageCount() const { | 560 int GetExpectedPageCount() const { |
561 return expected_pages_count_; | 561 return expected_pages_count_; |
562 } | 562 } |
563 | 563 |
564 gfx::Size GetPrintCanvasSize() const; | |
565 | |
566 void FinishPrinting(); | 564 void FinishPrinting(); |
567 | 565 |
568 bool IsLoadingSelection() { | 566 bool IsLoadingSelection() { |
569 // It's not selection if not |owns_web_view_|. | 567 // It's not selection if not |owns_web_view_|. |
570 return owns_web_view_ && frame() && frame()->isLoading(); | 568 return owns_web_view_ && frame() && frame()->isLoading(); |
571 } | 569 } |
572 | 570 |
573 // TODO(ojan): Remove this override and have this class use a non-null | 571 // TODO(ojan): Remove this override and have this class use a non-null |
574 // layerTreeView. | 572 // layerTreeView. |
575 // blink::WebViewClient override: | 573 // blink::WebViewClient override: |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 void PrepareFrameAndViewForPrint::frameDetached(blink::WebFrame* frame) { | 733 void PrepareFrameAndViewForPrint::frameDetached(blink::WebFrame* frame) { |
736 if (frame->parent()) | 734 if (frame->parent()) |
737 frame->parent()->removeChild(frame); | 735 frame->parent()->removeChild(frame); |
738 frame->close(); | 736 frame->close(); |
739 } | 737 } |
740 | 738 |
741 void PrepareFrameAndViewForPrint::CallOnReady() { | 739 void PrepareFrameAndViewForPrint::CallOnReady() { |
742 return on_ready_.Run(); // Can delete |this|. | 740 return on_ready_.Run(); // Can delete |this|. |
743 } | 741 } |
744 | 742 |
745 gfx::Size PrepareFrameAndViewForPrint::GetPrintCanvasSize() const { | |
746 DCHECK(is_printing_started_); | |
747 return gfx::Size(web_print_params_.printContentArea.width, | |
748 web_print_params_.printContentArea.height); | |
749 } | |
750 | |
751 void PrepareFrameAndViewForPrint::RestoreSize() { | 743 void PrepareFrameAndViewForPrint::RestoreSize() { |
752 if (frame()) { | 744 if (frame()) { |
753 blink::WebView* web_view = frame_.GetFrame()->view(); | 745 blink::WebView* web_view = frame_.GetFrame()->view(); |
754 web_view->resize(prev_view_size_); | 746 web_view->resize(prev_view_size_); |
755 if (blink::WebFrame* web_frame = web_view->mainFrame()) | 747 if (blink::WebFrame* web_frame = web_view->mainFrame()) |
756 web_frame->setScrollOffset(prev_scroll_offset_); | 748 web_frame->setScrollOffset(prev_scroll_offset_); |
757 } | 749 } |
758 } | 750 } |
759 | 751 |
760 void PrepareFrameAndViewForPrint::FinishPrinting() { | 752 void PrepareFrameAndViewForPrint::FinishPrinting() { |
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1350 int printed_count = params.pages.empty() ? page_count : params.pages.size(); | 1342 int printed_count = params.pages.empty() ? page_count : params.pages.size(); |
1351 #if !defined(OS_CHROMEOS) | 1343 #if !defined(OS_CHROMEOS) |
1352 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.SystemDialog", printed_count); | 1344 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.SystemDialog", printed_count); |
1353 #else | 1345 #else |
1354 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToCloudPrintWebDialog", | 1346 UMA_HISTOGRAM_COUNTS("PrintPreview.PageCount.PrintToCloudPrintWebDialog", |
1355 printed_count); | 1347 printed_count); |
1356 #endif // !defined(OS_CHROMEOS) | 1348 #endif // !defined(OS_CHROMEOS) |
1357 } | 1349 } |
1358 | 1350 |
1359 | 1351 |
1360 if (!PrintPagesNative(prep_frame_view_->frame(), page_count, | 1352 if (!PrintPagesNative(prep_frame_view_->frame(), page_count)) { |
1361 prep_frame_view_->GetPrintCanvasSize())) { | |
1362 LOG(ERROR) << "Printing failed."; | 1353 LOG(ERROR) << "Printing failed."; |
1363 return DidFinishPrinting(FAIL_PRINT); | 1354 return DidFinishPrinting(FAIL_PRINT); |
1364 } | 1355 } |
1365 } | 1356 } |
1366 | 1357 |
1367 void PrintWebViewHelper::FinishFramePrinting() { | 1358 void PrintWebViewHelper::FinishFramePrinting() { |
1368 prep_frame_view_.reset(); | 1359 prep_frame_view_.reset(); |
1369 } | 1360 } |
1370 | 1361 |
1371 #if defined(OS_MACOSX) | 1362 #if defined(OS_MACOSX) |
1372 bool PrintWebViewHelper::PrintPagesNative(blink::WebFrame* frame, | 1363 bool PrintWebViewHelper::PrintPagesNative(blink::WebFrame* frame, |
1373 int page_count, | 1364 int page_count) { |
1374 const gfx::Size& canvas_size) { | |
1375 const PrintMsg_PrintPages_Params& params = *print_pages_params_; | 1365 const PrintMsg_PrintPages_Params& params = *print_pages_params_; |
1376 const PrintMsg_Print_Params& print_params = params.params; | 1366 const PrintMsg_Print_Params& print_params = params.params; |
1377 | 1367 |
1378 PrintMsg_PrintPage_Params page_params; | 1368 PrintMsg_PrintPage_Params page_params; |
1379 page_params.params = print_params; | 1369 page_params.params = print_params; |
1380 if (params.pages.empty()) { | 1370 if (params.pages.empty()) { |
1381 for (int i = 0; i < page_count; ++i) { | 1371 for (int i = 0; i < page_count; ++i) { |
1382 page_params.page_number = i; | 1372 page_params.page_number = i; |
1383 PrintPageInternal(page_params, canvas_size, frame); | 1373 PrintPageInternal(page_params, frame); |
1384 } | 1374 } |
1385 } else { | 1375 } else { |
1386 for (size_t i = 0; i < params.pages.size(); ++i) { | 1376 for (size_t i = 0; i < params.pages.size(); ++i) { |
1387 if (params.pages[i] >= page_count) | 1377 if (params.pages[i] >= page_count) |
1388 break; | 1378 break; |
1389 page_params.page_number = params.pages[i]; | 1379 page_params.page_number = params.pages[i]; |
1390 PrintPageInternal(page_params, canvas_size, frame); | 1380 PrintPageInternal(page_params, frame); |
1391 } | 1381 } |
1392 } | 1382 } |
1393 return true; | 1383 return true; |
1394 } | 1384 } |
1395 | 1385 |
1396 #endif // OS_MACOSX | 1386 #endif // OS_MACOSX |
1397 | 1387 |
1398 // static - Not anonymous so that platform implementations can use it. | 1388 // static - Not anonymous so that platform implementations can use it. |
1399 void PrintWebViewHelper::ComputePageLayoutInPointsForCss( | 1389 void PrintWebViewHelper::ComputePageLayoutInPointsForCss( |
1400 blink::WebFrame* frame, | 1390 blink::WebFrame* frame, |
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1967 | 1957 |
1968 PdfMetafileSkia* PrintWebViewHelper::PrintPreviewContext::metafile() { | 1958 PdfMetafileSkia* PrintWebViewHelper::PrintPreviewContext::metafile() { |
1969 DCHECK(IsRendering()); | 1959 DCHECK(IsRendering()); |
1970 return metafile_.get(); | 1960 return metafile_.get(); |
1971 } | 1961 } |
1972 | 1962 |
1973 int PrintWebViewHelper::PrintPreviewContext::last_error() const { | 1963 int PrintWebViewHelper::PrintPreviewContext::last_error() const { |
1974 return error_; | 1964 return error_; |
1975 } | 1965 } |
1976 | 1966 |
1977 gfx::Size PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { | |
1978 DCHECK(IsRendering()); | |
1979 return prep_frame_view_->GetPrintCanvasSize(); | |
1980 } | |
1981 | |
1982 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { | 1967 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { |
1983 prep_frame_view_.reset(); | 1968 prep_frame_view_.reset(); |
1984 metafile_.reset(); | 1969 metafile_.reset(); |
1985 pages_to_render_.clear(); | 1970 pages_to_render_.clear(); |
1986 error_ = PREVIEW_ERROR_NONE; | 1971 error_ = PREVIEW_ERROR_NONE; |
1987 } | 1972 } |
1988 | 1973 |
1989 void PrintWebViewHelper::SetPrintPagesParams( | 1974 void PrintWebViewHelper::SetPrintPagesParams( |
1990 const PrintMsg_PrintPages_Params& settings) { | 1975 const PrintMsg_PrintPages_Params& settings) { |
1991 print_pages_params_.reset(new PrintMsg_PrintPages_Params(settings)); | 1976 print_pages_params_.reset(new PrintMsg_PrintPages_Params(settings)); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2032 blink::WebConsoleMessage::LevelWarning, message)); | 2017 blink::WebConsoleMessage::LevelWarning, message)); |
2033 return false; | 2018 return false; |
2034 } | 2019 } |
2035 | 2020 |
2036 void PrintWebViewHelper::ScriptingThrottler::Reset() { | 2021 void PrintWebViewHelper::ScriptingThrottler::Reset() { |
2037 // Reset counter on successful print. | 2022 // Reset counter on successful print. |
2038 count_ = 0; | 2023 count_ = 0; |
2039 } | 2024 } |
2040 | 2025 |
2041 } // namespace printing | 2026 } // namespace printing |
OLD | NEW |