Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1240)

Unified Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h

Issue 11572061: Create DeclarativeConditionSet, DeclarativeActionSet, and DeclarativeRule templates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix kalman's nit Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698