OLD | NEW |
---|---|
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 <string> | 7 #include <string> |
8 | 8 |
9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
760 if (owns_web_view_) { | 760 if (owns_web_view_) { |
761 DCHECK(!frame->isLoading()); | 761 DCHECK(!frame->isLoading()); |
762 owns_web_view_ = false; | 762 owns_web_view_ = false; |
763 web_view->close(); | 763 web_view->close(); |
764 } | 764 } |
765 } | 765 } |
766 frame_.Reset(NULL); | 766 frame_.Reset(NULL); |
767 on_ready_.Reset(); | 767 on_ready_.Reset(); |
768 } | 768 } |
769 | 769 |
770 bool PrintWebViewHelper::Delegate::IsAskPrintSettingsEnabled() { | |
771 return true; | |
772 } | |
773 | |
774 bool PrintWebViewHelper::Delegate::IsScriptedPrintEnabled() { | |
775 return true; | |
776 } | |
777 | |
770 PrintWebViewHelper::PrintWebViewHelper( | 778 PrintWebViewHelper::PrintWebViewHelper( |
771 content::RenderView* render_view, | 779 content::RenderView* render_view, |
772 scoped_ptr<Delegate> delegate) | 780 scoped_ptr<Delegate> delegate) |
773 : content::RenderViewObserver(render_view), | 781 : content::RenderViewObserver(render_view), |
774 content::RenderViewObserverTracker<PrintWebViewHelper>(render_view), | 782 content::RenderViewObserverTracker<PrintWebViewHelper>(render_view), |
775 reset_prep_frame_view_(false), | 783 reset_prep_frame_view_(false), |
776 is_print_ready_metafile_sent_(false), | 784 is_print_ready_metafile_sent_(false), |
777 ignore_css_margins_(false), | 785 ignore_css_margins_(false), |
778 is_scripted_printing_blocked_(false), | 786 is_scripted_printing_blocked_(false), |
779 notify_browser_of_print_failure_(true), | 787 notify_browser_of_print_failure_(true), |
780 print_for_preview_(false), | 788 print_for_preview_(false), |
781 delegate_(delegate.Pass()), | 789 delegate_(delegate.Pass()), |
782 print_node_in_progress_(false), | 790 print_node_in_progress_(false), |
783 is_loading_(false), | 791 is_loading_(false), |
784 is_scripted_preview_delayed_(false), | 792 is_scripted_preview_delayed_(false), |
785 weak_ptr_factory_(this) { | 793 weak_ptr_factory_(this) { |
786 if (!delegate_->IsPrintPreviewEnabled()) | 794 if (!delegate_->IsPrintPreviewEnabled()) |
787 DisablePreview(); | 795 DisablePreview(); |
788 } | 796 } |
789 | 797 |
790 PrintWebViewHelper::~PrintWebViewHelper() {} | 798 PrintWebViewHelper::~PrintWebViewHelper() {} |
791 | 799 |
792 // static | 800 // static |
793 void PrintWebViewHelper::DisablePreview() { | 801 void PrintWebViewHelper::DisablePreview() { |
794 g_is_preview_enabled_ = false; | 802 g_is_preview_enabled_ = false; |
795 } | 803 } |
796 | 804 |
797 bool PrintWebViewHelper::IsScriptInitiatedPrintAllowed( | 805 bool PrintWebViewHelper::IsScriptInitiatedPrintAllowed( |
798 blink::WebFrame* frame, bool user_initiated) { | 806 blink::WebFrame* frame, bool user_initiated) { |
807 if (!delegate_->IsScriptedPrintEnabled()) | |
dgn
2015/01/23 15:21:09
This is where window.print() was previously disabl
| |
808 return false; | |
809 | |
799 // If preview is enabled, then the print dialog is tab modal, and the user | 810 // If preview is enabled, then the print dialog is tab modal, and the user |
800 // can always close the tab on a mis-behaving page (the system print dialog | 811 // can always close the tab on a mis-behaving page (the system print dialog |
801 // is app modal). If the print was initiated through user action, don't | 812 // is app modal). If the print was initiated through user action, don't |
802 // throttle. Or, if the command line flag to skip throttling has been set. | 813 // throttle. Or, if the command line flag to skip throttling has been set. |
803 return !is_scripted_printing_blocked_ && | 814 return !is_scripted_printing_blocked_ && |
804 (user_initiated || g_is_preview_enabled_ || | 815 (user_initiated || g_is_preview_enabled_ || |
805 scripting_throttler_.IsAllowed(frame)); | 816 scripting_throttler_.IsAllowed(frame)); |
806 } | 817 } |
807 | 818 |
808 void PrintWebViewHelper::DidStartLoading() { | 819 void PrintWebViewHelper::DidStartLoading() { |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1260 return; // Failed to init print page settings. | 1271 return; // Failed to init print page settings. |
1261 } | 1272 } |
1262 | 1273 |
1263 // Some full screen plugins can say they don't want to print. | 1274 // Some full screen plugins can say they don't want to print. |
1264 if (!expected_page_count) { | 1275 if (!expected_page_count) { |
1265 DidFinishPrinting(FAIL_PRINT); | 1276 DidFinishPrinting(FAIL_PRINT); |
1266 return; | 1277 return; |
1267 } | 1278 } |
1268 | 1279 |
1269 // Ask the browser to show UI to retrieve the final print settings. | 1280 // Ask the browser to show UI to retrieve the final print settings. |
1270 if (!GetPrintSettingsFromUser(frame_ref.GetFrame(), node, | 1281 if (delegate_->IsAskPrintSettingsEnabled() && |
1282 !GetPrintSettingsFromUser(frame_ref.GetFrame(), node, | |
1271 expected_page_count, | 1283 expected_page_count, |
1272 is_scripted)) { | 1284 is_scripted)) { |
1273 DidFinishPrinting(OK); // Release resources and fail silently. | 1285 DidFinishPrinting(OK); // Release resources and fail silently. |
1274 return; | 1286 return; |
1275 } | 1287 } |
1276 | 1288 |
1277 // Render Pages for printing. | 1289 // Render Pages for printing. |
1278 if (!RenderPagesForPrint(frame_ref.GetFrame(), node)) { | 1290 if (!RenderPagesForPrint(frame_ref.GetFrame(), node)) { |
1279 LOG(ERROR) << "RenderPagesForPrint failed"; | 1291 LOG(ERROR) << "RenderPagesForPrint failed"; |
1280 DidFinishPrinting(FAIL_PRINT); | 1292 DidFinishPrinting(FAIL_PRINT); |
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2030 blink::WebConsoleMessage::LevelWarning, message)); | 2042 blink::WebConsoleMessage::LevelWarning, message)); |
2031 return false; | 2043 return false; |
2032 } | 2044 } |
2033 | 2045 |
2034 void PrintWebViewHelper::ScriptingThrottler::Reset() { | 2046 void PrintWebViewHelper::ScriptingThrottler::Reset() { |
2035 // Reset counter on successful print. | 2047 // Reset counter on successful print. |
2036 count_ = 0; | 2048 count_ = 0; |
2037 } | 2049 } |
2038 | 2050 |
2039 } // namespace printing | 2051 } // namespace printing |
OLD | NEW |