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

Side by Side Diff: ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc

Issue 867803004: [PATCH 4/11] ozone: evdev: Move EventModifiersEvdev usage to EventFactoryEvdev (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update per comments on previous patches Created 5 years, 10 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/events/ozone/evdev/tablet_event_converter_evdev.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <errno.h> 5 #include <errno.h>
6 #include <fcntl.h> 6 #include <fcntl.h>
7 #include <linux/input.h> 7 #include <linux/input.h>
8 #include <unistd.h> 8 #include <unistd.h>
9 9
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/memory/scoped_vector.h" 14 #include "base/memory/scoped_vector.h"
15 #include "base/posix/eintr_wrapper.h" 15 #include "base/posix/eintr_wrapper.h"
16 #include "base/run_loop.h" 16 #include "base/run_loop.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
19 #include "ui/events/event.h" 19 #include "ui/events/event.h"
20 #include "ui/events/ozone/device/device_manager.h"
21 #include "ui/events/ozone/evdev/event_factory_evdev.h"
20 #include "ui/events/ozone/evdev/tablet_event_converter_evdev.h" 22 #include "ui/events/ozone/evdev/tablet_event_converter_evdev.h"
23 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h"
21 #include "ui/events/platform/platform_event_dispatcher.h" 24 #include "ui/events/platform/platform_event_dispatcher.h"
22 #include "ui/events/platform/platform_event_source.h" 25 #include "ui/events/platform/platform_event_source.h"
23 26
24 namespace { 27 namespace {
25 28
26 static int SetNonBlocking(int fd) { 29 static int SetNonBlocking(int fd) {
27 int flags = fcntl(fd, F_GETFL, 0); 30 int flags = fcntl(fd, F_GETFL, 0);
28 if (flags == -1) 31 if (flags == -1)
29 flags = 0; 32 flags = 0;
30 return fcntl(fd, F_SETFL, flags | O_NONBLOCK); 33 return fcntl(fd, F_SETFL, flags | O_NONBLOCK);
31 } 34 }
32 35
33 const char kTestDevicePath[] = "/dev/input/test-device"; 36 const char kTestDevicePath[] = "/dev/input/test-device";
34 37
35 } // namespace 38 } // namespace
36 39
37 namespace ui { 40 namespace ui {
38 41
39 class MockTabletEventConverterEvdev : public TabletEventConverterEvdev { 42 class MockTabletEventConverterEvdev : public TabletEventConverterEvdev {
40 public: 43 public:
41 MockTabletEventConverterEvdev(int fd, 44 MockTabletEventConverterEvdev(
42 base::FilePath path, 45 int fd,
43 EventModifiersEvdev* modifiers, 46 base::FilePath path,
44 CursorDelegateEvdev* cursor); 47 CursorDelegateEvdev* cursor,
48 const MouseMoveEventDispatchCallback& mouse_move_callback,
49 const MouseButtonEventDispatchCallback& mouse_button_callback);
45 ~MockTabletEventConverterEvdev() override {}; 50 ~MockTabletEventConverterEvdev() override {};
46 51
47 void ConfigureReadMock(struct input_event* queue, 52 void ConfigureReadMock(struct input_event* queue,
48 long read_this_many, 53 long read_this_many,
49 long queue_index); 54 long queue_index);
50 55
51 unsigned size() { return dispatched_events_.size(); }
52 MouseEvent* event(unsigned index) {
53 DCHECK_GT(dispatched_events_.size(), index);
54 Event* ev = dispatched_events_[index];
55 DCHECK(ev->IsMouseEvent());
56 return static_cast<MouseEvent*>(ev);
57 }
58
59 // Actually dispatch the event reader code. 56 // Actually dispatch the event reader code.
60 void ReadNow() { 57 void ReadNow() {
61 OnFileCanReadWithoutBlocking(read_pipe_); 58 OnFileCanReadWithoutBlocking(read_pipe_);
62 base::RunLoop().RunUntilIdle(); 59 base::RunLoop().RunUntilIdle();
63 } 60 }
64 61
65 void DispatchCallback(scoped_ptr<Event> event) {
66 dispatched_events_.push_back(event.release());
67 }
68
69 private: 62 private:
70 int read_pipe_; 63 int read_pipe_;
71 int write_pipe_; 64 int write_pipe_;
72 65
73 ScopedVector<Event> dispatched_events_; 66 ScopedVector<Event> dispatched_events_;
74 67
75 DISALLOW_COPY_AND_ASSIGN(MockTabletEventConverterEvdev); 68 DISALLOW_COPY_AND_ASSIGN(MockTabletEventConverterEvdev);
76 }; 69 };
77 70
78 class MockTabletCursorEvdev : public CursorDelegateEvdev { 71 class MockTabletCursorEvdev : public CursorDelegateEvdev {
(...skipping 16 matching lines...) Expand all
95 88
96 private: 89 private:
97 gfx::PointF cursor_location_; 90 gfx::PointF cursor_location_;
98 gfx::Rect cursor_display_bounds_; 91 gfx::Rect cursor_display_bounds_;
99 DISALLOW_COPY_AND_ASSIGN(MockTabletCursorEvdev); 92 DISALLOW_COPY_AND_ASSIGN(MockTabletCursorEvdev);
100 }; 93 };
101 94
102 MockTabletEventConverterEvdev::MockTabletEventConverterEvdev( 95 MockTabletEventConverterEvdev::MockTabletEventConverterEvdev(
103 int fd, 96 int fd,
104 base::FilePath path, 97 base::FilePath path,
105 EventModifiersEvdev* modifiers, 98 CursorDelegateEvdev* cursor,
106 CursorDelegateEvdev* cursor) 99 const MouseMoveEventDispatchCallback& mouse_move_callback,
107 : TabletEventConverterEvdev( 100 const MouseButtonEventDispatchCallback& mouse_button_callback)
108 fd, 101 : TabletEventConverterEvdev(fd,
109 path, 102 path,
110 1, 103 1,
111 INPUT_DEVICE_UNKNOWN, 104 INPUT_DEVICE_UNKNOWN,
112 modifiers, 105 cursor,
113 cursor, 106 EventDeviceInfo(),
114 EventDeviceInfo(), 107 mouse_move_callback,
115 base::Bind(&MockTabletEventConverterEvdev::DispatchCallback, 108 mouse_button_callback) {
116 base::Unretained(this))) {
117 // Real values taken from Wacom Intuos 4 109 // Real values taken from Wacom Intuos 4
118 x_abs_min_ = 0; 110 x_abs_min_ = 0;
119 x_abs_range_ = 65024; 111 x_abs_range_ = 65024;
120 y_abs_min_ = 0; 112 y_abs_min_ = 0;
121 y_abs_range_ = 40640; 113 y_abs_range_ = 40640;
122 114
123 int fds[2]; 115 int fds[2];
124 116
125 if (pipe(fds)) 117 if (pipe(fds))
126 PLOG(FATAL) << "failed pipe"; 118 PLOG(FATAL) << "failed pipe";
127 119
128 DCHECK(SetNonBlocking(fds[0]) == 0) 120 DCHECK(SetNonBlocking(fds[0]) == 0)
129 << "SetNonBlocking for pipe fd[0] failed, errno: " << errno; 121 << "SetNonBlocking for pipe fd[0] failed, errno: " << errno;
130 DCHECK(SetNonBlocking(fds[1]) == 0) 122 DCHECK(SetNonBlocking(fds[1]) == 0)
131 << "SetNonBlocking for pipe fd[0] failed, errno: " << errno; 123 << "SetNonBlocking for pipe fd[0] failed, errno: " << errno;
132 read_pipe_ = fds[0]; 124 read_pipe_ = fds[0];
133 write_pipe_ = fds[1]; 125 write_pipe_ = fds[1];
134 } 126 }
135 127
136 void MockTabletEventConverterEvdev::ConfigureReadMock(struct input_event* queue, 128 void MockTabletEventConverterEvdev::ConfigureReadMock(struct input_event* queue,
137 long read_this_many, 129 long read_this_many,
138 long queue_index) { 130 long queue_index) {
139 int nwrite = HANDLE_EINTR(write(write_pipe_, queue + queue_index, 131 int nwrite = HANDLE_EINTR(write(write_pipe_, queue + queue_index,
140 sizeof(struct input_event) * read_this_many)); 132 sizeof(struct input_event) * read_this_many));
141 DCHECK(nwrite == 133 DCHECK(nwrite ==
142 static_cast<int>(sizeof(struct input_event) * read_this_many)) 134 static_cast<int>(sizeof(struct input_event) * read_this_many))
143 << "write() failed, errno: " << errno; 135 << "write() failed, errno: " << errno;
144 } 136 }
145 137
138 class MockDeviceManager : public ui::DeviceManager {
139 public:
140 MockDeviceManager() {}
141 ~MockDeviceManager() override {}
142
143 // DeviceManager:
144 void ScanDevices(DeviceEventObserver* observer) override {}
145 void AddObserver(DeviceEventObserver* observer) override {}
146 void RemoveObserver(DeviceEventObserver* observer) override {}
147 };
148
149 class TestEventFactoryEvdev : public EventFactoryEvdev {
150 public:
151 TestEventFactoryEvdev(CursorDelegateEvdev* cursor,
152 DeviceManager* device_manager,
153 KeyboardLayoutEngine* keyboard_layout_engine,
154 const EventDispatchCallback& callback)
155 : EventFactoryEvdev(cursor, device_manager, keyboard_layout_engine),
156 callback_(callback) {}
157 ~TestEventFactoryEvdev() override {}
158
159 private:
160 void PostUiEvent(scoped_ptr<Event> event) override {
161 callback_.Run(event.Pass());
162 }
163
164 EventDispatchCallback callback_;
165 };
166
146 } // namespace ui 167 } // namespace ui
147 168
148 // Test fixture. 169 // Test fixture.
149 class TabletEventConverterEvdevTest : public testing::Test { 170 class TabletEventConverterEvdevTest : public testing::Test {
150 public: 171 public:
151 TabletEventConverterEvdevTest() {} 172 TabletEventConverterEvdevTest() {}
152 173
153 // Overridden from testing::Test: 174 // Overridden from testing::Test:
154 void SetUp() override { 175 void SetUp() override {
155 // Set up pipe to satisfy message pump (unused). 176 // Set up pipe to satisfy message pump (unused).
156 int evdev_io[2]; 177 int evdev_io[2];
157 if (pipe(evdev_io)) 178 if (pipe(evdev_io))
158 PLOG(FATAL) << "failed pipe"; 179 PLOG(FATAL) << "failed pipe";
159 events_in_ = evdev_io[0]; 180 events_in_ = evdev_io[0];
160 events_out_ = evdev_io[1]; 181 events_out_ = evdev_io[1];
161 182
162 cursor_.reset(new ui::MockTabletCursorEvdev()); 183 cursor_.reset(new ui::MockTabletCursorEvdev());
163 modifiers_.reset(new ui::EventModifiersEvdev()); 184 device_manager_.reset(new ui::MockDeviceManager);
185 event_factory_.reset(new ui::TestEventFactoryEvdev(
186 cursor_.get(), device_manager_.get(),
187 ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine(),
188 base::Bind(&TabletEventConverterEvdevTest::DispatchEventForTest,
189 base::Unretained(this))));
164 device_.reset(new ui::MockTabletEventConverterEvdev( 190 device_.reset(new ui::MockTabletEventConverterEvdev(
165 events_in_, base::FilePath(kTestDevicePath), modifiers_.get(), 191 events_in_, base::FilePath(kTestDevicePath), cursor_.get(),
166 cursor_.get())); 192 base::Bind(&ui::EventFactoryEvdev::PostMouseMoveEvent,
193 base::Unretained(event_factory_.get())),
194 base::Bind(&ui::EventFactoryEvdev::PostMouseButtonEvent,
195 base::Unretained(event_factory_.get()))));
167 } 196 }
168 197
169 void TearDown() override { 198 void TearDown() override {
170 modifiers_.reset();
171 cursor_.reset(); 199 cursor_.reset();
172 device_.reset(); 200 device_.reset();
173 } 201 }
174 202
175 ui::MockTabletEventConverterEvdev* device() { return device_.get(); } 203 ui::MockTabletEventConverterEvdev* device() { return device_.get(); }
176 ui::CursorDelegateEvdev* cursor() { return cursor_.get(); } 204 ui::CursorDelegateEvdev* cursor() { return cursor_.get(); }
177 ui::EventModifiersEvdev* modifiers() { return modifiers_.get(); } 205
206 unsigned size() { return dispatched_events_.size(); }
207 ui::MouseEvent* dispatched_event(unsigned index) {
208 DCHECK_GT(dispatched_events_.size(), index);
209 ui::Event* ev = dispatched_events_[index];
210 DCHECK(ev->IsMouseEvent());
211 return static_cast<ui::MouseEvent*>(ev);
212 }
213
214 void DispatchEventForTest(scoped_ptr<ui::Event> event) {
215 dispatched_events_.push_back(event.release());
216 }
178 217
179 private: 218 private:
219 scoped_ptr<ui::MockTabletCursorEvdev> cursor_;
220 scoped_ptr<ui::DeviceManager> device_manager_;
221 scoped_ptr<ui::EventFactoryEvdev> event_factory_;
180 scoped_ptr<ui::MockTabletEventConverterEvdev> device_; 222 scoped_ptr<ui::MockTabletEventConverterEvdev> device_;
181 scoped_ptr<ui::MockTabletCursorEvdev> cursor_; 223
182 scoped_ptr<ui::EventModifiersEvdev> modifiers_; 224 ScopedVector<ui::Event> dispatched_events_;
183 225
184 int events_out_; 226 int events_out_;
185 int events_in_; 227 int events_in_;
186 228
187 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest); 229 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest);
188 }; 230 };
189 231
190 #define EPSILON 20 232 #define EPSILON 20
191 233
192 // Uses real data captured from Wacom Intuos 4 234 // Uses real data captured from Wacom Intuos 4
(...skipping 12 matching lines...) Expand all
205 {{0, 0}, EV_ABS, ABS_Y, 0}, 247 {{0, 0}, EV_ABS, ABS_Y, 0},
206 {{0, 0}, EV_ABS, ABS_DISTANCE, 0}, 248 {{0, 0}, EV_ABS, ABS_DISTANCE, 0},
207 {{0, 0}, EV_ABS, ABS_TILT_X, 0}, 249 {{0, 0}, EV_ABS, ABS_TILT_X, 0},
208 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0}, 250 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0},
209 {{0, 0}, EV_ABS, ABS_MISC, 0}, 251 {{0, 0}, EV_ABS, ABS_MISC, 0},
210 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517}, 252 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517},
211 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 253 {{0, 0}, EV_SYN, SYN_REPORT, 0},
212 }; 254 };
213 255
214 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 256 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
215 EXPECT_EQ(1u, dev->size()); 257 EXPECT_EQ(1u, size());
216 258
217 ui::MouseEvent* event = dev->event(0); 259 ui::MouseEvent* event = dispatched_event(0);
218 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 260 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
219 261
220 EXPECT_LT(cursor()->GetLocation().x(), EPSILON); 262 EXPECT_LT(cursor()->GetLocation().x(), EPSILON);
221 EXPECT_LT(cursor()->GetLocation().y(), EPSILON); 263 EXPECT_LT(cursor()->GetLocation().y(), EPSILON);
222 } 264 }
223 265
224 TEST_F(TabletEventConverterEvdevTest, MoveTopRight) { 266 TEST_F(TabletEventConverterEvdevTest, MoveTopRight) {
225 ui::MockTabletEventConverterEvdev* dev = device(); 267 ui::MockTabletEventConverterEvdev* dev = device();
226 268
227 struct input_event mock_kernel_queue[] = { 269 struct input_event mock_kernel_queue[] = {
(...skipping 10 matching lines...) Expand all
238 {{0, 0}, EV_ABS, ABS_DISTANCE, 0}, 280 {{0, 0}, EV_ABS, ABS_DISTANCE, 0},
239 {{0, 0}, EV_ABS, ABS_TILT_X, 0}, 281 {{0, 0}, EV_ABS, ABS_TILT_X, 0},
240 {{0, 0}, EV_ABS, ABS_TILT_Y, 0}, 282 {{0, 0}, EV_ABS, ABS_TILT_Y, 0},
241 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0}, 283 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0},
242 {{0, 0}, EV_ABS, ABS_MISC, 0}, 284 {{0, 0}, EV_ABS, ABS_MISC, 0},
243 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517}, 285 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517},
244 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 286 {{0, 0}, EV_SYN, SYN_REPORT, 0},
245 }; 287 };
246 288
247 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 289 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
248 EXPECT_EQ(1u, dev->size()); 290 EXPECT_EQ(1u, size());
249 291
250 ui::MouseEvent* event = dev->event(0); 292 ui::MouseEvent* event = dispatched_event(0);
251 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 293 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
252 294
253 EXPECT_GT(cursor()->GetLocation().x(), 295 EXPECT_GT(cursor()->GetLocation().x(),
254 cursor()->GetCursorDisplayBounds().width() - EPSILON); 296 cursor()->GetCursorDisplayBounds().width() - EPSILON);
255 EXPECT_LT(cursor()->GetLocation().y(), EPSILON); 297 EXPECT_LT(cursor()->GetLocation().y(), EPSILON);
256 } 298 }
257 299
258 TEST_F(TabletEventConverterEvdevTest, MoveBottomLeft) { 300 TEST_F(TabletEventConverterEvdevTest, MoveBottomLeft) {
259 ui::MockTabletEventConverterEvdev* dev = device(); 301 ui::MockTabletEventConverterEvdev* dev = device();
260 302
(...skipping 10 matching lines...) Expand all
271 {{0, 0}, EV_ABS, ABS_DISTANCE, 0}, 313 {{0, 0}, EV_ABS, ABS_DISTANCE, 0},
272 {{0, 0}, EV_ABS, ABS_TILT_X, 0}, 314 {{0, 0}, EV_ABS, ABS_TILT_X, 0},
273 {{0, 0}, EV_ABS, ABS_TILT_Y, 0}, 315 {{0, 0}, EV_ABS, ABS_TILT_Y, 0},
274 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0}, 316 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0},
275 {{0, 0}, EV_ABS, ABS_MISC, 0}, 317 {{0, 0}, EV_ABS, ABS_MISC, 0},
276 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517}, 318 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517},
277 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 319 {{0, 0}, EV_SYN, SYN_REPORT, 0},
278 }; 320 };
279 321
280 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 322 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
281 EXPECT_EQ(1u, dev->size()); 323 EXPECT_EQ(1u, size());
282 324
283 ui::MouseEvent* event = dev->event(0); 325 ui::MouseEvent* event = dispatched_event(0);
284 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 326 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
285 327
286 EXPECT_LT(cursor()->GetLocation().x(), EPSILON); 328 EXPECT_LT(cursor()->GetLocation().x(), EPSILON);
287 EXPECT_GT(cursor()->GetLocation().y(), 329 EXPECT_GT(cursor()->GetLocation().y(),
288 cursor()->GetCursorDisplayBounds().height() - EPSILON); 330 cursor()->GetCursorDisplayBounds().height() - EPSILON);
289 } 331 }
290 332
291 TEST_F(TabletEventConverterEvdevTest, MoveBottomRight) { 333 TEST_F(TabletEventConverterEvdevTest, MoveBottomRight) {
292 ui::MockTabletEventConverterEvdev* dev = device(); 334 ui::MockTabletEventConverterEvdev* dev = device();
293 335
(...skipping 12 matching lines...) Expand all
306 {{0, 0}, EV_ABS, ABS_DISTANCE, 0}, 348 {{0, 0}, EV_ABS, ABS_DISTANCE, 0},
307 {{0, 0}, EV_ABS, ABS_TILT_X, 0}, 349 {{0, 0}, EV_ABS, ABS_TILT_X, 0},
308 {{0, 0}, EV_ABS, ABS_TILT_Y, 0}, 350 {{0, 0}, EV_ABS, ABS_TILT_Y, 0},
309 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0}, 351 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0},
310 {{0, 0}, EV_ABS, ABS_MISC, 0}, 352 {{0, 0}, EV_ABS, ABS_MISC, 0},
311 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517}, 353 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517},
312 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 354 {{0, 0}, EV_SYN, SYN_REPORT, 0},
313 }; 355 };
314 356
315 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 357 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
316 EXPECT_EQ(1u, dev->size()); 358 EXPECT_EQ(1u, size());
317 359
318 ui::MouseEvent* event = dev->event(0); 360 ui::MouseEvent* event = dispatched_event(0);
319 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 361 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
320 362
321 EXPECT_GT(cursor()->GetLocation().x(), 363 EXPECT_GT(cursor()->GetLocation().x(),
322 cursor()->GetCursorDisplayBounds().height() - EPSILON); 364 cursor()->GetCursorDisplayBounds().height() - EPSILON);
323 EXPECT_GT(cursor()->GetLocation().y(), 365 EXPECT_GT(cursor()->GetLocation().y(),
324 cursor()->GetCursorDisplayBounds().height() - EPSILON); 366 cursor()->GetCursorDisplayBounds().height() - EPSILON);
325 } 367 }
326 368
327 TEST_F(TabletEventConverterEvdevTest, Tap) { 369 TEST_F(TabletEventConverterEvdevTest, Tap) {
328 ui::MockTabletEventConverterEvdev* dev = device(); 370 ui::MockTabletEventConverterEvdev* dev = device();
(...skipping 27 matching lines...) Expand all
356 {{0, 0}, EV_ABS, ABS_DISTANCE, 0}, 398 {{0, 0}, EV_ABS, ABS_DISTANCE, 0},
357 {{0, 0}, EV_ABS, ABS_TILT_X, 0}, 399 {{0, 0}, EV_ABS, ABS_TILT_X, 0},
358 {{0, 0}, EV_ABS, ABS_TILT_Y, 0}, 400 {{0, 0}, EV_ABS, ABS_TILT_Y, 0},
359 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0}, 401 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0},
360 {{0, 0}, EV_ABS, ABS_MISC, 0}, 402 {{0, 0}, EV_ABS, ABS_MISC, 0},
361 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517}, 403 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517},
362 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 404 {{0, 0}, EV_SYN, SYN_REPORT, 0},
363 }; 405 };
364 406
365 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 407 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
366 EXPECT_EQ(3u, dev->size()); 408 EXPECT_EQ(3u, size());
367 409
368 ui::MouseEvent* event = dev->event(0); 410 ui::MouseEvent* event = dispatched_event(0);
369 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 411 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
370 event = dev->event(1); 412 event = dispatched_event(1);
371 EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type()); 413 EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type());
372 EXPECT_EQ(true, event->IsLeftMouseButton()); 414 EXPECT_EQ(true, event->IsLeftMouseButton());
373 event = dev->event(2); 415 event = dispatched_event(2);
374 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type()); 416 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type());
375 EXPECT_EQ(true, event->IsLeftMouseButton()); 417 EXPECT_EQ(true, event->IsLeftMouseButton());
376 } 418 }
377 419
378 TEST_F(TabletEventConverterEvdevTest, StylusButtonPress) { 420 TEST_F(TabletEventConverterEvdevTest, StylusButtonPress) {
379 ui::MockTabletEventConverterEvdev* dev = device(); 421 ui::MockTabletEventConverterEvdev* dev = device();
380 422
381 struct input_event mock_kernel_queue[] = { 423 struct input_event mock_kernel_queue[] = {
382 {{0, 0}, EV_ABS, ABS_X, 30055}, 424 {{0, 0}, EV_ABS, ABS_X, 30055},
383 {{0, 0}, EV_ABS, ABS_Y, 18094}, 425 {{0, 0}, EV_ABS, ABS_Y, 18094},
(...skipping 19 matching lines...) Expand all
403 {{0, 0}, EV_ABS, ABS_DISTANCE, 0}, 445 {{0, 0}, EV_ABS, ABS_DISTANCE, 0},
404 {{0, 0}, EV_ABS, ABS_TILT_X, 0}, 446 {{0, 0}, EV_ABS, ABS_TILT_X, 0},
405 {{0, 0}, EV_ABS, ABS_TILT_Y, 0}, 447 {{0, 0}, EV_ABS, ABS_TILT_Y, 0},
406 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0}, 448 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 0},
407 {{0, 0}, EV_ABS, ABS_MISC, 0}, 449 {{0, 0}, EV_ABS, ABS_MISC, 0},
408 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517}, 450 {{0, 0}, EV_MSC, MSC_SERIAL, 159403517},
409 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 451 {{0, 0}, EV_SYN, SYN_REPORT, 0},
410 }; 452 };
411 453
412 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 454 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
413 EXPECT_EQ(3u, dev->size()); 455 EXPECT_EQ(3u, size());
414 456
415 ui::MouseEvent* event = dev->event(0); 457 ui::MouseEvent* event = dispatched_event(0);
416 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 458 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
417 event = dev->event(1); 459 event = dispatched_event(1);
418 EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type()); 460 EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type());
419 EXPECT_EQ(true, event->IsRightMouseButton()); 461 EXPECT_EQ(true, event->IsRightMouseButton());
420 event = dev->event(2); 462 event = dispatched_event(2);
421 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type()); 463 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type());
422 EXPECT_EQ(true, event->IsRightMouseButton()); 464 EXPECT_EQ(true, event->IsRightMouseButton());
423 } 465 }
424 466
425 // Should only get an event if BTN_TOOL received 467 // Should only get an event if BTN_TOOL received
426 TEST_F(TabletEventConverterEvdevTest, CheckStylusFiltering) { 468 TEST_F(TabletEventConverterEvdevTest, CheckStylusFiltering) {
427 ui::MockTabletEventConverterEvdev* dev = device(); 469 ui::MockTabletEventConverterEvdev* dev = device();
428 470
429 struct input_event mock_kernel_queue[] = { 471 struct input_event mock_kernel_queue[] = {
430 {{0, 0}, EV_ABS, ABS_X, 0}, 472 {{0, 0}, EV_ABS, ABS_X, 0},
431 {{0, 0}, EV_ABS, ABS_Y, 0}, 473 {{0, 0}, EV_ABS, ABS_Y, 0},
432 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 474 {{0, 0}, EV_SYN, SYN_REPORT, 0},
433 }; 475 };
434 476
435 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 477 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
436 EXPECT_EQ(0u, dev->size()); 478 EXPECT_EQ(0u, size());
437 } 479 }
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/tablet_event_converter_evdev.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698