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 2276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2287 #endif | 2287 #endif |
2288 return NULL; | 2288 return NULL; |
2289 } | 2289 } |
2290 | 2290 |
2291 bool ChromeContentBrowserClient::AllowPepperSocketAPI( | 2291 bool ChromeContentBrowserClient::AllowPepperSocketAPI( |
2292 content::BrowserContext* browser_context, | 2292 content::BrowserContext* browser_context, |
2293 const GURL& url, | 2293 const GURL& url, |
2294 bool private_api, | 2294 bool private_api, |
2295 const content::SocketPermissionRequest* params) { | 2295 const content::SocketPermissionRequest* params) { |
2296 #if defined(ENABLE_EXTENSIONS) | 2296 #if defined(ENABLE_EXTENSIONS) |
2297 Profile* profile = Profile::FromBrowserContext(browser_context); | 2297 return ChromeContentBrowserClientExtensionsPart::AllowPepperSocketAPI( |
2298 const extensions::ExtensionSet* extension_set = NULL; | 2298 browser_context, url, private_api, params, allowed_socket_origins_); |
2299 if (profile) { | |
2300 const ExtensionService* ext_service = | |
2301 extensions::ExtensionSystem::Get(profile)->extension_service(); | |
2302 if (ext_service) { | |
2303 extension_set = ext_service->extensions(); | |
2304 } | |
2305 } | |
2306 | |
2307 if (private_api) { | |
2308 // Access to private socket APIs is controlled by the whitelist. | |
2309 if (IsExtensionOrSharedModuleWhitelisted(url, extension_set, | |
Lei Zhang
2014/09/23 01:15:11
BTW, this is only declared if defined(ENABLE_PLUGI
| |
2310 allowed_socket_origins_)) { | |
2311 return true; | |
2312 } | |
2313 } else { | |
2314 // Access to public socket APIs is controlled by extension permissions. | |
2315 if (url.is_valid() && url.SchemeIs(extensions::kExtensionScheme) && | |
2316 extension_set) { | |
2317 const Extension* extension = extension_set->GetByID(url.host()); | |
2318 if (extension) { | |
2319 const extensions::PermissionsData* permissions_data = | |
2320 extension->permissions_data(); | |
2321 if (params) { | |
2322 extensions::SocketPermission::CheckParam check_params( | |
2323 params->type, params->host, params->port); | |
2324 if (permissions_data->CheckAPIPermissionWithParam( | |
2325 extensions::APIPermission::kSocket, &check_params)) { | |
2326 return true; | |
2327 } | |
2328 } else if (permissions_data->HasAPIPermission( | |
2329 extensions::APIPermission::kSocket)) { | |
2330 return true; | |
2331 } | |
2332 } | |
2333 } | |
2334 } | |
2335 | |
2336 // Allow both public and private APIs if the command line says so. | |
2337 return IsHostAllowedByCommandLine(url, extension_set, | |
2338 switches::kAllowNaClSocketAPI); | |
2339 #else | 2299 #else |
2340 return false; | 2300 return false; |
2341 #endif | 2301 #endif |
2342 } | 2302 } |
2343 | 2303 |
2344 ui::SelectFilePolicy* ChromeContentBrowserClient::CreateSelectFilePolicy( | 2304 ui::SelectFilePolicy* ChromeContentBrowserClient::CreateSelectFilePolicy( |
2345 WebContents* web_contents) { | 2305 WebContents* web_contents) { |
2346 return new ChromeSelectFilePolicy(web_contents); | 2306 return new ChromeSelectFilePolicy(web_contents); |
2347 } | 2307 } |
2348 | 2308 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2502 | 2462 |
2503 content::DevToolsManagerDelegate* | 2463 content::DevToolsManagerDelegate* |
2504 ChromeContentBrowserClient::GetDevToolsManagerDelegate() { | 2464 ChromeContentBrowserClient::GetDevToolsManagerDelegate() { |
2505 return new ChromeDevToolsManagerDelegate(); | 2465 return new ChromeDevToolsManagerDelegate(); |
2506 } | 2466 } |
2507 | 2467 |
2508 bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( | 2468 bool ChromeContentBrowserClient::IsPluginAllowedToCallRequestOSFileHandle( |
2509 content::BrowserContext* browser_context, | 2469 content::BrowserContext* browser_context, |
2510 const GURL& url) { | 2470 const GURL& url) { |
2511 #if defined(ENABLE_EXTENSIONS) | 2471 #if defined(ENABLE_EXTENSIONS) |
2512 Profile* profile = Profile::FromBrowserContext(browser_context); | 2472 return ChromeContentBrowserClientExtensionsPart:: |
2513 const extensions::ExtensionSet* extension_set = NULL; | 2473 IsPluginAllowedToCallRequestOSFileHandle( |
2514 if (profile) { | 2474 browser_context, url, allowed_file_handle_origins_); |
2515 const ExtensionService* ext_service = | |
2516 extensions::ExtensionSystem::Get(profile)->extension_service(); | |
2517 if (ext_service) { | |
2518 extension_set = ext_service->extensions(); | |
2519 } | |
2520 } | |
2521 return IsExtensionOrSharedModuleWhitelisted(url, extension_set, | |
2522 allowed_file_handle_origins_) || | |
2523 IsHostAllowedByCommandLine(url, extension_set, | |
2524 switches::kAllowNaClFileHandleAPI); | |
2525 #else | 2475 #else |
2526 return false; | 2476 return false; |
2527 #endif | 2477 #endif |
2528 } | 2478 } |
2529 | 2479 |
2530 bool ChromeContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( | 2480 bool ChromeContentBrowserClient::IsPluginAllowedToUseDevChannelAPIs( |
2531 content::BrowserContext* browser_context, | 2481 content::BrowserContext* browser_context, |
2532 const GURL& url) { | 2482 const GURL& url) { |
2533 #if defined(ENABLE_EXTENSIONS) | 2483 #if defined(ENABLE_EXTENSIONS) |
2534 // Allow access for tests. | 2484 // Allow access for tests. |
2535 if (CommandLine::ForCurrentProcess()->HasSwitch( | 2485 if (CommandLine::ForCurrentProcess()->HasSwitch( |
2536 switches::kEnablePepperTesting)) { | 2486 switches::kEnablePepperTesting)) { |
2537 return true; | 2487 return true; |
2538 } | 2488 } |
2539 | 2489 return ChromeContentBrowserClientExtensionsPart:: |
2540 Profile* profile = Profile::FromBrowserContext(browser_context); | 2490 IsPluginAllowedToUseDevChannelAPIs( |
2541 const extensions::ExtensionSet* extension_set = NULL; | 2491 browser_context, url, allowed_dev_channel_origins_); |
2542 if (profile) { | |
2543 const ExtensionService* ext_service = | |
2544 extensions::ExtensionSystem::Get(profile)->extension_service(); | |
2545 if (ext_service) { | |
2546 extension_set = ext_service->extensions(); | |
2547 } | |
2548 } | |
2549 | |
2550 // Allow access for whitelisted applications. | |
2551 if (IsExtensionOrSharedModuleWhitelisted(url, | |
2552 extension_set, | |
2553 allowed_dev_channel_origins_)) { | |
2554 return true; | |
2555 } | |
2556 | |
2557 chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); | |
2558 // Allow dev channel APIs to be used on "Canary", "Dev", and "Unknown" | |
2559 // releases of Chrome. Permitting "Unknown" allows these APIs to be used on | |
2560 // Chromium builds as well. | |
2561 return channel <= chrome::VersionInfo::CHANNEL_DEV; | |
2562 #else | 2492 #else |
2563 return false; | 2493 return false; |
2564 #endif | 2494 #endif |
2565 } | 2495 } |
2566 | 2496 |
2567 net::CookieStore* | 2497 net::CookieStore* |
2568 ChromeContentBrowserClient::OverrideCookieStoreForRenderProcess( | 2498 ChromeContentBrowserClient::OverrideCookieStoreForRenderProcess( |
2569 int render_process_id) { | 2499 int render_process_id) { |
2570 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 2500 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
2571 if (!prerender_tracker_) | 2501 if (!prerender_tracker_) |
(...skipping 19 matching lines...) Expand all Loading... | |
2591 switches::kDisableWebRtcEncryption, | 2521 switches::kDisableWebRtcEncryption, |
2592 }; | 2522 }; |
2593 to_command_line->CopySwitchesFrom(from_command_line, | 2523 to_command_line->CopySwitchesFrom(from_command_line, |
2594 kWebRtcDevSwitchNames, | 2524 kWebRtcDevSwitchNames, |
2595 arraysize(kWebRtcDevSwitchNames)); | 2525 arraysize(kWebRtcDevSwitchNames)); |
2596 } | 2526 } |
2597 } | 2527 } |
2598 #endif // defined(ENABLE_WEBRTC) | 2528 #endif // defined(ENABLE_WEBRTC) |
2599 | 2529 |
2600 } // namespace chrome | 2530 } // namespace chrome |
OLD | NEW |