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

Side by Side Diff: ui/views/mus/pointer_watcher_event_router2_unittest.cc

Issue 2521823002: Wires up PointerWatcherEventRouter for views aura-mus (Closed)
Patch Set: cleanup Created 4 years 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
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 "ui/views/mus/pointer_watcher_event_router2.h"
6
7 #include <memory>
8
9 #include "base/message_loop/message_loop.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/aura/test/mus/window_tree_client_private.h"
12 #include "ui/events/event.h"
13 #include "ui/views/mus/mus_client.h"
14 #include "ui/views/pointer_watcher.h"
15 #include "ui/views/test/scoped_views_test_helper.h"
16
17 namespace views {
18 namespace {
19
20 class TestPointerWatcher : public PointerWatcher {
21 public:
22 TestPointerWatcher() {}
23 ~TestPointerWatcher() override {}
24
25 ui::PointerEvent* last_event_observed() { return last_event_observed_.get(); }
26
27 void Reset() { last_event_observed_.reset(); }
28
29 // PointerWatcher:
30 void OnPointerEventObserved(const ui::PointerEvent& event,
31 const gfx::Point& location_in_screen,
32 Widget* target) override {
33 last_event_observed_ = base::MakeUnique<ui::PointerEvent>(event);
34 }
35
36 private:
37 std::unique_ptr<ui::PointerEvent> last_event_observed_;
38
39 DISALLOW_COPY_AND_ASSIGN(TestPointerWatcher);
40 };
41
42 } // namespace
43
44 class PointerWatcherEventRouter2Test : public testing::Test {
45 public:
46 PointerWatcherEventRouter2Test() {}
47 ~PointerWatcherEventRouter2Test() override {}
48
49 void OnPointerEventObserved(const ui::PointerEvent& event) {
50 MusClient::Get()->pointer_watcher_event_router()->OnPointerEventObserved(
51 event, nullptr);
52 }
53
54 PointerWatcherEventRouter2::EventTypes event_types() const {
55 return MusClient::Get()->pointer_watcher_event_router()->event_types_;
56 }
57
58 private:
59 DISALLOW_COPY_AND_ASSIGN(PointerWatcherEventRouter2Test);
60 };
61
62 TEST_F(PointerWatcherEventRouter2Test, EventTypes) {
63 base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
64 ScopedViewsTestHelper helper;
65 TestPointerWatcher pointer_watcher1, pointer_watcher2;
66 PointerWatcherEventRouter2* pointer_watcher_event_router =
67 MusClient::Get()->pointer_watcher_event_router();
68 aura::WindowTreeClientPrivate test_api(
69 MusClient::Get()->window_tree_client());
70 EXPECT_FALSE(test_api.HasPointerWatcher());
71
72 // Start with no moves.
73 pointer_watcher_event_router->AddPointerWatcher(&pointer_watcher1, false);
74 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::NON_MOVE_EVENTS,
75 event_types());
76 EXPECT_TRUE(test_api.HasPointerWatcher());
77
78 // Add moves.
79 pointer_watcher_event_router->AddPointerWatcher(&pointer_watcher2, true);
80 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::MOVE_EVENTS, event_types());
81 EXPECT_TRUE(test_api.HasPointerWatcher());
82
83 // Remove no-moves.
84 pointer_watcher_event_router->RemovePointerWatcher(&pointer_watcher1);
85 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::MOVE_EVENTS, event_types());
86 EXPECT_TRUE(test_api.HasPointerWatcher());
87
88 // Remove moves.
89 pointer_watcher_event_router->RemovePointerWatcher(&pointer_watcher2);
90 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::NONE, event_types());
91 EXPECT_FALSE(test_api.HasPointerWatcher());
92
93 // Add moves.
94 pointer_watcher_event_router->AddPointerWatcher(&pointer_watcher2, true);
95 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::MOVE_EVENTS, event_types());
96 EXPECT_TRUE(test_api.HasPointerWatcher());
97
98 // Add no moves.
99 pointer_watcher_event_router->AddPointerWatcher(&pointer_watcher1, false);
100 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::MOVE_EVENTS, event_types());
101 EXPECT_TRUE(test_api.HasPointerWatcher());
102
103 // Remove moves.
104 pointer_watcher_event_router->RemovePointerWatcher(&pointer_watcher2);
105 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::NON_MOVE_EVENTS,
106 event_types());
107 EXPECT_TRUE(test_api.HasPointerWatcher());
108
109 // Remove no-moves.
110 pointer_watcher_event_router->RemovePointerWatcher(&pointer_watcher1);
111 EXPECT_EQ(PointerWatcherEventRouter2::EventTypes::NONE, event_types());
112 EXPECT_FALSE(test_api.HasPointerWatcher());
113 }
114
115 TEST_F(PointerWatcherEventRouter2Test, PointerWatcherNoMove) {
116 base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
117 ScopedViewsTestHelper helper;
118 ASSERT_TRUE(MusClient::Get());
119 PointerWatcherEventRouter2* pointer_watcher_event_router =
120 MusClient::Get()->pointer_watcher_event_router();
121 ASSERT_TRUE(pointer_watcher_event_router);
122
123 ui::PointerEvent pointer_event_down(
124 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
125 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
126 base::TimeTicks());
127 ui::PointerEvent pointer_event_up(
128 ui::ET_POINTER_UP, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
129 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
130 base::TimeTicks());
131 ui::PointerEvent pointer_event_wheel(
132 ui::ET_POINTER_WHEEL_CHANGED, gfx::Point(), gfx::Point(), ui::EF_NONE, 1,
133 0, ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
134 base::TimeTicks());
135 ui::PointerEvent pointer_event_capture(
136 ui::ET_POINTER_CAPTURE_CHANGED, gfx::Point(), gfx::Point(), ui::EF_NONE,
137 1, 0, ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_MOUSE),
138 base::TimeTicks());
139
140 // PointerWatchers receive pointer down events.
141 TestPointerWatcher watcher1;
142 pointer_watcher_event_router->AddPointerWatcher(&watcher1, false);
143 OnPointerEventObserved(pointer_event_down);
144 EXPECT_EQ(ui::ET_POINTER_DOWN, watcher1.last_event_observed()->type());
145 watcher1.Reset();
146
147 // PointerWatchers receive pointer up events.
148 OnPointerEventObserved(pointer_event_up);
149 EXPECT_EQ(ui::ET_POINTER_UP, watcher1.last_event_observed()->type());
150 watcher1.Reset();
151
152 // PointerWatchers receive pointer wheel changed events.
153 OnPointerEventObserved(pointer_event_wheel);
154 EXPECT_EQ(ui::ET_POINTER_WHEEL_CHANGED,
155 watcher1.last_event_observed()->type());
156 watcher1.Reset();
157
158 // PointerWatchers receive pointer capture changed events.
159 OnPointerEventObserved(pointer_event_capture);
160 EXPECT_EQ(ui::ET_POINTER_CAPTURE_CHANGED,
161 watcher1.last_event_observed()->type());
162 watcher1.Reset();
163
164 // Two PointerWatchers can both receive a single observed event.
165 TestPointerWatcher watcher2;
166 pointer_watcher_event_router->AddPointerWatcher(&watcher2, false);
167 OnPointerEventObserved(pointer_event_down);
168 EXPECT_EQ(ui::ET_POINTER_DOWN, watcher1.last_event_observed()->type());
169 EXPECT_EQ(ui::ET_POINTER_DOWN, watcher2.last_event_observed()->type());
170 watcher1.Reset();
171 watcher2.Reset();
172
173 // Removing the first PointerWatcher stops sending events to it.
174 pointer_watcher_event_router->RemovePointerWatcher(&watcher1);
175 OnPointerEventObserved(pointer_event_down);
176 EXPECT_FALSE(watcher1.last_event_observed());
177 EXPECT_EQ(ui::ET_POINTER_DOWN, watcher2.last_event_observed()->type());
178 watcher1.Reset();
179 watcher2.Reset();
180
181 // Removing the last PointerWatcher stops sending events to it.
182 pointer_watcher_event_router->RemovePointerWatcher(&watcher2);
183 OnPointerEventObserved(pointer_event_down);
184 EXPECT_FALSE(watcher1.last_event_observed());
185 EXPECT_FALSE(watcher2.last_event_observed());
186 }
187
188 TEST_F(PointerWatcherEventRouter2Test, PointerWatcherMove) {
189 base::MessageLoop message_loop(base::MessageLoop::TYPE_UI);
190 ScopedViewsTestHelper helper;
191 ASSERT_TRUE(MusClient::Get());
192 PointerWatcherEventRouter2* pointer_watcher_event_router =
193 MusClient::Get()->pointer_watcher_event_router();
194 ASSERT_TRUE(pointer_watcher_event_router);
195
196 ui::PointerEvent pointer_event_down(
197 ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
198 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
199 base::TimeTicks());
200 ui::PointerEvent pointer_event_move(
201 ui::ET_POINTER_MOVED, gfx::Point(), gfx::Point(), ui::EF_NONE, 1, 0,
202 ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH),
203 base::TimeTicks());
204
205 // PointerWatchers receive pointer down events.
206 TestPointerWatcher watcher1;
207 pointer_watcher_event_router->AddPointerWatcher(&watcher1, true);
208 OnPointerEventObserved(pointer_event_down);
209 EXPECT_EQ(ui::ET_POINTER_DOWN, watcher1.last_event_observed()->type());
210 watcher1.Reset();
211
212 // PointerWatchers receive pointer move events.
213 OnPointerEventObserved(pointer_event_move);
214 EXPECT_EQ(ui::ET_POINTER_MOVED, watcher1.last_event_observed()->type());
215 watcher1.Reset();
216
217 // Two PointerWatchers can both receive a single observed event.
218 TestPointerWatcher watcher2;
219 pointer_watcher_event_router->AddPointerWatcher(&watcher2, true);
220 OnPointerEventObserved(pointer_event_move);
221 EXPECT_EQ(ui::ET_POINTER_MOVED, watcher1.last_event_observed()->type());
222 EXPECT_EQ(ui::ET_POINTER_MOVED, watcher2.last_event_observed()->type());
223 watcher1.Reset();
224 watcher2.Reset();
225
226 // Removing the first PointerWatcher stops sending events to it.
227 pointer_watcher_event_router->RemovePointerWatcher(&watcher1);
228 OnPointerEventObserved(pointer_event_move);
229 EXPECT_FALSE(watcher1.last_event_observed());
230 EXPECT_EQ(ui::ET_POINTER_MOVED, watcher2.last_event_observed()->type());
231 watcher1.Reset();
232 watcher2.Reset();
233
234 // Removing the last PointerWatcher stops sending events to it.
235 pointer_watcher_event_router->RemovePointerWatcher(&watcher2);
236 OnPointerEventObserved(pointer_event_move);
237 EXPECT_FALSE(watcher1.last_event_observed());
238 EXPECT_FALSE(watcher2.last_event_observed());
239 }
240
241 } // namespace views
OLDNEW
« ui/views/mus/BUILD.gn ('K') | « ui/views/mus/pointer_watcher_event_router2.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698