| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ui/media_utils.h" |
| |
| #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 "extensions/browser/extension_registry.h" |
| #include "extensions/common/constants.h" |
| #endif |
| |
| namespace { |
| |
| #if defined(ENABLE_EXTENSIONS) |
| const extensions::Extension* GetExtensionForOrigin(Profile* profile, |
| const GURL& security_origin) { |
| if (!security_origin.SchemeIs(extensions::kExtensionScheme)) |
| return NULL; |
| |
| const extensions::Extension* extension = |
| extensions::ExtensionRegistry::Get(profile)->enabled_extensions().GetByID( |
| security_origin.host()); |
| DCHECK(extension); |
| return extension; |
| } |
| #endif |
| |
| } // namespace |
| |
| void RequestMediaAccessPermission( |
| content::WebContents* web_contents, |
| Profile* profile, |
| const content::MediaStreamRequest& request, |
| const content::MediaResponseCallback& callback) { |
| const extensions::Extension* extension = NULL; |
| #if defined(ENABLE_EXTENSIONS) |
| 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); |
| } |
| return MediaCaptureDevicesDispatcher::GetInstance() |
| ->CheckMediaAccessPermission(web_contents, security_origin, type); |
| #else |
| return MediaCaptureDevicesDispatcher::GetInstance() |
| ->CheckMediaAccessPermission(web_contents, security_origin, type); |
| #endif |
| } |