Chromium Code Reviews| Index: chrome/renderer/print_web_view_helper.cc |
| diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc |
| index eca957e978ed6d57d038bee20f6e8a92118490fa..51d448743bed1e19295f2a541a57f5501b1125c3 100644 |
| --- a/chrome/renderer/print_web_view_helper.cc |
| +++ b/chrome/renderer/print_web_view_helper.cc |
| @@ -852,7 +852,11 @@ void PrintWebViewHelper::OnPrintPreview(const DictionaryValue& settings) { |
| } |
| print_preview_context_.set_generate_draft_pages(generate_draft_pages); |
| - if (CreatePreviewDocument()) { |
| + int margins_type = 0; |
| + if (!settings.GetInteger(printing::kSettingMarginsType, &margins_type)) |
| + margins_type = printing::DEFAULT_MARGINS; |
| + |
| + if (CreatePreviewDocument(margins_type)) { |
| DidFinishPrinting(OK); |
| } else { |
| if (notify_browser_of_print_failure_) |
| @@ -861,7 +865,7 @@ void PrintWebViewHelper::OnPrintPreview(const DictionaryValue& settings) { |
| } |
| } |
| -bool PrintWebViewHelper::CreatePreviewDocument() { |
| +bool PrintWebViewHelper::CreatePreviewDocument(int margins_type) { |
| PrintMsg_Print_Params print_params = print_pages_params_->params; |
| const std::vector<int>& pages = print_pages_params_->pages; |
| if (!print_preview_context_.CreatePreviewDocument(&print_params, pages, |
| @@ -874,20 +878,47 @@ bool PrintWebViewHelper::CreatePreviewDocument() { |
| ComputePageLayoutInPointsForCss(print_preview_context_.frame(), 0, |
| print_params, ignore_css_margins_, |
| fit_to_page_, NULL, &default_page_layout); |
| + |
| + bool preview_is_modifiable = print_preview_context_.IsModifiable(); |
| if (!old_print_pages_params_.get() || |
| !PageLayoutIsEqual(*old_print_pages_params_, *print_pages_params_)) { |
| bool has_page_size_style = PrintingFrameHasPageSizeStyle( |
| print_preview_context_.frame(), |
| print_preview_context_.total_page_count()); |
| + |
| + bool header_footer_applies = true; |
|
vandebo (ex-Chrome)
2012/03/15 21:47:17
It seems like this is solely concerned with the pr
kmadhusu
2012/03/17 00:29:12
Done.
|
| + if (!preview_is_modifiable || margins_type == printing::NO_MARGINS) { |
| + header_footer_applies = false; |
| + } else if (margins_type != printing::PRINTABLE_AREA_MARGINS) { |
| +#if defined(OS_LINUX) |
| + header_footer_applies = |
| + (default_page_layout.margin_top > 0) || |
| + (default_page_layout.margin_bottom > 0); |
| +#else |
| + int dpi = GetDPI(&print_params); |
| + int non_printable_area_top = ConvertUnit( |
| + print_pages_params_->params.printable_area.y(), |
| + dpi, printing::kPointsPerInch); |
| + int non_printable_area_bottom = ConvertUnit( |
| + print_pages_params_->params.page_size.height() - |
| + print_pages_params_->params.printable_area.y() - |
| + print_pages_params_->params.printable_area.height(), |
| + dpi, printing::kPointsPerInch); |
| + header_footer_applies = |
| + (default_page_layout.margin_top > non_printable_area_top) || |
| + (default_page_layout.margin_bottom > non_printable_area_bottom); |
| +#endif |
| + } |
| // Margins: Send default page layout to browser process. |
| Send(new PrintHostMsg_DidGetDefaultPageLayout(routing_id(), |
| default_page_layout, |
| - has_page_size_style)); |
| + has_page_size_style, |
| + header_footer_applies)); |
| } |
| PrintHostMsg_DidGetPreviewPageCount_Params params; |
| params.page_count = print_preview_context_.total_page_count(); |
| - params.is_modifiable = print_preview_context_.IsModifiable(); |
| + params.is_modifiable = preview_is_modifiable; |
| params.document_cookie = print_pages_params_->params.document_cookie; |
| params.preview_request_id = print_pages_params_->params.preview_request_id; |
| params.clear_preview_data = print_preview_context_.generate_draft_pages(); |