Blink roll 25b6bd3a7a131ffe68d809546ad1a20707915cdc:3a503f41ae42e5b79cfcd2ff10e65afde...
[chromium-blink-merge.git] / extensions / common / event_matcher.h
blobbd0ce7bb628886ace2882d0107d9d77bd39e7471
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.
5 #ifndef EXTENSIONS_COMMON_EVENT_MATCHER_H_
6 #define EXTENSIONS_COMMON_EVENT_MATCHER_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h"
11 namespace extensions {
13 class EventFilteringInfo;
15 extern const char kEventFilterServiceTypeKey[];
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();
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;
31 int GetURLFilterCount() const;
32 bool GetURLFilter(int i, base::DictionaryValue** url_filter_out);
34 std::string GetServiceTypeFilter() const;
36 int HasURLFilters() const;
38 int GetInstanceID() const;
40 int GetRoutingID() const;
42 base::DictionaryValue* value() const {
43 return filter_.get();
46 private:
47 // Contains a dictionary that corresponds to a single event filter, eg:
49 // {url: [{hostSuffix: 'google.com'}]}
51 // The valid filter keys are event-specific.
52 scoped_ptr<base::DictionaryValue> filter_;
54 int routing_id_;
56 DISALLOW_COPY_AND_ASSIGN(EventMatcher);
59 } // namespace extensions
61 #endif // EXTENSIONS_COMMON_EVENT_MATCHER_H_