Home | History | Annotate | Download | only in matcher
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef EXTENSIONS_COMMON_MATCHER_URL_MATCHER_FACTORY_H_
      6 #define EXTENSIONS_COMMON_MATCHER_URL_MATCHER_FACTORY_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "extensions/common/matcher/url_matcher.h"
     12 
     13 namespace base {
     14 class DictionaryValue;
     15 class Value;
     16 }
     17 
     18 namespace extensions {
     19 
     20 class URLMatcherFactory {
     21  public:
     22   // Creates a URLMatcherConditionSet from a UrlFilter dictionary as defined in
     23   // the declarative API. |url_fetcher_dict| contains the dictionary passed
     24   // by the extension, |id| is the identifier assigned to the created
     25   // URLMatcherConditionSet. In case of an error, |error| is set to contain
     26   // an error message.
     27   //
     28   // Note: In case this function fails or if you don't register the
     29   // URLMatcherConditionSet to the URLMatcher, you need to call
     30   // URLMatcher::ClearUnusedConditionSets() on the URLMatcher that owns this
     31   // URLMatcherFactory. Otherwise you leak memory.
     32   static scoped_refptr<URLMatcherConditionSet> CreateFromURLFilterDictionary(
     33       URLMatcherConditionFactory* url_matcher_condition_factory,
     34       const base::DictionaryValue* url_filter_dict,
     35       URLMatcherConditionSet::ID id,
     36       std::string* error);
     37 
     38  private:
     39   // Returns whether a condition attribute with name |condition_attribute_name|
     40   // needs to be handled by the URLMatcher.
     41   static bool IsURLMatcherConditionAttribute(
     42       const std::string& condition_attribute_name);
     43 
     44   // Factory method of for URLMatcherConditions.
     45   static URLMatcherCondition CreateURLMatcherCondition(
     46       URLMatcherConditionFactory* url_matcher_condition_factory,
     47       const std::string& condition_attribute_name,
     48       const base::Value* value,
     49       std::string* error);
     50 
     51   static scoped_ptr<URLMatcherSchemeFilter> CreateURLMatcherScheme(
     52       const base::Value* value, std::string* error);
     53 
     54   static scoped_ptr<URLMatcherPortFilter> CreateURLMatcherPorts(
     55       const base::Value* value, std::string* error);
     56 
     57   DISALLOW_IMPLICIT_CONSTRUCTORS(URLMatcherFactory);
     58 };
     59 
     60 }  // namespace extensions
     61 
     62 #endif  // EXTENSIONS_COMMON_MATCHER_URL_MATCHER_FACTORY_H_
     63