Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h |
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h |
index 6433f5ceead4f80f3e9a03f63fb8a05f1104bb2e..9746a9b7d7f5ece1825898a539dfdf264d9d5444 100644 |
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h |
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h |
@@ -14,9 +14,11 @@ |
#include "base/time.h" |
#include "base/memory/linked_ptr.h" |
#include "base/memory/ref_counted.h" |
+#include "chrome/browser/extensions/api/declarative/declarative_rule.h" |
#include "chrome/browser/extensions/api/declarative/rules_registry_with_cache.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/declarative_webrequest/webrequest_action.h" |
+#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condition.h" |
#include "chrome/browser/extensions/extension_info_map.h" |
#include "chrome/common/extensions/matcher/url_matcher.h" |
@@ -35,6 +37,10 @@ namespace extensions { |
class RulesRegistryService; |
+typedef linked_ptr<extension_web_request_api_helpers::EventResponseDelta> |
+ LinkedPtrEventResponseDelta; |
+typedef DeclarativeRule<WebRequestCondition, WebRequestAction> WebRequestRule; |
+ |
// The WebRequestRulesRegistry is responsible for managing |
// the internal representation of rules for the Declarative Web Request API. |
// |
@@ -70,13 +76,13 @@ class WebRequestRulesRegistry : public RulesRegistryWithCache { |
// TODO(battre): This will become an implementation detail, because we need |
// a way to also execute the actions of the rules. |
std::set<const WebRequestRule*> GetMatches( |
- const WebRequestRule::RequestData& request_data); |
+ const DeclarativeWebRequestData& request_data); |
// Returns which modifications should be executed on the network request |
// according to the rules registered in this registry. |
std::list<LinkedPtrEventResponseDelta> CreateDeltas( |
const ExtensionInfoMap* extension_info_map, |
- const WebRequestRule::RequestData& request_data, |
+ const DeclarativeWebRequestData& request_data, |
bool crosses_incognito); |
// Implementation of RulesRegistryWithCache: |
@@ -107,6 +113,14 @@ class WebRequestRulesRegistry : public RulesRegistryWithCache { |
} |
private: |
+ // Checks whether the set of |conditions| and |actions| are consistent, |
+ // meaning for example that we do not allow combining an |action| that needs |
+ // to be executed before the |condition| can be fulfilled. |
+ // Returns true in case of consistency and MUST set |error| otherwise. |
+ static bool CheckConsistency(const WebRequestConditionSet* conditions, |
+ const WebRequestActionSet* actions, |
+ std::string* error); |
+ |
typedef std::map<URLMatcherConditionSet::ID, WebRequestRule*> RuleTriggers; |
typedef std::map<WebRequestRule::GlobalRuleId, linked_ptr<WebRequestRule> > |
RulesMap; |