summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/media_utils.cc
diff options
context:
space:
mode:
authorgrunell <grunell@chromium.org>2014-09-17 17:09:43 -0700
committerCommit bot <commit-bot@chromium.org>2014-09-18 00:09:55 +0000
commit657d4d8c7d26c89c0846479ac322931bfaba4f86 (patch)
tree2a853ed570eb321b1f0a77fc8afe656a0f0e0210 /chrome/browser/ui/media_utils.cc
parentee83dcef7d2552d2221ac5be9f8ac831942ba670 (diff)
downloadchromium_src-657d4d8c7d26c89c0846479ac322931bfaba4f86.zip
chromium_src-657d4d8c7d26c89c0846479ac322931bfaba4f86.tar.gz
chromium_src-657d4d8c7d26c89c0846479ac322931bfaba4f86.tar.bz2
Check media permissions through RenderFrameHostDelegate.
* Add function CheckMediaAccessPermission on RenderFrameHostDelegate, WebContentsDelegate, classes implementing those and chain it to MediaCaptureDevicesDispatcher::CheckMediaAccessPermission through the different paths. (Essentially add this function side-by-side with RequestMediaAccessPermission.) * Change MediaStreamManager to use this function for checking permission when determining if device labels should be visible. BUG=406094 Review URL: https://codereview.chromium.org/562263002 Cr-Commit-Position: refs/heads/master@{#295379}
Diffstat (limited to 'chrome/browser/ui/media_utils.cc')
-rw-r--r--chrome/browser/ui/media_utils.cc50
1 files changed, 39 insertions, 11 deletions
diff --git a/chrome/browser/ui/media_utils.cc b/chrome/browser/ui/media_utils.cc
index 7101cc4..52d4633 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,29 @@ 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);
+ }
+ return MediaCaptureDevicesDispatcher::GetInstance()
+ ->CheckMediaAccessPermission(web_contents, security_origin, type);
+#else
+ return MediaCaptureDevicesDispatcher::GetInstance()
+ ->CheckMediaAccessPermission(web_contents, security_origin, type);
+#endif
+}