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

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

Issue 11547033: Implement declarativeContent API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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 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 {
+ 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;

Powered by Google App Engine
This is Rietveld 408576698