Index: chrome/renderer/printing/print_web_view_helper.cc |
diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc |
index f038ed665eab5232fe2a008389d9fdbaf4e358c2..28d4bd6b1f24ef27668c8b3fe43050544d3311b7 100644 |
--- a/chrome/renderer/printing/print_web_view_helper.cc |
+++ b/chrome/renderer/printing/print_web_view_helper.cc |
@@ -533,8 +533,19 @@ |
double scale_factor, |
blink::WebCanvas* canvas) { |
SkAutoCanvasRestore auto_restore(canvas, true); |
- canvas->translate((content_area.x() - canvas_area.x()) / scale_factor, |
- (content_area.y() - canvas_area.y()) / scale_factor); |
+ if (content_area != canvas_area) { |
+ canvas->translate((content_area.x() - canvas_area.x()) / scale_factor, |
+ (content_area.y() - canvas_area.y()) / scale_factor); |
+ SkRect clip_rect( |
+ SkRect::MakeXYWH(content_area.origin().x() / scale_factor, |
+ content_area.origin().y() / scale_factor, |
+ content_area.size().width() / scale_factor, |
+ content_area.size().height() / scale_factor)); |
+ SkIRect clip_int_rect; |
+ clip_rect.roundOut(&clip_int_rect); |
+ SkRegion clip_region(clip_int_rect); |
+ canvas->setClipRegion(clip_region); |
+ } |
return frame->printPage(page_number, canvas); |
} |