Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(946)

Side by Side Diff: chrome/renderer/print_web_view_helper.cc

Issue 11818062: Adds option to enable CSS backgrounds for printing. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Sets should-print-backgrounds setting via print job workers. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | printing/print_job_constants.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/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/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 oldParams.pages.size() == newParams.pages.size() && 102 oldParams.pages.size() == newParams.pages.size() &&
103 oldParams.params.print_to_pdf == newParams.params.print_to_pdf && 103 oldParams.params.print_to_pdf == newParams.params.print_to_pdf &&
104 oldParams.params.print_scaling_option == 104 oldParams.params.print_scaling_option ==
105 newParams.params.print_scaling_option && 105 newParams.params.print_scaling_option &&
106 oldParams.params.display_header_footer == 106 oldParams.params.display_header_footer ==
107 newParams.params.display_header_footer && 107 newParams.params.display_header_footer &&
108 oldParams.params.date == newParams.params.date && 108 oldParams.params.date == newParams.params.date &&
109 oldParams.params.title == newParams.params.title && 109 oldParams.params.title == newParams.params.title &&
110 oldParams.params.url == newParams.params.url && 110 oldParams.params.url == newParams.params.url &&
111 std::equal(oldParams.pages.begin(), oldParams.pages.end(), 111 std::equal(oldParams.pages.begin(), oldParams.pages.end(),
112 newParams.pages.begin()); 112 newParams.pages.begin()) &&
113 oldParams.params.should_print_backgrounds ==
114 newParams.params.should_print_backgrounds;
113 } 115 }
114 116
115 PrintMsg_Print_Params GetCssPrintParams( 117 PrintMsg_Print_Params GetCssPrintParams(
116 WebKit::WebFrame* frame, 118 WebKit::WebFrame* frame,
117 int page_index, 119 int page_index,
118 const PrintMsg_Print_Params& page_params) { 120 const PrintMsg_Print_Params& page_params) {
119 PrintMsg_Print_Params page_css_params = page_params; 121 PrintMsg_Print_Params page_css_params = page_params;
120 int dpi = GetDPI(&page_params); 122 int dpi = GetDPI(&page_params);
121 123
122 using printing::ConvertUnit; 124 using printing::ConvertUnit;
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 expected_pages_count_(0), 489 expected_pages_count_(0),
488 use_browser_overlays_(true), 490 use_browser_overlays_(true),
489 finished_(false) { 491 finished_(false) {
490 WebKit::WebPrintParams webkit_print_params; 492 WebKit::WebPrintParams webkit_print_params;
491 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params); 493 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params);
492 494
493 if (WebKit::WebFrame* web_frame = web_view_->mainFrame()) 495 if (WebKit::WebFrame* web_frame = web_view_->mainFrame())
494 prev_scroll_offset_ = web_frame->scrollOffset(); 496 prev_scroll_offset_ = web_frame->scrollOffset();
495 prev_view_size_ = web_view_->size(); 497 prev_view_size_ = web_view_->size();
496 498
499 should_print_backgrounds_ = print_params.should_print_backgrounds;
Lei Zhang 2013/01/11 00:30:04 You can just put this in the initializer list.
Toscano 2013/01/11 01:41:05 Done.
500
497 StartPrinting(webkit_print_params); 501 StartPrinting(webkit_print_params);
498 } 502 }
499 503
500 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() { 504 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() {
501 FinishPrinting(); 505 FinishPrinting();
502 } 506 }
503 507
504 void PrepareFrameAndViewForPrint::UpdatePrintParams( 508 void PrepareFrameAndViewForPrint::UpdatePrintParams(
505 const PrintMsg_Print_Params& print_params) { 509 const PrintMsg_Print_Params& print_params) {
506 DCHECK(!finished_); 510 DCHECK(!finished_);
507 WebKit::WebPrintParams webkit_print_params; 511 WebKit::WebPrintParams webkit_print_params;
508 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params); 512 ComputeWebKitPrintParamsInDesiredDpi(print_params, &webkit_print_params);
509 513
514 should_print_backgrounds_ = print_params.should_print_backgrounds;
515
510 if (webkit_print_params.printContentArea == 516 if (webkit_print_params.printContentArea ==
511 web_print_params_.printContentArea && 517 web_print_params_.printContentArea &&
512 webkit_print_params.printableArea == web_print_params_.printableArea && 518 webkit_print_params.printableArea == web_print_params_.printableArea &&
513 webkit_print_params.paperSize == web_print_params_.paperSize && 519 webkit_print_params.paperSize == web_print_params_.paperSize &&
514 webkit_print_params.printScalingOption == 520 webkit_print_params.printScalingOption ==
515 web_print_params_.printScalingOption) { 521 web_print_params_.printScalingOption) {
516 return; 522 return;
517 } 523 }
518 524
519 frame_->printEnd(); 525 frame_->printEnd();
(...skipping 17 matching lines...) Expand all
537 gfx::Size print_layout_size(web_print_params_.printContentArea.width, 543 gfx::Size print_layout_size(web_print_params_.printContentArea.width,
538 web_print_params_.printContentArea.height); 544 web_print_params_.printContentArea.height);
539 print_layout_size.set_height(static_cast<int>( 545 print_layout_size.set_height(static_cast<int>(
540 static_cast<double>(print_layout_size.height()) * 1.25)); 546 static_cast<double>(print_layout_size.height()) * 1.25));
541 547
542 web_view_->resize(print_layout_size); 548 web_view_->resize(print_layout_size);
543 549
544 expected_pages_count_ = frame_->printBegin(web_print_params_, 550 expected_pages_count_ = frame_->printBegin(web_print_params_,
545 node_to_print_, 551 node_to_print_,
546 &use_browser_overlays_); 552 &use_browser_overlays_);
553
554 web_view_->settings()->setShouldPrintBackgrounds(should_print_backgrounds_);
547 } 555 }
548 556
549 void PrepareFrameAndViewForPrint::FinishPrinting() { 557 void PrepareFrameAndViewForPrint::FinishPrinting() {
550 if (!finished_) { 558 if (!finished_) {
551 finished_ = true; 559 finished_ = true;
552 frame_->printEnd(); 560 frame_->printEnd();
553 web_view_->resize(prev_view_size_); 561 web_view_->resize(prev_view_size_);
554 if (WebKit::WebFrame* web_frame = web_view_->mainFrame()) 562 if (WebKit::WebFrame* web_frame = web_view_->mainFrame())
555 web_frame->setScrollOffset(prev_scroll_offset_); 563 web_frame->setScrollOffset(prev_scroll_offset_);
564 web_view_->settings()->setShouldPrintBackgrounds(false);
556 } 565 }
557 } 566 }
558 567
559 PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view) 568 PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view)
560 : content::RenderViewObserver(render_view), 569 : content::RenderViewObserver(render_view),
561 content::RenderViewObserverTracker<PrintWebViewHelper>(render_view), 570 content::RenderViewObserverTracker<PrintWebViewHelper>(render_view),
562 print_web_view_(NULL), 571 print_web_view_(NULL),
563 is_preview_enabled_(IsPrintPreviewEnabled()), 572 is_preview_enabled_(IsPrintPreviewEnabled()),
564 is_scripted_print_throttling_disabled_(IsPrintThrottlingDisabled()), 573 is_scripted_print_throttling_disabled_(IsPrintThrottlingDisabled()),
565 is_print_ready_metafile_sent_(false), 574 is_print_ready_metafile_sent_(false),
(...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after
1342 header_footer_info_->SetString(printing::kSettingHeaderFooterURL, 1351 header_footer_info_->SetString(printing::kSettingHeaderFooterURL,
1343 settings.params.url); 1352 settings.params.url);
1344 header_footer_info_->SetString(printing::kSettingHeaderFooterTitle, 1353 header_footer_info_->SetString(printing::kSettingHeaderFooterTitle,
1345 settings.params.title); 1354 settings.params.title);
1346 } 1355 }
1347 } 1356 }
1348 1357
1349 print_pages_params_.reset(new PrintMsg_PrintPages_Params(settings)); 1358 print_pages_params_.reset(new PrintMsg_PrintPages_Params(settings));
1350 Send(new PrintHostMsg_DidGetDocumentCookie(routing_id(), 1359 Send(new PrintHostMsg_DidGetDocumentCookie(routing_id(),
1351 settings.params.document_cookie)); 1360 settings.params.document_cookie));
1361
1352 return true; 1362 return true;
1353 } 1363 }
1354 1364
1355 bool PrintWebViewHelper::GetPrintSettingsFromUser(WebKit::WebFrame* frame, 1365 bool PrintWebViewHelper::GetPrintSettingsFromUser(WebKit::WebFrame* frame,
1356 const WebKit::WebNode& node, 1366 const WebKit::WebNode& node,
1357 int expected_pages_count, 1367 int expected_pages_count,
1358 bool use_browser_overlays) { 1368 bool use_browser_overlays) {
1359 PrintHostMsg_ScriptedPrint_Params params; 1369 PrintHostMsg_ScriptedPrint_Params params;
1360 PrintMsg_PrintPages_Params print_settings; 1370 PrintMsg_PrintPages_Params print_settings;
1361 1371
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
1755 DCHECK(IsRendering()); 1765 DCHECK(IsRendering());
1756 return prep_frame_view_->GetPrintCanvasSize(); 1766 return prep_frame_view_->GetPrintCanvasSize();
1757 } 1767 }
1758 1768
1759 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { 1769 void PrintWebViewHelper::PrintPreviewContext::ClearContext() {
1760 prep_frame_view_.reset(); 1770 prep_frame_view_.reset();
1761 metafile_.reset(); 1771 metafile_.reset();
1762 pages_to_render_.clear(); 1772 pages_to_render_.clear();
1763 error_ = PREVIEW_ERROR_NONE; 1773 error_ = PREVIEW_ERROR_NONE;
1764 } 1774 }
OLDNEW
« no previous file with comments | « chrome/renderer/print_web_view_helper.h ('k') | printing/print_job_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698