Chromium Code Reviews| Index: chrome/browser/ui/media_utils.cc |
| diff --git a/chrome/browser/ui/media_utils.cc b/chrome/browser/ui/media_utils.cc |
| index 7101cc44ea1be8ae9a351c8ec7b54cabeca5f4b1..912e2ba86249dc15713966c1ab51d00b68a0fd20 100644 |
| --- a/chrome/browser/ui/media_utils.cc |
| +++ b/chrome/browser/ui/media_utils.cc |
| @@ -6,6 +6,7 @@ |
| #include "chrome/browser/media/media_capture_devices_dispatcher.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "content/public/browser/web_contents.h" |
| #if defined(ENABLE_EXTENSIONS) |
| #include "chrome/browser/extensions/extension_service.h" |
| @@ -13,11 +14,24 @@ |
| #include "extensions/common/constants.h" |
| #endif |
| -class Profile; |
| +namespace { |
| -namespace content { |
| -class WebContents; |
| +#if defined(ENABLE_EXTENSIONS) |
| +const extensions::Extension* GetExtensionForOrigin(Profile* profile, |
| + const GURL& security_origin) { |
| + if (!security_origin.SchemeIs(extensions::kExtensionScheme)) |
| + return NULL; |
| + |
| + ExtensionService* extensions_service = |
| + extensions::ExtensionSystem::Get(profile)->extension_service(); |
| + const extensions::Extension* extension = |
| + extensions_service->extensions()->GetByID(security_origin.host()); |
| + DCHECK(extension); |
| + return extension; |
| } |
| +#endif |
| + |
| +} // namespace |
| void RequestMediaAccessPermission( |
| content::WebContents* web_contents, |
| @@ -26,15 +40,30 @@ void RequestMediaAccessPermission( |
| const content::MediaResponseCallback& callback) { |
| const extensions::Extension* extension = NULL; |
| #if defined(ENABLE_EXTENSIONS) |
| - GURL origin(request.security_origin); |
| - if (origin.SchemeIs(extensions::kExtensionScheme)) { |
| - ExtensionService* extensions_service = |
| - extensions::ExtensionSystem::Get(profile)->extension_service(); |
| - extension = extensions_service->extensions()->GetByID(origin.host()); |
| - DCHECK(extension); |
| - } |
| + extension = GetExtensionForOrigin(profile, request.security_origin); |
| #endif |
| - |
| MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( |
| web_contents, request, callback, extension); |
| } |
| + |
| +bool CheckMediaAccessPermission(content::WebContents* web_contents, |
| + const GURL& security_origin, |
| + content::MediaStreamType type) { |
| +#if defined(ENABLE_EXTENSIONS) |
| + Profile* profile = |
| + Profile::FromBrowserContext(web_contents->GetBrowserContext()); |
| + const extensions::Extension* extension = |
| + GetExtensionForOrigin(profile, security_origin); |
| + if (extension) { |
| + return MediaCaptureDevicesDispatcher::GetInstance() |
| + ->CheckMediaAccessPermission( |
| + web_contents, security_origin, type, extension); |
| + } else { |
|
sky
2014/09/17 15:46:47
nit: no else after a return (see style guide).
Henrik Grunell
2014/09/17 20:00:17
Done.
|
| + return MediaCaptureDevicesDispatcher::GetInstance() |
| + ->CheckMediaAccessPermission(web_contents, security_origin, type); |
| + } |
| +#else |
| + return MediaCaptureDevicesDispatcher::GetInstance() |
| + ->CheckMediaAccessPermission(web_contents, security_origin, type); |
| +#endif |
| +} |