Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1428)

Unified Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc

Issue 307543005: Fix the Declarative WebRequest API for <webview> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_webcontentsdelegate_impl_to_chrome
Patch Set: Addressed remainder of comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
index 739d0744b955c08569db4a8f5bf9f501b75c6541..7855a689d864c2157c3359108c4580b7b4e8e744 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
@@ -18,6 +18,8 @@
#include "chrome/browser/extensions/api/web_request/web_request_api_constants.h"
#include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h"
#include "chrome/browser/extensions/api/web_request/web_request_permissions.h"
+#include "chrome/browser/extensions/extension_renderer_state.h"
+#include "content/public/browser/resource_request_info.h"
#include "content/public/common/url_constants.h"
#include "extensions/browser/info_map.h"
#include "extensions/common/error_utils.h"
@@ -26,6 +28,8 @@
#include "net/url_request/url_request.h"
#include "third_party/re2/re2/re2.h"
+using content::ResourceRequestInfo;
+
namespace extensions {
namespace helpers = extension_web_request_api_helpers;
@@ -481,6 +485,16 @@ bool WebRequestAction::HasPermission(const InfoMap* extension_info_map,
if (!extension_info_map)
return true;
+ const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
+ int process_id = info->GetChildID();
+ int route_id = info->GetRouteID();
+ ExtensionRendererState::WebViewInfo webview_info;
+ // The embedder can always access all hosts from within a <webview>.
+ // The same is not true of extensions.
+ if (ExtensionRendererState::GetInstance()->GetWebViewInfo(
+ process_id, route_id, &webview_info)) {
lazyboy 2014/05/29 17:50:14 Indent 4 more spaces.
Fady Samuel 2014/05/29 18:44:45 Done.
+ return true;
+ }
WebRequestPermissions::HostPermissionsCheck permission_check =
WebRequestPermissions::REQUIRE_ALL_URLS;
switch (host_permissions_strategy()) {

Powered by Google App Engine
This is Rietveld 408576698