| 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 f68b9043a3b5466d92275c7305733b50cf506d51..46b382e3549002a4acf67a541de9eb663e13805d 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 {
|
| @@ -77,6 +79,16 @@ class WebRequestAction {
|
| // after creating the delta.
|
| };
|
|
|
| + // Information necessary to decide how to apply a WebRequestAction
|
| + // inside a matching rule.
|
| + struct ApplyInfo {
|
| + const ExtensionInfoMap* extension_info_map;
|
| + const DeclarativeWebRequestData& request_data;
|
| + bool crosses_incognito;
|
| + // Modified by each applied action:
|
| + std::list<LinkedPtrEventResponseDelta>* deltas;
|
| + };
|
| +
|
| WebRequestAction();
|
| virtual ~WebRequestAction();
|
|
|
| @@ -135,53 +147,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,
|
| + ApplyInfo* apply_info) const;
|
| };
|
|
|
| +typedef DeclarativeActionSet<WebRequestAction> WebRequestActionSet;
|
| +
|
| //
|
| // The following are concrete actions.
|
| //
|
| @@ -197,7 +175,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;
|
|
|
| @@ -216,7 +194,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;
|
|
|
| @@ -237,7 +215,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;
|
|
|
| @@ -257,7 +235,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;
|
|
|
| @@ -283,7 +261,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;
|
|
|
| @@ -305,7 +283,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;
|
|
|
| @@ -325,7 +303,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;
|
|
|
| @@ -345,7 +323,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;
|
|
|
| @@ -367,7 +345,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;
|
|
|
| @@ -390,7 +368,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;
|
|
|
| @@ -413,7 +391,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;
|
|
|
| @@ -436,7 +414,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;
|
|
|
| @@ -456,7 +434,7 @@ class WebRequestSendMessageToExtensionAction : 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;
|
|
|
|
|