diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-24 01:45:44 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-24 01:45:44 +0000 |
commit | ff9a836dc0cb87a39349d3444ef2f5515ec85f16 (patch) | |
tree | d646918ac49f502d13725ffc3b57a94726bc1f20 /chrome/renderer | |
parent | 81ce2c47705894ebdba4344f483bc4cb8f072155 (diff) | |
download | chromium_src-ff9a836dc0cb87a39349d3444ef2f5515ec85f16.zip chromium_src-ff9a836dc0cb87a39349d3444ef2f5515ec85f16.tar.gz chromium_src-ff9a836dc0cb87a39349d3444ef2f5515ec85f16.tar.bz2 |
PrintPreview: Fix extra margins issue.
BUG=110256,104080
TEST= On Linux, print preview http://en.wikipedia.org/wiki/Main_Page. Compare the preview margins with a printer as the destination vs. Save to PDF. They should be the same.
Review URL: http://codereview.chromium.org/9808069
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128651 0039d316-1c4b-4281-b951-d872f2087c98
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); } |