Index: chrome/renderer/printing/print_web_view_helper_mac.mm |
diff --git a/chrome/renderer/printing/print_web_view_helper_mac.mm b/chrome/renderer/printing/print_web_view_helper_mac.mm |
index db8bb80affc455a03eb1c3eb9fd9182e389ee0cd..13eccadd0d1a3812d6182fd2e8df483c40b70a2d 100644 |
--- a/chrome/renderer/printing/print_web_view_helper_mac.mm |
+++ b/chrome/renderer/printing/print_web_view_helper_mac.mm |
@@ -114,35 +114,31 @@ void PrintWebViewHelper::RenderPage(const PrintMsg_Print_Params& params, |
scale_factor *= webkit_shrink_factor; |
- gfx::Rect canvas_area = |
- params.display_header_footer ? gfx::Rect(*page_size) : content_area; |
- |
- { |
- SkBaseDevice* device = metafile->StartPageForVectorCanvas( |
- *page_size, canvas_area, scale_factor); |
- if (!device) |
- return; |
- |
- skia::RefPtr<skia::VectorCanvas> canvas = |
- skia::AdoptRef(new skia::VectorCanvas(device)); |
- blink::WebCanvas* canvas_ptr = canvas.get(); |
- MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); |
- skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_); |
- skia::SetIsPreviewMetafile(*canvas, is_preview); |
- |
- if (params.display_header_footer) { |
- PrintHeaderAndFooter(canvas_ptr, |
- page_number + 1, |
- print_preview_context_.total_page_count(), |
- *frame, |
- scale_factor, |
- page_layout_in_points, |
- params); |
- } |
- RenderPageContent(frame, page_number, canvas_area, content_area, |
- scale_factor, canvas_ptr); |
+ gfx::Rect canvas_area = gfx::Rect(*page_size); // Allow drawing on |
+ // entire page. |
+ skia::RefPtr<skia::VectorCanvas> canvas = |
+ metafile->GetVectorCanvasForNewPage(*page_size, canvas_area, scale_factor); |
+ if (!canvas.get()) |
+ return; |
+ |
+ blink::WebCanvas* canvas_ptr = canvas.get(); |
+ MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); |
+ skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_); |
+ skia::SetIsPreviewMetafile(*canvas, is_preview); |
+ |
+ if (params.display_header_footer) { |
+ PrintHeaderAndFooter(canvas_ptr, |
+ page_number + 1, |
+ print_preview_context_.total_page_count(), |
+ *frame, |
+ scale_factor, |
+ page_layout_in_points, |
+ params); |
} |
+ RenderPageContent(frame, page_number, canvas_area, content_area, |
+ scale_factor, canvas_ptr); |
+ canvas.clear(); // Unref the canvas before calling FinishPage(). |
// Done printing. Close the device context to retrieve the compiled metafile. |
metafile->FinishPage(); |
} |