summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/print_web_view_helper.cc25
-rw-r--r--chrome/renderer/print_web_view_helper_browsertest.cc2
2 files changed, 17 insertions, 10 deletions
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc
index d9aa325..3f84f71 100644
--- a/chrome/renderer/print_web_view_helper.cc
+++ b/chrome/renderer/print_web_view_helper.cc
@@ -163,6 +163,8 @@ PrintMsg_Print_Params GetCssPrintParams(
page_params.margin_left,
dpi, printing::kPixelsPerInch);
+ WebSize original_page_size_in_pixels = page_size_in_pixels;
+
if (frame) {
frame->pageSizeAndMarginsInPixels(page_index,
page_size_in_pixels,
@@ -190,11 +192,18 @@ PrintMsg_Print_Params GetCssPrintParams(
static_cast<int>(ConvertUnit(new_content_height,
printing::kPixelsPerInch, dpi)));
- page_css_params.page_size = gfx::Size(
- static_cast<int>(ConvertUnit(page_size_in_pixels.width,
- printing::kPixelsPerInch, dpi)),
- static_cast<int>(ConvertUnit(page_size_in_pixels.height,
- printing::kPixelsPerInch, dpi)));
+ if (original_page_size_in_pixels != page_size_in_pixels) {
+ page_css_params.page_size = gfx::Size(
+ static_cast<int>(ConvertUnit(page_size_in_pixels.width,
+ printing::kPixelsPerInch, dpi)),
+ static_cast<int>(ConvertUnit(page_size_in_pixels.height,
+ printing::kPixelsPerInch, dpi)));
+ } else {
+ // Printing frame doesn't have any page size css. Pixels to dpi conversion
+ // causes rounding off errors. Therefore use the default page size values
+ // directly.
+ page_css_params.page_size = page_params.page_size;
+ }
page_css_params.margin_top =
static_cast<int>(ConvertUnit(margin_top_in_pixels,
@@ -224,11 +233,9 @@ double FitPrintParamsToPage(const PrintMsg_Print_Params& page_params,
if (default_page_size_width < css_page_size_width ||
default_page_size_height < css_page_size_height) {
double ratio_width =
- static_cast<double>(page_params.printable_area.width()) /
- css_page_size_width;
+ static_cast<double>(default_page_size_width) / css_page_size_width;
double ratio_height =
- static_cast<double>(page_params.printable_area.height()) /
- css_page_size_height;
+ static_cast<double>(default_page_size_height) / css_page_size_height;
scale_factor = ratio_width < ratio_height ? ratio_width : ratio_height;
content_width *= scale_factor;
content_height *= scale_factor;
diff --git a/chrome/renderer/print_web_view_helper_browsertest.cc b/chrome/renderer/print_web_view_helper_browsertest.cc
index 69a969c..b06418f 100644
--- a/chrome/renderer/print_web_view_helper_browsertest.cc
+++ b/chrome/renderer/print_web_view_helper_browsertest.cc
@@ -613,7 +613,7 @@ TEST_F(PrintWebViewHelperPreviewTest, PrintPreviewShrinkToFitPage) {
OnPrintPreview(dict);
EXPECT_EQ(0, chrome_render_thread_->print_preview_pages_remaining());
- VerifyDefaultPageLayout(576, 652, 69, 71, 18, 18, true);
+ VerifyDefaultPageLayout(612, 693, 49, 50, 0, 0, true);
VerifyPrintPreviewCancelled(false);
VerifyPrintPreviewFailed(false);
}