Home | History | Annotate | Download | only in common
      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_EVENT_MATCHER_H_
      6 #define EXTENSIONS_COMMON_EVENT_MATCHER_H_
      7 
      8 #include "base/memory/scoped_ptr.h"
      9 #include "base/values.h"
     10 
     11 namespace extensions {
     12 
     13 class EventFilteringInfo;
     14 
     15 extern const char kEventFilterServiceTypeKey[];
     16 
     17 // Matches EventFilteringInfos against a set of criteria. This is intended to
     18 // be used by EventFilter which performs efficient URL matching across
     19 // potentially many EventMatchers itself. This is why this class only exposes
     20 // MatchNonURLCriteria() - URL matching is handled by EventFilter.
     21 class EventMatcher {
     22  public:
     23   EventMatcher(scoped_ptr<base::DictionaryValue> filter,
     24                int routing_id);
     25   ~EventMatcher();
     26 
     27   // Returns true if |event_info| satisfies this matcher's criteria, not taking
     28   // into consideration any URL criteria.
     29   bool MatchNonURLCriteria(const EventFilteringInfo& event_info) const;
     30 
     31   int GetURLFilterCount() const;
     32   bool GetURLFilter(int i, base::DictionaryValue** url_filter_out);
     33 
     34   std::string GetServiceTypeFilter() const;
     35 
     36   int HasURLFilters() const;
     37 
     38   int GetInstanceID() const;
     39 
     40   int GetRoutingID() const;
     41 
     42   base::DictionaryValue* value() const {
     43     return filter_.get();
     44   }
     45 
     46  private:
     47   // Contains a dictionary that corresponds to a single event filter, eg:
     48   //
     49   // {url: [{hostSuffix: 'google.com'}]}
     50   //
     51   // The valid filter keys are event-specific.
     52   scoped_ptr<base::DictionaryValue> filter_;
     53 
     54   int routing_id_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(EventMatcher);
     57 };
     58 
     59 }  // namespace extensions
     60 
     61 #endif  // EXTENSIONS_COMMON_EVENT_MATCHER_H_
     62