| 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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 93 // On the Mac, the printable area is in points, don't do any scaling based | 93 // On the Mac, the printable area is in points, don't do any scaling based |
| 94 // on dpi. | 94 // on dpi. |
| 95 return printing::kPointsPerInch; | 95 return printing::kPointsPerInch; |
| 96 #else | 96 #else |
| 97 return static_cast<int>(print_params->dpi); | 97 return static_cast<int>(print_params->dpi); |
| 98 #endif // defined(OS_MACOSX) | 98 #endif // defined(OS_MACOSX) |
| 99 } | 99 } |
| 100 | 100 |
| 101 bool PrintMsg_Print_Params_IsEmpty(const PrintMsg_Print_Params& params) { | 101 bool PrintMsg_Print_Params_IsEmpty(const PrintMsg_Print_Params& params) { |
| 102 return !params.document_cookie && !params.desired_dpi && !params.max_shrink && | 102 return !params.document_cookie && !params.desired_dpi && !params.max_shrink && |
| 103 !params.min_shrink && !params.dpi && params.printable_size.IsEmpty() && | 103 !params.min_shrink && !params.dpi && params.content_size.IsEmpty() && |
| 104 !params.selection_only && params.page_size.IsEmpty() && | 104 !params.selection_only && params.page_size.IsEmpty() && |
| 105 !params.margin_top && !params.margin_left && | 105 !params.margin_top && !params.margin_left && |
| 106 !params.supports_alpha_blend; | 106 !params.supports_alpha_blend; |
| 107 } | 107 } |
| 108 | 108 |
| 109 bool PageLayoutIsEqual(const PrintMsg_PrintPages_Params& oldParams, | 109 bool PageLayoutIsEqual(const PrintMsg_PrintPages_Params& oldParams, |
| 110 const PrintMsg_PrintPages_Params& newParams) { | 110 const PrintMsg_PrintPages_Params& newParams) { |
| 111 return oldParams.params.printable_size == newParams.params.printable_size && | 111 return oldParams.params.content_size == newParams.params.content_size && |
| 112 oldParams.params.page_size == newParams.params.page_size && | 112 oldParams.params.page_size == newParams.params.page_size && |
| 113 oldParams.params.margin_top == newParams.params.margin_top && | 113 oldParams.params.margin_top == newParams.params.margin_top && |
| 114 oldParams.params.margin_left == newParams.params.margin_left && | 114 oldParams.params.margin_left == newParams.params.margin_left && |
| 115 oldParams.params.desired_dpi == newParams.params.desired_dpi && | 115 oldParams.params.desired_dpi == newParams.params.desired_dpi && |
| 116 oldParams.params.dpi == newParams.params.dpi; | 116 oldParams.params.dpi == newParams.params.dpi; |
| 117 } | 117 } |
| 118 | 118 |
| 119 bool PrintMsg_Print_Params_IsEqual( | 119 bool PrintMsg_Print_Params_IsEqual( |
| 120 const PrintMsg_PrintPages_Params& oldParams, | 120 const PrintMsg_PrintPages_Params& oldParams, |
| 121 const PrintMsg_PrintPages_Params& newParams) { | 121 const PrintMsg_PrintPages_Params& newParams) { |
| 122 return PageLayoutIsEqual(oldParams, newParams) && | 122 return PageLayoutIsEqual(oldParams, newParams) && |
| 123 oldParams.params.max_shrink == newParams.params.max_shrink && | 123 oldParams.params.max_shrink == newParams.params.max_shrink && |
| 124 oldParams.params.min_shrink == newParams.params.min_shrink && | 124 oldParams.params.min_shrink == newParams.params.min_shrink && |
| 125 oldParams.params.selection_only == newParams.params.selection_only && | 125 oldParams.params.selection_only == newParams.params.selection_only && |
| 126 oldParams.params.supports_alpha_blend == | 126 oldParams.params.supports_alpha_blend == |
| 127 newParams.params.supports_alpha_blend && | 127 newParams.params.supports_alpha_blend && |
| 128 oldParams.pages.size() == newParams.pages.size() && | 128 oldParams.pages.size() == newParams.pages.size() && |
| 129 oldParams.params.display_header_footer == | 129 oldParams.params.display_header_footer == |
| 130 newParams.params.display_header_footer && | 130 newParams.params.display_header_footer && |
| 131 oldParams.params.date == newParams.params.date && | 131 oldParams.params.date == newParams.params.date && |
| 132 oldParams.params.title == newParams.params.title && | 132 oldParams.params.title == newParams.params.title && |
| 133 oldParams.params.url == newParams.params.url && | 133 oldParams.params.url == newParams.params.url && |
| 134 std::equal(oldParams.pages.begin(), oldParams.pages.end(), | 134 std::equal(oldParams.pages.begin(), oldParams.pages.end(), |
| 135 newParams.pages.begin()); | 135 newParams.pages.begin()); |
| 136 } | 136 } |
| 137 | 137 |
| 138 void CalculatePrintCanvasSize(const PrintMsg_Print_Params& print_params, | 138 void CalculatePrintCanvasSize(const PrintMsg_Print_Params& print_params, |
| 139 gfx::Size* result) { | 139 gfx::Size* result) { |
| 140 int dpi = GetDPI(&print_params); | 140 int dpi = GetDPI(&print_params); |
| 141 result->set_width(ConvertUnit(print_params.printable_size.width(), dpi, | 141 result->set_width(ConvertUnit(print_params.content_size.width(), dpi, |
| 142 print_params.desired_dpi)); | 142 print_params.desired_dpi)); |
| 143 | 143 |
| 144 result->set_height(ConvertUnit(print_params.printable_size.height(), dpi, | 144 result->set_height(ConvertUnit(print_params.content_size.height(), dpi, |
| 145 print_params.desired_dpi)); | 145 print_params.desired_dpi)); |
| 146 } | 146 } |
| 147 | 147 |
| 148 bool PrintingNodeOrPdfFrame(const WebFrame* frame, const WebNode& node) { | 148 bool PrintingNodeOrPdfFrame(const WebFrame* frame, const WebNode& node) { |
| 149 if (!node.isNull()) | 149 if (!node.isNull()) |
| 150 return true; | 150 return true; |
| 151 std::string mime(frame->dataSource()->response().mimeType().utf8()); | 151 std::string mime(frame->dataSource()->response().mimeType().utf8()); |
| 152 return mime == "application/pdf"; | 152 return mime == "application/pdf"; |
| 153 } | 153 } |
| 154 | 154 |
| (...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 WebSize page_size_in_pixels( | 888 WebSize page_size_in_pixels( |
| 889 ConvertUnit(default_params.page_size.width(), | 889 ConvertUnit(default_params.page_size.width(), |
| 890 dpi, printing::kPixelsPerInch), | 890 dpi, printing::kPixelsPerInch), |
| 891 ConvertUnit(default_params.page_size.height(), | 891 ConvertUnit(default_params.page_size.height(), |
| 892 dpi, printing::kPixelsPerInch)); | 892 dpi, printing::kPixelsPerInch)); |
| 893 int margin_top_in_pixels = ConvertUnit( | 893 int margin_top_in_pixels = ConvertUnit( |
| 894 default_params.margin_top, | 894 default_params.margin_top, |
| 895 dpi, printing::kPixelsPerInch); | 895 dpi, printing::kPixelsPerInch); |
| 896 int margin_right_in_pixels = ConvertUnit( | 896 int margin_right_in_pixels = ConvertUnit( |
| 897 default_params.page_size.width() - | 897 default_params.page_size.width() - |
| 898 default_params.printable_size.width() - default_params.margin_left, | 898 default_params.content_size.width() - default_params.margin_left, |
| 899 dpi, printing::kPixelsPerInch); | 899 dpi, printing::kPixelsPerInch); |
| 900 int margin_bottom_in_pixels = ConvertUnit( | 900 int margin_bottom_in_pixels = ConvertUnit( |
| 901 default_params.page_size.height() - | 901 default_params.page_size.height() - |
| 902 default_params.printable_size.height() - default_params.margin_top, | 902 default_params.content_size.height() - default_params.margin_top, |
| 903 dpi, printing::kPixelsPerInch); | 903 dpi, printing::kPixelsPerInch); |
| 904 int margin_left_in_pixels = ConvertUnit( | 904 int margin_left_in_pixels = ConvertUnit( |
| 905 default_params.margin_left, | 905 default_params.margin_left, |
| 906 dpi, printing::kPixelsPerInch); | 906 dpi, printing::kPixelsPerInch); |
| 907 | 907 |
| 908 if (frame) { | 908 if (frame) { |
| 909 frame->pageSizeAndMarginsInPixels(page_index, | 909 frame->pageSizeAndMarginsInPixels(page_index, |
| 910 page_size_in_pixels, | 910 page_size_in_pixels, |
| 911 margin_top_in_pixels, | 911 margin_top_in_pixels, |
| 912 margin_right_in_pixels, | 912 margin_right_in_pixels, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 WebFrame* frame, | 947 WebFrame* frame, |
| 948 const WebNode& node, | 948 const WebNode& node, |
| 949 PrepareFrameAndViewForPrint* prepare, | 949 PrepareFrameAndViewForPrint* prepare, |
| 950 PrintMsg_Print_Params* params) { | 950 PrintMsg_Print_Params* params) { |
| 951 if (PrintingNodeOrPdfFrame(frame, node)) | 951 if (PrintingNodeOrPdfFrame(frame, node)) |
| 952 return; | 952 return; |
| 953 PageSizeMargins page_layout_in_points; | 953 PageSizeMargins page_layout_in_points; |
| 954 PrintWebViewHelper::GetPageSizeAndMarginsInPoints(frame, 0, *params, | 954 PrintWebViewHelper::GetPageSizeAndMarginsInPoints(frame, 0, *params, |
| 955 &page_layout_in_points); | 955 &page_layout_in_points); |
| 956 int dpi = GetDPI(params); | 956 int dpi = GetDPI(params); |
| 957 params->printable_size = gfx::Size( | 957 params->content_size = gfx::Size( |
| 958 static_cast<int>(ConvertUnitDouble( | 958 static_cast<int>(ConvertUnitDouble( |
| 959 page_layout_in_points.content_width, | 959 page_layout_in_points.content_width, |
| 960 printing::kPointsPerInch, dpi)), | 960 printing::kPointsPerInch, dpi)), |
| 961 static_cast<int>(ConvertUnitDouble( | 961 static_cast<int>(ConvertUnitDouble( |
| 962 page_layout_in_points.content_height, | 962 page_layout_in_points.content_height, |
| 963 printing::kPointsPerInch, dpi))); | 963 printing::kPointsPerInch, dpi))); |
| 964 | 964 |
| 965 double page_width_in_points = | 965 double page_width_in_points = |
| 966 page_layout_in_points.content_width + | 966 page_layout_in_points.content_width + |
| 967 page_layout_in_points.margin_left + | 967 page_layout_in_points.margin_left + |
| (...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1557 DCHECK(IsRendering()); | 1557 DCHECK(IsRendering()); |
| 1558 return prep_frame_view_->GetPrintCanvasSize(); | 1558 return prep_frame_view_->GetPrintCanvasSize(); |
| 1559 } | 1559 } |
| 1560 | 1560 |
| 1561 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { | 1561 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { |
| 1562 prep_frame_view_.reset(); | 1562 prep_frame_view_.reset(); |
| 1563 metafile_.reset(); | 1563 metafile_.reset(); |
| 1564 pages_to_render_.clear(); | 1564 pages_to_render_.clear(); |
| 1565 error_ = PREVIEW_ERROR_NONE; | 1565 error_ = PREVIEW_ERROR_NONE; |
| 1566 } | 1566 } |
| OLD | NEW |