| 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 8d573dea3f26aa506ac8cf1e3d912c28ad3e7ef1..f0b1fd7edf285e567df7ecc9bdc56570bd4404ec 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"
|
| @@ -440,70 +441,26 @@ 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,
|
| + 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
|
| @@ -528,7 +485,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());
|
| @@ -561,7 +518,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());
|
| @@ -599,7 +556,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());
|
| @@ -635,7 +592,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());
|
| @@ -724,7 +681,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());
|
| @@ -768,7 +725,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());
|
| @@ -800,7 +757,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());
|
| @@ -834,7 +791,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());
|
| @@ -879,7 +836,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());
|
| @@ -935,7 +892,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());
|
| @@ -963,7 +920,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());
|
| @@ -996,7 +953,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());
|
| @@ -1030,7 +987,7 @@ WebRequestAction::Type WebRequestSendMessageToExtensionAction::GetType() const {
|
| }
|
|
|
| LinkedPtrEventResponseDelta WebRequestSendMessageToExtensionAction::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());
|
|
|