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 28 matching lines...) Expand all Loading... | |
| 39 #include "chrome/browser/media/cast_transport_host_filter.h" | 39 #include "chrome/browser/media/cast_transport_host_filter.h" |
| 40 #include "chrome/browser/media/media_capture_devices_dispatcher.h" | 40 #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
| 41 #include "chrome/browser/media/midi_permission_context.h" | 41 #include "chrome/browser/media/midi_permission_context.h" |
| 42 #include "chrome/browser/media/midi_permission_context_factory.h" | 42 #include "chrome/browser/media/midi_permission_context_factory.h" |
| 43 #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h" | 43 #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h" |
| 44 #include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h" | 44 #include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h" |
| 45 #include "chrome/browser/net/chrome_net_log.h" | 45 #include "chrome/browser/net/chrome_net_log.h" |
| 46 #include "chrome/browser/notifications/desktop_notification_service.h" | 46 #include "chrome/browser/notifications/desktop_notification_service.h" |
| 47 #include "chrome/browser/notifications/desktop_notification_service_factory.h" | 47 #include "chrome/browser/notifications/desktop_notification_service_factory.h" |
| 48 #include "chrome/browser/platform_util.h" | 48 #include "chrome/browser/platform_util.h" |
| 49 #include "chrome/browser/plugins/plugin_info_message_filter.h" | |
| 50 #include "chrome/browser/prerender/prerender_final_status.h" | 49 #include "chrome/browser/prerender/prerender_final_status.h" |
| 51 #include "chrome/browser/prerender/prerender_manager.h" | 50 #include "chrome/browser/prerender/prerender_manager.h" |
| 52 #include "chrome/browser/prerender/prerender_manager_factory.h" | 51 #include "chrome/browser/prerender/prerender_manager_factory.h" |
| 53 #include "chrome/browser/prerender/prerender_message_filter.h" | 52 #include "chrome/browser/prerender/prerender_message_filter.h" |
| 54 #include "chrome/browser/prerender/prerender_tracker.h" | 53 #include "chrome/browser/prerender/prerender_tracker.h" |
| 55 #include "chrome/browser/printing/printing_message_filter.h" | 54 #include "chrome/browser/printing/printing_message_filter.h" |
| 56 #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h" | 55 #include "chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.h" |
| 57 #include "chrome/browser/profiles/profile.h" | 56 #include "chrome/browser/profiles/profile.h" |
| 58 #include "chrome/browser/profiles/profile_io_data.h" | 57 #include "chrome/browser/profiles/profile_io_data.h" |
| 59 #include "chrome/browser/renderer_host/chrome_render_message_filter.h" | 58 #include "chrome/browser/renderer_host/chrome_render_message_filter.h" |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 232 #include "extensions/common/constants.h" | 231 #include "extensions/common/constants.h" |
| 233 #include "extensions/common/extension.h" | 232 #include "extensions/common/extension.h" |
| 234 #include "extensions/common/extension_set.h" | 233 #include "extensions/common/extension_set.h" |
| 235 #include "extensions/common/manifest_handlers/background_info.h" | 234 #include "extensions/common/manifest_handlers/background_info.h" |
| 236 #include "extensions/common/manifest_handlers/shared_module_info.h" | 235 #include "extensions/common/manifest_handlers/shared_module_info.h" |
| 237 #include "extensions/common/permissions/permissions_data.h" | 236 #include "extensions/common/permissions/permissions_data.h" |
| 238 #include "extensions/common/permissions/socket_permission.h" | 237 #include "extensions/common/permissions/socket_permission.h" |
| 239 #include "extensions/common/switches.h" | 238 #include "extensions/common/switches.h" |
| 240 #endif | 239 #endif |
| 241 | 240 |
| 241 #if defined(ENABLE_PLUGINS) | |
| 242 #include "chrome/browser/plugins/chrome_content_browser_client_plugins_part.h" | |
| 243 #endif | |
| 244 | |
| 242 #if defined(ENABLE_SPELLCHECK) | 245 #if defined(ENABLE_SPELLCHECK) |
| 243 #include "chrome/browser/spellchecker/spellcheck_message_filter.h" | 246 #include "chrome/browser/spellchecker/spellcheck_message_filter.h" |
| 244 #endif | 247 #endif |
| 245 | 248 |
| 246 #if defined(ENABLE_WEBRTC) | 249 #if defined(ENABLE_WEBRTC) |
| 247 #include "chrome/browser/media/webrtc_logging_handler_host.h" | 250 #include "chrome/browser/media/webrtc_logging_handler_host.h" |
| 248 #endif | 251 #endif |
| 249 | 252 |
| 250 using base::FileDescriptor; | 253 using base::FileDescriptor; |
| 251 using blink::WebWindowFeatures; | 254 using blink::WebWindowFeatures; |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 273 using extensions::InfoMap; | 276 using extensions::InfoMap; |
| 274 using extensions::Manifest; | 277 using extensions::Manifest; |
| 275 #endif | 278 #endif |
| 276 | 279 |
| 277 namespace { | 280 namespace { |
| 278 | 281 |
| 279 // Cached version of the locale so we can return the locale on the I/O | 282 // Cached version of the locale so we can return the locale on the I/O |
| 280 // thread. | 283 // thread. |
| 281 base::LazyInstance<std::string> g_io_thread_application_locale; | 284 base::LazyInstance<std::string> g_io_thread_application_locale; |
| 282 | 285 |
| 283 #if defined(ENABLE_PLUGINS) | |
| 284 // TODO(teravest): Add renderer-side API-specific checking for these APIs so | |
| 285 // that blanket permission isn't granted to all dev channel APIs for these. | |
| 286 // http://crbug.com/386743 | |
| 287 const char* const kPredefinedAllowedDevChannelOrigins[] = { | |
| 288 "6EAED1924DB611B6EEF2A664BD077BE7EAD33B8F", // see crbug.com/383937 | |
| 289 "4EB74897CB187C7633357C2FE832E0AD6A44883A" // see crbug.com/383937 | |
| 290 }; | |
| 291 | |
| 292 const char* const kPredefinedAllowedFileHandleOrigins[] = { | |
| 293 "6EAED1924DB611B6EEF2A664BD077BE7EAD33B8F", // see crbug.com/234789 | |
| 294 "4EB74897CB187C7633357C2FE832E0AD6A44883A" // see crbug.com/234789 | |
| 295 }; | |
| 296 | |
| 297 const char* const kPredefinedAllowedSocketOrigins[] = { | |
| 298 "okddffdblfhhnmhodogpojmfkjmhinfp", // Test SSH Client | |
| 299 "pnhechapfaindjhompbnflcldabbghjo", // HTerm App (SSH Client) | |
| 300 "bglhmjfplikpjnfoegeomebmfnkjomhe", // see crbug.com/122126 | |
| 301 "gbchcmhmhahfdphkhkmpfmihenigjmpp", // Chrome Remote Desktop | |
| 302 "kgngmbheleoaphbjbaiobfdepmghbfah", // Pre-release Chrome Remote Desktop | |
| 303 "odkaodonbgfohohmklejpjiejmcipmib", // Dogfood Chrome Remote Desktop | |
| 304 "ojoimpklfciegopdfgeenehpalipignm", // Chromoting canary | |
| 305 "cbkkbcmdlboombapidmoeolnmdacpkch", // see crbug.com/129089 | |
| 306 "hhnbmknkdabfoieppbbljkhkfjcmcbjh", // see crbug.com/134099 | |
| 307 "mablfbjkhmhkmefkjjacnbaikjkipphg", // see crbug.com/134099 | |
| 308 "pdeelgamlgannhelgoegilelnnojegoh", // see crbug.com/134099 | |
| 309 "cabapfdbkniadpollkckdnedaanlciaj", // see crbug.com/134099 | |
| 310 "mapljbgnjledlpdmlchihnmeclmefbba", // see crbug.com/134099 | |
| 311 "ghbfeebgmiidnnmeobbbaiamklmpbpii", // see crbug.com/134099 | |
| 312 "jdfhpkjeckflbbleddjlpimecpbjdeep", // see crbug.com/142514 | |
| 313 "iabmpiboiopbgfabjmgeedhcmjenhbla", // see crbug.com/165080 | |
| 314 "B7CF8A292249681AF81771650BA4CEEAF19A4560", // see crbug.com/165080 | |
| 315 "6EAED1924DB611B6EEF2A664BD077BE7EAD33B8F", // see crbug.com/234789 | |
| 316 "4EB74897CB187C7633357C2FE832E0AD6A44883A", // see crbug.com/234789 | |
| 317 "7525AF4F66763A70A883C4700529F647B470E4D2", // see crbug.com/238084 | |
| 318 "0B549507088E1564D672F7942EB87CA4DAD73972", // see crbug.com/238084 | |
| 319 "864288364E239573E777D3E0E36864E590E95C74" // see crbug.com/238084 | |
| 320 }; | |
| 321 #endif | |
| 322 | |
| 323 // Returns a copy of the given url with its host set to given host and path set | 286 // Returns a copy of the given url with its host set to given host and path set |
| 324 // to given path. Other parts of the url will be the same. | 287 // to given path. Other parts of the url will be the same. |
| 325 GURL ReplaceURLHostAndPath(const GURL& url, | 288 GURL ReplaceURLHostAndPath(const GURL& url, |
| 326 const std::string& host, | 289 const std::string& host, |
| 327 const std::string& path) { | 290 const std::string& path) { |
| 328 url::Replacements<char> replacements; | 291 url::Replacements<char> replacements; |
| 329 replacements.SetHost(host.c_str(), url::Component(0, host.length())); | 292 replacements.SetHost(host.c_str(), url::Component(0, host.length())); |
| 330 replacements.SetPath(path.c_str(), url::Component(0, path.length())); | 293 replacements.SetPath(path.c_str(), url::Component(0, path.length())); |
| 331 return url.ReplaceComponents(replacements); | 294 return url.ReplaceComponents(replacements); |
| 332 } | 295 } |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 589 #endif // defined(ENALBE_EXTENSIONS) | 552 #endif // defined(ENALBE_EXTENSIONS) |
| 590 | 553 |
| 591 } // namespace | 554 } // namespace |
| 592 | 555 |
| 593 namespace chrome { | 556 namespace chrome { |
| 594 | 557 |
| 595 ChromeContentBrowserClient::ChromeContentBrowserClient() | 558 ChromeContentBrowserClient::ChromeContentBrowserClient() |
| 596 : prerender_tracker_(NULL), | 559 : prerender_tracker_(NULL), |
| 597 weak_factory_(this) { | 560 weak_factory_(this) { |
| 598 #if defined(ENABLE_PLUGINS) | 561 #if defined(ENABLE_PLUGINS) |
| 599 for (size_t i = 0; i < arraysize(kPredefinedAllowedDevChannelOrigins); ++i) | 562 plugin_parts_ = new plugins::ChromeContentBrowserClientPluginsPart; |
| 600 allowed_dev_channel_origins_.insert(kPredefinedAllowedDevChannelOrigins[i]); | |
| 601 for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) | |
| 602 allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); | |
| 603 for (size_t i = 0; i < arraysize(kPredefinedAllowedSocketOrigins); ++i) | |
| 604 allowed_socket_origins_.insert(kPredefinedAllowedSocketOrigins[i]); | |
| 605 #endif | 563 #endif |
| 606 | 564 |
| 607 #if !defined(OS_ANDROID) | 565 #if !defined(OS_ANDROID) |
| 608 TtsExtensionEngine* tts_extension_engine = TtsExtensionEngine::GetInstance(); | 566 TtsExtensionEngine* tts_extension_engine = TtsExtensionEngine::GetInstance(); |
| 609 TtsController::GetInstance()->SetTtsEngineDelegate(tts_extension_engine); | 567 TtsController::GetInstance()->SetTtsEngineDelegate(tts_extension_engine); |
| 610 #endif | 568 #endif |
| 611 | 569 |
| 612 #if defined(ENABLE_EXTENSIONS) | 570 #if defined(ENABLE_EXTENSIONS) |
| 613 extra_parts_.push_back(new ChromeContentBrowserClientExtensionsPart); | 571 extra_parts_.push_back(new ChromeContentBrowserClientExtensionsPart); |
| 614 #endif | 572 #endif |
| 615 } | 573 } |
| 616 | 574 |
| 617 ChromeContentBrowserClient::~ChromeContentBrowserClient() { | 575 ChromeContentBrowserClient::~ChromeContentBrowserClient() { |
| 618 for (int i = static_cast<int>(extra_parts_.size()) - 1; i >= 0; --i) | 576 for (int i = static_cast<int>(extra_parts_.size()) - 1; i >= 0; --i) |
| 619 delete extra_parts_[i]; | 577 delete extra_parts_[i]; |
| 620 extra_parts_.clear(); | 578 extra_parts_.clear(); |
| 579 | |
| 580 #if defined(ENABLE_PLUGINS) | |
| 581 if (plugin_parts_) | |
| 582 delete plugin_parts_; | |
| 583 #endif | |
| 621 } | 584 } |
| 622 | 585 |
| 623 // static | 586 // static |
| 624 void ChromeContentBrowserClient::RegisterProfilePrefs( | 587 void ChromeContentBrowserClient::RegisterProfilePrefs( |
| 625 user_prefs::PrefRegistrySyncable* registry) { | 588 user_prefs::PrefRegistrySyncable* registry) { |
| 626 registry->RegisterBooleanPref( | 589 registry->RegisterBooleanPref( |
| 627 prefs::kDisable3DAPIs, | 590 prefs::kDisable3DAPIs, |
| 628 false, | 591 false, |
| 629 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 592 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 630 registry->RegisterBooleanPref( | 593 registry->RegisterBooleanPref( |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 803 | 766 |
| 804 void ChromeContentBrowserClient::RenderProcessWillLaunch( | 767 void ChromeContentBrowserClient::RenderProcessWillLaunch( |
| 805 content::RenderProcessHost* host) { | 768 content::RenderProcessHost* host) { |
| 806 int id = host->GetID(); | 769 int id = host->GetID(); |
| 807 Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext()); | 770 Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext()); |
| 808 net::URLRequestContextGetter* context = | 771 net::URLRequestContextGetter* context = |
| 809 profile->GetRequestContextForRenderProcess(id); | 772 profile->GetRequestContextForRenderProcess(id); |
| 810 | 773 |
| 811 host->AddFilter(new ChromeRenderMessageFilter(id, profile)); | 774 host->AddFilter(new ChromeRenderMessageFilter(id, profile)); |
| 812 #if defined(ENABLE_PLUGINS) | 775 #if defined(ENABLE_PLUGINS) |
| 813 host->AddFilter(new PluginInfoMessageFilter(id, profile)); | 776 plugin_parts_->RenderProcessWillLaunch(host); |
|
Lei Zhang
2014/11/18 03:14:46
The goal is to get rid of the ifdefs in this file,
| |
| 814 #endif | 777 #endif |
| 815 host->AddFilter(new cast::CastTransportHostFilter); | 778 host->AddFilter(new cast::CastTransportHostFilter); |
| 816 #if defined(ENABLE_PRINTING) | 779 #if defined(ENABLE_PRINTING) |
| 817 host->AddFilter(new printing::PrintingMessageFilter(id, profile)); | 780 host->AddFilter(new printing::PrintingMessageFilter(id, profile)); |
| 818 #endif | 781 #endif |
| 819 host->AddFilter(new SearchProviderInstallStateMessageFilter(id, profile)); | 782 host->AddFilter(new SearchProviderInstallStateMessageFilter(id, profile)); |
| 820 #if defined(ENABLE_SPELLCHECK) | 783 #if defined(ENABLE_SPELLCHECK) |
| 821 host->AddFilter(new SpellCheckMessageFilter(id)); | 784 host->AddFilter(new SpellCheckMessageFilter(id)); |
| 822 #endif | 785 #endif |
| 823 #if defined(OS_MACOSX) | 786 #if defined(OS_MACOSX) |
| (...skipping 1476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2300 } | 2263 } |
| 2301 #endif | 2264 #endif |
| 2302 return NULL; | 2265 return NULL; |
| 2303 } | 2266 } |
| 2304 | 2267 |
| 2305 bool ChromeContentBrowserClient::AllowPepperSocketAPI( | 2268 bool ChromeContentBrowserClient::AllowPepperSocketAPI( |
| 2306 content::BrowserContext* browser_context, | 2269 content::BrowserContext* browser_context, |
| 2307 const GURL& url, | 2270 const GURL& url, |
| 2308 bool private_api, | 2271 bool private_api, |
| 2309 const content::SocketPermissionRequest* params) { | 2272 const content::SocketPermissionRequest* params) { |
| 2310 #if defined(ENABLE_EXTENSIONS) | 2273 #if defined(ENABLE_PLUGINS) |
| 2311 Profile* profile = Profile::FromBrowserContext(browser_context); | 2274 return plugin_parts_->AllowPepperSocketAPI( |
| 2312 const extensions::ExtensionSet* extension_set = NULL; | 2275 browser_context, url, private_api, params); |
| 2313 if (profile) { | |
| 2314 const ExtensionService* ext_service = | |
| 2315 extensions::ExtensionSystem::Get(profile)->extension_service(); | |
| 2316 if (ext_service) { | |
| 2317 extension_set = ext_service->extensions(); | |
| 2318 } | |
| 2319 } | |
| 2320 | |
| 2321 if (private_api) { | |
| 2322 // Access to private socket APIs is controlled by the whitelist. | |
| 2323 if (IsExtensionOrSharedModuleWhitelisted(url, extension_set, | |
| 2324 allowed_socket_origins_)) { | |
| 2325 return true; | |
| 2326 } | |
| 2327 } else { | |
| 2328 // Access to public socket APIs is controlled by extension permissions. | |
| 2329 if (url.is_valid() && url.SchemeIs(extensions::kExtensionScheme) && | |
| 2330 extension_set) { | |
| 2331 const Extension* extension = extension_set->GetByID(url.host()); | |
| 2332 if (extension) { | |
| 2333 const extensions::PermissionsData* permissions_data = | |
| 2334 extension->permissions_data(); | |
| 2335 if (params) { | |
| 2336 extensions::SocketPermission::CheckParam check_params( | |
| 2337 params->type, params->host, params->port); | |
| 2338 if (permissions_data->CheckAPIPermissionWithParam( | |
| 2339 extensions::APIPermission::kSocket, &check_params)) { | |
| 2340 return true; | |
| 2341 } | |
| 2342 } else if (permissions_data->HasAPIPermission( | |
| 2343 extensions::APIPermission::kSocket)) { | |
| 2344 return true; | |
| 2345 } | |
| 2346 } | |
| 2347 } | |
| 2348 } | |
| 2349 | |
| 2350 // Allow both public and private APIs if the command line says so. | |
| 2351 return IsHostAllowedByCommandLine(url, extension_set, | |
| 2352 switches::kAllowNaClSocketAPI); | |
| 2353 #else | 2276 #else |
| 2354 return false; | 2277 return false; |
| 2355 #endif | 2278 #endif |
| 2356 } | 2279 } |
| 2357 | 2280 |
| 2358 ui::SelectFilePolicy* ChromeContentBrowserClient::CreateSelectFilePolicy( | 2281 ui::SelectFilePolicy* ChromeContentBrowserClient::CreateSelectFilePolicy( |
| 2359 WebContents* web_contents) { | 2282 WebContents* web_contents) { |
| 2360 return new ChromeSelectFilePolicy(web_contents); | 2283 return new ChromeSelectFilePolicy(web_contents); |
| 2361 } | 2284 } |
| 2362 | 2285 |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2519 #if defined(OS_ANDROID) | 2442 #if defined(OS_ANDROID) |
| 2520 return new DevToolsManagerDelegateAndroid(); | 2443 return new DevToolsManagerDelegateAndroid(); |
| 2521 #else | 2444 #else |
| 2522 return new ChromeDevToolsManagerDelegate(); | 2445 return new ChromeDevToolsManagerDelegate(); |
| 2523 #endif | 2446 #endif |
| 2524 } | 2447 } |
| 2525 | 2448 |
| 2526 bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( | 2449 bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( |
| 2527 content::BrowserContext* browser_context, | 2450 content::BrowserContext* browser_context, |
| 2528 const GURL& url) { | 2451 const GURL& url) { |
| 2529 #if defined(ENABLE_EXTENSIONS) | 2452 #if defined(ENABLE_PLUGINS) |
| 2530 Profile* profile = Profile::FromBrowserContext(browser_context); | 2453 return plugin_parts_->IsPluginAllowedToCallRequestOSFileHandle( |
| 2531 const extensions::ExtensionSet* extension_set = NULL; | 2454 browser_context, url); |
| 2532 if (profile) { | |
| 2533 const ExtensionService* ext_service = | |
| 2534 extensions::ExtensionSystem::Get(profile)->extension_service(); | |
| 2535 if (ext_service) { | |
| 2536 extension_set = ext_service->extensions(); | |
| 2537 } | |
| 2538 } | |
| 2539 return IsExtensionOrSharedModuleWhitelisted(url, extension_set, | |
| 2540 allowed_file_handle_origins_) || | |
| 2541 IsHostAllowedByCommandLine(url, extension_set, | |
| 2542 switches::kAllowNaClFileHandleAPI); | |
| 2543 #else | 2455 #else |
| 2544 return false; | 2456 return false; |
| 2545 #endif | 2457 #endif |
| 2546 } | 2458 } |
| 2547 | 2459 |
| 2548 bool ChromeContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( | 2460 bool ChromeContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( |
| 2549 content::BrowserContext* browser_context, | 2461 content::BrowserContext* browser_context, |
| 2550 const GURL& url) { | 2462 const GURL& url) { |
| 2551 #if defined(ENABLE_EXTENSIONS) | 2463 #if defined(ENABLE_PLUGINS) |
| 2552 // Allow access for tests. | 2464 // Allow access for tests. |
| 2553 if (CommandLine::ForCurrentProcess()->HasSwitch( | 2465 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 2554 switches::kEnablePepperTesting)) { | 2466 switches::kEnablePepperTesting)) { |
| 2555 return true; | 2467 return true; |
| 2556 } | 2468 } |
| 2557 | 2469 return plugin_parts_->IsPluginAllowedToUseDevChannelAPIs(browser_context, |
| 2558 Profile* profile = Profile::FromBrowserContext(browser_context); | 2470 url); |
| 2559 const extensions::ExtensionSet* extension_set = NULL; | |
| 2560 if (profile) { | |
| 2561 const ExtensionService* ext_service = | |
| 2562 extensions::ExtensionSystem::Get(profile)->extension_service(); | |
| 2563 if (ext_service) { | |
| 2564 extension_set = ext_service->extensions(); | |
| 2565 } | |
| 2566 } | |
| 2567 | |
| 2568 // Allow access for whitelisted applications. | |
| 2569 if (IsExtensionOrSharedModuleWhitelisted(url, | |
| 2570 extension_set, | |
| 2571 allowed_dev_channel_origins_)) { | |
| 2572 return true; | |
| 2573 } | |
| 2574 | |
| 2575 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | |
| 2576 // Allow dev channel APIs to be used on "Canary", "Dev", and "Unknown" | |
| 2577 // releases of Chrome. Permitting "Unknown" allows these APIs to be used on | |
| 2578 // Chromium builds as well. | |
| 2579 return channel <= chrome::VersionInfo::CHANNEL_DEV; | |
| 2580 #else | 2471 #else |
| 2581 return false; | 2472 return false; |
| 2582 #endif | 2473 #endif |
| 2583 } | 2474 } |
| 2584 | 2475 |
| 2585 net::CookieStore* | 2476 net::CookieStore* |
| 2586 ChromeContentBrowserClient::OverrideCookieStoreForRenderProcess( | 2477 ChromeContentBrowserClient::OverrideCookieStoreForRenderProcess( |
| 2587 int render_process_id) { | 2478 int render_process_id) { |
| 2588 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 2479 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 2589 if (!prerender_tracker_) | 2480 if (!prerender_tracker_) |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2609 switches::kDisableWebRtcEncryption, | 2500 switches::kDisableWebRtcEncryption, |
| 2610 }; | 2501 }; |
| 2611 to_command_line->CopySwitchesFrom(from_command_line, | 2502 to_command_line->CopySwitchesFrom(from_command_line, |
| 2612 kWebRtcDevSwitchNames, | 2503 kWebRtcDevSwitchNames, |
| 2613 arraysize(kWebRtcDevSwitchNames)); | 2504 arraysize(kWebRtcDevSwitchNames)); |
| 2614 } | 2505 } |
| 2615 } | 2506 } |
| 2616 #endif // defined(ENABLE_WEBRTC) | 2507 #endif // defined(ENABLE_WEBRTC) |
| 2617 | 2508 |
| 2618 } // namespace chrome | 2509 } // namespace chrome |
| OLD | NEW |