| 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 "chrome/renderer/chrome_content_renderer_client.h" | 5 #include "chrome/renderer/chrome_content_renderer_client.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/debug/crash_logging.h" | 8 #include "base/debug/crash_logging.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/field_trial.h" | 10 #include "base/metrics/field_trial.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 #include "chrome/renderer/external_extension.h" | 44 #include "chrome/renderer/external_extension.h" |
| 45 #include "chrome/renderer/loadtimes_extension_bindings.h" | 45 #include "chrome/renderer/loadtimes_extension_bindings.h" |
| 46 #include "chrome/renderer/media/cast_ipc_dispatcher.h" | 46 #include "chrome/renderer/media/cast_ipc_dispatcher.h" |
| 47 #include "chrome/renderer/media/chrome_key_systems.h" | 47 #include "chrome/renderer/media/chrome_key_systems.h" |
| 48 #include "chrome/renderer/net/net_error_helper.h" | 48 #include "chrome/renderer/net/net_error_helper.h" |
| 49 #include "chrome/renderer/net/prescient_networking_dispatcher.h" | 49 #include "chrome/renderer/net/prescient_networking_dispatcher.h" |
| 50 #include "chrome/renderer/net/renderer_net_predictor.h" | 50 #include "chrome/renderer/net/renderer_net_predictor.h" |
| 51 #include "chrome/renderer/net_benchmarking_extension.h" | 51 #include "chrome/renderer/net_benchmarking_extension.h" |
| 52 #include "chrome/renderer/page_load_histograms.h" | 52 #include "chrome/renderer/page_load_histograms.h" |
| 53 #include "chrome/renderer/pepper/pepper_helper.h" | 53 #include "chrome/renderer/pepper/pepper_helper.h" |
| 54 #include "chrome/renderer/pepper/ppb_pdf_impl.h" | |
| 55 #include "chrome/renderer/playback_extension.h" | 54 #include "chrome/renderer/playback_extension.h" |
| 56 #include "chrome/renderer/plugins/chrome_plugin_placeholder.h" | 55 #include "chrome/renderer/plugins/chrome_plugin_placeholder.h" |
| 57 #include "chrome/renderer/plugins/plugin_uma.h" | 56 #include "chrome/renderer/plugins/plugin_uma.h" |
| 58 #include "chrome/renderer/prefetch_helper.h" | 57 #include "chrome/renderer/prefetch_helper.h" |
| 59 #include "chrome/renderer/prerender/prerender_dispatcher.h" | 58 #include "chrome/renderer/prerender/prerender_dispatcher.h" |
| 60 #include "chrome/renderer/prerender/prerender_helper.h" | 59 #include "chrome/renderer/prerender/prerender_helper.h" |
| 61 #include "chrome/renderer/prerender/prerender_media_load_deferrer.h" | 60 #include "chrome/renderer/prerender/prerender_media_load_deferrer.h" |
| 62 #include "chrome/renderer/prerender/prerenderer_client.h" | 61 #include "chrome/renderer/prerender/prerenderer_client.h" |
| 63 #include "chrome/renderer/principals_extension_bindings.h" | 62 #include "chrome/renderer/principals_extension_bindings.h" |
| 64 #include "chrome/renderer/printing/print_web_view_helper.h" | 63 #include "chrome/renderer/printing/print_web_view_helper.h" |
| 65 #include "chrome/renderer/safe_browsing/malware_dom_details.h" | 64 #include "chrome/renderer/safe_browsing/malware_dom_details.h" |
| 66 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" | 65 #include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h" |
| 67 #include "chrome/renderer/searchbox/search_bouncer.h" | 66 #include "chrome/renderer/searchbox/search_bouncer.h" |
| 68 #include "chrome/renderer/searchbox/searchbox.h" | 67 #include "chrome/renderer/searchbox/searchbox.h" |
| 69 #include "chrome/renderer/searchbox/searchbox_extension.h" | 68 #include "chrome/renderer/searchbox/searchbox_extension.h" |
| 70 #include "chrome/renderer/tts_dispatcher.h" | 69 #include "chrome/renderer/tts_dispatcher.h" |
| 71 #include "chrome/renderer/worker_permission_client_proxy.h" | 70 #include "chrome/renderer/worker_permission_client_proxy.h" |
| 72 #include "components/autofill/content/renderer/autofill_agent.h" | 71 #include "components/autofill/content/renderer/autofill_agent.h" |
| 73 #include "components/autofill/content/renderer/password_autofill_agent.h" | 72 #include "components/autofill/content/renderer/password_autofill_agent.h" |
| 74 #include "components/autofill/content/renderer/password_generation_agent.h" | 73 #include "components/autofill/content/renderer/password_generation_agent.h" |
| 75 #include "components/dom_distiller/core/url_constants.h" | 74 #include "components/dom_distiller/core/url_constants.h" |
| 76 #include "components/nacl/renderer/ppb_nacl_private_impl.h" | 75 #include "components/nacl/renderer/ppb_nacl_private_impl.h" |
| 76 #include "components/pdf/renderer/ppb_pdf_impl.h" |
| 77 #include "components/plugins/renderer/mobile_youtube_plugin.h" | 77 #include "components/plugins/renderer/mobile_youtube_plugin.h" |
| 78 #include "components/signin/core/common/profile_management_switches.h" | 78 #include "components/signin/core/common/profile_management_switches.h" |
| 79 #include "components/visitedlink/renderer/visitedlink_slave.h" | 79 #include "components/visitedlink/renderer/visitedlink_slave.h" |
| 80 #include "content/public/common/content_constants.h" | 80 #include "content/public/common/content_constants.h" |
| 81 #include "content/public/renderer/pepper_plugin_instance.h" |
| 81 #include "content/public/renderer/render_frame.h" | 82 #include "content/public/renderer/render_frame.h" |
| 82 #include "content/public/renderer/render_thread.h" | 83 #include "content/public/renderer/render_thread.h" |
| 83 #include "content/public/renderer/render_view.h" | 84 #include "content/public/renderer/render_view.h" |
| 84 #include "content/public/renderer/render_view_visitor.h" | 85 #include "content/public/renderer/render_view_visitor.h" |
| 85 #include "extensions/common/constants.h" | 86 #include "extensions/common/constants.h" |
| 86 #include "extensions/common/extension.h" | 87 #include "extensions/common/extension.h" |
| 87 #include "extensions/common/extension_set.h" | 88 #include "extensions/common/extension_set.h" |
| 88 #include "extensions/common/extension_urls.h" | 89 #include "extensions/common/extension_urls.h" |
| 89 #include "extensions/common/switches.h" | 90 #include "extensions/common/switches.h" |
| 90 #include "extensions/renderer/dispatcher.h" | 91 #include "extensions/renderer/dispatcher.h" |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 void IsGuestViewApiAvailableToScriptContext( | 251 void IsGuestViewApiAvailableToScriptContext( |
| 251 bool* api_is_available, | 252 bool* api_is_available, |
| 252 extensions::ScriptContext* context) { | 253 extensions::ScriptContext* context) { |
| 253 if (context->GetAvailability("guestViewInternal").is_available()) { | 254 if (context->GetAvailability("guestViewInternal").is_available()) { |
| 254 *api_is_available = true; | 255 *api_is_available = true; |
| 255 } | 256 } |
| 256 } | 257 } |
| 257 | 258 |
| 258 } // namespace | 259 } // namespace |
| 259 | 260 |
| 261 #if defined(ENABLE_FULL_PRINTING) |
| 262 // XXX: Move into its own file. |
| 263 class PDFPluginPrintDelegate : public pdf::PPB_PDF_Impl::PrintDelegate { |
| 264 public: |
| 265 PDFPluginPrintDelegate() {} |
| 266 virtual ~PDFPluginPrintDelegate() {} |
| 267 |
| 268 virtual bool IsPrintingEnabled(PP_Instance instance_id) OVERRIDE { |
| 269 blink::WebElement element = GetWebElement(instance_id); |
| 270 printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element); |
| 271 return helper && helper->IsPrintingEnabled(); |
| 272 } |
| 273 |
| 274 virtual void Print(PP_Instance instance_id) OVERRIDE { |
| 275 blink::WebElement element = GetWebElement(instance_id); |
| 276 printing::PrintWebViewHelper* helper = GetPrintWebViewHelper(element); |
| 277 if (helper) |
| 278 helper->PrintNode(element); |
| 279 } |
| 280 |
| 281 private: |
| 282 blink::WebElement GetWebElement(PP_Instance instance_id) { |
| 283 content::PepperPluginInstance* instance = |
| 284 content::PepperPluginInstance::Get(instance_id); |
| 285 if (!instance) |
| 286 return blink::WebElement(); |
| 287 return instance->GetContainer()->element(); |
| 288 } |
| 289 |
| 290 printing::PrintWebViewHelper* GetPrintWebViewHelper( |
| 291 const blink::WebElement& element) { |
| 292 if (element.isNull()) |
| 293 return NULL; |
| 294 blink::WebView* view = element.document().frame()->view(); |
| 295 content::RenderView* render_view = content::RenderView::FromWebView(view); |
| 296 return printing::PrintWebViewHelper::Get(render_view); |
| 297 } |
| 298 |
| 299 DISALLOW_COPY_AND_ASSIGN(PDFPluginPrintDelegate); |
| 300 }; |
| 301 #endif // defined(ENABLE_FULL_PRINTING) |
| 302 |
| 260 ChromeContentRendererClient::ChromeContentRendererClient() { | 303 ChromeContentRendererClient::ChromeContentRendererClient() { |
| 261 g_current_client = this; | 304 g_current_client = this; |
| 262 | 305 |
| 263 extensions::ExtensionsClient::Set( | 306 extensions::ExtensionsClient::Set( |
| 264 extensions::ChromeExtensionsClient::GetInstance()); | 307 extensions::ChromeExtensionsClient::GetInstance()); |
| 265 extensions::ExtensionsRendererClient::Set( | 308 extensions::ExtensionsRendererClient::Set( |
| 266 ChromeExtensionsRendererClient::GetInstance()); | 309 ChromeExtensionsRendererClient::GetInstance()); |
| 267 #if defined(ENABLE_PLUGINS) | 310 #if defined(ENABLE_PLUGINS) |
| 268 for (size_t i = 0; i < arraysize(kPredefinedAllowedCompositorOrigins); ++i) | 311 for (size_t i = 0; i < arraysize(kPredefinedAllowedCompositorOrigins); ++i) |
| 269 allowed_compositor_origins_.insert(kPredefinedAllowedCompositorOrigins[i]); | 312 allowed_compositor_origins_.insert(kPredefinedAllowedCompositorOrigins[i]); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy( | 452 WebSecurityPolicy::registerURLSchemeAsBypassingContentSecurityPolicy( |
| 410 extension_resource_scheme); | 453 extension_resource_scheme); |
| 411 | 454 |
| 412 #if defined(OS_WIN) | 455 #if defined(OS_WIN) |
| 413 // Report if the renderer process has been patched by chrome_elf. | 456 // Report if the renderer process has been patched by chrome_elf. |
| 414 // TODO(csharp): Remove once the renderer is no longer getting | 457 // TODO(csharp): Remove once the renderer is no longer getting |
| 415 // patched this way. | 458 // patched this way. |
| 416 if (blacklist::IsBlacklistInitialized()) | 459 if (blacklist::IsBlacklistInitialized()) |
| 417 UMA_HISTOGRAM_BOOLEAN("Blacklist.PatchedInRenderer", true); | 460 UMA_HISTOGRAM_BOOLEAN("Blacklist.PatchedInRenderer", true); |
| 418 #endif | 461 #endif |
| 462 #if defined(ENABLE_FULL_PRINTING) |
| 463 pdf_print_delegate_.reset(new PDFPluginPrintDelegate()); |
| 464 pdf::PPB_PDF_Impl::SetPrintDelegate(pdf_print_delegate_.get()); |
| 465 #endif |
| 419 } | 466 } |
| 420 | 467 |
| 421 void ChromeContentRendererClient::RenderFrameCreated( | 468 void ChromeContentRendererClient::RenderFrameCreated( |
| 422 content::RenderFrame* render_frame) { | 469 content::RenderFrame* render_frame) { |
| 423 new ChromeRenderFrameObserver(render_frame); | 470 new ChromeRenderFrameObserver(render_frame); |
| 424 | 471 |
| 425 ContentSettingsObserver* content_settings = | 472 ContentSettingsObserver* content_settings = |
| 426 new ContentSettingsObserver(render_frame, extension_dispatcher_.get()); | 473 new ContentSettingsObserver(render_frame, extension_dispatcher_.get()); |
| 427 if (chrome_observer_.get()) { | 474 if (chrome_observer_.get()) { |
| 428 content_settings->SetContentSettingRules( | 475 content_settings->SetContentSettingRules( |
| (...skipping 950 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1379 } | 1426 } |
| 1380 | 1427 |
| 1381 const void* ChromeContentRendererClient::CreatePPAPIInterface( | 1428 const void* ChromeContentRendererClient::CreatePPAPIInterface( |
| 1382 const std::string& interface_name) { | 1429 const std::string& interface_name) { |
| 1383 #if defined(ENABLE_PLUGINS) | 1430 #if defined(ENABLE_PLUGINS) |
| 1384 #if !defined(DISABLE_NACL) | 1431 #if !defined(DISABLE_NACL) |
| 1385 if (interface_name == PPB_NACL_PRIVATE_INTERFACE) | 1432 if (interface_name == PPB_NACL_PRIVATE_INTERFACE) |
| 1386 return nacl::GetNaClPrivateInterface(); | 1433 return nacl::GetNaClPrivateInterface(); |
| 1387 #endif // DISABLE_NACL | 1434 #endif // DISABLE_NACL |
| 1388 if (interface_name == PPB_PDF_INTERFACE) | 1435 if (interface_name == PPB_PDF_INTERFACE) |
| 1389 return PPB_PDF_Impl::GetInterface(); | 1436 return pdf::PPB_PDF_Impl::GetInterface(); |
| 1390 #endif | 1437 #endif |
| 1391 return NULL; | 1438 return NULL; |
| 1392 } | 1439 } |
| 1393 | 1440 |
| 1394 bool ChromeContentRendererClient::IsExternalPepperPlugin( | 1441 bool ChromeContentRendererClient::IsExternalPepperPlugin( |
| 1395 const std::string& module_name) { | 1442 const std::string& module_name) { |
| 1396 // TODO(bbudge) remove this when the trusted NaCl plugin has been removed. | 1443 // TODO(bbudge) remove this when the trusted NaCl plugin has been removed. |
| 1397 // We must defer certain plugin events for NaCl instances since we switch | 1444 // We must defer certain plugin events for NaCl instances since we switch |
| 1398 // from the in-process to the out-of-process proxy after instantiating them. | 1445 // from the in-process to the out-of-process proxy after instantiating them. |
| 1399 return module_name == "Native Client"; | 1446 return module_name == "Native Client"; |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1506 | 1553 |
| 1507 if (IsExtensionOrSharedModuleWhitelisted(url, allowed_video_decode_origins_)) | 1554 if (IsExtensionOrSharedModuleWhitelisted(url, allowed_video_decode_origins_)) |
| 1508 return true; | 1555 return true; |
| 1509 | 1556 |
| 1510 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | 1557 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
| 1511 return channel <= chrome::VersionInfo::CHANNEL_DEV; | 1558 return channel <= chrome::VersionInfo::CHANNEL_DEV; |
| 1512 #else | 1559 #else |
| 1513 return false; | 1560 return false; |
| 1514 #endif | 1561 #endif |
| 1515 } | 1562 } |
| OLD | NEW |