Commit 3be3033c authored by lfg's avatar lfg Committed by Commit bot

Moving media permission request to extensions.

BUG=352293

Review URL: https://codereview.chromium.org/574793003

Cr-Commit-Position: refs/heads/master@{#295469}
parent cef10977
......@@ -131,10 +131,10 @@ namespace extensions {
namespace chrome_url_request_util {
bool AllowCrossRendererResourceLoad(net::URLRequest* request,
bool is_incognito,
const Extension* extension,
InfoMap* extension_info_map,
bool* allowed) {
bool is_incognito,
const Extension* extension,
InfoMap* extension_info_map,
bool* allowed) {
if (url_request_util::AllowCrossRendererResourceLoad(
request, is_incognito, extension, extension_info_map, allowed)) {
return true;
......@@ -171,9 +171,10 @@ net::URLRequestJob* MaybeCreateURLRequestResourceBundleJob(
base::FilePath request_path =
extensions::file_util::ExtensionURLToRelativeFilePath(request->url());
int resource_id = 0;
if (ExtensionsBrowserClient::Get()->GetComponentExtensionResourceManager()->
IsComponentExtensionResource(
directory_path, request_path, &resource_id)) {
if (ExtensionsBrowserClient::Get()
->GetComponentExtensionResourceManager()
->IsComponentExtensionResource(
directory_path, request_path, &resource_id)) {
relative_path = relative_path.Append(request_path);
relative_path = relative_path.NormalizePathSeparators();
return new URLRequestResourceBundleJob(request,
......
......@@ -29,10 +29,10 @@ namespace chrome_url_request_util {
// renderer A to access a resource in an extension running in renderer B.
// Returns false when it couldn't determine if the resource is allowed or not
bool AllowCrossRendererResourceLoad(net::URLRequest* request,
bool is_incognito,
const Extension* extension,
InfoMap* extension_info_map,
bool* allowed);
bool is_incognito,
const Extension* extension,
InfoMap* extension_info_map,
bool* allowed);
// Creates a URLRequestJob for loading component extension resources out of
// a Chrome resource bundle. Returns NULL if the requested resource is not a
......
......@@ -121,55 +121,6 @@ void ChromeWebViewPermissionHelperDelegate::OnPermissionResponse(
#endif // defined(ENABLE_PLUGINS)
void ChromeWebViewPermissionHelperDelegate::RequestMediaAccessPermission(
content::WebContents* source,
const content::MediaStreamRequest& request,
const content::MediaResponseCallback& callback) {
base::DictionaryValue request_info;
request_info.SetString(guestview::kUrl, request.security_origin.spec());
web_view_permission_helper()->RequestPermission(
WEB_VIEW_PERMISSION_TYPE_MEDIA,
request_info,
base::Bind(
&ChromeWebViewPermissionHelperDelegate::OnMediaPermissionResponse,
base::Unretained(this),
request,
callback),
false /* allowed_by_default */);
}
bool ChromeWebViewPermissionHelperDelegate::CheckMediaAccessPermission(
content::WebContents* source,
const GURL& security_origin,
content::MediaStreamType type) {
return web_view_guest()
->embedder_web_contents()
->GetDelegate()
->CheckMediaAccessPermission(
web_view_guest()->embedder_web_contents(), security_origin, type);
}
void ChromeWebViewPermissionHelperDelegate::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 ChromeWebViewPermissionHelperDelegate::CanDownload(
content::RenderViewHost* render_view_host,
const GURL& url,
......
......@@ -20,14 +20,6 @@ class ChromeWebViewPermissionHelperDelegate :
virtual ~ChromeWebViewPermissionHelperDelegate();
// WebViewPermissionHelperDelegate implementation.
virtual void RequestMediaAccessPermission(
content::WebContents* source,
const content::MediaStreamRequest& request,
const content::MediaResponseCallback& callback) OVERRIDE;
virtual bool CheckMediaAccessPermission(
content::WebContents* source,
const GURL& security_origin,
content::MediaStreamType type) OVERRIDE;
virtual void CanDownload(
content::RenderViewHost* render_view_host,
const GURL& url,
......@@ -100,12 +92,6 @@ class ChromeWebViewPermissionHelperDelegate :
bool allow,
const std::string& user_input);
void OnMediaPermissionResponse(
const content::MediaStreamRequest& request,
const content::MediaResponseCallback& callback,
bool allow,
const std::string& user_input);
void OnDownloadPermissionResponse(
const base::Callback<void(bool)>& callback,
bool allow,
......
......@@ -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(
......
......@@ -135,6 +135,11 @@ class WebViewPermissionHelper
WebViewGuest* web_view_guest() { return web_view_guest_; }
private:
void OnMediaPermissionResponse(const content::MediaStreamRequest& request,
const content::MediaResponseCallback& callback,
bool allow,
const std::string& user_input);
#if defined(ENABLE_PLUGINS)
// content::WebContentsObserver implementation.
virtual bool OnMessageReceived(
......
......@@ -18,12 +18,4 @@ WebViewPermissionHelperDelegate::WebViewPermissionHelperDelegate(
WebViewPermissionHelperDelegate::~WebViewPermissionHelperDelegate() {
}
bool WebViewPermissionHelperDelegate::CheckMediaAccessPermission(
content::WebContents* source,
const GURL& security_origin,
content::MediaStreamType type) {
// Defensive default implementation for privacy reasons.
return false;
}
} // namespace extensions
......@@ -20,15 +20,6 @@ class WebViewPermissionHelperDelegate : public content::WebContentsObserver {
WebViewPermissionHelper* web_view_permission_helper);
virtual ~WebViewPermissionHelperDelegate();
virtual void RequestMediaAccessPermission(
content::WebContents* source,
const content::MediaStreamRequest& request,
const content::MediaResponseCallback& callback) {}
virtual bool CheckMediaAccessPermission(content::WebContents* source,
const GURL& security_origin,
content::MediaStreamType type);
virtual void CanDownload(
content::RenderViewHost* render_view_host,
const GURL& url,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment