Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(775)

Side by Side Diff: components/printing/renderer/print_web_view_helper.cc

Issue 1848443003: Revert of Print with the correct physical dimensions when specified (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@262769
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/compositing/squashing/squashing-print-expected.png » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/printing/renderer/print_web_view_helper.h" 5 #include "components/printing/renderer/print_web_view_helper.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 enum PrintPreviewHelperEvents { 71 enum PrintPreviewHelperEvents {
72 PREVIEW_EVENT_REQUESTED, 72 PREVIEW_EVENT_REQUESTED,
73 PREVIEW_EVENT_CACHE_HIT, // Unused 73 PREVIEW_EVENT_CACHE_HIT, // Unused
74 PREVIEW_EVENT_CREATE_DOCUMENT, 74 PREVIEW_EVENT_CREATE_DOCUMENT,
75 PREVIEW_EVENT_NEW_SETTINGS, // Unused 75 PREVIEW_EVENT_NEW_SETTINGS, // Unused
76 PREVIEW_EVENT_MAX, 76 PREVIEW_EVENT_MAX,
77 }; 77 };
78 78
79 const double kMinDpi = 1.0; 79 const double kMinDpi = 1.0;
80 80
81 // Also set in third_party/WebKit/Source/core/page/PrintContext.cpp
82 const float kPrintingMinimumShrinkFactor = 1.333f;
83
84 #if defined(ENABLE_PRINT_PREVIEW) 81 #if defined(ENABLE_PRINT_PREVIEW)
85 bool g_is_preview_enabled = true; 82 bool g_is_preview_enabled = true;
86 83
87 const char kPageLoadScriptFormat[] = 84 const char kPageLoadScriptFormat[] =
88 "document.open(); document.write(%s); document.close();"; 85 "document.open(); document.write(%s); document.close();";
89 86
90 const char kPageSetupScriptFormat[] = "setup(%s);"; 87 const char kPageSetupScriptFormat[] = "setup(%s);";
91 88
92 void ExecuteScript(blink::WebFrame* frame, 89 void ExecuteScript(blink::WebFrame* frame,
93 const char* script_format, 90 const char* script_format,
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 } 670 }
674 ComputeWebKitPrintParamsInDesiredDpi(print_params, &web_print_params_); 671 ComputeWebKitPrintParamsInDesiredDpi(print_params, &web_print_params_);
675 } 672 }
676 673
677 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() { 674 PrepareFrameAndViewForPrint::~PrepareFrameAndViewForPrint() {
678 FinishPrinting(); 675 FinishPrinting();
679 } 676 }
680 677
681 void PrepareFrameAndViewForPrint::ResizeForPrinting() { 678 void PrepareFrameAndViewForPrint::ResizeForPrinting() {
682 // Layout page according to printer page size. Since WebKit shrinks the 679 // Layout page according to printer page size. Since WebKit shrinks the
683 // size of the page automatically (from 133.3% to 200%) we trick it to 680 // size of the page automatically (from 125% to 200%) we trick it to
684 // think the page is 133.3% larger so the size of the page is correct for 681 // think the page is 125% larger so the size of the page is correct for
685 // minimum (default) scaling. 682 // minimum (default) scaling.
686 // The scaling factor 1.25 was originally chosen as a magic number that
687 // was 'about right'. However per https://crbug.com/273306 1.333 seems to be
688 // the number that produces output with the correct physical size for elements
689 // that are specified in cm, mm, pt etc.
690 // This is important for sites that try to fill the page. 683 // This is important for sites that try to fill the page.
684 // The 1.25 value is |printingMinimumShrinkFactor|.
691 gfx::Size print_layout_size(web_print_params_.printContentArea.width, 685 gfx::Size print_layout_size(web_print_params_.printContentArea.width,
692 web_print_params_.printContentArea.height); 686 web_print_params_.printContentArea.height);
693 print_layout_size.set_height( 687 print_layout_size.set_height(
694 static_cast<int>(static_cast<double>(print_layout_size.height()) * 688 static_cast<int>(static_cast<double>(print_layout_size.height()) * 1.25));
695 kPrintingMinimumShrinkFactor));
696 689
697 if (!frame()) 690 if (!frame())
698 return; 691 return;
699 blink::WebView* web_view = frame_.view(); 692 blink::WebView* web_view = frame_.view();
700 // Backup size and offset. 693 // Backup size and offset.
701 if (blink::WebFrame* web_frame = web_view->mainFrame()) 694 if (blink::WebFrame* web_frame = web_view->mainFrame())
702 prev_scroll_offset_ = web_frame->scrollOffset(); 695 prev_scroll_offset_ = web_frame->scrollOffset();
703 prev_view_size_ = web_view->size(); 696 prev_view_size_ = web_view->size();
704 697
705 web_view->resize(print_layout_size); 698 web_view->resize(print_layout_size);
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after
1780 1773
1781 SkCanvas* canvas = metafile->GetVectorCanvasForNewPage( 1774 SkCanvas* canvas = metafile->GetVectorCanvasForNewPage(
1782 page_size, canvas_area, scale_factor); 1775 page_size, canvas_area, scale_factor);
1783 if (!canvas) 1776 if (!canvas)
1784 return; 1777 return;
1785 1778
1786 MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile); 1779 MetafileSkiaWrapper::SetMetafileOnCanvas(*canvas, metafile);
1787 1780
1788 #if defined(ENABLE_PRINT_PREVIEW) 1781 #if defined(ENABLE_PRINT_PREVIEW)
1789 if (params.params.display_header_footer) { 1782 if (params.params.display_header_footer) {
1790 // TODO(thestig): Figure out why Linux needs this. It is almost certainly 1783 // TODO(thestig): Figure out why Linux needs this. The value may be
1791 // |printingMinimumShrinkFactor| from Blink. 1784 // |printingMinimumShrinkFactor|.
1792 #if defined(OS_WIN) 1785 #if defined(OS_WIN)
1793 const float fudge_factor = 1; 1786 const float fudge_factor = 1;
1794 #else 1787 #else
1795 const float fudge_factor = kPrintingMinimumShrinkFactor; 1788 const float fudge_factor = 1.25;
1796 #endif 1789 #endif
1797 // |page_number| is 0-based, so 1 is added. 1790 // |page_number| is 0-based, so 1 is added.
1798 PrintHeaderAndFooter(canvas, params.page_number + 1, 1791 PrintHeaderAndFooter(canvas, params.page_number + 1,
1799 print_preview_context_.total_page_count(), *frame, 1792 print_preview_context_.total_page_count(), *frame,
1800 scale_factor / fudge_factor, page_layout_in_points, 1793 scale_factor / fudge_factor, page_layout_in_points,
1801 params.params); 1794 params.params);
1802 } 1795 }
1803 #endif // defined(ENABLE_PRINT_PREVIEW) 1796 #endif // defined(ENABLE_PRINT_PREVIEW)
1804 1797
1805 float webkit_scale_factor = 1798 float webkit_scale_factor =
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
2245 blink::WebConsoleMessage::LevelWarning, message)); 2238 blink::WebConsoleMessage::LevelWarning, message));
2246 return false; 2239 return false;
2247 } 2240 }
2248 2241
2249 void PrintWebViewHelper::ScriptingThrottler::Reset() { 2242 void PrintWebViewHelper::ScriptingThrottler::Reset() {
2250 // Reset counter on successful print. 2243 // Reset counter on successful print.
2251 count_ = 0; 2244 count_ = 0;
2252 } 2245 }
2253 2246
2254 } // namespace printing 2247 } // namespace printing
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/compositing/squashing/squashing-print-expected.png » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698