// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_URL_MATCHER_URL_MATCHER_FACTORY_H_ #define COMPONENTS_URL_MATCHER_URL_MATCHER_FACTORY_H_ #include #include "base/macros.h" #include "components/url_matcher/url_matcher.h" #include "components/url_matcher/url_matcher_export.h" namespace base { class DictionaryValue; class Value; } namespace url_matcher { class URL_MATCHER_EXPORT URLMatcherFactory { public: // Creates a URLMatcherConditionSet from a UrlFilter dictionary as defined in // the declarative API. |url_fetcher_dict| contains the dictionary passed // by the extension, |id| is the identifier assigned to the created // URLMatcherConditionSet. In case of an error, |error| is set to contain // an error message. // // Note: In case this function fails or if you don't register the // URLMatcherConditionSet to the URLMatcher, you need to call // URLMatcher::ClearUnusedConditionSets() on the URLMatcher that owns this // URLMatcherFactory. Otherwise you leak memory. static scoped_refptr CreateFromURLFilterDictionary( URLMatcherConditionFactory* url_matcher_condition_factory, const base::DictionaryValue* url_filter_dict, URLMatcherConditionSet::ID id, std::string* error); private: // Returns whether a condition attribute with name |condition_attribute_name| // needs to be handled by the URLMatcher. static bool IsURLMatcherConditionAttribute( const std::string& condition_attribute_name); // Factory method of for URLMatcherConditions. static URLMatcherCondition CreateURLMatcherCondition( URLMatcherConditionFactory* url_matcher_condition_factory, const std::string& condition_attribute_name, const base::Value* value, std::string* error); static scoped_ptr CreateURLMatcherScheme( const base::Value* value, std::string* error); static scoped_ptr CreateURLMatcherPorts( const base::Value* value, std::string* error); DISALLOW_IMPLICIT_CONSTRUCTORS(URLMatcherFactory); }; } // namespace url_matcher #endif // COMPONENTS_URL_MATCHER_URL_MATCHER_FACTORY_H_