Index: chrome/renderer/print_web_view_helper_linux.cc |
diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc |
index 4198377b0a6fb7acfff3336986614a5f6a0f5754..62800f4fa8818d6af48f5f0461a730e79a0b7e56 100644 |
--- a/chrome/renderer/print_web_view_helper_linux.cc |
+++ b/chrome/renderer/print_web_view_helper_linux.cc |
@@ -192,8 +192,11 @@ void PrintWebViewHelper::PrintPageInternal( |
gfx::Rect content_area; |
GetPageSizeAndContentAreaFromPageLayout(page_layout_in_points, &page_size, |
&content_area); |
- SkDevice* device = metafile->StartPageForVectorCanvas( |
- page_size, content_area, scale_factor); |
+ gfx::Rect canvas_area = |
+ params.params.display_header_footer ? gfx::Rect(page_size) : content_area; |
+ |
+ SkDevice* device = metafile->StartPageForVectorCanvas(page_size, canvas_area, |
+ scale_factor); |
if (!device) |
return; |
@@ -203,16 +206,19 @@ void PrintWebViewHelper::PrintPageInternal( |
canvas->unref(); // SkRefPtr and new both took a reference. |
printing::MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); |
skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_); |
- frame->printPage(params.page_number, canvas.get()); |
if (params.params.display_header_footer) { |
// |page_number| is 0-based, so 1 is added. |
// The scale factor on Linux is 1. |
+ double page_shrink_factor = frame->getPrintPageShrink(params.page_number); |
PrintHeaderAndFooter(canvas.get(), params.page_number + 1, |
print_preview_context_.total_page_count(), |
- scale_factor, page_layout_in_points, |
- *header_footer_info_, params.params); |
+ scale_factor * page_shrink_factor, |
+ page_layout_in_points, *header_footer_info_, |
+ params.params); |
} |
+ RenderPageContent(frame, params.page_number, canvas_area, content_area, |
+ scale_factor, canvas.get()); |
// Done printing. Close the device context to retrieve the compiled metafile. |
if (!metafile->FinishPage()) |