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 17 matching lines...) Expand all Loading... |
28 #include "chrome/common/url_constants.h" | 28 #include "chrome/common/url_constants.h" |
29 #include "chrome/grit/generated_resources.h" | 29 #include "chrome/grit/generated_resources.h" |
30 #include "chrome/grit/locale_settings.h" | 30 #include "chrome/grit/locale_settings.h" |
31 #include "chrome/grit/renderer_resources.h" | 31 #include "chrome/grit/renderer_resources.h" |
32 #include "chrome/renderer/benchmarking_extension.h" | 32 #include "chrome/renderer/benchmarking_extension.h" |
33 #include "chrome/renderer/browser_plugin/chrome_browser_plugin_delegate.h" | 33 #include "chrome/renderer/browser_plugin/chrome_browser_plugin_delegate.h" |
34 #include "chrome/renderer/chrome_render_frame_observer.h" | 34 #include "chrome/renderer/chrome_render_frame_observer.h" |
35 #include "chrome/renderer/chrome_render_process_observer.h" | 35 #include "chrome/renderer/chrome_render_process_observer.h" |
36 #include "chrome/renderer/chrome_render_view_observer.h" | 36 #include "chrome/renderer/chrome_render_view_observer.h" |
37 #include "chrome/renderer/content_settings_observer.h" | 37 #include "chrome/renderer/content_settings_observer.h" |
38 #include "chrome/renderer/extensions/chrome_extension_helper.h" | |
39 #include "chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.h" | |
40 #include "chrome/renderer/extensions/chrome_extensions_renderer_client.h" | 38 #include "chrome/renderer/extensions/chrome_extensions_renderer_client.h" |
41 #include "chrome/renderer/extensions/extension_frame_helper.h" | |
42 #include "chrome/renderer/extensions/renderer_permissions_policy_delegate.h" | |
43 #include "chrome/renderer/extensions/resource_request_policy.h" | |
44 #include "chrome/renderer/external_extension.h" | 39 #include "chrome/renderer/external_extension.h" |
45 #include "chrome/renderer/loadtimes_extension_bindings.h" | 40 #include "chrome/renderer/loadtimes_extension_bindings.h" |
46 #include "chrome/renderer/media/cast_ipc_dispatcher.h" | 41 #include "chrome/renderer/media/cast_ipc_dispatcher.h" |
47 #include "chrome/renderer/media/chrome_key_systems.h" | 42 #include "chrome/renderer/media/chrome_key_systems.h" |
48 #include "chrome/renderer/net/net_error_helper.h" | 43 #include "chrome/renderer/net/net_error_helper.h" |
49 #include "chrome/renderer/net/prescient_networking_dispatcher.h" | 44 #include "chrome/renderer/net/prescient_networking_dispatcher.h" |
50 #include "chrome/renderer/net/renderer_net_predictor.h" | 45 #include "chrome/renderer/net/renderer_net_predictor.h" |
51 #include "chrome/renderer/net_benchmarking_extension.h" | 46 #include "chrome/renderer/net_benchmarking_extension.h" |
52 #include "chrome/renderer/page_load_histograms.h" | 47 #include "chrome/renderer/page_load_histograms.h" |
53 #include "chrome/renderer/pepper/pepper_helper.h" | 48 #include "chrome/renderer/pepper/pepper_helper.h" |
(...skipping 29 matching lines...) Expand all Loading... |
83 #include "content/public/common/content_constants.h" | 78 #include "content/public/common/content_constants.h" |
84 #include "content/public/renderer/render_frame.h" | 79 #include "content/public/renderer/render_frame.h" |
85 #include "content/public/renderer/render_thread.h" | 80 #include "content/public/renderer/render_thread.h" |
86 #include "content/public/renderer/render_view.h" | 81 #include "content/public/renderer/render_view.h" |
87 #include "content/public/renderer/render_view_visitor.h" | 82 #include "content/public/renderer/render_view_visitor.h" |
88 #include "extensions/common/constants.h" | 83 #include "extensions/common/constants.h" |
89 #include "extensions/common/extension.h" | 84 #include "extensions/common/extension.h" |
90 #include "extensions/common/extension_set.h" | 85 #include "extensions/common/extension_set.h" |
91 #include "extensions/common/extension_urls.h" | 86 #include "extensions/common/extension_urls.h" |
92 #include "extensions/common/switches.h" | 87 #include "extensions/common/switches.h" |
93 #include "extensions/renderer/dispatcher.h" | |
94 #include "extensions/renderer/extension_helper.h" | |
95 #include "extensions/renderer/script_context.h" | |
96 #include "ipc/ipc_sync_channel.h" | 88 #include "ipc/ipc_sync_channel.h" |
97 #include "net/base/net_errors.h" | 89 #include "net/base/net_errors.h" |
98 #include "ppapi/c/private/ppb_nacl_private.h" | 90 #include "ppapi/c/private/ppb_nacl_private.h" |
99 #include "ppapi/c/private/ppb_pdf.h" | 91 #include "ppapi/c/private/ppb_pdf.h" |
100 #include "ppapi/shared_impl/ppapi_switches.h" | 92 #include "ppapi/shared_impl/ppapi_switches.h" |
101 #include "third_party/WebKit/public/platform/WebURL.h" | 93 #include "third_party/WebKit/public/platform/WebURL.h" |
102 #include "third_party/WebKit/public/platform/WebURLError.h" | 94 #include "third_party/WebKit/public/platform/WebURLError.h" |
103 #include "third_party/WebKit/public/platform/WebURLRequest.h" | 95 #include "third_party/WebKit/public/platform/WebURLRequest.h" |
104 #include "third_party/WebKit/public/web/WebCache.h" | 96 #include "third_party/WebKit/public/web/WebCache.h" |
105 #include "third_party/WebKit/public/web/WebDataSource.h" | 97 #include "third_party/WebKit/public/web/WebDataSource.h" |
106 #include "third_party/WebKit/public/web/WebDocument.h" | 98 #include "third_party/WebKit/public/web/WebDocument.h" |
107 #include "third_party/WebKit/public/web/WebElement.h" | 99 #include "third_party/WebKit/public/web/WebElement.h" |
108 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 100 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
109 #include "third_party/WebKit/public/web/WebPluginContainer.h" | 101 #include "third_party/WebKit/public/web/WebPluginContainer.h" |
110 #include "third_party/WebKit/public/web/WebPluginParams.h" | 102 #include "third_party/WebKit/public/web/WebPluginParams.h" |
111 #include "third_party/WebKit/public/web/WebSecurityOrigin.h" | 103 #include "third_party/WebKit/public/web/WebSecurityOrigin.h" |
112 #include "third_party/WebKit/public/web/WebSecurityPolicy.h" | 104 #include "third_party/WebKit/public/web/WebSecurityPolicy.h" |
113 #include "ui/base/l10n/l10n_util.h" | 105 #include "ui/base/l10n/l10n_util.h" |
114 #include "ui/base/layout.h" | 106 #include "ui/base/layout.h" |
115 #include "ui/base/resource/resource_bundle.h" | 107 #include "ui/base/resource/resource_bundle.h" |
116 #include "ui/base/webui/jstemplate_builder.h" | 108 #include "ui/base/webui/jstemplate_builder.h" |
117 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. | 109 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. |
118 | 110 |
119 #if !defined(DISABLE_NACL) | 111 #if !defined(DISABLE_NACL) |
120 #include "components/nacl/common/nacl_constants.h" | 112 #include "components/nacl/common/nacl_constants.h" |
121 #include "components/nacl/renderer/nacl_helper.h" | 113 #include "components/nacl/renderer/nacl_helper.h" |
122 #endif | 114 #endif |
123 | 115 |
124 #if defined(ENABLE_EXTENSIONS) | 116 #if defined(ENABLE_EXTENSIONS) |
| 117 #include "chrome/renderer/extensions/chrome_extension_helper.h" |
| 118 #include "chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.h" |
| 119 #include "chrome/renderer/extensions/extension_frame_helper.h" |
| 120 #include "chrome/renderer/extensions/renderer_permissions_policy_delegate.h" |
| 121 #include "chrome/renderer/extensions/resource_request_policy.h" |
| 122 #include "extensions/renderer/dispatcher.h" |
| 123 #include "extensions/renderer/extension_helper.h" |
125 #include "extensions/renderer/extensions_render_frame_observer.h" | 124 #include "extensions/renderer/extensions_render_frame_observer.h" |
| 125 #include "extensions/renderer/script_context.h" |
126 #endif | 126 #endif |
127 | 127 |
128 #if defined(ENABLE_FULL_PRINTING) | 128 #if defined(ENABLE_FULL_PRINTING) |
129 #include "chrome/renderer/pepper/chrome_pdf_print_client.h" | 129 #include "chrome/renderer/pepper/chrome_pdf_print_client.h" |
130 #endif | 130 #endif |
131 | 131 |
132 #if defined(ENABLE_SPELLCHECK) | 132 #if defined(ENABLE_SPELLCHECK) |
133 #include "chrome/renderer/spellchecker/spellcheck.h" | 133 #include "chrome/renderer/spellchecker/spellcheck.h" |
134 #include "chrome/renderer/spellchecker/spellcheck_provider.h" | 134 #include "chrome/renderer/spellchecker/spellcheck_provider.h" |
135 #endif | 135 #endif |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 // Treat CDM invocations like JavaScript. | 247 // Treat CDM invocations like JavaScript. |
248 if (plugin.name == ASCIIToUTF16(kWidevineCdmDisplayName)) { | 248 if (plugin.name == ASCIIToUTF16(kWidevineCdmDisplayName)) { |
249 DCHECK(plugin.type == WebPluginInfo::PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS); | 249 DCHECK(plugin.type == WebPluginInfo::PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS); |
250 return true; | 250 return true; |
251 } | 251 } |
252 #endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS) | 252 #endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(ENABLE_PEPPER_CDMS) |
253 | 253 |
254 return false; | 254 return false; |
255 } | 255 } |
256 | 256 |
| 257 #if defined(ENABLE_EXTENSIONS) |
257 void IsGuestViewApiAvailableToScriptContext( | 258 void IsGuestViewApiAvailableToScriptContext( |
258 bool* api_is_available, | 259 bool* api_is_available, |
259 extensions::ScriptContext* context) { | 260 extensions::ScriptContext* context) { |
260 if (context->GetAvailability("guestViewInternal").is_available()) { | 261 if (context->GetAvailability("guestViewInternal").is_available()) { |
261 *api_is_available = true; | 262 *api_is_available = true; |
262 } | 263 } |
263 } | 264 } |
| 265 #endif |
264 | 266 |
265 } // namespace | 267 } // namespace |
266 | 268 |
267 ChromeContentRendererClient::ChromeContentRendererClient() { | 269 ChromeContentRendererClient::ChromeContentRendererClient() { |
268 g_current_client = this; | 270 g_current_client = this; |
269 | 271 |
270 extensions::ExtensionsClient::Set( | 272 extensions::ExtensionsClient::Set( |
271 extensions::ChromeExtensionsClient::GetInstance()); | 273 extensions::ChromeExtensionsClient::GetInstance()); |
272 extensions::ExtensionsRendererClient::Set( | 274 extensions::ExtensionsRendererClient::Set( |
273 ChromeExtensionsRendererClient::GetInstance()); | 275 ChromeExtensionsRendererClient::GetInstance()); |
274 #if defined(ENABLE_PLUGINS) | 276 #if defined(ENABLE_PLUGINS) |
275 for (size_t i = 0; i < arraysize(kPredefinedAllowedCompositorOrigins); ++i) | 277 for (size_t i = 0; i < arraysize(kPredefinedAllowedCompositorOrigins); ++i) |
276 allowed_compositor_origins_.insert(kPredefinedAllowedCompositorOrigins[i]); | 278 allowed_compositor_origins_.insert(kPredefinedAllowedCompositorOrigins[i]); |
277 for (size_t i = 0; i < arraysize(kPredefinedAllowedVideoDecodeOrigins); ++i) | 279 for (size_t i = 0; i < arraysize(kPredefinedAllowedVideoDecodeOrigins); ++i) |
278 allowed_video_decode_origins_.insert( | 280 allowed_video_decode_origins_.insert( |
279 kPredefinedAllowedVideoDecodeOrigins[i]); | 281 kPredefinedAllowedVideoDecodeOrigins[i]); |
280 #endif | 282 #endif |
281 } | 283 } |
282 | 284 |
283 ChromeContentRendererClient::~ChromeContentRendererClient() { | 285 ChromeContentRendererClient::~ChromeContentRendererClient() { |
284 g_current_client = NULL; | 286 g_current_client = NULL; |
285 } | 287 } |
286 | 288 |
287 void ChromeContentRendererClient::RenderThreadStarted() { | 289 void ChromeContentRendererClient::RenderThreadStarted() { |
288 RenderThread* thread = RenderThread::Get(); | 290 RenderThread* thread = RenderThread::Get(); |
289 | 291 |
290 chrome_observer_.reset(new ChromeRenderProcessObserver(this)); | 292 chrome_observer_.reset(new ChromeRenderProcessObserver(this)); |
291 web_cache_observer_.reset(new web_cache::WebCacheRenderProcessObserver()); | 293 web_cache_observer_.reset(new web_cache::WebCacheRenderProcessObserver()); |
292 | 294 |
| 295 #if defined(ENABLE_EXTENSIONS) |
293 extension_dispatcher_delegate_.reset( | 296 extension_dispatcher_delegate_.reset( |
294 new ChromeExtensionsDispatcherDelegate()); | 297 new ChromeExtensionsDispatcherDelegate()); |
295 // ChromeRenderViewTest::SetUp() creates its own ExtensionDispatcher and | 298 // ChromeRenderViewTest::SetUp() creates its own ExtensionDispatcher and |
296 // injects it using SetExtensionDispatcher(). Don't overwrite it. | 299 // injects it using SetExtensionDispatcher(). Don't overwrite it. |
297 if (!extension_dispatcher_) { | 300 if (!extension_dispatcher_) { |
298 extension_dispatcher_.reset( | 301 extension_dispatcher_.reset( |
299 new extensions::Dispatcher(extension_dispatcher_delegate_.get())); | 302 new extensions::Dispatcher(extension_dispatcher_delegate_.get())); |
300 } | 303 } |
301 permissions_policy_delegate_.reset( | 304 permissions_policy_delegate_.reset( |
302 new extensions::RendererPermissionsPolicyDelegate( | 305 new extensions::RendererPermissionsPolicyDelegate( |
303 extension_dispatcher_.get())); | 306 extension_dispatcher_.get())); |
| 307 #endif |
| 308 |
304 prescient_networking_dispatcher_.reset(new PrescientNetworkingDispatcher()); | 309 prescient_networking_dispatcher_.reset(new PrescientNetworkingDispatcher()); |
305 net_predictor_.reset(new RendererNetPredictor()); | 310 net_predictor_.reset(new RendererNetPredictor()); |
306 #if defined(ENABLE_SPELLCHECK) | 311 #if defined(ENABLE_SPELLCHECK) |
307 // ChromeRenderViewTest::SetUp() creates a Spellcheck and injects it using | 312 // ChromeRenderViewTest::SetUp() creates a Spellcheck and injects it using |
308 // SetSpellcheck(). Don't overwrite it. | 313 // SetSpellcheck(). Don't overwrite it. |
309 if (!spellcheck_) { | 314 if (!spellcheck_) { |
310 spellcheck_.reset(new SpellCheck()); | 315 spellcheck_.reset(new SpellCheck()); |
311 thread->AddObserver(spellcheck_.get()); | 316 thread->AddObserver(spellcheck_.get()); |
312 } | 317 } |
313 #endif | 318 #endif |
314 visited_link_slave_.reset(new visitedlink::VisitedLinkSlave()); | 319 visited_link_slave_.reset(new visitedlink::VisitedLinkSlave()); |
315 #if defined(FULL_SAFE_BROWSING) | 320 #if defined(FULL_SAFE_BROWSING) |
316 phishing_classifier_.reset(safe_browsing::PhishingClassifierFilter::Create()); | 321 phishing_classifier_.reset(safe_browsing::PhishingClassifierFilter::Create()); |
317 #endif | 322 #endif |
318 prerender_dispatcher_.reset(new prerender::PrerenderDispatcher()); | 323 prerender_dispatcher_.reset(new prerender::PrerenderDispatcher()); |
319 #if defined(ENABLE_WEBRTC) | 324 #if defined(ENABLE_WEBRTC) |
320 webrtc_logging_message_filter_ = new WebRtcLoggingMessageFilter( | 325 webrtc_logging_message_filter_ = new WebRtcLoggingMessageFilter( |
321 content::RenderThread::Get()->GetIOMessageLoopProxy()); | 326 content::RenderThread::Get()->GetIOMessageLoopProxy()); |
322 #endif | 327 #endif |
323 search_bouncer_.reset(new SearchBouncer()); | 328 search_bouncer_.reset(new SearchBouncer()); |
324 | 329 |
325 thread->AddObserver(chrome_observer_.get()); | 330 thread->AddObserver(chrome_observer_.get()); |
326 thread->AddObserver(web_cache_observer_.get()); | 331 thread->AddObserver(web_cache_observer_.get()); |
| 332 #if defined(ENABLE_EXTENSIONS) |
327 thread->AddObserver(extension_dispatcher_.get()); | 333 thread->AddObserver(extension_dispatcher_.get()); |
| 334 #endif |
328 #if defined(FULL_SAFE_BROWSING) | 335 #if defined(FULL_SAFE_BROWSING) |
329 thread->AddObserver(phishing_classifier_.get()); | 336 thread->AddObserver(phishing_classifier_.get()); |
330 #endif | 337 #endif |
331 thread->AddObserver(visited_link_slave_.get()); | 338 thread->AddObserver(visited_link_slave_.get()); |
332 thread->AddObserver(prerender_dispatcher_.get()); | 339 thread->AddObserver(prerender_dispatcher_.get()); |
333 thread->AddObserver(search_bouncer_.get()); | 340 thread->AddObserver(search_bouncer_.get()); |
334 | 341 |
335 #if defined(ENABLE_WEBRTC) | 342 #if defined(ENABLE_WEBRTC) |
336 thread->AddFilter(webrtc_logging_message_filter_.get()); | 343 thread->AddFilter(webrtc_logging_message_filter_.get()); |
337 #endif | 344 #endif |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 #if defined(ENABLE_FULL_PRINTING) | 435 #if defined(ENABLE_FULL_PRINTING) |
429 pdf_print_client_.reset(new ChromePDFPrintClient()); | 436 pdf_print_client_.reset(new ChromePDFPrintClient()); |
430 pdf::PPB_PDF_Impl::SetPrintClient(pdf_print_client_.get()); | 437 pdf::PPB_PDF_Impl::SetPrintClient(pdf_print_client_.get()); |
431 #endif | 438 #endif |
432 } | 439 } |
433 | 440 |
434 void ChromeContentRendererClient::RenderFrameCreated( | 441 void ChromeContentRendererClient::RenderFrameCreated( |
435 content::RenderFrame* render_frame) { | 442 content::RenderFrame* render_frame) { |
436 new ChromeRenderFrameObserver(render_frame); | 443 new ChromeRenderFrameObserver(render_frame); |
437 | 444 |
| 445 extensions::Dispatcher* ext_dispatcher = NULL; |
| 446 #if defined(ENABLE_EXTENSIONS) |
| 447 ext_dispatcher = extension_dispatcher_.get(); |
| 448 #endif |
438 ContentSettingsObserver* content_settings = | 449 ContentSettingsObserver* content_settings = |
439 new ContentSettingsObserver(render_frame, extension_dispatcher_.get()); | 450 new ContentSettingsObserver(render_frame, ext_dispatcher); |
440 if (chrome_observer_.get()) { | 451 if (chrome_observer_.get()) { |
441 content_settings->SetContentSettingRules( | 452 content_settings->SetContentSettingRules( |
442 chrome_observer_->content_setting_rules()); | 453 chrome_observer_->content_setting_rules()); |
443 } | 454 } |
444 | 455 |
445 #if defined(ENABLE_EXTENSIONS) | 456 #if defined(ENABLE_EXTENSIONS) |
446 new extensions::ExtensionsRenderFrameObserver(render_frame); | 457 new extensions::ExtensionsRenderFrameObserver(render_frame); |
| 458 new extensions::ExtensionFrameHelper(render_frame, ext_dispatcher); |
447 #endif | 459 #endif |
448 new extensions::ExtensionFrameHelper(render_frame, | |
449 extension_dispatcher_.get()); | |
450 | 460 |
451 #if defined(ENABLE_PLUGINS) | 461 #if defined(ENABLE_PLUGINS) |
452 new PepperHelper(render_frame); | 462 new PepperHelper(render_frame); |
453 #endif | 463 #endif |
454 | 464 |
455 #if !defined(DISABLE_NACL) | 465 #if !defined(DISABLE_NACL) |
456 new nacl::NaClHelper(render_frame); | 466 new nacl::NaClHelper(render_frame); |
457 #endif | 467 #endif |
458 | 468 |
459 // TODO(jam): when the frame tree moves into content and parent() works at | 469 // TODO(jam): when the frame tree moves into content and parent() works at |
(...skipping 11 matching lines...) Expand all Loading... |
471 // Only attach NetErrorHelper to the main frame, since only the main frame | 481 // Only attach NetErrorHelper to the main frame, since only the main frame |
472 // should get error pages. | 482 // should get error pages. |
473 // PrefetchHelper is also needed only for main frames. | 483 // PrefetchHelper is also needed only for main frames. |
474 new NetErrorHelper(render_frame); | 484 new NetErrorHelper(render_frame); |
475 new prefetch::PrefetchHelper(render_frame); | 485 new prefetch::PrefetchHelper(render_frame); |
476 } | 486 } |
477 } | 487 } |
478 | 488 |
479 void ChromeContentRendererClient::RenderViewCreated( | 489 void ChromeContentRendererClient::RenderViewCreated( |
480 content::RenderView* render_view) { | 490 content::RenderView* render_view) { |
| 491 #if defined(ENABLE_EXTENSIONS) |
481 new extensions::ExtensionHelper(render_view, extension_dispatcher_.get()); | 492 new extensions::ExtensionHelper(render_view, extension_dispatcher_.get()); |
482 new extensions::ChromeExtensionHelper(render_view); | 493 new extensions::ChromeExtensionHelper(render_view); |
483 extension_dispatcher_->OnRenderViewCreated(render_view); | 494 extension_dispatcher_->OnRenderViewCreated(render_view); |
| 495 #endif |
484 new PageLoadHistograms(render_view); | 496 new PageLoadHistograms(render_view); |
485 #if defined(ENABLE_PRINTING) | 497 #if defined(ENABLE_PRINTING) |
486 new printing::PrintWebViewHelper(render_view); | 498 new printing::PrintWebViewHelper(render_view); |
487 #endif | 499 #endif |
488 #if defined(ENABLE_SPELLCHECK) | 500 #if defined(ENABLE_SPELLCHECK) |
489 new SpellCheckProvider(render_view, spellcheck_.get()); | 501 new SpellCheckProvider(render_view, spellcheck_.get()); |
490 #endif | 502 #endif |
491 new prerender::PrerendererClient(render_view); | 503 new prerender::PrerendererClient(render_view); |
492 #if defined(FULL_SAFE_BROWSING) | 504 #if defined(FULL_SAFE_BROWSING) |
493 safe_browsing::MalwareDOMDetails::Create(render_view); | 505 safe_browsing::MalwareDOMDetails::Create(render_view); |
(...skipping 28 matching lines...) Expand all Loading... |
522 | 534 |
523 SkBitmap* ChromeContentRendererClient::GetSadWebViewBitmap() { | 535 SkBitmap* ChromeContentRendererClient::GetSadWebViewBitmap() { |
524 return const_cast<SkBitmap*>(ResourceBundle::GetSharedInstance(). | 536 return const_cast<SkBitmap*>(ResourceBundle::GetSharedInstance(). |
525 GetImageNamed(IDR_SAD_WEBVIEW).ToSkBitmap()); | 537 GetImageNamed(IDR_SAD_WEBVIEW).ToSkBitmap()); |
526 } | 538 } |
527 | 539 |
528 std::string ChromeContentRendererClient::GetDefaultEncoding() { | 540 std::string ChromeContentRendererClient::GetDefaultEncoding() { |
529 return l10n_util::GetStringUTF8(IDS_DEFAULT_ENCODING); | 541 return l10n_util::GetStringUTF8(IDS_DEFAULT_ENCODING); |
530 } | 542 } |
531 | 543 |
| 544 #if defined(ENABLE_EXTENSIONS) |
532 const Extension* ChromeContentRendererClient::GetExtensionByOrigin( | 545 const Extension* ChromeContentRendererClient::GetExtensionByOrigin( |
533 const WebSecurityOrigin& origin) const { | 546 const WebSecurityOrigin& origin) const { |
534 if (!EqualsASCII(origin.protocol(), extensions::kExtensionScheme)) | 547 if (!EqualsASCII(origin.protocol(), extensions::kExtensionScheme)) |
535 return NULL; | 548 return NULL; |
536 | 549 |
537 const std::string extension_id = origin.host().utf8().data(); | 550 const std::string extension_id = origin.host().utf8().data(); |
538 return extension_dispatcher_->extensions()->GetByID(extension_id); | 551 return extension_dispatcher_->extensions()->GetByID(extension_id); |
539 } | 552 } |
| 553 #endif |
540 | 554 |
541 bool ChromeContentRendererClient::OverrideCreatePlugin( | 555 bool ChromeContentRendererClient::OverrideCreatePlugin( |
542 content::RenderFrame* render_frame, | 556 content::RenderFrame* render_frame, |
543 WebLocalFrame* frame, | 557 WebLocalFrame* frame, |
544 const WebPluginParams& params, | 558 const WebPluginParams& params, |
545 WebPlugin** plugin) { | 559 WebPlugin** plugin) { |
546 std::string orig_mime_type = params.mimeType.utf8(); | 560 std::string orig_mime_type = params.mimeType.utf8(); |
| 561 #if defined(ENABLE_EXTENSIONS) |
547 if (orig_mime_type == content::kBrowserPluginMimeType) { | 562 if (orig_mime_type == content::kBrowserPluginMimeType) { |
548 bool guest_view_api_available = false; | 563 bool guest_view_api_available = false; |
549 extension_dispatcher_->script_context_set().ForEach( | 564 extension_dispatcher_->script_context_set().ForEach( |
550 render_frame->GetRenderView(), | 565 render_frame->GetRenderView(), |
551 base::Bind(&IsGuestViewApiAvailableToScriptContext, | 566 base::Bind(&IsGuestViewApiAvailableToScriptContext, |
552 &guest_view_api_available)); | 567 &guest_view_api_available)); |
553 if (guest_view_api_available) | 568 if (guest_view_api_available) |
554 return false; | 569 return false; |
555 } | 570 } |
| 571 #endif |
556 | 572 |
557 ChromeViewHostMsg_GetPluginInfo_Output output; | 573 ChromeViewHostMsg_GetPluginInfo_Output output; |
558 #if defined(ENABLE_PLUGINS) | 574 #if defined(ENABLE_PLUGINS) |
559 render_frame->Send(new ChromeViewHostMsg_GetPluginInfo( | 575 render_frame->Send(new ChromeViewHostMsg_GetPluginInfo( |
560 render_frame->GetRoutingID(), GURL(params.url), | 576 render_frame->GetRoutingID(), GURL(params.url), |
561 frame->top()->document().url(), orig_mime_type, &output)); | 577 frame->top()->document().url(), orig_mime_type, &output)); |
562 | 578 |
563 if (output.plugin.type == content::WebPluginInfo::PLUGIN_TYPE_BROWSER_PLUGIN) | 579 if (output.plugin.type == content::WebPluginInfo::PLUGIN_TYPE_BROWSER_PLUGIN) |
564 return false; | 580 return false; |
565 #else | 581 #else |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1079 void ChromeContentRendererClient::GetNavigationErrorStrings( | 1095 void ChromeContentRendererClient::GetNavigationErrorStrings( |
1080 content::RenderView* render_view, | 1096 content::RenderView* render_view, |
1081 blink::WebFrame* frame, | 1097 blink::WebFrame* frame, |
1082 const blink::WebURLRequest& failed_request, | 1098 const blink::WebURLRequest& failed_request, |
1083 const blink::WebURLError& error, | 1099 const blink::WebURLError& error, |
1084 std::string* error_html, | 1100 std::string* error_html, |
1085 base::string16* error_description) { | 1101 base::string16* error_description) { |
1086 const GURL failed_url = error.unreachableURL; | 1102 const GURL failed_url = error.unreachableURL; |
1087 const Extension* extension = NULL; | 1103 const Extension* extension = NULL; |
1088 | 1104 |
| 1105 #if defined(ENABLE_EXTENSIONS) |
1089 if (failed_url.is_valid() && | 1106 if (failed_url.is_valid() && |
1090 !failed_url.SchemeIs(extensions::kExtensionScheme)) { | 1107 !failed_url.SchemeIs(extensions::kExtensionScheme)) { |
1091 extension = extension_dispatcher_->extensions()->GetExtensionOrAppByURL( | 1108 extension = extension_dispatcher_->extensions()->GetExtensionOrAppByURL( |
1092 failed_url); | 1109 failed_url); |
1093 } | 1110 } |
| 1111 #endif |
1094 | 1112 |
1095 bool is_post = EqualsASCII(failed_request.httpMethod(), "POST"); | 1113 bool is_post = EqualsASCII(failed_request.httpMethod(), "POST"); |
1096 | 1114 |
1097 if (error_html) { | 1115 if (error_html) { |
1098 // Use a local error page. | 1116 // Use a local error page. |
1099 if (extension && !extension->from_bookmark()) { | 1117 if (extension && !extension->from_bookmark()) { |
1100 // TODO(erikkay): Should we use a different template for different | 1118 // TODO(erikkay): Should we use a different template for different |
1101 // error messages? | 1119 // error messages? |
1102 int resource_id = IDR_ERROR_APP_HTML; | 1120 int resource_id = IDR_ERROR_APP_HTML; |
1103 const base::StringPiece template_html( | 1121 const base::StringPiece template_html( |
(...skipping 22 matching lines...) Expand all Loading... |
1126 } | 1144 } |
1127 } | 1145 } |
1128 | 1146 |
1129 if (error_description) { | 1147 if (error_description) { |
1130 if (!extension) | 1148 if (!extension) |
1131 *error_description = LocalizedError::GetErrorDetails(error, is_post); | 1149 *error_description = LocalizedError::GetErrorDetails(error, is_post); |
1132 } | 1150 } |
1133 } | 1151 } |
1134 | 1152 |
1135 bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { | 1153 bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { |
| 1154 #if defined(ENABLE_EXTENSIONS) |
1136 return !extension_dispatcher_->is_extension_process(); | 1155 return !extension_dispatcher_->is_extension_process(); |
| 1156 #else |
| 1157 return true; |
| 1158 #endif |
1137 } | 1159 } |
1138 | 1160 |
1139 bool ChromeContentRendererClient::AllowPopup() { | 1161 bool ChromeContentRendererClient::AllowPopup() { |
| 1162 #if defined(ENABLE_EXTENSIONS) |
1140 extensions::ScriptContext* current_context = | 1163 extensions::ScriptContext* current_context = |
1141 extension_dispatcher_->script_context_set().GetCurrent(); | 1164 extension_dispatcher_->script_context_set().GetCurrent(); |
1142 if (!current_context || !current_context->extension()) | 1165 if (!current_context || !current_context->extension()) |
1143 return false; | 1166 return false; |
1144 // See http://crbug.com/117446 for the subtlety of this check. | 1167 // See http://crbug.com/117446 for the subtlety of this check. |
1145 switch (current_context->context_type()) { | 1168 switch (current_context->context_type()) { |
1146 case extensions::Feature::UNSPECIFIED_CONTEXT: | 1169 case extensions::Feature::UNSPECIFIED_CONTEXT: |
1147 case extensions::Feature::WEB_PAGE_CONTEXT: | 1170 case extensions::Feature::WEB_PAGE_CONTEXT: |
1148 case extensions::Feature::UNBLESSED_EXTENSION_CONTEXT: | 1171 case extensions::Feature::UNBLESSED_EXTENSION_CONTEXT: |
1149 case extensions::Feature::WEBUI_CONTEXT: | 1172 case extensions::Feature::WEBUI_CONTEXT: |
1150 return false; | 1173 return false; |
1151 case extensions::Feature::BLESSED_EXTENSION_CONTEXT: | 1174 case extensions::Feature::BLESSED_EXTENSION_CONTEXT: |
1152 case extensions::Feature::CONTENT_SCRIPT_CONTEXT: | 1175 case extensions::Feature::CONTENT_SCRIPT_CONTEXT: |
1153 return true; | 1176 return true; |
1154 case extensions::Feature::BLESSED_WEB_PAGE_CONTEXT: | 1177 case extensions::Feature::BLESSED_WEB_PAGE_CONTEXT: |
1155 return !current_context->web_frame()->parent(); | 1178 return !current_context->web_frame()->parent(); |
1156 } | 1179 } |
1157 NOTREACHED(); | 1180 NOTREACHED(); |
| 1181 #endif |
1158 return false; | 1182 return false; |
1159 } | 1183 } |
1160 | 1184 |
1161 bool ChromeContentRendererClient::ShouldFork(WebFrame* frame, | 1185 bool ChromeContentRendererClient::ShouldFork(WebFrame* frame, |
1162 const GURL& url, | 1186 const GURL& url, |
1163 const std::string& http_method, | 1187 const std::string& http_method, |
1164 bool is_initial_navigation, | 1188 bool is_initial_navigation, |
1165 bool is_server_redirect, | 1189 bool is_server_redirect, |
1166 bool* send_referrer) { | 1190 bool* send_referrer) { |
1167 DCHECK(!frame->parent()); | 1191 DCHECK(!frame->parent()); |
(...skipping 30 matching lines...) Expand all Loading... |
1198 // If |url| matches one of the prerendered URLs, stop this navigation and try | 1222 // If |url| matches one of the prerendered URLs, stop this navigation and try |
1199 // to swap in the prerendered page on the browser process. If the prerendered | 1223 // to swap in the prerendered page on the browser process. If the prerendered |
1200 // page no longer exists by the time the OpenURL IPC is handled, a normal | 1224 // page no longer exists by the time the OpenURL IPC is handled, a normal |
1201 // navigation is attempted. | 1225 // navigation is attempted. |
1202 if (prerender_dispatcher_.get() && | 1226 if (prerender_dispatcher_.get() && |
1203 prerender_dispatcher_->IsPrerenderURL(url)) { | 1227 prerender_dispatcher_->IsPrerenderURL(url)) { |
1204 *send_referrer = true; | 1228 *send_referrer = true; |
1205 return true; | 1229 return true; |
1206 } | 1230 } |
1207 | 1231 |
| 1232 #if defined(ENABLE_EXTENSIONS) |
1208 const extensions::ExtensionSet* extensions = | 1233 const extensions::ExtensionSet* extensions = |
1209 extension_dispatcher_->extensions(); | 1234 extension_dispatcher_->extensions(); |
1210 | 1235 |
1211 // Determine if the new URL is an extension (excluding bookmark apps). | 1236 // Determine if the new URL is an extension (excluding bookmark apps). |
1212 const Extension* new_url_extension = extensions::GetNonBookmarkAppExtension( | 1237 const Extension* new_url_extension = extensions::GetNonBookmarkAppExtension( |
1213 *extensions, url); | 1238 *extensions, url); |
1214 bool is_extension_url = !!new_url_extension; | 1239 bool is_extension_url = !!new_url_extension; |
1215 | 1240 |
1216 // If the navigation would cross an app extent boundary, we also need | 1241 // If the navigation would cross an app extent boundary, we also need |
1217 // to defer to the browser to ensure process isolation. This is not necessary | 1242 // to defer to the browser to ensure process isolation. This is not necessary |
(...skipping 22 matching lines...) Expand all Loading... |
1240 } | 1265 } |
1241 | 1266 |
1242 // If this is a reload, check whether it has the wrong process type. We | 1267 // If this is a reload, check whether it has the wrong process type. We |
1243 // should send it to the browser if it's an extension URL (e.g., hosted app) | 1268 // should send it to the browser if it's an extension URL (e.g., hosted app) |
1244 // in a normal process, or if it's a process for an extension that has been | 1269 // in a normal process, or if it's a process for an extension that has been |
1245 // uninstalled. | 1270 // uninstalled. |
1246 if (frame->top()->document().url() == url) { | 1271 if (frame->top()->document().url() == url) { |
1247 if (is_extension_url != extension_dispatcher_->is_extension_process()) | 1272 if (is_extension_url != extension_dispatcher_->is_extension_process()) |
1248 return true; | 1273 return true; |
1249 } | 1274 } |
| 1275 #endif // defined(ENABLE_EXTENSIONS) |
1250 | 1276 |
1251 return false; | 1277 return false; |
1252 } | 1278 } |
1253 | 1279 |
1254 bool ChromeContentRendererClient::WillSendRequest( | 1280 bool ChromeContentRendererClient::WillSendRequest( |
1255 blink::WebFrame* frame, | 1281 blink::WebFrame* frame, |
1256 content::PageTransition transition_type, | 1282 content::PageTransition transition_type, |
1257 const GURL& url, | 1283 const GURL& url, |
1258 const GURL& first_party_for_cookies, | 1284 const GURL& first_party_for_cookies, |
1259 GURL* new_url) { | 1285 GURL* new_url) { |
1260 // Check whether the request should be allowed. If not allowed, we reset the | 1286 // Check whether the request should be allowed. If not allowed, we reset the |
1261 // URL to something invalid to prevent the request and cause an error. | 1287 // URL to something invalid to prevent the request and cause an error. |
| 1288 #if defined(ENABLE_EXTENSIONS) |
1262 if (url.SchemeIs(extensions::kExtensionScheme) && | 1289 if (url.SchemeIs(extensions::kExtensionScheme) && |
1263 !extensions::ResourceRequestPolicy::CanRequestResource( | 1290 !extensions::ResourceRequestPolicy::CanRequestResource( |
1264 url, | 1291 url, |
1265 frame, | 1292 frame, |
1266 transition_type, | 1293 transition_type, |
1267 extension_dispatcher_->extensions())) { | 1294 extension_dispatcher_->extensions())) { |
1268 *new_url = GURL(chrome::kExtensionInvalidRequestURL); | 1295 *new_url = GURL(chrome::kExtensionInvalidRequestURL); |
1269 return true; | 1296 return true; |
1270 } | 1297 } |
1271 | 1298 |
1272 if (url.SchemeIs(extensions::kExtensionResourceScheme) && | 1299 if (url.SchemeIs(extensions::kExtensionResourceScheme) && |
1273 !extensions::ResourceRequestPolicy::CanRequestExtensionResourceScheme( | 1300 !extensions::ResourceRequestPolicy::CanRequestExtensionResourceScheme( |
1274 url, | 1301 url, |
1275 frame)) { | 1302 frame)) { |
1276 *new_url = GURL(chrome::kExtensionResourceInvalidRequestURL); | 1303 *new_url = GURL(chrome::kExtensionResourceInvalidRequestURL); |
1277 return true; | 1304 return true; |
1278 } | 1305 } |
| 1306 #endif |
1279 | 1307 |
1280 const content::RenderView* render_view = | 1308 const content::RenderView* render_view = |
1281 content::RenderView::FromWebView(frame->view()); | 1309 content::RenderView::FromWebView(frame->view()); |
1282 SearchBox* search_box = SearchBox::Get(render_view); | 1310 SearchBox* search_box = SearchBox::Get(render_view); |
1283 if (search_box && url.SchemeIs(chrome::kChromeSearchScheme)) { | 1311 if (search_box && url.SchemeIs(chrome::kChromeSearchScheme)) { |
1284 if (url.host() == chrome::kChromeUIThumbnailHost) | 1312 if (url.host() == chrome::kChromeUIThumbnailHost) |
1285 return search_box->GenerateThumbnailURLFromTransientURL(url, new_url); | 1313 return search_box->GenerateThumbnailURLFromTransientURL(url, new_url); |
1286 else if (url.host() == chrome::kChromeUIFaviconHost) | 1314 else if (url.host() == chrome::kChromeUIFaviconHost) |
1287 return search_box->GenerateFaviconURLFromTransientURL(url, new_url); | 1315 return search_box->GenerateFaviconURLFromTransientURL(url, new_url); |
1288 } | 1316 } |
1289 | 1317 |
1290 return false; | 1318 return false; |
1291 } | 1319 } |
1292 | 1320 |
1293 void ChromeContentRendererClient::DidCreateScriptContext( | 1321 void ChromeContentRendererClient::DidCreateScriptContext( |
1294 WebFrame* frame, v8::Handle<v8::Context> context, int extension_group, | 1322 WebFrame* frame, v8::Handle<v8::Context> context, int extension_group, |
1295 int world_id) { | 1323 int world_id) { |
| 1324 #if defined(ENABLE_EXTENSIONS) |
1296 extension_dispatcher_->DidCreateScriptContext( | 1325 extension_dispatcher_->DidCreateScriptContext( |
1297 frame, context, extension_group, world_id); | 1326 frame, context, extension_group, world_id); |
| 1327 #endif |
1298 } | 1328 } |
1299 | 1329 |
1300 unsigned long long ChromeContentRendererClient::VisitedLinkHash( | 1330 unsigned long long ChromeContentRendererClient::VisitedLinkHash( |
1301 const char* canonical_url, size_t length) { | 1331 const char* canonical_url, size_t length) { |
1302 return visited_link_slave_->ComputeURLFingerprint(canonical_url, length); | 1332 return visited_link_slave_->ComputeURLFingerprint(canonical_url, length); |
1303 } | 1333 } |
1304 | 1334 |
1305 bool ChromeContentRendererClient::IsLinkVisited(unsigned long long link_hash) { | 1335 bool ChromeContentRendererClient::IsLinkVisited(unsigned long long link_hash) { |
1306 return visited_link_slave_->IsVisited(link_hash); | 1336 return visited_link_slave_->IsVisited(link_hash); |
1307 } | 1337 } |
1308 | 1338 |
1309 blink::WebPrescientNetworking* | 1339 blink::WebPrescientNetworking* |
1310 ChromeContentRendererClient::GetPrescientNetworking() { | 1340 ChromeContentRendererClient::GetPrescientNetworking() { |
1311 return prescient_networking_dispatcher_.get(); | 1341 return prescient_networking_dispatcher_.get(); |
1312 } | 1342 } |
1313 | 1343 |
1314 bool ChromeContentRendererClient::ShouldOverridePageVisibilityState( | 1344 bool ChromeContentRendererClient::ShouldOverridePageVisibilityState( |
1315 const content::RenderFrame* render_frame, | 1345 const content::RenderFrame* render_frame, |
1316 blink::WebPageVisibilityState* override_state) { | 1346 blink::WebPageVisibilityState* override_state) { |
1317 if (!prerender::PrerenderHelper::IsPrerendering(render_frame)) | 1347 if (!prerender::PrerenderHelper::IsPrerendering(render_frame)) |
1318 return false; | 1348 return false; |
1319 | 1349 |
1320 *override_state = blink::WebPageVisibilityStatePrerender; | 1350 *override_state = blink::WebPageVisibilityStatePrerender; |
1321 return true; | 1351 return true; |
1322 } | 1352 } |
1323 | 1353 |
| 1354 #if defined(ENABLE_EXTENSIONS) |
1324 void ChromeContentRendererClient::SetExtensionDispatcherForTest( | 1355 void ChromeContentRendererClient::SetExtensionDispatcherForTest( |
1325 extensions::Dispatcher* extension_dispatcher) { | 1356 extensions::Dispatcher* extension_dispatcher) { |
1326 extension_dispatcher_.reset(extension_dispatcher); | 1357 extension_dispatcher_.reset(extension_dispatcher); |
1327 permissions_policy_delegate_.reset( | 1358 permissions_policy_delegate_.reset( |
1328 new extensions::RendererPermissionsPolicyDelegate( | 1359 new extensions::RendererPermissionsPolicyDelegate( |
1329 extension_dispatcher_.get())); | 1360 extension_dispatcher_.get())); |
1330 } | 1361 } |
1331 | 1362 |
1332 extensions::Dispatcher* | 1363 extensions::Dispatcher* |
1333 ChromeContentRendererClient::GetExtensionDispatcherForTest() { | 1364 ChromeContentRendererClient::GetExtensionDispatcherForTest() { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1366 } | 1397 } |
1367 | 1398 |
1368 // Only consider keeping non-app URLs in an app process if this window | 1399 // Only consider keeping non-app URLs in an app process if this window |
1369 // has an opener (in which case it might be an OAuth popup that tries to | 1400 // has an opener (in which case it might be an OAuth popup that tries to |
1370 // script an iframe within the app). | 1401 // script an iframe within the app). |
1371 bool should_consider_workaround = !!frame->opener(); | 1402 bool should_consider_workaround = !!frame->opener(); |
1372 | 1403 |
1373 return extensions::CrossesExtensionProcessBoundary( | 1404 return extensions::CrossesExtensionProcessBoundary( |
1374 extensions, old_url, new_url, should_consider_workaround); | 1405 extensions, old_url, new_url, should_consider_workaround); |
1375 } | 1406 } |
| 1407 #endif // defined(ENABLE_EXTENSIONS) |
1376 | 1408 |
1377 #if defined(ENABLE_SPELLCHECK) | 1409 #if defined(ENABLE_SPELLCHECK) |
1378 void ChromeContentRendererClient::SetSpellcheck(SpellCheck* spellcheck) { | 1410 void ChromeContentRendererClient::SetSpellcheck(SpellCheck* spellcheck) { |
1379 RenderThread* thread = RenderThread::Get(); | 1411 RenderThread* thread = RenderThread::Get(); |
1380 if (spellcheck_.get() && thread) | 1412 if (spellcheck_.get() && thread) |
1381 thread->RemoveObserver(spellcheck_.get()); | 1413 thread->RemoveObserver(spellcheck_.get()); |
1382 spellcheck_.reset(spellcheck); | 1414 spellcheck_.reset(spellcheck); |
1383 SpellCheckReplacer replacer(spellcheck_.get()); | 1415 SpellCheckReplacer replacer(spellcheck_.get()); |
1384 content::RenderView::ForEach(&replacer); | 1416 content::RenderView::ForEach(&replacer); |
1385 if (thread) | 1417 if (thread) |
1386 thread->AddObserver(spellcheck_.get()); | 1418 thread->AddObserver(spellcheck_.get()); |
1387 } | 1419 } |
1388 #endif | 1420 #endif |
1389 | 1421 |
1390 // static | 1422 // static |
1391 bool ChromeContentRendererClient::WasWebRequestUsedBySomeExtensions() { | 1423 bool ChromeContentRendererClient::WasWebRequestUsedBySomeExtensions() { |
| 1424 #if defined(ENABLE_EXTENSIONS) |
1392 return g_current_client->extension_dispatcher_delegate_ | 1425 return g_current_client->extension_dispatcher_delegate_ |
1393 ->WasWebRequestUsedBySomeExtensions(); | 1426 ->WasWebRequestUsedBySomeExtensions(); |
| 1427 #else |
| 1428 return false; |
| 1429 #endif |
1394 } | 1430 } |
1395 | 1431 |
1396 const void* ChromeContentRendererClient::CreatePPAPIInterface( | 1432 const void* ChromeContentRendererClient::CreatePPAPIInterface( |
1397 const std::string& interface_name) { | 1433 const std::string& interface_name) { |
1398 #if defined(ENABLE_PLUGINS) | 1434 #if defined(ENABLE_PLUGINS) |
1399 #if !defined(DISABLE_NACL) | 1435 #if !defined(DISABLE_NACL) |
1400 if (interface_name == PPB_NACL_PRIVATE_INTERFACE) | 1436 if (interface_name == PPB_NACL_PRIVATE_INTERFACE) |
1401 return nacl::GetNaClPrivateInterface(); | 1437 return nacl::GetNaClPrivateInterface(); |
1402 #endif // DISABLE_NACL | 1438 #endif // DISABLE_NACL |
1403 if (interface_name == PPB_PDF_INTERFACE) | 1439 if (interface_name == PPB_PDF_INTERFACE) |
1404 return pdf::PPB_PDF_Impl::GetInterface(); | 1440 return pdf::PPB_PDF_Impl::GetInterface(); |
1405 #endif | 1441 #endif |
1406 return NULL; | 1442 return NULL; |
1407 } | 1443 } |
1408 | 1444 |
1409 bool ChromeContentRendererClient::IsExternalPepperPlugin( | 1445 bool ChromeContentRendererClient::IsExternalPepperPlugin( |
1410 const std::string& module_name) { | 1446 const std::string& module_name) { |
1411 // TODO(bbudge) remove this when the trusted NaCl plugin has been removed. | 1447 // TODO(bbudge) remove this when the trusted NaCl plugin has been removed. |
1412 // We must defer certain plugin events for NaCl instances since we switch | 1448 // We must defer certain plugin events for NaCl instances since we switch |
1413 // from the in-process to the out-of-process proxy after instantiating them. | 1449 // from the in-process to the out-of-process proxy after instantiating them. |
1414 return module_name == "Native Client"; | 1450 return module_name == "Native Client"; |
1415 } | 1451 } |
1416 | 1452 |
| 1453 #if defined(ENABLE_PLUGINS) && defined(ENABLE_EXTENSIONS) |
1417 bool ChromeContentRendererClient::IsExtensionOrSharedModuleWhitelisted( | 1454 bool ChromeContentRendererClient::IsExtensionOrSharedModuleWhitelisted( |
1418 const GURL& url, const std::set<std::string>& whitelist) { | 1455 const GURL& url, const std::set<std::string>& whitelist) { |
1419 const extensions::ExtensionSet* extension_set = | 1456 const extensions::ExtensionSet* extension_set = |
1420 g_current_client->extension_dispatcher_->extensions(); | 1457 g_current_client->extension_dispatcher_->extensions(); |
1421 return chrome::IsExtensionOrSharedModuleWhitelisted(url, extension_set, | 1458 return chrome::IsExtensionOrSharedModuleWhitelisted(url, extension_set, |
1422 whitelist); | 1459 whitelist); |
1423 } | 1460 } |
| 1461 #endif |
1424 | 1462 |
1425 blink::WebSpeechSynthesizer* | 1463 blink::WebSpeechSynthesizer* |
1426 ChromeContentRendererClient::OverrideSpeechSynthesizer( | 1464 ChromeContentRendererClient::OverrideSpeechSynthesizer( |
1427 blink::WebSpeechSynthesizerClient* client) { | 1465 blink::WebSpeechSynthesizerClient* client) { |
1428 return new TtsDispatcher(client); | 1466 return new TtsDispatcher(client); |
1429 } | 1467 } |
1430 | 1468 |
1431 bool ChromeContentRendererClient::AllowPepperMediaStreamAPI( | 1469 bool ChromeContentRendererClient::AllowPepperMediaStreamAPI( |
1432 const GURL& url) { | 1470 const GURL& url) { |
1433 #if !defined(OS_ANDROID) | 1471 #if !defined(OS_ANDROID) |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1491 // releases of Chrome. Permitting "Unknown" allows these APIs to be used on | 1529 // releases of Chrome. Permitting "Unknown" allows these APIs to be used on |
1492 // Chromium builds as well. | 1530 // Chromium builds as well. |
1493 return channel <= chrome::VersionInfo::CHANNEL_DEV; | 1531 return channel <= chrome::VersionInfo::CHANNEL_DEV; |
1494 #else | 1532 #else |
1495 return false; | 1533 return false; |
1496 #endif | 1534 #endif |
1497 } | 1535 } |
1498 | 1536 |
1499 bool ChromeContentRendererClient::IsPluginAllowedToUseCompositorAPI( | 1537 bool ChromeContentRendererClient::IsPluginAllowedToUseCompositorAPI( |
1500 const GURL& url) { | 1538 const GURL& url) { |
1501 #if defined(ENABLE_PLUGINS) | 1539 #if defined(ENABLE_PLUGINS) && defined(ENABLE_EXTENSIONS) |
1502 if (CommandLine::ForCurrentProcess()->HasSwitch( | 1540 if (CommandLine::ForCurrentProcess()->HasSwitch( |
1503 switches::kEnablePepperTesting)) | 1541 switches::kEnablePepperTesting)) |
1504 return true; | 1542 return true; |
1505 if (IsExtensionOrSharedModuleWhitelisted(url, allowed_compositor_origins_)) | 1543 if (IsExtensionOrSharedModuleWhitelisted(url, allowed_compositor_origins_)) |
1506 return true; | 1544 return true; |
1507 | 1545 |
1508 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | 1546 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
1509 return channel <= chrome::VersionInfo::CHANNEL_DEV; | 1547 return channel <= chrome::VersionInfo::CHANNEL_DEV; |
1510 #else | 1548 #else |
1511 return false; | 1549 return false; |
1512 #endif | 1550 #endif |
1513 } | 1551 } |
1514 | 1552 |
1515 bool ChromeContentRendererClient::IsPluginAllowedToUseVideoDecodeAPI( | 1553 bool ChromeContentRendererClient::IsPluginAllowedToUseVideoDecodeAPI( |
1516 const GURL& url) { | 1554 const GURL& url) { |
1517 #if defined(ENABLE_PLUGINS) | 1555 #if defined(ENABLE_PLUGINS) && defined(ENABLE_EXTENSIONS) |
1518 if (CommandLine::ForCurrentProcess()->HasSwitch( | 1556 if (CommandLine::ForCurrentProcess()->HasSwitch( |
1519 switches::kEnablePepperTesting)) | 1557 switches::kEnablePepperTesting)) |
1520 return true; | 1558 return true; |
1521 | 1559 |
1522 if (IsExtensionOrSharedModuleWhitelisted(url, allowed_video_decode_origins_)) | 1560 if (IsExtensionOrSharedModuleWhitelisted(url, allowed_video_decode_origins_)) |
1523 return true; | 1561 return true; |
1524 | 1562 |
1525 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | 1563 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
1526 return channel <= chrome::VersionInfo::CHANNEL_DEV; | 1564 return channel <= chrome::VersionInfo::CHANNEL_DEV; |
1527 #else | 1565 #else |
1528 return false; | 1566 return false; |
1529 #endif | 1567 #endif |
1530 } | 1568 } |
1531 | 1569 |
1532 content::BrowserPluginDelegate* | 1570 content::BrowserPluginDelegate* |
1533 ChromeContentRendererClient::CreateBrowserPluginDelegate( | 1571 ChromeContentRendererClient::CreateBrowserPluginDelegate( |
1534 content::RenderFrame* render_frame, | 1572 content::RenderFrame* render_frame, |
1535 const std::string& mime_type) { | 1573 const std::string& mime_type) { |
1536 return new ChromeBrowserPluginDelegate(render_frame, mime_type); | 1574 return new ChromeBrowserPluginDelegate(render_frame, mime_type); |
1537 } | 1575 } |
OLD | NEW |