• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
value()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