Index: extensions/browser/guest_view/web_view/web_view_permission_helper.cc |
diff --git a/extensions/browser/guest_view/web_view/web_view_permission_helper.cc b/extensions/browser/guest_view/web_view/web_view_permission_helper.cc |
index d713279e23beb14be9518b941f9c43468e50b147..c99eddea501c7783d193dcc4b24678d1f3527f19 100644 |
--- a/extensions/browser/guest_view/web_view/web_view_permission_helper.cc |
+++ b/extensions/browser/guest_view/web_view/web_view_permission_helper.cc |
@@ -180,16 +180,49 @@ void WebViewPermissionHelper::RequestMediaAccessPermission( |
content::WebContents* source, |
const content::MediaStreamRequest& request, |
const content::MediaResponseCallback& callback) { |
- web_view_permission_helper_delegate_->RequestMediaAccessPermission( |
- source, request, callback); |
+ base::DictionaryValue request_info; |
+ request_info.SetString(guestview::kUrl, request.security_origin.spec()); |
+ RequestPermission( |
+ WEB_VIEW_PERMISSION_TYPE_MEDIA, |
+ request_info, |
+ base::Bind(&WebViewPermissionHelper::OnMediaPermissionResponse, |
+ weak_factory_.GetWeakPtr(), |
+ request, |
+ callback), |
+ false /* allowed_by_default */); |
} |
bool WebViewPermissionHelper::CheckMediaAccessPermission( |
content::WebContents* source, |
const GURL& security_origin, |
content::MediaStreamType type) { |
- return web_view_permission_helper_delegate_->CheckMediaAccessPermission( |
- source, security_origin, type); |
+ return web_view_guest() |
+ ->embedder_web_contents() |
+ ->GetDelegate() |
+ ->CheckMediaAccessPermission( |
+ web_view_guest()->embedder_web_contents(), security_origin, type); |
+} |
+ |
+void WebViewPermissionHelper::OnMediaPermissionResponse( |
+ const content::MediaStreamRequest& request, |
+ const content::MediaResponseCallback& callback, |
+ bool allow, |
+ const std::string& user_input) { |
+ if (!allow || !web_view_guest()->attached()) { |
+ // Deny the request. |
+ callback.Run(content::MediaStreamDevices(), |
+ content::MEDIA_DEVICE_INVALID_STATE, |
+ scoped_ptr<content::MediaStreamUI>()); |
+ return; |
+ } |
+ if (!web_view_guest()->embedder_web_contents()->GetDelegate()) |
+ return; |
+ |
+ web_view_guest() |
+ ->embedder_web_contents() |
+ ->GetDelegate() |
+ ->RequestMediaAccessPermission( |
+ web_view_guest()->embedder_web_contents(), request, callback); |
} |
void WebViewPermissionHelper::CanDownload( |