Chromium Code Reviews| 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/browser/chrome_content_browser_client.h" | 5 #include "chrome/browser/chrome_content_browser_client.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 38 #include "chrome/browser/media/cast_transport_host_filter.h" | 38 #include "chrome/browser/media/cast_transport_host_filter.h" |
| 39 #include "chrome/browser/media/media_capture_devices_dispatcher.h" | 39 #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
| 40 #include "chrome/browser/media/midi_permission_context.h" | 40 #include "chrome/browser/media/midi_permission_context.h" |
| 41 #include "chrome/browser/media/midi_permission_context_factory.h" | 41 #include "chrome/browser/media/midi_permission_context_factory.h" |
| 42 #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h" | 42 #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h" |
| 43 #include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h" | 43 #include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h" |
| 44 #include "chrome/browser/net/chrome_net_log.h" | 44 #include "chrome/browser/net/chrome_net_log.h" |
| 45 #include "chrome/browser/notifications/desktop_notification_service.h" | 45 #include "chrome/browser/notifications/desktop_notification_service.h" |
| 46 #include "chrome/browser/notifications/desktop_notification_service_factory.h" | 46 #include "chrome/browser/notifications/desktop_notification_service_factory.h" |
| 47 #include "chrome/browser/platform_util.h" | 47 #include "chrome/browser/platform_util.h" |
| 48 #include "chrome/browser/plugins/plugin_info_message_filter.h" | |
| 49 #include "chrome/browser/prerender/prerender_final_status.h" | 48 #include "chrome/browser/prerender/prerender_final_status.h" |
| 50 #include "chrome/browser/prerender/prerender_manager.h" | 49 #include "chrome/browser/prerender/prerender_manager.h" |
| 51 #include "chrome/browser/prerender/prerender_manager_factory.h" | 50 #include "chrome/browser/prerender/prerender_manager_factory.h" |
| 52 #include "chrome/browser/prerender/prerender_message_filter.h" | 51 #include "chrome/browser/prerender/prerender_message_filter.h" |
| 53 #include "chrome/browser/prerender/prerender_tracker.h" | 52 #include "chrome/browser/prerender/prerender_tracker.h" |
| 54 #include "chrome/browser/printing/printing_message_filter.h" | 53 #include "chrome/browser/printing/printing_message_filter.h" |
| 55 #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h" | 54 #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h" |
| 56 #include "chrome/browser/profiles/profile.h" | 55 #include "chrome/browser/profiles/profile.h" |
| 57 #include "chrome/browser/profiles/profile_io_data.h" | 56 #include "chrome/browser/profiles/profile_io_data.h" |
| 58 #include "chrome/browser/renderer_host/chrome_render_message_filter.h" | 57 #include "chrome/browser/renderer_host/chrome_render_message_filter.h" |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 234 #include "extensions/common/constants.h" | 233 #include "extensions/common/constants.h" |
| 235 #include "extensions/common/extension.h" | 234 #include "extensions/common/extension.h" |
| 236 #include "extensions/common/extension_set.h" | 235 #include "extensions/common/extension_set.h" |
| 237 #include "extensions/common/manifest_handlers/background_info.h" | 236 #include "extensions/common/manifest_handlers/background_info.h" |
| 238 #include "extensions/common/manifest_handlers/shared_module_info.h" | 237 #include "extensions/common/manifest_handlers/shared_module_info.h" |
| 239 #include "extensions/common/permissions/permissions_data.h" | 238 #include "extensions/common/permissions/permissions_data.h" |
| 240 #include "extensions/common/permissions/socket_permission.h" | 239 #include "extensions/common/permissions/socket_permission.h" |
| 241 #include "extensions/common/switches.h" | 240 #include "extensions/common/switches.h" |
| 242 #endif | 241 #endif |
| 243 | 242 |
| 243 #if defined(ENABLE_PLUGINS) | |
| 244 #include "chrome/browser/plugins/chrome_content_browser_client_plugins_part.h" | |
| 245 #endif | |
| 246 | |
| 244 #if defined(ENABLE_SPELLCHECK) | 247 #if defined(ENABLE_SPELLCHECK) |
| 245 #include "chrome/browser/spellchecker/spellcheck_message_filter.h" | 248 #include "chrome/browser/spellchecker/spellcheck_message_filter.h" |
| 246 #endif | 249 #endif |
| 247 | 250 |
| 248 #if defined(ENABLE_WEBRTC) | 251 #if defined(ENABLE_WEBRTC) |
| 249 #include "chrome/browser/media/webrtc_logging_handler_host.h" | 252 #include "chrome/browser/media/webrtc_logging_handler_host.h" |
| 250 #endif | 253 #endif |
| 251 | 254 |
| 252 using base::FileDescriptor; | 255 using base::FileDescriptor; |
| 253 using blink::WebWindowFeatures; | 256 using blink::WebWindowFeatures; |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 269 #endif | 272 #endif |
| 270 | 273 |
| 271 #if defined(ENABLE_EXTENSIONS) | 274 #if defined(ENABLE_EXTENSIONS) |
| 272 using extensions::APIPermission; | 275 using extensions::APIPermission; |
| 273 using extensions::ChromeContentBrowserClientExtensionsPart; | 276 using extensions::ChromeContentBrowserClientExtensionsPart; |
| 274 using extensions::Extension; | 277 using extensions::Extension; |
| 275 using extensions::InfoMap; | 278 using extensions::InfoMap; |
| 276 using extensions::Manifest; | 279 using extensions::Manifest; |
| 277 #endif | 280 #endif |
| 278 | 281 |
| 282 #if defined(ENABLE_PLUGINS) | |
| 283 using plugins::ChromeContentBrowserClientPluginsPart; | |
| 284 #endif | |
| 285 | |
| 279 namespace { | 286 namespace { |
| 280 | 287 |
| 281 // Cached version of the locale so we can return the locale on the I/O | 288 // Cached version of the locale so we can return the locale on the I/O |
| 282 // thread. | 289 // thread. |
| 283 base::LazyInstance<std::string> g_io_thread_application_locale; | 290 base::LazyInstance<std::string> g_io_thread_application_locale; |
| 284 | 291 |
| 285 #if defined(ENABLE_PLUGINS) | 292 #if defined(ENABLE_PLUGINS) |
| 286 // TODO(teravest): Add renderer-side API-specific checking for these APIs so | 293 // TODO(teravest): Add renderer-side API-specific checking for these APIs so |
| 287 // that blanket permission isn't granted to all dev channel APIs for these. | 294 // that blanket permission isn't granted to all dev channel APIs for these. |
| 288 // http://crbug.com/386743 | 295 // http://crbug.com/386743 |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 601 ChromeContentBrowserClient::ChromeContentBrowserClient() | 608 ChromeContentBrowserClient::ChromeContentBrowserClient() |
| 602 : prerender_tracker_(NULL), | 609 : prerender_tracker_(NULL), |
| 603 weak_factory_(this) { | 610 weak_factory_(this) { |
| 604 #if defined(ENABLE_PLUGINS) | 611 #if defined(ENABLE_PLUGINS) |
| 605 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) | 612 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) |
| 606 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); | 613 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); |
| 607 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) | 614 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) |
| 608 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); | 615 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); |
| 609 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) | 616 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) |
| 610 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); | 617 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); |
| 618 | |
| 619 extra_parts_.push_back(new ChromeContentBrowserClientPluginsPart); | |
| 611 #endif | 620 #endif |
| 612 | 621 |
| 613 #if !defined(OS_ANDROID) | 622 #if !defined(OS_ANDROID) |
| 614 TtsExtensionEngine* tts_extension_engine = TtsExtensionEngine::GetInstance(); | 623 TtsExtensionEngine* tts_extension_engine = TtsExtensionEngine::GetInstance(); |
| 615 TtsController::GetInstance()->SetTtsEngineDelegate(tts_extension_engine); | 624 TtsController::GetInstance()->SetTtsEngineDelegate(tts_extension_engine); |
| 616 #endif | 625 #endif |
| 617 | 626 |
| 618 #if defined(ENABLE_EXTENSIONS) | 627 #if defined(ENABLE_EXTENSIONS) |
| 619 extra_parts_.push_back(new ChromeContentBrowserClientExtensionsPart); | 628 extra_parts_.push_back(new ChromeContentBrowserClientExtensionsPart); |
| 620 #endif | 629 #endif |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 810 } | 819 } |
| 811 | 820 |
| 812 void ChromeContentBrowserClient::RenderProcessWillLaunch( | 821 void ChromeContentBrowserClient::RenderProcessWillLaunch( |
| 813 content::RenderProcessHost* host) { | 822 content::RenderProcessHost* host) { |
| 814 int id = host->GetID(); | 823 int id = host->GetID(); |
| 815 Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext()); | 824 Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext()); |
| 816 net::URLRequestContextGetter* context = | 825 net::URLRequestContextGetter* context = |
| 817 profile->GetRequestContextForRenderProcess(id); | 826 profile->GetRequestContextForRenderProcess(id); |
| 818 | 827 |
| 819 host->AddFilter(new ChromeRenderMessageFilter(id, profile)); | 828 host->AddFilter(new ChromeRenderMessageFilter(id, profile)); |
| 820 #if defined(ENABLE_PLUGINS) | |
| 821 host->AddFilter(new PluginInfoMessageFilter(id, profile)); | |
| 822 #endif | |
| 823 host->AddFilter(new cast::CastTransportHostFilter); | 829 host->AddFilter(new cast::CastTransportHostFilter); |
| 824 #if defined(ENABLE_PRINTING) | 830 #if defined(ENABLE_PRINTING) |
| 825 host->AddFilter(new printing::PrintingMessageFilter(id, profile)); | 831 host->AddFilter(new printing::PrintingMessageFilter(id, profile)); |
| 826 #endif | 832 #endif |
| 827 host->AddFilter(new SearchProviderInstallStateMessageFilter(id, profile)); | 833 host->AddFilter(new SearchProviderInstallStateMessageFilter(id, profile)); |
| 828 #if defined(ENABLE_SPELLCHECK) | 834 #if defined(ENABLE_SPELLCHECK) |
| 829 host->AddFilter(new SpellCheckMessageFilter(id)); | 835 host->AddFilter(new SpellCheckMessageFilter(id)); |
| 830 #endif | 836 #endif |
| 831 #if defined(OS_MACOSX) | 837 #if defined(OS_MACOSX) |
| 832 host->AddFilter(new SpellCheckMessageFilterMac(id)); | 838 host->AddFilter(new SpellCheckMessageFilterMac(id)); |
| (...skipping 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2325 return DownloadPrefs::GetDefaultDownloadDirectory(); | 2331 return DownloadPrefs::GetDefaultDownloadDirectory(); |
| 2326 } | 2332 } |
| 2327 | 2333 |
| 2328 std::string ChromeContentBrowserClient::GetDefaultDownloadName() { | 2334 std::string ChromeContentBrowserClient::GetDefaultDownloadName() { |
| 2329 return l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME); | 2335 return l10n_util::GetStringUTF8(IDS_DEFAULT_DOWNLOAD_FILENAME); |
| 2330 } | 2336 } |
| 2331 | 2337 |
| 2332 void ChromeContentBrowserClient::DidCreatePpapiPlugin( | 2338 void ChromeContentBrowserClient::DidCreatePpapiPlugin( |
| 2333 content::BrowserPpapiHost* browser_host) { | 2339 content::BrowserPpapiHost* browser_host) { |
| 2334 #if defined(ENABLE_PLUGINS) | 2340 #if defined(ENABLE_PLUGINS) |
| 2335 browser_host->GetPpapiHost()->AddHostFactoryFilter( | 2341 ChromeContentBrowserClientPluginsPart::DidCreatePpapiPlugin(browser_host); |
| 2336 scoped_ptr<ppapi::host::HostFactory>( | |
| 2337 new ChromeBrowserPepperHostFactory(browser_host))); | |
| 2338 #endif | 2342 #endif |
| 2339 } | 2343 } |
| 2340 | 2344 |
| 2341 content::BrowserPpapiHost* | 2345 content::BrowserPpapiHost* |
| 2342 ChromeContentBrowserClient::GetExternalBrowserPpapiHost( | 2346 ChromeContentBrowserClient::GetExternalBrowserPpapiHost( |
| 2343 int plugin_process_id) { | 2347 int plugin_process_id) { |
| 2344 #if !defined(DISABLE_NACL) | 2348 #if !defined(DISABLE_NACL) |
| 2345 content::BrowserChildProcessHostIterator iter(PROCESS_TYPE_NACL_LOADER); | 2349 content::BrowserChildProcessHostIterator iter(PROCESS_TYPE_NACL_LOADER); |
| 2346 while (!iter.Done()) { | 2350 while (!iter.Done()) { |
| 2347 nacl::NaClProcessHost* host = static_cast<nacl::NaClProcessHost*>( | 2351 nacl::NaClProcessHost* host = static_cast<nacl::NaClProcessHost*>( |
| 2348 iter.GetDelegate()); | 2352 iter.GetDelegate()); |
| 2349 if (host->process() && | 2353 if (host->process() && |
| 2350 host->process()->GetData().id == plugin_process_id) { | 2354 host->process()->GetData().id == plugin_process_id) { |
| 2351 // Found the plugin. | 2355 // Found the plugin. |
| 2352 return host->browser_ppapi_host(); | 2356 return host->browser_ppapi_host(); |
| 2353 } | 2357 } |
| 2354 ++iter; | 2358 ++iter; |
| 2355 } | 2359 } |
| 2356 #endif | 2360 #endif |
| 2357 return NULL; | 2361 return NULL; |
| 2358 } | 2362 } |
| 2359 | 2363 |
| 2360 bool ChromeContentBrowserClient::AllowPepperSocketAPI( | 2364 bool ChromeContentBrowserClient::AllowPepperSocketAPI( |
| 2361 content::BrowserContext* browser_context, | 2365 content::BrowserContext* browser_context, |
| 2362 const GURL& url, | 2366 const GURL& url, |
| 2363 bool private_api, | 2367 bool private_api, |
| 2364 const content::SocketPermissionRequest* params) { | 2368 const content::SocketPermissionRequest* params) { |
| 2365 #if defined(ENABLE_EXTENSIONS) | 2369 #if defined(ENABLE_PLUGINS) && defined(ENABLE_EXTENSIONS) |
| 2366 Profile* profile = Profile::FromBrowserContext(browser_context); | 2370 return ChromeContentBrowserClientPluginsPart::AllowPepperSocketAPI( |
| 2367 const extensions::ExtensionSet* extension_set = NULL; | 2371 browser_context, url, private_api, params, allowed_socket_origins_); |
| 2368 if (profile) { | |
| 2369 extension_set = | |
| 2370 &extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); | |
| 2371 } | |
| 2372 | |
| 2373 if (private_api) { | |
| 2374 // Access to private socket APIs is controlled by the whitelist. | |
| 2375 if (IsExtensionOrSharedModuleWhitelisted(url, extension_set, | |
| 2376 allowed_socket_origins_)) { | |
| 2377 return true; | |
| 2378 } | |
| 2379 } else { | |
| 2380 // Access to public socket APIs is controlled by extension permissions. | |
| 2381 if (url.is_valid() && url.SchemeIs(extensions::kExtensionScheme) && | |
| 2382 extension_set) { | |
| 2383 const Extension* extension = extension_set->GetByID(url.host()); | |
| 2384 if (extension) { | |
| 2385 const extensions::PermissionsData* permissions_data = | |
| 2386 extension->permissions_data(); | |
| 2387 if (params) { | |
| 2388 extensions::SocketPermission::CheckParam check_params( | |
| 2389 params->type, params->host, params->port); | |
| 2390 if (permissions_data->CheckAPIPermissionWithParam( | |
| 2391 extensions::APIPermission::kSocket, &check_params)) { | |
| 2392 return true; | |
| 2393 } | |
| 2394 } else if (permissions_data->HasAPIPermission( | |
| 2395 extensions::APIPermission::kSocket)) { | |
| 2396 return true; | |
| 2397 } | |
| 2398 } | |
| 2399 } | |
| 2400 } | |
| 2401 | |
| 2402 // Allow both public and private APIs if the command line says so. | |
| 2403 return IsHostAllowedByCommandLine(url, extension_set, | |
| 2404 switches::kAllowNaClSocketAPI); | |
| 2405 #else | 2372 #else |
| 2406 return false; | 2373 return false; |
| 2407 #endif | 2374 #endif |
| 2408 } | 2375 } |
| 2409 | 2376 |
| 2410 ui::SelectFilePolicy* ChromeContentBrowserClient::CreateSelectFilePolicy( | 2377 ui::SelectFilePolicy* ChromeContentBrowserClient::CreateSelectFilePolicy( |
| 2411 WebContents* web_contents) { | 2378 WebContents* web_contents) { |
| 2412 return new ChromeSelectFilePolicy(web_contents); | 2379 return new ChromeSelectFilePolicy(web_contents); |
| 2413 } | 2380 } |
| 2414 | 2381 |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2589 #if defined(OS_ANDROID) | 2556 #if defined(OS_ANDROID) |
| 2590 return new DevToolsManagerDelegateAndroid(); | 2557 return new DevToolsManagerDelegateAndroid(); |
| 2591 #else | 2558 #else |
| 2592 return new ChromeDevToolsManagerDelegate(); | 2559 return new ChromeDevToolsManagerDelegate(); |
| 2593 #endif | 2560 #endif |
| 2594 } | 2561 } |
| 2595 | 2562 |
| 2596 bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( | 2563 bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( |
| 2597 content::BrowserContext* browser_context, | 2564 content::BrowserContext* browser_context, |
| 2598 const GURL& url) { | 2565 const GURL& url) { |
| 2599 #if defined(ENABLE_EXTENSIONS) | 2566 #if defined(ENABLE_PLUGINS) && defined(ENABLE_EXTENSIONS) |
| 2600 Profile* profile = Profile::FromBrowserContext(browser_context); | 2567 return ChromeContentBrowserClientPluginsPart:: |
| 2601 const extensions::ExtensionSet* extension_set = NULL; | 2568 IsPluginAllowedToCallRequestOSFileHandle(browser_context, url, |
| 2602 if (profile) { | 2569 allowed_file_handle_origins_); |
| 2603 extension_set = | |
| 2604 &extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); | |
| 2605 } | |
| 2606 return IsExtensionOrSharedModuleWhitelisted(url, extension_set, | |
| 2607 allowed_file_handle_origins_) || | |
| 2608 IsHostAllowedByCommandLine(url, extension_set, | |
| 2609 switches::kAllowNaClFileHandleAPI); | |
| 2610 #else | 2570 #else |
| 2611 return false; | 2571 return false; |
| 2612 #endif | 2572 #endif |
| 2613 } | 2573 } |
| 2614 | 2574 |
| 2615 bool ChromeContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( | 2575 bool ChromeContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( |
| 2616 content::BrowserContext* browser_context, | 2576 content::BrowserContext* browser_context, |
| 2617 const GURL& url) { | 2577 const GURL& url) { |
| 2618 #if defined(ENABLE_EXTENSIONS) | 2578 #if defined(ENABLE_PLUGINS) && defined(ENABLE_EXTENSIONS) |
| 2619 // Allow access for tests. | 2579 // Allow access for tests. |
| 2620 if (CommandLine::ForCurrentProcess()->HasSwitch( | 2580 if (CommandLine::ForCurrentProcess()->HasSwitch( |
|
Lei Zhang
2014/12/04 22:59:43
Move this into chrome_content_browser_client_plugi
Jitu( very slow this week)
2014/12/05 05:39:30
Done.
| |
| 2621 switches::kEnablePepperTesting)) { | 2581 switches::kEnablePepperTesting)) { |
| 2622 return true; | 2582 return true; |
| 2623 } | 2583 } |
| 2624 | 2584 return ChromeContentBrowserClientPluginsPart:: |
| 2625 Profile* profile = Profile::FromBrowserContext(browser_context); | 2585 IsPluginAllowedToUseDevChannelAPIs(browser_context, url, |
| 2626 const extensions::ExtensionSet* extension_set = NULL; | 2586 allowed_dev_channel_origins_); |
| 2627 if (profile) { | |
| 2628 extension_set = | |
| 2629 &extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); | |
| 2630 } | |
| 2631 | |
| 2632 // Allow access for whitelisted applications. | |
| 2633 if (IsExtensionOrSharedModuleWhitelisted(url, | |
| 2634 extension_set, | |
| 2635 allowed_dev_channel_origins_)) { | |
| 2636 return true; | |
| 2637 } | |
| 2638 | |
| 2639 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | |
| 2640 // Allow dev channel APIs to be used on "Canary", "Dev", and "Unknown" | |
| 2641 // releases of Chrome. Permitting "Unknown" allows these APIs to be used on | |
| 2642 // Chromium builds as well. | |
| 2643 return channel <= chrome::VersionInfo::CHANNEL_DEV; | |
| 2644 #else | 2587 #else |
| 2645 return false; | 2588 return false; |
| 2646 #endif | 2589 #endif |
| 2647 } | 2590 } |
| 2648 | 2591 |
| 2649 net::CookieStore* | 2592 net::CookieStore* |
| 2650 ChromeContentBrowserClient::OverrideCookieStoreForRenderProcess( | 2593 ChromeContentBrowserClient::OverrideCookieStoreForRenderProcess( |
| 2651 int render_process_id) { | 2594 int render_process_id) { |
| 2652 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 2595 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 2653 if (!prerender_tracker_) | 2596 if (!prerender_tracker_) |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2673 switches::kDisableWebRtcEncryption, | 2616 switches::kDisableWebRtcEncryption, |
| 2674 }; | 2617 }; |
| 2675 to_command_line->CopySwitchesFrom(from_command_line, | 2618 to_command_line->CopySwitchesFrom(from_command_line, |
| 2676 kWebRtcDevSwitchNames, | 2619 kWebRtcDevSwitchNames, |
| 2677 arraysize(kWebRtcDevSwitchNames)); | 2620 arraysize(kWebRtcDevSwitchNames)); |
| 2678 } | 2621 } |
| 2679 } | 2622 } |
| 2680 #endif // defined(ENABLE_WEBRTC) | 2623 #endif // defined(ENABLE_WEBRTC) |
| 2681 | 2624 |
| 2682 } // namespace chrome | 2625 } // namespace chrome |
| OLD | NEW |