Chromium Code Reviews| Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h |
| diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h |
| index b5f74e4205bdc498a6e495cde79c5a990cc2c83d..d3f9f9e6a0c1a239b294e255e66a6144e61313ce 100644 |
| --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h |
| +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h |
| @@ -11,12 +11,13 @@ |
| #include "base/compiler_specific.h" |
| #include "base/memory/linked_ptr.h" |
| +#include "chrome/browser/extensions/api/declarative/declarative_rule.h" |
| #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" |
| -#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h" |
| #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" |
| #include "chrome/common/extensions/api/events.h" |
| #include "googleurl/src/gurl.h" |
| +class ExtensionInfoMap; |
| class WebRequestPermission; |
| namespace base { |
| @@ -31,6 +32,7 @@ struct EventResponseDelta; |
| namespace extensions { |
| class Extension; |
| +struct DeclarativeWebRequestData; |
| } |
| namespace net { |
| @@ -76,6 +78,14 @@ class WebRequestAction { |
| // after creating the delta. |
| }; |
| + struct ApplyInfo { |
|
battre
2012/12/17 11:46:06
add comment: // Information about request and its
Jeffrey Yasskin
2012/12/19 08:23:06
Done.
|
| + const ExtensionInfoMap* extension_info_map; |
| + const DeclarativeWebRequestData& request_data; |
| + bool crosses_incognito; |
| + // Modified by each applied action: |
| + std::list<LinkedPtrEventResponseDelta>* deltas; |
| + }; |
| + |
| WebRequestAction(); |
| virtual ~WebRequestAction(); |
| @@ -134,53 +144,19 @@ class WebRequestAction { |
| // Returns a description of the modification to the request caused by |
| // this action. |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const = 0; |
| -}; |
| - |
| -// Immutable container for multiple actions. |
| -// |
| -// TODO(battre): As WebRequestActionSet can become the single owner of all |
| -// actions, we can optimize here by making some of them singletons (e.g. Cancel |
| -// actions). |
| -class WebRequestActionSet { |
| - public: |
| - typedef std::vector<linked_ptr<json_schema_compiler::any::Any> > AnyVector; |
| - typedef std::vector<linked_ptr<WebRequestAction> > Actions; |
| - |
| - explicit WebRequestActionSet(const Actions& actions); |
| - virtual ~WebRequestActionSet(); |
| - |
| - // Factory method that instantiates a WebRequestActionSet according to |
| - // |actions| which represents the array of actions received from the |
| - // extension API. |
| - static scoped_ptr<WebRequestActionSet> Create(const AnyVector& actions, |
| - std::string* error, |
| - bool* bad_message); |
| - |
| - // Returns a description of the modifications to |request_data.request| caused |
| - // by the |actions_| that can be executed at |request.stage|. If |extension| |
| - // is not NULL, permissions of extensions are checked. |
| - std::list<LinkedPtrEventResponseDelta> 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; |
| - |
| - // Returns the minimum priority of rules that may be evaluated after |
| - // this rule. Defaults to MIN_INT. |
| - int GetMinimumPriority() const; |
| - const Actions& actions() const { return actions_; } |
| - |
| - private: |
| - Actions actions_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(WebRequestActionSet); |
| + // Applies this action to a request, recording the results into |
| + // apply_info.deltas. |
| + void Apply(const std::string& extension_id, |
| + base::Time extension_install_time, |
| + const ApplyInfo& apply_info) const; |
| }; |
| +typedef DeclarativeActionSet<WebRequestAction> WebRequestActionSet; |
| + |
| // |
| // The following are concrete actions. |
| // |
| @@ -196,7 +172,7 @@ class WebRequestCancelAction : public WebRequestAction { |
| virtual Type GetType() const OVERRIDE; |
| virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -215,7 +191,7 @@ class WebRequestRedirectAction : public WebRequestAction { |
| virtual Type GetType() const OVERRIDE; |
| virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -236,7 +212,7 @@ class WebRequestRedirectToTransparentImageAction : public WebRequestAction { |
| virtual Type GetType() const OVERRIDE; |
| virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -256,7 +232,7 @@ class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction { |
| virtual Type GetType() const OVERRIDE; |
| virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -282,7 +258,7 @@ class WebRequestRedirectByRegExAction : public WebRequestAction { |
| virtual Type GetType() const OVERRIDE; |
| virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -304,7 +280,7 @@ class WebRequestSetRequestHeaderAction : public WebRequestAction { |
| virtual int GetStages() const OVERRIDE; |
| virtual Type GetType() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -324,7 +300,7 @@ class WebRequestRemoveRequestHeaderAction : public WebRequestAction { |
| virtual int GetStages() const OVERRIDE; |
| virtual Type GetType() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -344,7 +320,7 @@ class WebRequestAddResponseHeaderAction : public WebRequestAction { |
| virtual int GetStages() const OVERRIDE; |
| virtual Type GetType() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -366,7 +342,7 @@ class WebRequestRemoveResponseHeaderAction : public WebRequestAction { |
| virtual int GetStages() const OVERRIDE; |
| virtual Type GetType() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -389,7 +365,7 @@ class WebRequestIgnoreRulesAction : public WebRequestAction { |
| virtual int GetMinimumPriority() const OVERRIDE; |
| virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -412,7 +388,7 @@ class WebRequestRequestCookieAction : public WebRequestAction { |
| virtual int GetStages() const OVERRIDE; |
| virtual Type GetType() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |
| @@ -435,7 +411,7 @@ class WebRequestResponseCookieAction : public WebRequestAction { |
| virtual int GetStages() const OVERRIDE; |
| virtual Type GetType() const OVERRIDE; |
| virtual LinkedPtrEventResponseDelta CreateDelta( |
| - const WebRequestRule::RequestData& request_data, |
| + const DeclarativeWebRequestData& request_data, |
| const std::string& extension_id, |
| const base::Time& extension_install_time) const OVERRIDE; |