| 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() {}
|
|
|