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_;