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.
23 EventMatcher(scoped_ptr
<base::DictionaryValue
> filter
,
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 int GetWindowTypeCount() const;
35 bool GetWindowType(int i
, std::string
* window_type_out
) const;
37 std::string
GetServiceTypeFilter() const;
39 bool HasURLFilters() const;
41 bool HasWindowTypes() const;
43 int GetInstanceID() const;
45 int GetRoutingID() const;
47 base::DictionaryValue
* value() const {
52 // Contains a dictionary that corresponds to a single event filter, eg:
54 // {url: [{hostSuffix: 'google.com'}]}
56 // The valid filter keys are event-specific.
57 scoped_ptr
<base::DictionaryValue
> filter_
;
61 DISALLOW_COPY_AND_ASSIGN(EventMatcher
);
64 } // namespace extensions
66 #endif // EXTENSIONS_COMMON_EVENT_MATCHER_H_