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 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 |