| Index: chrome/renderer/print_web_view_helper_win.cc
|
| diff --git a/chrome/renderer/print_web_view_helper_win.cc b/chrome/renderer/print_web_view_helper_win.cc
|
| index 075ed6bca5fe7554adeb4fefaec58580579d22ed..59b8cf1c1e7619b68724412f0f26e7e4ac911847 100644
|
| --- a/chrome/renderer/print_web_view_helper_win.cc
|
| +++ b/chrome/renderer/print_web_view_helper_win.cc
|
| @@ -162,13 +162,28 @@ void PrintWebViewHelper::RenderPage(
|
| }
|
|
|
| float webkit_page_shrink_factor = frame->getPrintPageShrink(page_number);
|
| + float scale_factor = css_scale_factor * webkit_page_shrink_factor;
|
| +
|
| + gfx::Rect canvas_area =
|
| + params.display_header_footer ? gfx::Rect(page_size) : content_area;
|
| +
|
| SkDevice* device = metafile->StartPageForVectorCanvas(
|
| - page_size, content_area, css_scale_factor * webkit_page_shrink_factor);
|
| + page_size, canvas_area, scale_factor);
|
| DCHECK(device);
|
| // The printPage method may take a reference to the canvas we pass down, so it
|
| // can't be a stack object.
|
| SkRefPtr<skia::VectorCanvas> canvas = new skia::VectorCanvas(device);
|
| canvas->unref(); // SkRefPtr and new both took a reference.
|
| +
|
| + if (params.display_header_footer) {
|
| + // |page_number| is 0-based, so 1 is added.
|
| + PrintHeaderAndFooter(canvas.get(), page_number + 1,
|
| + print_preview_context_.total_page_count(), scale_factor,
|
| + page_layout_in_points, *header_footer_info_, params);
|
| + }
|
| +
|
| + canvas->translate((content_area.x() - canvas_area.x()) / scale_factor,
|
| + (content_area.y() - canvas_area.y()) / scale_factor);
|
| if (is_preview) {
|
| printing::MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
|
| skia::SetIsDraftMode(*canvas, is_print_ready_metafile_sent_);
|
| @@ -177,14 +192,6 @@ void PrintWebViewHelper::RenderPage(
|
|
|
| float webkit_scale_factor = frame->printPage(page_number, canvas.get());
|
|
|
| - if (params.display_header_footer) {
|
| - // |page_number| is 0-based, so 1 is added.
|
| - PrintHeaderAndFooter(canvas.get(), page_number + 1,
|
| - print_preview_context_.total_page_count(),
|
| - css_scale_factor * webkit_page_shrink_factor,
|
| - page_layout_in_points, *header_footer_info_, params);
|
| - }
|
| -
|
| if (*actual_shrink <= 0 || webkit_scale_factor <= 0) {
|
| NOTREACHED() << "Printing page " << page_number << " failed.";
|
| } else {
|
|
|