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 079282b95d983268e3f63ebff46cc277decb0bd6..95f90f646493b1dbbd9da0258ba8f67e939fca9e 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,8 +180,38 @@ 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, |
+ base::Unretained(this), |
Ken Rockot(use gerrit already)
2014/09/17 20:51:40
Any reason not to use a weak pointer instead of ba
|
+ request, |
+ callback), |
+ false /* allowed_by_default */); |
+} |
+ |
+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( |