// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_CONDITION_H_ #define EXTENSIONS_BROWSER_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_CONDITION_H_ #include <map> #include <set> #include <string> #include <vector> #include "base/memory/raw_ptr.h" #include "components/url_matcher/url_matcher.h" #include "extensions/browser/api/declarative/declarative_rule.h" #include "extensions/browser/api/declarative_webrequest/webrequest_condition_attribute.h" #include "net/http/http_response_headers.h" namespace extensions { struct WebRequestInfo; // Container for information about a URL request to determine which // rules apply to the request. struct WebRequestData { … }; // Adds information about URL matches to WebRequestData. struct WebRequestDataWithMatchIds { … }; // Representation of a condition in the Declarative WebRequest API. A condition // consists of several attributes. Each of these attributes needs to be // fulfilled in order for the condition to be fulfilled. // // We distinguish between two types of conditions: // - URL Matcher conditions are conditions that test the URL of a request. // These are treated separately because we use a URLMatcher to efficiently // test many of these conditions in parallel by using some advanced // data structures. The URLMatcher tells us if all URL Matcher conditions // are fulfilled for a WebRequestCondition. // - All other conditions are represented as WebRequestConditionAttributes. // These conditions are probed linearly (only if the URL Matcher found a hit). // // TODO(battre) Consider making the URLMatcher an owner of the // URLMatcherConditionSet and only pass a pointer to URLMatcherConditionSet // in url_matcher_condition_set(). This saves some copying in // WebRequestConditionSet::GetURLMatcherConditionSets. class WebRequestCondition { … }; WebRequestConditionSet; } // namespace extensions #endif // EXTENSIONS_BROWSER_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_CONDITION_H_