forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevent_matcher.h
66 lines (46 loc) · 1.89 KB
/
event_matcher.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_COMMON_EVENT_MATCHER_H_
#define EXTENSIONS_COMMON_EVENT_MATCHER_H_
#include <memory>
#include "base/values.h"
#include "extensions/common/mojom/event_dispatcher.mojom-forward.h"
namespace extensions {
extern const char kEventFilterServiceTypeKey[];
// Matches EventFilteringInfos against a set of criteria. This is intended to
// be used by EventFilter which performs efficient URL matching across
// potentially many EventMatchers itself. This is why this class only exposes
// MatchNonURLCriteria() - URL matching is handled by EventFilter.
class EventMatcher {
public:
EventMatcher(std::unique_ptr<base::DictionaryValue> filter, int routing_id);
EventMatcher(const EventMatcher&) = delete;
EventMatcher& operator=(const EventMatcher&) = delete;
~EventMatcher();
// Returns true if |event_info| satisfies this matcher's criteria, not taking
// into consideration any URL criteria.
bool MatchNonURLCriteria(const mojom::EventFilteringInfo& event_info) const;
int GetURLFilterCount() const;
const base::Value::Dict* GetURLFilter(int i);
int GetWindowTypeCount() const;
bool GetWindowType(int i, std::string* window_type_out) const;
std::string GetServiceTypeFilter() const;
bool HasURLFilters() const;
bool HasWindowTypes() const;
int GetInstanceID() const;
int GetRoutingID() const;
base::DictionaryValue* value() const {
return filter_.get();
}
private:
// Contains a dictionary that corresponds to a single event filter, eg:
//
// {url: [{hostSuffix: 'google.com'}]}
//
// The valid filter keys are event-specific.
const std::unique_ptr<base::DictionaryValue> filter_;
const int routing_id_;
};
} // namespace extensions
#endif // EXTENSIONS_COMMON_EVENT_MATCHER_H_