From 9eae22d48726a8441506a41cb19740815d122414 Mon Sep 17 00:00:00 2001 From: yan Date: Fri, 11 Nov 2016 11:56:56 -0800 Subject: [PATCH] Use security origin for media access permission requests Fix https://github.com/brave/browser-laptop/issues/5378 Auditors: @bridiver --- atom/browser/web_contents_permission_helper.cc | 12 +++++++++--- atom/browser/web_contents_permission_helper.h | 3 ++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/atom/browser/web_contents_permission_helper.cc b/atom/browser/web_contents_permission_helper.cc index 4421672cf5..65799cb366 100644 --- a/atom/browser/web_contents_permission_helper.cc +++ b/atom/browser/web_contents_permission_helper.cc @@ -54,11 +54,16 @@ WebContentsPermissionHelper::~WebContentsPermissionHelper() { void WebContentsPermissionHelper::RequestPermission( content::PermissionType permission, const base::Callback& callback, - bool user_gesture) { + bool user_gesture, const GURL& security_origin) { auto rfh = web_contents_->GetMainFrame(); auto permission_manager = static_cast( web_contents_->GetBrowserContext()->GetPermissionManager()); - auto origin = web_contents_->GetLastCommittedURL(); + GURL origin; + if (security_origin.is_empty()) { + origin = web_contents_->GetLastCommittedURL(); + } else { + origin = security_origin; + } permission_manager->RequestPermission( permission, rfh, origin, base::Bind(&OnPermissionResponse, callback)); @@ -76,7 +81,8 @@ void WebContentsPermissionHelper::RequestMediaAccessPermission( auto callback = base::Bind(&MediaAccessAllowed, request, response_callback); // The permission type doesn't matter here, AUDIO_CAPTURE/VIDEO_CAPTURE // are presented as same type in content_converter.h. - RequestPermission(content::PermissionType::AUDIO_CAPTURE, callback); + RequestPermission(content::PermissionType::AUDIO_CAPTURE, callback, + false, request.security_origin); } void WebContentsPermissionHelper::RequestWebNotificationPermission( diff --git a/atom/browser/web_contents_permission_helper.h b/atom/browser/web_contents_permission_helper.h index 52ea93eb3c..e8a70fa01a 100644 --- a/atom/browser/web_contents_permission_helper.h +++ b/atom/browser/web_contents_permission_helper.h @@ -46,7 +46,8 @@ class WebContentsPermissionHelper void RequestPermission( content::PermissionType permission, const base::Callback& callback, - bool user_gesture = false); + bool user_gesture = false, + const GURL& security_origin = GURL()); content::WebContents* web_contents_;