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

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

Issue 2426503002: Make printing work better with OOPIF. (Closed)
Patch Set: Fix build, fix some tests Created 4 years, 2 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
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
10 #include <algorithm>
9 #include <string> 11 #include <string>
10 #include <utility> 12 #include <utility>
11 13
12 #include "base/auto_reset.h" 14 #include "base/auto_reset.h"
13 #include "base/json/json_writer.h" 15 #include "base/json/json_writer.h"
14 #include "base/location.h" 16 #include "base/location.h"
15 #include "base/logging.h" 17 #include "base/logging.h"
16 #include "base/macros.h" 18 #include "base/macros.h"
17 #include "base/metrics/histogram_macros.h" 19 #include "base/metrics/histogram_macros.h"
18 #include "base/process/process_handle.h" 20 #include "base/process/process_handle.h"
(...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 } 823 }
822 824
823 bool PrintWebViewHelper::Delegate::IsAskPrintSettingsEnabled() { 825 bool PrintWebViewHelper::Delegate::IsAskPrintSettingsEnabled() {
824 return true; 826 return true;
825 } 827 }
826 828
827 bool PrintWebViewHelper::Delegate::IsScriptedPrintEnabled() { 829 bool PrintWebViewHelper::Delegate::IsScriptedPrintEnabled() {
828 return true; 830 return true;
829 } 831 }
830 832
831 PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view, 833 PrintWebViewHelper::PrintWebViewHelper(content::RenderFrame* render_frame,
832 std::unique_ptr<Delegate> delegate) 834 std::unique_ptr<Delegate> delegate)
833 : content::RenderViewObserver(render_view), 835 : content::RenderFrameObserver(render_frame),
834 content::RenderViewObserverTracker<PrintWebViewHelper>(render_view), 836 content::RenderFrameObserverTracker<PrintWebViewHelper>(render_frame),
835 reset_prep_frame_view_(false), 837 reset_prep_frame_view_(false),
836 is_print_ready_metafile_sent_(false), 838 is_print_ready_metafile_sent_(false),
837 ignore_css_margins_(false), 839 ignore_css_margins_(false),
838 is_scripted_printing_blocked_(false), 840 is_printing_enabled_(true),
839 notify_browser_of_print_failure_(true), 841 notify_browser_of_print_failure_(true),
840 print_for_preview_(false), 842 print_for_preview_(false),
841 delegate_(std::move(delegate)), 843 delegate_(std::move(delegate)),
842 print_node_in_progress_(false), 844 print_node_in_progress_(false),
843 is_loading_(false), 845 is_loading_(false),
844 is_scripted_preview_delayed_(false), 846 is_scripted_preview_delayed_(false),
845 ipc_nesting_level_(0), 847 ipc_nesting_level_(0),
846 weak_ptr_factory_(this) { 848 weak_ptr_factory_(this) {
847 if (!delegate_->IsPrintPreviewEnabled()) 849 if (!delegate_->IsPrintPreviewEnabled())
848 DisablePreview(); 850 DisablePreview();
849 } 851 }
850 852
851 PrintWebViewHelper::~PrintWebViewHelper() { 853 PrintWebViewHelper::~PrintWebViewHelper() {
852 } 854 }
853 855
854 // static 856 // static
855 void PrintWebViewHelper::DisablePreview() { 857 void PrintWebViewHelper::DisablePreview() {
856 g_is_preview_enabled = false; 858 g_is_preview_enabled = false;
857 } 859 }
858 860
859 bool PrintWebViewHelper::IsScriptInitiatedPrintAllowed(blink::WebFrame* frame, 861 bool PrintWebViewHelper::IsScriptInitiatedPrintAllowed(blink::WebFrame* frame,
860 bool user_initiated) { 862 bool user_initiated) {
861 if (!delegate_->IsScriptedPrintEnabled()) 863 if (!is_printing_enabled_ || !delegate_->IsScriptedPrintEnabled())
862 return false; 864 return false;
863 865
864 // If preview is enabled, then the print dialog is tab modal, and the user 866 // If preview is enabled, then the print dialog is tab modal, and the user
865 // can always close the tab on a mis-behaving page (the system print dialog 867 // can always close the tab on a mis-behaving page (the system print dialog
866 // is app modal). If the print was initiated through user action, don't 868 // is app modal). If the print was initiated through user action, don't
867 // throttle. Or, if the command line flag to skip throttling has been set. 869 // throttle. Or, if the command line flag to skip throttling has been set.
868 return !is_scripted_printing_blocked_ && 870 return user_initiated || g_is_preview_enabled ||
869 (user_initiated || g_is_preview_enabled || 871 scripting_throttler_.IsAllowed(frame);
870 scripting_throttler_.IsAllowed(frame));
871 } 872 }
872 873
873 void PrintWebViewHelper::DidStartLoading() { 874 void PrintWebViewHelper::DidStartLoading() {
874 is_loading_ = true; 875 is_loading_ = true;
875 } 876 }
876 877
877 void PrintWebViewHelper::DidStopLoading() { 878 void PrintWebViewHelper::DidStopLoading() {
878 is_loading_ = false; 879 is_loading_ = false;
879 if (!on_stop_loading_closure_.is_null()) { 880 if (!on_stop_loading_closure_.is_null()) {
880 on_stop_loading_closure_.Run(); 881 on_stop_loading_closure_.Run();
881 on_stop_loading_closure_.Reset(); 882 on_stop_loading_closure_.Reset();
882 } 883 }
883 } 884 }
884 885
885 // Prints |frame| which called window.print(). 886 void PrintWebViewHelper::ScriptedPrint(bool user_initiated) {
886 void PrintWebViewHelper::PrintPage(blink::WebLocalFrame* frame,
887 bool user_initiated) {
888 DCHECK(frame);
889
890 // Allow Prerendering to cancel this print request if necessary. 887 // Allow Prerendering to cancel this print request if necessary.
891 if (delegate_->CancelPrerender(render_view(), routing_id())) 888 if (delegate_->CancelPrerender(render_frame(), routing_id()))
892 return; 889 return;
893 890
894 if (!IsScriptInitiatedPrintAllowed(frame, user_initiated)) 891 blink::WebLocalFrame* web_frame = render_frame()->GetWebFrame();
892 if (!IsScriptInitiatedPrintAllowed(web_frame, user_initiated)) {
895 return; 893 return;
894 }
896 895
897 if (delegate_->OverridePrint(frame)) 896 if (delegate_->OverridePrint(web_frame))
898 return; 897 return;
899 898
900 if (g_is_preview_enabled) { 899 if (g_is_preview_enabled) {
901 #if defined(ENABLE_PRINT_PREVIEW) 900 #if defined(ENABLE_PRINT_PREVIEW)
902 print_preview_context_.InitWithFrame(frame); 901 print_preview_context_.InitWithFrame(web_frame);
903 RequestPrintPreview(PRINT_PREVIEW_SCRIPTED); 902 RequestPrintPreview(PRINT_PREVIEW_SCRIPTED);
904 #endif 903 #endif
905 } else { 904 } else {
906 #if defined(ENABLE_BASIC_PRINTING) 905 #if defined(ENABLE_BASIC_PRINTING)
907 Print(frame, blink::WebNode(), true); 906 Print(web_frame, blink::WebNode(), true /* is_scripted? */);
908 #endif 907 #endif
909 } 908 }
910 } 909 }
911 910
912 bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) { 911 bool PrintWebViewHelper::OnMessageReceived(const IPC::Message& message) {
913 // The class is not designed to handle recursive messages. This is not 912 // The class is not designed to handle recursive messages. This is not
914 // expected during regular flow. However, during rendering of content for 913 // expected during regular flow. However, during rendering of content for
915 // printing, lower level code may run nested message loop. E.g. PDF may has 914 // printing, lower level code may run nested message loop. E.g. PDF may has
916 // script to show message box http://crbug.com/502562. In that moment browser 915 // script to show message box http://crbug.com/502562. In that moment browser
917 // may receive updated printer capabilities and decide to restart print 916 // may receive updated printer capabilities and decide to restart print
918 // preview generation. When this happened message handling function may 917 // preview generation. When this happened message handling function may
919 // choose to ignore message or safely crash process. 918 // choose to ignore message or safely crash process.
920 ++ipc_nesting_level_; 919 ++ipc_nesting_level_;
921 920
922 bool handled = true; 921 bool handled = true;
923 IPC_BEGIN_MESSAGE_MAP(PrintWebViewHelper, message) 922 IPC_BEGIN_MESSAGE_MAP(PrintWebViewHelper, message)
924 #if defined(ENABLE_BASIC_PRINTING) 923 #if defined(ENABLE_BASIC_PRINTING)
925 IPC_MESSAGE_HANDLER(PrintMsg_PrintPages, OnPrintPages) 924 IPC_MESSAGE_HANDLER(PrintMsg_PrintPages, OnPrintPages)
926 IPC_MESSAGE_HANDLER(PrintMsg_PrintForSystemDialog, OnPrintForSystemDialog) 925 IPC_MESSAGE_HANDLER(PrintMsg_PrintForSystemDialog, OnPrintForSystemDialog)
927 #endif // defined(ENABLE_BASIC_PRINTING) 926 #endif // defined(ENABLE_BASIC_PRINTING)
928 #if defined(ENABLE_BASIC_PRINTING) && defined(ENABLE_PRINT_PREVIEW) 927 #if defined(ENABLE_BASIC_PRINTING) && defined(ENABLE_PRINT_PREVIEW)
929 IPC_MESSAGE_HANDLER(PrintMsg_PrintForPrintPreview, OnPrintForPrintPreview) 928 IPC_MESSAGE_HANDLER(PrintMsg_PrintForPrintPreview, OnPrintForPrintPreview)
930 #endif 929 #endif
931 #if defined(ENABLE_PRINT_PREVIEW) 930 #if defined(ENABLE_PRINT_PREVIEW)
932 IPC_MESSAGE_HANDLER(PrintMsg_InitiatePrintPreview, OnInitiatePrintPreview) 931 IPC_MESSAGE_HANDLER(PrintMsg_InitiatePrintPreview, OnInitiatePrintPreview)
933 IPC_MESSAGE_HANDLER(PrintMsg_PrintPreview, OnPrintPreview) 932 IPC_MESSAGE_HANDLER(PrintMsg_PrintPreview, OnPrintPreview)
934 IPC_MESSAGE_HANDLER(PrintMsg_PrintingDone, OnPrintingDone) 933 IPC_MESSAGE_HANDLER(PrintMsg_PrintingDone, OnPrintingDone)
935 #endif // defined(ENABLE_PRINT_PREVIEW) 934 #endif // defined(ENABLE_PRINT_PREVIEW)
936 IPC_MESSAGE_HANDLER(PrintMsg_SetScriptedPrintingBlocked, 935 IPC_MESSAGE_HANDLER(PrintMsg_SetPrintingEnabled, SetPrintingEnabled)
937 SetScriptedPrintBlocked)
938 IPC_MESSAGE_UNHANDLED(handled = false) 936 IPC_MESSAGE_UNHANDLED(handled = false)
939 IPC_END_MESSAGE_MAP() 937 IPC_END_MESSAGE_MAP()
940 938
941 --ipc_nesting_level_; 939 --ipc_nesting_level_;
942 return handled; 940 return handled;
943 } 941 }
944 942
945 void PrintWebViewHelper::OnDestruct() { 943 void PrintWebViewHelper::OnDestruct() {
946 delete this; 944 delete this;
947 } 945 }
948 946
949 bool PrintWebViewHelper::GetPrintFrame(blink::WebLocalFrame** frame) {
950 DCHECK(frame);
951 blink::WebView* webView = render_view()->GetWebView();
952 DCHECK(webView);
953 if (!webView)
954 return false;
955
956 // If the user has selected text in the currently focused frame we print
957 // only that frame (this makes print selection work for multiple frames).
958 blink::WebLocalFrame* focusedFrame = webView->focusedFrame();
959 *frame = focusedFrame->hasSelection()
960 ? focusedFrame
961 : webView->mainFrame()->toWebLocalFrame();
962 return true;
963 }
964
965 #if defined(ENABLE_BASIC_PRINTING) 947 #if defined(ENABLE_BASIC_PRINTING)
966 void PrintWebViewHelper::OnPrintPages() { 948 void PrintWebViewHelper::OnPrintPages() {
967 if (ipc_nesting_level_> 1) 949 if (ipc_nesting_level_> 1)
968 return; 950 return;
969 blink::WebLocalFrame* frame; 951
970 if (!GetPrintFrame(&frame)) 952 blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
971 return; 953
972 // If we are printing a PDF extension frame, find the plugin node and print 954 // If we are printing a PDF extension frame, find the plugin node and print
973 // that instead. 955 // that instead.
974 auto plugin = delegate_->GetPdfElement(frame); 956 auto plugin = delegate_->GetPdfElement(frame);
975 Print(frame, plugin, false); 957 Print(frame, plugin, false /* is_scripted? */);
976 } 958 }
977 959
978 void PrintWebViewHelper::OnPrintForSystemDialog() { 960 void PrintWebViewHelper::OnPrintForSystemDialog() {
979 if (ipc_nesting_level_> 1) 961 if (ipc_nesting_level_> 1)
980 return; 962 return;
981 blink::WebLocalFrame* frame = print_preview_context_.source_frame(); 963 blink::WebLocalFrame* frame = print_preview_context_.source_frame();
982 if (!frame) { 964 if (!frame) {
983 NOTREACHED(); 965 NOTREACHED();
984 return; 966 return;
985 } 967 }
986 Print(frame, print_preview_context_.source_node(), false); 968 Print(frame, print_preview_context_.source_node(), false);
987 } 969 }
988 #endif // defined(ENABLE_BASIC_PRINTING) 970 #endif // defined(ENABLE_BASIC_PRINTING)
989 971
990 #if defined(ENABLE_BASIC_PRINTING) && defined(ENABLE_PRINT_PREVIEW) 972 #if defined(ENABLE_BASIC_PRINTING) && defined(ENABLE_PRINT_PREVIEW)
991 void PrintWebViewHelper::OnPrintForPrintPreview( 973 void PrintWebViewHelper::OnPrintForPrintPreview(
992 const base::DictionaryValue& job_settings) { 974 const base::DictionaryValue& job_settings) {
993 CHECK_LE(ipc_nesting_level_, 1); 975 CHECK_LE(ipc_nesting_level_, 1);
994 // If still not finished with earlier print request simply ignore. 976 // If still not finished with earlier print request simply ignore.
995 if (prep_frame_view_) 977 if (prep_frame_view_)
996 return; 978 return;
997 979
980 NOTIMPLEMENTED();
981 #if 0
998 if (!render_view()->GetWebView()) 982 if (!render_view()->GetWebView())
999 return; 983 return;
984
1000 blink::WebFrame* main_frame = render_view()->GetWebView()->mainFrame(); 985 blink::WebFrame* main_frame = render_view()->GetWebView()->mainFrame();
1001 if (!main_frame) 986 if (!main_frame)
1002 return; 987 return;
1003 988
1004 blink::WebDocument document = main_frame->document(); 989 blink::WebDocument document = main_frame->document();
1005 // <object>/<iframe> with id="pdf-viewer" is created in 990 // <object>/<iframe> with id="pdf-viewer" is created in
1006 // chrome/browser/resources/print_preview/print_preview.js 991 // chrome/browser/resources/print_preview/print_preview.js
1007 blink::WebElement pdf_element = document.getElementById("pdf-viewer"); 992 blink::WebElement pdf_element = document.getElementById("pdf-viewer");
1008 if (pdf_element.isNull()) { 993 if (pdf_element.isNull()) {
1009 NOTREACHED(); 994 NOTREACHED();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 // printing and it expects real printable_area value. 1029 // printing and it expects real printable_area value.
1045 // See http://crbug.com/123408 1030 // See http://crbug.com/123408
1046 PrintMsg_Print_Params& print_params = print_pages_params_->params; 1031 PrintMsg_Print_Params& print_params = print_pages_params_->params;
1047 print_params.printable_area = gfx::Rect(print_params.page_size); 1032 print_params.printable_area = gfx::Rect(print_params.page_size);
1048 1033
1049 // Render Pages for printing. 1034 // Render Pages for printing.
1050 if (!RenderPagesForPrint(plugin_frame, plugin_element)) { 1035 if (!RenderPagesForPrint(plugin_frame, plugin_element)) {
1051 LOG(ERROR) << "RenderPagesForPrint failed"; 1036 LOG(ERROR) << "RenderPagesForPrint failed";
1052 DidFinishPrinting(FAIL_PRINT); 1037 DidFinishPrinting(FAIL_PRINT);
1053 } 1038 }
1039 #endif
1054 } 1040 }
1055 #endif // defined(ENABLE_BASIC_PRINTING) && defined(ENABLE_PRINT_PREVIEW) 1041 #endif // defined(ENABLE_BASIC_PRINTING) && defined(ENABLE_PRINT_PREVIEW)
1056 1042
1057 void PrintWebViewHelper::GetPageSizeAndContentAreaFromPageLayout( 1043 void PrintWebViewHelper::GetPageSizeAndContentAreaFromPageLayout(
1058 const PageSizeMargins& page_layout_in_points, 1044 const PageSizeMargins& page_layout_in_points,
1059 gfx::Size* page_size, 1045 gfx::Size* page_size,
1060 gfx::Rect* content_area) { 1046 gfx::Rect* content_area) {
1061 *page_size = gfx::Size( 1047 *page_size = gfx::Size(
1062 page_layout_in_points.content_width + page_layout_in_points.margin_right + 1048 page_layout_in_points.content_width + page_layout_in_points.margin_right +
1063 page_layout_in_points.margin_left, 1049 page_layout_in_points.margin_left,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 if (prep_frame_view_ && prep_frame_view_->IsLoadingSelection()) { 1127 if (prep_frame_view_ && prep_frame_view_->IsLoadingSelection()) {
1142 reset_prep_frame_view_ = true; 1128 reset_prep_frame_view_ = true;
1143 return; 1129 return;
1144 } 1130 }
1145 1131
1146 const PrintMsg_Print_Params& print_params = print_pages_params_->params; 1132 const PrintMsg_Print_Params& print_params = print_pages_params_->params;
1147 prep_frame_view_.reset(new PrepareFrameAndViewForPrint( 1133 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(
1148 print_params, print_preview_context_.source_frame(), 1134 print_params, print_preview_context_.source_frame(),
1149 print_preview_context_.source_node(), ignore_css_margins_)); 1135 print_preview_context_.source_node(), ignore_css_margins_));
1150 prep_frame_view_->CopySelectionIfNeeded( 1136 prep_frame_view_->CopySelectionIfNeeded(
1151 render_view()->GetWebkitPreferences(), 1137 render_frame()->GetWebkitPreferences(),
1152 base::Bind(&PrintWebViewHelper::OnFramePreparedForPreviewDocument, 1138 base::Bind(&PrintWebViewHelper::OnFramePreparedForPreviewDocument,
1153 base::Unretained(this))); 1139 base::Unretained(this)));
1154 } 1140 }
1155 1141
1156 void PrintWebViewHelper::OnFramePreparedForPreviewDocument() { 1142 void PrintWebViewHelper::OnFramePreparedForPreviewDocument() {
1157 if (reset_prep_frame_view_) { 1143 if (reset_prep_frame_view_) {
1158 PrepareFrameForPreviewDocument(); 1144 PrepareFrameForPreviewDocument();
1159 return; 1145 return;
1160 } 1146 }
1161 DidFinishPrinting(CreatePreviewDocument() ? OK : FAIL_PREVIEW); 1147 DidFinishPrinting(CreatePreviewDocument() ? OK : FAIL_PREVIEW);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1302 1288
1303 void PrintWebViewHelper::OnPrintingDone(bool success) { 1289 void PrintWebViewHelper::OnPrintingDone(bool success) {
1304 if (ipc_nesting_level_ > 1) 1290 if (ipc_nesting_level_ > 1)
1305 return; 1291 return;
1306 notify_browser_of_print_failure_ = false; 1292 notify_browser_of_print_failure_ = false;
1307 if (!success) 1293 if (!success)
1308 LOG(ERROR) << "Failure in OnPrintingDone"; 1294 LOG(ERROR) << "Failure in OnPrintingDone";
1309 DidFinishPrinting(success ? OK : FAIL_PRINT); 1295 DidFinishPrinting(success ? OK : FAIL_PRINT);
1310 } 1296 }
1311 1297
1312 void PrintWebViewHelper::SetScriptedPrintBlocked(bool blocked) { 1298 void PrintWebViewHelper::SetPrintingEnabled(bool enabled) {
1313 is_scripted_printing_blocked_ = blocked; 1299 is_printing_enabled_ = enabled;
1314 } 1300 }
1315 1301
1316 #if defined(ENABLE_PRINT_PREVIEW) 1302 #if defined(ENABLE_PRINT_PREVIEW)
1317 void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { 1303 void PrintWebViewHelper::OnInitiatePrintPreview(bool has_selection) {
1318 if (ipc_nesting_level_ > 1) 1304 if (ipc_nesting_level_ > 1)
1319 return; 1305 return;
1320 blink::WebLocalFrame* frame = NULL; 1306
1321 GetPrintFrame(&frame); 1307 blink::WebLocalFrame* frame = render_frame()->GetWebFrame();
1322 DCHECK(frame); 1308
1323 // If we are printing a PDF extension frame, find the plugin node and print 1309 // If we are printing a PDF extension frame, find the plugin node and print
1324 // that instead. 1310 // that instead.
1325 auto plugin = delegate_->GetPdfElement(frame); 1311 auto plugin = delegate_->GetPdfElement(frame);
1326 if (!plugin.isNull()) { 1312 if (!plugin.isNull()) {
1327 PrintNode(plugin); 1313 PrintNode(plugin);
1328 return; 1314 return;
1329 } 1315 }
1330 print_preview_context_.InitWithFrame(frame); 1316 print_preview_context_.InitWithFrame(frame);
1331 RequestPrintPreview(selection_only 1317 RequestPrintPreview(has_selection
1332 ? PRINT_PREVIEW_USER_INITIATED_SELECTION 1318 ? PRINT_PREVIEW_USER_INITIATED_SELECTION
1333 : PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME); 1319 : PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME);
1334 } 1320 }
1335 #endif 1321 #endif
1336 1322
1337 bool PrintWebViewHelper::IsPrintingEnabled() { 1323 bool PrintWebViewHelper::IsPrintingEnabled() const {
1338 bool result = false; 1324 return is_printing_enabled_;
1339 Send(new PrintHostMsg_IsPrintingEnabled(routing_id(), &result));
1340 return result;
1341 } 1325 }
1342 1326
1343 void PrintWebViewHelper::PrintNode(const blink::WebNode& node) { 1327 void PrintWebViewHelper::PrintNode(const blink::WebNode& node) {
1344 if (node.isNull() || !node.document().frame()) { 1328 if (node.isNull() || !node.document().frame()) {
1345 // This can occur when the context menu refers to an invalid WebNode. 1329 // This can occur when the context menu refers to an invalid WebNode.
1346 // See http://crbug.com/100890#c17 for a repro case. 1330 // See http://crbug.com/100890#c17 for a repro case.
1347 return; 1331 return;
1348 } 1332 }
1349 1333
1350 if (print_node_in_progress_) { 1334 if (print_node_in_progress_) {
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1725 if (!frame || prep_frame_view_) 1709 if (!frame || prep_frame_view_)
1726 return false; 1710 return false;
1727 1711
1728 const PrintMsg_PrintPages_Params& params = *print_pages_params_; 1712 const PrintMsg_PrintPages_Params& params = *print_pages_params_;
1729 const PrintMsg_Print_Params& print_params = params.params; 1713 const PrintMsg_Print_Params& print_params = params.params;
1730 prep_frame_view_.reset(new PrepareFrameAndViewForPrint( 1714 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(
1731 print_params, frame, node, ignore_css_margins_)); 1715 print_params, frame, node, ignore_css_margins_));
1732 DCHECK(!print_pages_params_->params.selection_only || 1716 DCHECK(!print_pages_params_->params.selection_only ||
1733 print_pages_params_->pages.empty()); 1717 print_pages_params_->pages.empty());
1734 prep_frame_view_->CopySelectionIfNeeded( 1718 prep_frame_view_->CopySelectionIfNeeded(
1735 render_view()->GetWebkitPreferences(), 1719 render_frame()->GetWebkitPreferences(),
1736 base::Bind(&PrintWebViewHelper::OnFramePreparedForPrintPages, 1720 base::Bind(&PrintWebViewHelper::OnFramePreparedForPrintPages,
1737 base::Unretained(this))); 1721 base::Unretained(this)));
1738 return true; 1722 return true;
1739 } 1723 }
1740 #endif // defined(ENABLE_BASIC_PRINTING) 1724 #endif // defined(ENABLE_BASIC_PRINTING)
1741 1725
1742 #if !defined(OS_MACOSX) 1726 #if !defined(OS_MACOSX)
1743 void PrintWebViewHelper::PrintPageInternal( 1727 void PrintWebViewHelper::PrintPageInternal(
1744 const PrintMsg_PrintPage_Params& params, 1728 const PrintMsg_PrintPage_Params& params,
1745 blink::WebLocalFrame* frame, 1729 blink::WebLocalFrame* frame,
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
2250 blink::WebConsoleMessage::LevelWarning, message)); 2234 blink::WebConsoleMessage::LevelWarning, message));
2251 return false; 2235 return false;
2252 } 2236 }
2253 2237
2254 void PrintWebViewHelper::ScriptingThrottler::Reset() { 2238 void PrintWebViewHelper::ScriptingThrottler::Reset() {
2255 // Reset counter on successful print. 2239 // Reset counter on successful print.
2256 count_ = 0; 2240 count_ = 0;
2257 } 2241 }
2258 2242
2259 } // namespace printing 2243 } // namespace printing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698