| 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 08e5fa7efb0d3d944d53c3672e712834e1cedf0f..8fe8c204779c754bfbf9a843707e5a610a752f85 100644
|
| --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
|
| +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/string_util.h"
|
| #include "base/values.h"
|
| #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h"
|
| +#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condition.h"
|
| #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_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"
|
| @@ -428,70 +429,27 @@ scoped_ptr<WebRequestAction> WebRequestAction::Create(
|
| return scoped_ptr<WebRequestAction>();
|
| }
|
|
|
| -
|
| -//
|
| -// WebRequestActionSet
|
| -//
|
| -
|
| -WebRequestActionSet::WebRequestActionSet(const Actions& actions)
|
| - : actions_(actions) {}
|
| -
|
| -WebRequestActionSet::~WebRequestActionSet() {}
|
| -
|
| -// static
|
| -scoped_ptr<WebRequestActionSet> WebRequestActionSet::Create(
|
| - const AnyVector& actions,
|
| - std::string* error,
|
| - bool* bad_message) {
|
| - *error = "";
|
| - *bad_message = false;
|
| - Actions result;
|
| -
|
| - for (AnyVector::const_iterator i = actions.begin();
|
| - i != actions.end(); ++i) {
|
| - CHECK(i->get());
|
| - scoped_ptr<WebRequestAction> action =
|
| - WebRequestAction::Create((*i)->value(), error, bad_message);
|
| - if (!error->empty() || *bad_message)
|
| - return scoped_ptr<WebRequestActionSet>(NULL);
|
| - result.push_back(make_linked_ptr(action.release()));
|
| - }
|
| -
|
| - return scoped_ptr<WebRequestActionSet>(new WebRequestActionSet(result));
|
| -}
|
| -
|
| -std::list<LinkedPtrEventResponseDelta> WebRequestActionSet::CreateDeltas(
|
| - const ExtensionInfoMap* extension_info_map,
|
| - const std::string& extension_id,
|
| - const WebRequestRule::RequestData& request_data,
|
| - bool crosses_incognito,
|
| - const base::Time& extension_install_time) const {
|
| - std::list<LinkedPtrEventResponseDelta> result;
|
| - for (Actions::const_iterator i = actions_.begin(); i != actions_.end(); ++i) {
|
| - if (!(*i)->HasPermission(extension_info_map, extension_id,
|
| - request_data.request, crosses_incognito))
|
| - continue;
|
| - if ((*i)->GetStages() & request_data.stage) {
|
| - LinkedPtrEventResponseDelta delta = (*i)->CreateDelta(
|
| - request_data, extension_id, extension_install_time);
|
| - if (delta.get()) {
|
| - if ((*i)->DeltaHasPermission(extension_info_map, extension_id,
|
| - request_data.request, crosses_incognito,
|
| - delta))
|
| - result.push_back(delta);
|
| - }
|
| +void WebRequestAction::Apply(const std::string& extension_id,
|
| + base::Time extension_install_time,
|
| + const ApplyInfo& apply_info) const {
|
| + if (!HasPermission(apply_info.extension_info_map, extension_id,
|
| + apply_info.request_data.request,
|
| + apply_info.crosses_incognito))
|
| + return;
|
| + 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);
|
| }
|
| }
|
| - return result;
|
| }
|
|
|
| -int WebRequestActionSet::GetMinimumPriority() const {
|
| - int minimum_priority = std::numeric_limits<int>::min();
|
| - for (Actions::const_iterator i = actions_.begin(); i != actions_.end(); ++i) {
|
| - minimum_priority = std::max(minimum_priority, (*i)->GetMinimumPriority());
|
| - }
|
| - return minimum_priority;
|
| -}
|
|
|
| //
|
| // WebRequestCancelAction
|
| @@ -516,7 +474,7 @@ WebRequestCancelAction::GetHostPermissionsStrategy() const {
|
| }
|
|
|
| LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -549,7 +507,7 @@ WebRequestRedirectAction::GetHostPermissionsStrategy() const {
|
| }
|
|
|
| LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -587,7 +545,7 @@ WebRequestRedirectToTransparentImageAction::GetHostPermissionsStrategy() const {
|
|
|
| LinkedPtrEventResponseDelta
|
| WebRequestRedirectToTransparentImageAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -623,7 +581,7 @@ WebRequestRedirectToEmptyDocumentAction::GetHostPermissionsStrategy() const {
|
|
|
| LinkedPtrEventResponseDelta
|
| WebRequestRedirectToEmptyDocumentAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -712,7 +670,7 @@ WebRequestRedirectByRegExAction::GetHostPermissionsStrategy() const {
|
| }
|
|
|
| LinkedPtrEventResponseDelta WebRequestRedirectByRegExAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -756,7 +714,7 @@ WebRequestSetRequestHeaderAction::GetType() const {
|
|
|
| LinkedPtrEventResponseDelta
|
| WebRequestSetRequestHeaderAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -788,7 +746,7 @@ WebRequestRemoveRequestHeaderAction::GetType() const {
|
|
|
| LinkedPtrEventResponseDelta
|
| WebRequestRemoveRequestHeaderAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -822,7 +780,7 @@ WebRequestAddResponseHeaderAction::GetType() const {
|
|
|
| LinkedPtrEventResponseDelta
|
| WebRequestAddResponseHeaderAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -867,7 +825,7 @@ WebRequestRemoveResponseHeaderAction::GetType() const {
|
|
|
| LinkedPtrEventResponseDelta
|
| WebRequestRemoveResponseHeaderAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -923,7 +881,7 @@ WebRequestIgnoreRulesAction::GetHostPermissionsStrategy() const {
|
| }
|
|
|
| LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -951,7 +909,7 @@ WebRequestAction::Type WebRequestRequestCookieAction::GetType() const {
|
| }
|
|
|
| LinkedPtrEventResponseDelta WebRequestRequestCookieAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
| @@ -984,7 +942,7 @@ WebRequestAction::Type WebRequestResponseCookieAction::GetType() const {
|
| }
|
|
|
| LinkedPtrEventResponseDelta WebRequestResponseCookieAction::CreateDelta(
|
| - const WebRequestRule::RequestData& request_data,
|
| + const DeclarativeWebRequestData& request_data,
|
| const std::string& extension_id,
|
| const base::Time& extension_install_time) const {
|
| CHECK(request_data.stage & GetStages());
|
|
|