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

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

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

Powered by Google App Engine
This is Rietveld 408576698