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. |