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

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

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

Powered by Google App Engine
This is Rietveld 408576698