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

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

Issue 14358004: Almost all actions in Declarative Web Request require all_urls host permissions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Without error messages yet Created 7 years, 8 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 2459ee9983757ee5ef4d48ee61ae60bcba3daba2..183603f1ce75603606e603f9ac2d9149a9bdcee4 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
@@ -381,7 +381,10 @@ base::LazyInstance<WebRequestActionFactory>::Leaky
// WebRequestAction
//
-WebRequestAction::WebRequestAction() {}
+WebRequestAction::WebRequestAction()
+ : host_permissions_strategy_(STRATEGY_DEFAULT) {}
+WebRequestAction::WebRequestAction(HostPermissionsStrategy strategy)
+ : host_permissions_strategy_(strategy) {}
WebRequestAction::~WebRequestAction() {}
@@ -389,11 +392,6 @@ int WebRequestAction::GetMinimumPriority() const {
return std::numeric_limits<int>::min();
}
-WebRequestAction::HostPermissionsStrategy
-WebRequestAction::GetHostPermissionsStrategy() const {
- return STRATEGY_DEFAULT;
-}
-
bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map,
const std::string& extension_id,
const net::URLRequest* request,
@@ -406,31 +404,21 @@ bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map,
if (!extension_info_map)
return true;
- HostPermissionsStrategy strategy = GetHostPermissionsStrategy();
- if (strategy == STRATEGY_NONE || strategy == STRATEGY_DEFAULT) {
- bool check_host_permissions = strategy != STRATEGY_NONE;
- return WebRequestPermissions::CanExtensionAccessURL(
- extension_info_map, extension_id, request->url(), crosses_incognito,
- check_host_permissions);
- }
- return true;
-}
-
-bool WebRequestAction::DeltaHasPermission(
- const ExtensionInfoMap* extension_info_map,
- const std::string& extension_id,
- const net::URLRequest* request,
- bool crosses_incognito,
- const LinkedPtrEventResponseDelta& delta) const {
- if (GetHostPermissionsStrategy() == STRATEGY_ALLOW_SAME_DOMAIN) {
- return
- net::RegistryControlledDomainService::SameDomainOrHost(
- request->url(), delta->new_url) ||
- WebRequestPermissions::CanExtensionAccessURL(
- extension_info_map, extension_id, request->url(), crosses_incognito,
- true);
+ WebRequestPermissions::HostPermissionsCheck permission_check;
+ switch (host_permissions_strategy()) {
+ case STRATEGY_NONE:
+ permission_check = WebRequestPermissions::DO_NOT_CHECK_HOST;
+ break;
+ case STRATEGY_DEFAULT:
+ permission_check = WebRequestPermissions::REQUIRE_ALL_URLS;
+ break;
+ case STRATEGY_HOST:
+ permission_check = WebRequestPermissions::REQUIRE_HOST_PERMISSION;
+ break;
}
- return true;
+ return WebRequestPermissions::CanExtensionAccessURL(
+ extension_info_map, extension_id, request->url(), crosses_incognito,
+ permission_check);
}
// static
@@ -468,13 +456,8 @@ void WebRequestAction::Apply(const std::string& extension_id,
if (GetStages() & apply_info->request_data.stage) {
LinkedPtrEventResponseDelta delta = CreateDelta(
apply_info->request_data, extension_id, extension_install_time);
- if (delta.get()) {
- if (DeltaHasPermission(apply_info->extension_info_map, extension_id,
- apply_info->request_data.request,
- apply_info->crosses_incognito,
- delta))
- apply_info->deltas->push_back(delta);
- }
+ if (delta.get())
+ apply_info->deltas->push_back(delta);
if (GetType() == WebRequestAction::ACTION_IGNORE_RULES) {
const WebRequestIgnoreRulesAction* ignore_action =
static_cast<const WebRequestIgnoreRulesAction*>(this);
@@ -489,7 +472,8 @@ void WebRequestAction::Apply(const std::string& extension_id,
// WebRequestCancelAction
//
-WebRequestCancelAction::WebRequestCancelAction() {}
+WebRequestCancelAction::WebRequestCancelAction()
+ : WebRequestAction(STRATEGY_NONE) {}
WebRequestCancelAction::~WebRequestCancelAction() {}
@@ -502,11 +486,6 @@ WebRequestAction::Type WebRequestCancelAction::GetType() const {
return WebRequestAction::ACTION_CANCEL_REQUEST;
}
-WebRequestAction::HostPermissionsStrategy
-WebRequestCancelAction::GetHostPermissionsStrategy() const {
- return WebRequestAction::STRATEGY_NONE;
-}
-
LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -535,11 +514,6 @@ WebRequestAction::Type WebRequestRedirectAction::GetType() const {
return WebRequestAction::ACTION_REDIRECT_REQUEST;
}
-WebRequestAction::HostPermissionsStrategy
-WebRequestRedirectAction::GetHostPermissionsStrategy() const {
- return WebRequestAction::STRATEGY_ALLOW_SAME_DOMAIN;
-}
-
LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -558,7 +532,8 @@ LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta(
//
WebRequestRedirectToTransparentImageAction::
-WebRequestRedirectToTransparentImageAction() {}
+ WebRequestRedirectToTransparentImageAction()
+ : WebRequestAction(STRATEGY_NONE) {}
WebRequestRedirectToTransparentImageAction::
~WebRequestRedirectToTransparentImageAction() {}
@@ -572,11 +547,6 @@ WebRequestRedirectToTransparentImageAction::GetType() const {
return WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE;
}
-WebRequestAction::HostPermissionsStrategy
-WebRequestRedirectToTransparentImageAction::GetHostPermissionsStrategy() const {
- return WebRequestAction::STRATEGY_NONE;
-}
-
LinkedPtrEventResponseDelta
WebRequestRedirectToTransparentImageAction::CreateDelta(
const WebRequestData& request_data,
@@ -594,7 +564,8 @@ WebRequestRedirectToTransparentImageAction::CreateDelta(
//
WebRequestRedirectToEmptyDocumentAction::
-WebRequestRedirectToEmptyDocumentAction() {}
+ WebRequestRedirectToEmptyDocumentAction()
+ : WebRequestAction(STRATEGY_NONE) {}
WebRequestRedirectToEmptyDocumentAction::
~WebRequestRedirectToEmptyDocumentAction() {}
@@ -608,11 +579,6 @@ WebRequestRedirectToEmptyDocumentAction::GetType() const {
return WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT;
}
-WebRequestAction::HostPermissionsStrategy
-WebRequestRedirectToEmptyDocumentAction::GetHostPermissionsStrategy() const {
- return WebRequestAction::STRATEGY_NONE;
-}
-
LinkedPtrEventResponseDelta
WebRequestRedirectToEmptyDocumentAction::CreateDelta(
const WebRequestData& request_data,
@@ -698,11 +664,6 @@ WebRequestAction::Type WebRequestRedirectByRegExAction::GetType() const {
return WebRequestAction::ACTION_REDIRECT_BY_REGEX_DOCUMENT;
}
-WebRequestAction::HostPermissionsStrategy
-WebRequestRedirectByRegExAction::GetHostPermissionsStrategy() const {
- return WebRequestAction::STRATEGY_ALLOW_SAME_DOMAIN;
-}
-
LinkedPtrEventResponseDelta WebRequestRedirectByRegExAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -892,9 +853,9 @@ WebRequestRemoveResponseHeaderAction::CreateDelta(
WebRequestIgnoreRulesAction::WebRequestIgnoreRulesAction(
int minimum_priority,
const std::string& ignore_tag)
- : minimum_priority_(minimum_priority),
- ignore_tag_(ignore_tag) {
-}
+ : WebRequestAction(STRATEGY_NONE),
+ minimum_priority_(minimum_priority),
+ ignore_tag_(ignore_tag) {}
WebRequestIgnoreRulesAction::~WebRequestIgnoreRulesAction() {}
@@ -911,11 +872,6 @@ int WebRequestIgnoreRulesAction::GetMinimumPriority() const {
return minimum_priority_;
}
-WebRequestAction::HostPermissionsStrategy
-WebRequestIgnoreRulesAction::GetHostPermissionsStrategy() const {
- return WebRequestAction::STRATEGY_NONE;
-}
-
LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -996,8 +952,7 @@ LinkedPtrEventResponseDelta WebRequestResponseCookieAction::CreateDelta(
WebRequestSendMessageToExtensionAction::WebRequestSendMessageToExtensionAction(
const std::string& message)
- : message_(message) {
-}
+ : WebRequestAction(STRATEGY_HOST), message_(message) {}
WebRequestSendMessageToExtensionAction::
~WebRequestSendMessageToExtensionAction() {}

Powered by Google App Engine
This is Rietveld 408576698