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 3836161f9e975c26962ed48cf5a5f80d0cc5352d..c0188c6caf82bf17808e8fdc5a28b3d06d392963 100644 |
--- a/chrome/renderer/print_web_view_helper_mac.mm |
+++ b/chrome/renderer/print_web_view_helper_mac.mm |
@@ -17,6 +17,7 @@ |
#if defined(USE_SKIA) |
#include "printing/metafile_skia_wrapper.h" |
#include "skia/ext/vector_canvas.h" |
+#include "skia/ext/vector_platform_device_skia.h" |
#include "third_party/WebKit/Source/WebKit/chromium/public/WebCanvas.h" |
#endif |
@@ -36,7 +37,7 @@ void PrintWebViewHelper::PrintPageInternal( |
// Render page for printing. |
gfx::Rect content_area(params.params.printable_size); |
RenderPage(params.params.printable_size, content_area, scale_factor, |
- page_number, frame, &metafile); |
+ page_number, frame, &metafile, false); |
metafile.FinishDocument(); |
PrintHostMsg_DidPrintPage_Params page_params; |
@@ -68,7 +69,8 @@ void PrintWebViewHelper::RenderPreviewPage(int page_number) { |
base::TimeTicks begin_time = base::TimeTicks::Now(); |
RenderPage(printParams.page_size, content_area, scale_factor, page_number, |
- print_preview_context_.frame(), print_preview_context_.metafile()); |
+ print_preview_context_.frame(), print_preview_context_.metafile(), |
+ true); |
print_preview_context_.RenderedPreviewPage( |
base::TimeTicks::Now() - begin_time); |
PreviewPageRendered(page_number); |
@@ -77,7 +79,7 @@ void PrintWebViewHelper::RenderPreviewPage(int page_number) { |
void PrintWebViewHelper::RenderPage( |
const gfx::Size& page_size, const gfx::Rect& content_area, |
const float& scale_factor, int page_number, WebFrame* frame, |
- printing::Metafile* metafile) { |
+ printing::Metafile* metafile, bool is_preview) { |
{ |
#if defined(USE_SKIA) |
@@ -100,7 +102,21 @@ void PrintWebViewHelper::RenderPage( |
CGContextRef cgContext = metafile->context(); |
CGContextRef canvasPtr = cgContext; |
#endif |
- frame->printPage(page_number, canvasPtr); |
+ float webkit_scale_factor = frame->printPage(page_number, canvasPtr); |
+#if defined(USE_SKIA) |
+ PrintMsg_Print_Params printParams = print_preview_context_.print_params(); |
+ if (is_preview && printParams.display_header_footer) { |
+ PageSizeMargins page_layout_in_points; |
+ GetPageSizeAndMarginsInPoints(frame, page_number, printParams, |
+ &page_layout_in_points); |
+ // The page_number count starts from 0, so we add 1. |
+ PrintHeaderAndFooter(static_cast<skia::VectorPlatformDeviceSkia*>(device), |
+ canvas, page_number + 1, |
+ print_preview_context_.total_page_count(), |
+ webkit_scale_factor, page_layout_in_points, |
+ header_footer_info_); |
+ } |
+#endif |
} |
// Done printing. Close the device context to retrieve the compiled metafile. |