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; |