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

Unified Diff: chrome/renderer/print_web_view_helper_mac.mm

Issue 11359020: Print headers and footers with WebKit. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/print_web_view_helper_mac.mm
diff --git a/chrome/renderer/print_web_view_helper_mac.mm b/chrome/renderer/print_web_view_helper_mac.mm
index 1101dba0ed677bd4203a7bd341b267fc4876e5e0..214a6391e56e01995a17fabef2f48ec24feb7b04 100644
--- a/chrome/renderer/print_web_view_helper_mac.mm
+++ b/chrome/renderer/print_web_view_helper_mac.mm
@@ -152,10 +152,14 @@ void PrintWebViewHelper::RenderPage(
*content_rect = content_area;
scale_factor *= webkit_shrink_factor;
+
+ gfx::Rect canvas_area =
+ params.display_header_footer ? gfx::Rect(*page_size) : content_area;
+
{
#if defined(USE_SKIA)
SkDevice* device = metafile->StartPageForVectorCanvas(
- *page_size, content_area, scale_factor);
+ *page_size, canvas_area, scale_factor);
if (!device)
return;
@@ -166,7 +170,7 @@ void PrintWebViewHelper::RenderPage(
skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
skia::SetIsPreviewMetafile(*canvas, is_preview);
#else
Alexei Svitkine (slow) 2012/11/02 18:19:14 You can delete the #else block here and remove the
- bool success = metafile->StartPage(*page_size, content_area, scale_factor);
+ bool success = metafile->StartPage(*page_size, canvas_area, scale_factor);
DCHECK(success);
// printPage can create autoreleased references to |context|. PDF contexts
// don't write all their data until they are destroyed, so we need to make
@@ -175,30 +179,17 @@ void PrintWebViewHelper::RenderPage(
CGContextRef cgContext = metafile->context();
CGContextRef canvas_ptr = cgContext;
- // For CoreGraphics, print in the margins before printing in the content
- // area so that we don't spill over. Webkit draws a white background in the
- // content area and this acts as a clip.
- // TODO(aayushkumar): Combine the calls to PrintHeaderAndFooter once we
- // can draw in the margins safely in Skia in any order.
+#endif // !USE_SKIA
if (print_pages_params_->params.display_header_footer) {
PrintHeaderAndFooter(canvas_ptr, page_number + 1,
print_preview_context_.total_page_count(),
scale_factor, page_layout_in_points,
*header_footer_info_, params);
}
-#endif // !USE_SKIA
+ canvas_ptr->translate((content_area.x() - canvas_area.x()) / scale_factor,
+ (content_area.y() - canvas_area.y()) / scale_factor);
frame->printPage(page_number, canvas_ptr);
-
-#if defined(USE_SKIA)
- if (print_pages_params_->params.display_header_footer) {
- // |page_number| is 0-based, so 1 is added.
- PrintHeaderAndFooter(canvas_ptr, page_number + 1,
- print_preview_context_.total_page_count(),
- scale_factor, page_layout_in_points,
- *header_footer_info_, params);
- }
-#endif // defined(USE_SKIA)
}
// Done printing. Close the device context to retrieve the compiled metafile.

Powered by Google App Engine
This is Rietveld 408576698