Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3495)

Unified Diff: chrome/browser/ui/media_utils.cc

Issue 562263002: Check media permissions through RenderFrameHostDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@render_frame_get_sources
Patch Set: Rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/media_utils.h ('k') | content/browser/frame_host/render_frame_host_delegate.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..52d463377281ae737f208b65045eb4907c1504b8 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
+}
« no previous file with comments | « chrome/browser/ui/media_utils.h ('k') | content/browser/frame_host/render_frame_host_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698