Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(516)

Side by Side Diff: components/mus/ws/event_matcher.cc

Issue 2119963002: Move mus to //services/ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/mus/ws/event_matcher.h ('k') | components/mus/ws/event_matcher_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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 #include "components/mus/ws/event_matcher.h"
6
7 namespace mus {
8 namespace ws {
9
10 EventMatcher::EventMatcher(const mojom::EventMatcher& matcher)
11 : fields_to_match_(NONE),
12 event_type_(ui::ET_UNKNOWN),
13 event_flags_(ui::EF_NONE),
14 ignore_event_flags_(ui::EF_NONE),
15 keyboard_code_(ui::VKEY_UNKNOWN),
16 pointer_type_(ui::EventPointerType::POINTER_TYPE_UNKNOWN) {
17 if (matcher.type_matcher) {
18 fields_to_match_ |= TYPE;
19 switch (matcher.type_matcher->type) {
20 case ui::mojom::EventType::POINTER_DOWN:
21 event_type_ = ui::ET_POINTER_DOWN;
22 break;
23 case ui::mojom::EventType::POINTER_MOVE:
24 event_type_ = ui::ET_POINTER_MOVED;
25 break;
26 case ui::mojom::EventType::MOUSE_EXIT:
27 event_type_ = ui::ET_POINTER_EXITED;
28 break;
29 case ui::mojom::EventType::POINTER_UP:
30 event_type_ = ui::ET_POINTER_UP;
31 break;
32 case ui::mojom::EventType::POINTER_CANCEL:
33 event_type_ = ui::ET_POINTER_CANCELLED;
34 break;
35 case ui::mojom::EventType::KEY_PRESSED:
36 event_type_ = ui::ET_KEY_PRESSED;
37 break;
38 case ui::mojom::EventType::KEY_RELEASED:
39 event_type_ = ui::ET_KEY_RELEASED;
40 break;
41 default:
42 NOTREACHED();
43 }
44 }
45 if (matcher.flags_matcher) {
46 fields_to_match_ |= FLAGS;
47 event_flags_ = matcher.flags_matcher->flags;
48 if (matcher.ignore_flags_matcher)
49 ignore_event_flags_ = matcher.ignore_flags_matcher->flags;
50 }
51 if (matcher.key_matcher) {
52 fields_to_match_ |= KEYBOARD_CODE;
53 keyboard_code_ = static_cast<uint16_t>(matcher.key_matcher->keyboard_code);
54 }
55 if (matcher.pointer_kind_matcher) {
56 fields_to_match_ |= POINTER_KIND;
57 switch (matcher.pointer_kind_matcher->pointer_kind) {
58 case ui::mojom::PointerKind::MOUSE:
59 pointer_type_ = ui::EventPointerType::POINTER_TYPE_MOUSE;
60 break;
61 case ui::mojom::PointerKind::TOUCH:
62 pointer_type_ = ui::EventPointerType::POINTER_TYPE_TOUCH;
63 break;
64 default:
65 NOTREACHED();
66 }
67 }
68 if (matcher.pointer_location_matcher) {
69 fields_to_match_ |= POINTER_LOCATION;
70 pointer_region_ = matcher.pointer_location_matcher->region;
71 }
72 }
73
74 EventMatcher::~EventMatcher() {}
75
76 bool EventMatcher::MatchesEvent(const ui::Event& event) const {
77 if ((fields_to_match_ & TYPE) && event.type() != event_type_)
78 return false;
79 int flags = event.flags() & ~ignore_event_flags_;
80 if ((fields_to_match_ & FLAGS) && flags != event_flags_)
81 return false;
82 if (fields_to_match_ & KEYBOARD_CODE) {
83 if (!event.IsKeyEvent())
84 return false;
85 if (keyboard_code_ != event.AsKeyEvent()->GetConflatedWindowsKeyCode())
86 return false;
87 }
88 if (fields_to_match_ & POINTER_KIND) {
89 if (!event.IsPointerEvent() ||
90 pointer_type_ != event.AsPointerEvent()->pointer_details().pointer_type)
91 return false;
92 }
93 if (fields_to_match_ & POINTER_LOCATION) {
94 // TODO(sad): The tricky part here is to make sure the same coord-space is
95 // used for the location-region and the event-location.
96 NOTIMPLEMENTED();
97 return false;
98 }
99 return true;
100 }
101
102 bool EventMatcher::Equals(const EventMatcher& other) const {
103 return fields_to_match_ == other.fields_to_match_ &&
104 event_type_ == other.event_type_ &&
105 event_flags_ == other.event_flags_ &&
106 ignore_event_flags_ == other.ignore_event_flags_ &&
107 keyboard_code_ == other.keyboard_code_ &&
108 pointer_type_ == other.pointer_type_ &&
109 pointer_region_ == other.pointer_region_;
110 }
111
112 } // namespace ws
113 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/event_matcher.h ('k') | components/mus/ws/event_matcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698