Chromium Code Reviews| Index: chrome/renderer/printing/print_web_view_helper.cc |
| diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc |
| index f038ed665eab5232fe2a008389d9fdbaf4e358c2..a99096895275af075f851d48338bb7902433a844 100644 |
| --- a/chrome/renderer/printing/print_web_view_helper.cc |
| +++ b/chrome/renderer/printing/print_web_view_helper.cc |
| @@ -7,7 +7,6 @@ |
| #include <string> |
| #include "base/auto_reset.h" |
| -#include "base/command_line.h" |
| #include "base/json/json_writer.h" |
| #include "base/logging.h" |
| #include "base/message_loop/message_loop.h" |
| @@ -16,11 +15,8 @@ |
| #include "base/strings/string_number_conversions.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| -#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/print_messages.h" |
| -#include "chrome/common/render_messages.h" |
| #include "chrome/grit/browser_resources.h" |
| -#include "chrome/renderer/prerender/prerender_helper.h" |
| #include "content/public/common/web_preferences.h" |
| #include "content/public/renderer/render_frame.h" |
| #include "content/public/renderer/render_thread.h" |
| @@ -47,7 +43,6 @@ |
| #include "ui/base/resource/resource_bundle.h" |
| #if defined(ENABLE_EXTENSIONS) |
| -#include "chrome/common/extensions/extension_constants.h" |
| #include "extensions/common/constants.h" |
| #endif // defined(ENABLE_EXTENSIONS) |
| @@ -411,11 +406,12 @@ PrintMsg_Print_Params CalculatePrintParamsForCss( |
| } |
| // Return the PDF object element if |frame| is the out of process PDF extension. |
| -blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) { |
| +blink::WebElement GetPdfElement(blink::WebLocalFrame* frame, |
| + const char* pdf_extension_id) { |
|
dgn
2015/01/06 16:35:31
Would it be better to make this function a method
Vitaly Buka (NO REVIEWS)
2015/01/06 19:29:24
It's fine to keep as is
On 2015/01/06 16:35:31, d
dgn
2015/01/06 21:01:45
Done.
|
| #if defined(ENABLE_EXTENSIONS) |
| GURL url = frame->document().url(); |
| if (url.SchemeIs(extensions::kExtensionScheme) && |
| - url.host() == extension_misc::kPdfExtensionId) { |
| + url.host() == pdf_extension_id) { |
| // <object> with id="plugin" is created in |
| // chrome/browser/resources/pdf/pdf.js. |
| auto plugin_element = frame->document().getElementById("plugin"); |
| @@ -779,7 +775,12 @@ void PrepareFrameAndViewForPrint::FinishPrinting() { |
| on_ready_.Reset(); |
| } |
| -PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view) |
| +PrintWebViewHelper::PrintWebViewHelper( |
| + content::RenderView* render_view, |
| + bool out_of_process_pdf_enabled, |
| + bool print_preview_disabled, |
| + const char* pdf_extension_id, |
| + scoped_ptr<Delegate> delegate) |
| : content::RenderViewObserver(render_view), |
| content::RenderViewObserverTracker<PrintWebViewHelper>(render_view), |
| reset_prep_frame_view_(false), |
| @@ -788,14 +789,15 @@ PrintWebViewHelper::PrintWebViewHelper(content::RenderView* render_view) |
| is_scripted_printing_blocked_(false), |
| notify_browser_of_print_failure_(true), |
| print_for_preview_(false), |
| + out_of_process_pdf_enabled_(out_of_process_pdf_enabled), |
| + pdf_extension_id_(pdf_extension_id), |
| + delegate_(delegate.Pass()), |
| print_node_in_progress_(false), |
| is_loading_(false), |
| is_scripted_preview_delayed_(false), |
| weak_ptr_factory_(this) { |
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| - switches::kDisablePrintPreview)) { |
| + if (print_preview_disabled) |
| DisablePreview(); |
| - } |
| } |
| PrintWebViewHelper::~PrintWebViewHelper() {} |
| @@ -834,11 +836,8 @@ void PrintWebViewHelper::PrintPage(blink::WebLocalFrame* frame, |
| DCHECK(frame); |
| // Allow Prerendering to cancel this print request if necessary. |
| - if (prerender::PrerenderHelper::IsPrerendering( |
| - render_view()->GetMainRenderFrame())) { |
| - Send(new ChromeViewHostMsg_CancelPrerenderForPrinting(routing_id())); |
| + if (delegate_->CancelPrerender(render_view(), routing_id())) |
| return; |
| - } |
| if (!IsScriptInitiatedPrintAllowed(frame, user_initiated)) |
| return; |
| @@ -895,10 +894,9 @@ void PrintWebViewHelper::OnPrintForPrintPreview( |
| // the element with ID "pdf-viewer" if it isn't an iframe. |
| blink::WebLocalFrame* plugin_frame = pdf_element.document().frame(); |
| blink::WebElement plugin_element = pdf_element; |
| - if (switches::OutOfProcessPdfEnabled() && |
| - pdf_element.hasHTMLTagName("iframe")) { |
| + if (out_of_process_pdf_enabled_ && pdf_element.hasHTMLTagName("iframe")) { |
| plugin_frame = blink::WebLocalFrame::fromFrameOwnerElement(pdf_element); |
| - plugin_element = GetPdfElement(plugin_frame); |
| + plugin_element = GetPdfElement(plugin_frame, pdf_extension_id_); |
| if (plugin_element.isNull()) { |
| NOTREACHED(); |
| return; |
| @@ -958,7 +956,7 @@ void PrintWebViewHelper::OnPrintPages() { |
| return; |
| // If we are printing a PDF extension frame, find the plugin node and print |
| // that instead. |
| - auto plugin = GetPdfElement(frame); |
| + auto plugin = GetPdfElement(frame, pdf_extension_id_); |
| Print(frame, plugin, false); |
| } |
| @@ -1213,7 +1211,7 @@ void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { |
| DCHECK(frame); |
| // If we are printing a PDF extension frame, find the plugin node and print |
| // that instead. |
| - auto plugin = GetPdfElement(frame); |
| + auto plugin = GetPdfElement(frame, pdf_extension_id_); |
| if (!plugin.isNull()) { |
| PrintNode(plugin); |
| return; |