diff options
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/print_web_view_helper.cc | 25 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_browsertest.cc | 2 |
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); } |