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

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

Issue 874713002: [PATCH 1/11] ozone: evdev: Move touch ui::Event transformation to EventFactoryEvdev (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update comment & add missing export 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/touch_event_converter_evdev.cc ('k') | ui/events/ozone/events_ozone.gyp » ('j') | 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/devices/device_data_manager.h" 19 #include "ui/events/devices/device_data_manager.h"
20 #include "ui/events/event.h"
21 #include "ui/events/ozone/evdev/touch_event_converter_evdev.h" 20 #include "ui/events/ozone/evdev/touch_event_converter_evdev.h"
22 #include "ui/events/platform/platform_event_dispatcher.h" 21 #include "ui/events/platform/platform_event_dispatcher.h"
23 #include "ui/events/platform/platform_event_source.h" 22 #include "ui/events/platform/platform_event_source.h"
24 23
25 namespace { 24 namespace {
26 25
27 static int SetNonBlocking(int fd) { 26 static int SetNonBlocking(int fd) {
28 int flags = fcntl(fd, F_GETFL, 0); 27 int flags = fcntl(fd, F_GETFL, 0);
29 if (flags == -1) 28 if (flags == -1)
30 flags = 0; 29 flags = 0;
31 return fcntl(fd, F_SETFL, flags | O_NONBLOCK); 30 return fcntl(fd, F_SETFL, flags | O_NONBLOCK);
32 } 31 }
33 32
34 const char kTestDevicePath[] = "/dev/input/test-device"; 33 const char kTestDevicePath[] = "/dev/input/test-device";
35 34
36 } // namespace 35 } // namespace
37 36
38 namespace ui { 37 namespace ui {
39 38
40 class MockTouchEventConverterEvdev : public TouchEventConverterEvdev { 39 class MockTouchEventConverterEvdev : public TouchEventConverterEvdev {
41 public: 40 public:
42 MockTouchEventConverterEvdev(int fd, base::FilePath path); 41 MockTouchEventConverterEvdev(int fd, base::FilePath path);
43 ~MockTouchEventConverterEvdev() override {} 42 ~MockTouchEventConverterEvdev() override {}
44 43
45 void ConfigureReadMock(struct input_event* queue, 44 void ConfigureReadMock(struct input_event* queue,
46 long read_this_many, 45 long read_this_many,
47 long queue_index); 46 long queue_index);
48 47
49 unsigned size() { return dispatched_events_.size(); } 48 unsigned size() { return dispatched_events_.size(); }
50 TouchEvent* event(unsigned index) { 49 const TouchEventParams& event(unsigned index) {
51 DCHECK_GT(dispatched_events_.size(), index); 50 DCHECK_GT(dispatched_events_.size(), index);
52 Event* ev = dispatched_events_[index]; 51 return dispatched_events_[index];
53 DCHECK(ev->IsTouchEvent());
54 return static_cast<TouchEvent*>(ev);
55 } 52 }
56 53
57 // Actually dispatch the event reader code. 54 // Actually dispatch the event reader code.
58 void ReadNow() { 55 void ReadNow() {
59 OnFileCanReadWithoutBlocking(read_pipe_); 56 OnFileCanReadWithoutBlocking(read_pipe_);
60 base::RunLoop().RunUntilIdle(); 57 base::RunLoop().RunUntilIdle();
61 } 58 }
62 59
63 void DispatchCallback(scoped_ptr<Event> event) { 60 void DispatchCallback(const TouchEventParams& params) {
64 dispatched_events_.push_back(event.release()); 61 dispatched_events_.push_back(params);
65 } 62 }
66 63
67 void Initialize(const EventDeviceInfo& device_info) override {} 64 void Initialize(const EventDeviceInfo& device_info) override {}
68 bool Reinitialize() override { return true; } 65 bool Reinitialize() override { return true; }
69 66
70 private: 67 private:
71 int read_pipe_; 68 int read_pipe_;
72 int write_pipe_; 69 int write_pipe_;
73 70
74 ScopedVector<Event> dispatched_events_; 71 std::vector<TouchEventParams> dispatched_events_;
75 72
76 DISALLOW_COPY_AND_ASSIGN(MockTouchEventConverterEvdev); 73 DISALLOW_COPY_AND_ASSIGN(MockTouchEventConverterEvdev);
77 }; 74 };
78 75
79 MockTouchEventConverterEvdev::MockTouchEventConverterEvdev(int fd, 76 MockTouchEventConverterEvdev::MockTouchEventConverterEvdev(int fd,
80 base::FilePath path) 77 base::FilePath path)
81 : TouchEventConverterEvdev( 78 : TouchEventConverterEvdev(
82 fd, 79 fd,
83 path, 80 path,
84 1, 81 1,
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 EXPECT_EQ(0u, dev->size()); 175 EXPECT_EQ(0u, dev->size());
179 176
180 dev->ConfigureReadMock(mock_kernel_queue, 2, 1); 177 dev->ConfigureReadMock(mock_kernel_queue, 2, 1);
181 dev->ReadNow(); 178 dev->ReadNow();
182 EXPECT_EQ(0u, dev->size()); 179 EXPECT_EQ(0u, dev->size());
183 180
184 dev->ConfigureReadMock(mock_kernel_queue, 3, 3); 181 dev->ConfigureReadMock(mock_kernel_queue, 3, 3);
185 dev->ReadNow(); 182 dev->ReadNow();
186 EXPECT_EQ(1u, dev->size()); 183 EXPECT_EQ(1u, dev->size());
187 184
188 ui::TouchEvent* event = dev->event(0); 185 ui::TouchEventParams event = dev->event(0);
189 EXPECT_FALSE(event == NULL);
190 186
191 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event->type()); 187 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event.type);
192 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); 188 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
193 EXPECT_EQ(42, event->x()); 189 EXPECT_EQ(42, event.location.x());
194 EXPECT_EQ(51, event->y()); 190 EXPECT_EQ(51, event.location.y());
195 EXPECT_EQ(0, event->touch_id()); 191 EXPECT_EQ(0, event.touch_id);
196 EXPECT_FLOAT_EQ(1.5f, event->radius_x()); 192 EXPECT_FLOAT_EQ(1.5f, event.radii.x());
197 EXPECT_FLOAT_EQ(.5f, event->force()); 193 EXPECT_FLOAT_EQ(.5f, event.pressure);
198 EXPECT_FLOAT_EQ(0.f, event->rotation_angle());
199 } 194 }
200 195
201 TEST_F(TouchEventConverterEvdevTest, NoEvents) { 196 TEST_F(TouchEventConverterEvdevTest, NoEvents) {
202 ui::MockTouchEventConverterEvdev* dev = device(); 197 ui::MockTouchEventConverterEvdev* dev = device();
203 dev->ConfigureReadMock(NULL, 0, 0); 198 dev->ConfigureReadMock(NULL, 0, 0);
204 EXPECT_EQ(0u, dev->size()); 199 EXPECT_EQ(0u, dev->size());
205 } 200 }
206 201
207 TEST_F(TouchEventConverterEvdevTest, TouchMove) { 202 TEST_F(TouchEventConverterEvdevTest, TouchMove) {
208 ui::MockTouchEventConverterEvdev* dev = device(); 203 ui::MockTouchEventConverterEvdev* dev = device();
(...skipping 17 matching lines...) Expand all
226 }; 221 };
227 222
228 // Setup and discard a press. 223 // Setup and discard a press.
229 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0); 224 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0);
230 dev->ReadNow(); 225 dev->ReadNow();
231 EXPECT_EQ(1u, dev->size()); 226 EXPECT_EQ(1u, dev->size());
232 227
233 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0); 228 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0);
234 dev->ReadNow(); 229 dev->ReadNow();
235 EXPECT_EQ(2u, dev->size()); 230 EXPECT_EQ(2u, dev->size());
236 ui::TouchEvent* event = dev->event(1); 231 ui::TouchEventParams event = dev->event(1);
237 EXPECT_FALSE(event == NULL);
238 232
239 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); 233 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type);
240 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); 234 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
241 EXPECT_EQ(42, event->x()); 235 EXPECT_EQ(42, event.location.x());
242 EXPECT_EQ(43, event->y()); 236 EXPECT_EQ(43, event.location.y());
243 EXPECT_EQ(0, event->touch_id()); 237 EXPECT_EQ(0, event.touch_id);
244 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); 238 EXPECT_FLOAT_EQ(2.f / 3.f, event.pressure);
245 EXPECT_FLOAT_EQ(0.f, event->rotation_angle());
246 239
247 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0); 240 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0);
248 dev->ReadNow(); 241 dev->ReadNow();
249 EXPECT_EQ(3u, dev->size()); 242 EXPECT_EQ(3u, dev->size());
250 event = dev->event(2); 243 event = dev->event(2);
251 EXPECT_FALSE(event == NULL);
252 244
253 EXPECT_EQ(ui::ET_TOUCH_MOVED, event->type()); 245 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type);
254 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); 246 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
255 EXPECT_EQ(42, event->x()); 247 EXPECT_EQ(42, event.location.x());
256 EXPECT_EQ(42, event->y()); 248 EXPECT_EQ(42, event.location.y());
257 EXPECT_EQ(0, event->touch_id()); 249 EXPECT_EQ(0, event.touch_id);
258 EXPECT_FLOAT_EQ(2.f / 3.f, event->force()); 250 EXPECT_FLOAT_EQ(2.f / 3.f, event.pressure);
259 EXPECT_FLOAT_EQ(0.f, event->rotation_angle());
260 } 251 }
261 252
262 TEST_F(TouchEventConverterEvdevTest, TouchRelease) { 253 TEST_F(TouchEventConverterEvdevTest, TouchRelease) {
263 ui::MockTouchEventConverterEvdev* dev = device(); 254 ui::MockTouchEventConverterEvdev* dev = device();
264 255
265 struct input_event mock_kernel_queue_press[] = { 256 struct input_event mock_kernel_queue_press[] = {
266 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 257 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
267 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 258 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
268 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 259 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
269 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 260 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
270 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 261 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
271 }; 262 };
272 263
273 struct input_event mock_kernel_queue_release[] = { 264 struct input_event mock_kernel_queue_release[] = {
274 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 265 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
275 }; 266 };
276 267
277 // Setup and discard a press. 268 // Setup and discard a press.
278 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0); 269 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0);
279 dev->ReadNow(); 270 dev->ReadNow();
280 EXPECT_EQ(1u, dev->size()); 271 EXPECT_EQ(1u, dev->size());
281 ui::TouchEvent* event = dev->event(0); 272 ui::TouchEventParams event = dev->event(0);
282 EXPECT_FALSE(event == NULL);
283 273
284 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0); 274 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0);
285 dev->ReadNow(); 275 dev->ReadNow();
286 EXPECT_EQ(2u, dev->size()); 276 EXPECT_EQ(2u, dev->size());
287 event = dev->event(1); 277 event = dev->event(1);
288 EXPECT_FALSE(event == NULL);
289 278
290 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event->type()); 279 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event.type);
291 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event->time_stamp()); 280 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
292 EXPECT_EQ(42, event->x()); 281 EXPECT_EQ(42, event.location.x());
293 EXPECT_EQ(51, event->y()); 282 EXPECT_EQ(51, event.location.y());
294 EXPECT_EQ(0, event->touch_id()); 283 EXPECT_EQ(0, event.touch_id);
295 EXPECT_FLOAT_EQ(.5f, event->force()); 284 EXPECT_FLOAT_EQ(.5f, event.pressure);
296 EXPECT_FLOAT_EQ(0.f, event->rotation_angle());
297 } 285 }
298 286
299 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) { 287 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) {
300 ui::MockTouchEventConverterEvdev* dev = device(); 288 ui::MockTouchEventConverterEvdev* dev = device();
301 289
302 ui::TouchEvent* ev0;
303 ui::TouchEvent* ev1;
304
305 struct input_event mock_kernel_queue_press0[] = { 290 struct input_event mock_kernel_queue_press0[] = {
306 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 291 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
307 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 292 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
308 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 293 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
309 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 294 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
310 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 295 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
311 }; 296 };
312 // Setup and discard a press. 297 // Setup and discard a press.
313 dev->ConfigureReadMock(mock_kernel_queue_press0, 6, 0); 298 dev->ConfigureReadMock(mock_kernel_queue_press0, 6, 0);
314 dev->ReadNow(); 299 dev->ReadNow();
(...skipping 12 matching lines...) Expand all
327 {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 686}, 312 {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 686},
328 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 313 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
329 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 314 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
330 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 101}, 315 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 101},
331 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 102}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 316 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 102}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
332 }; 317 };
333 // Move on 0, press on 1. 318 // Move on 0, press on 1.
334 dev->ConfigureReadMock(mock_kernel_queue_move0press1, 9, 0); 319 dev->ConfigureReadMock(mock_kernel_queue_move0press1, 9, 0);
335 dev->ReadNow(); 320 dev->ReadNow();
336 EXPECT_EQ(4u, dev->size()); 321 EXPECT_EQ(4u, dev->size());
337 ev0 = dev->event(2); 322 ui::TouchEventParams ev0 = dev->event(2);
338 ev1 = dev->event(3); 323 ui::TouchEventParams ev1 = dev->event(3);
339 324
340 // Move 325 // Move
341 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); 326 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type);
342 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); 327 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
343 EXPECT_EQ(40, ev0->x()); 328 EXPECT_EQ(40, ev0.location.x());
344 EXPECT_EQ(51, ev0->y()); 329 EXPECT_EQ(51, ev0.location.y());
345 EXPECT_EQ(0, ev0->touch_id()); 330 EXPECT_EQ(0, ev0.touch_id);
346 EXPECT_FLOAT_EQ(.5f, ev0->force()); 331 EXPECT_FLOAT_EQ(.5f, ev0.pressure);
347 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle());
348 332
349 // Press 333 // Press
350 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1->type()); 334 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1.type);
351 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); 335 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
352 EXPECT_EQ(101, ev1->x()); 336 EXPECT_EQ(101, ev1.location.x());
353 EXPECT_EQ(102, ev1->y()); 337 EXPECT_EQ(102, ev1.location.y());
354 EXPECT_EQ(1, ev1->touch_id()); 338 EXPECT_EQ(1, ev1.touch_id);
355 EXPECT_FLOAT_EQ(.5f, ev1->force()); 339 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
356 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle());
357 340
358 // Stationary 0, Moves 1. 341 // Stationary 0, Moves 1.
359 struct input_event mock_kernel_queue_stationary0_move1[] = { 342 struct input_event mock_kernel_queue_stationary0_move1[] = {
360 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 343 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
361 }; 344 };
362 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0); 345 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0);
363 dev->ReadNow(); 346 dev->ReadNow();
364 EXPECT_EQ(5u, dev->size()); 347 EXPECT_EQ(5u, dev->size());
365 ev1 = dev->event(4); 348 ev1 = dev->event(4);
366 349
367 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); 350 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type);
368 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); 351 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
369 EXPECT_EQ(40, ev1->x()); 352 EXPECT_EQ(40, ev1.location.x());
370 EXPECT_EQ(102, ev1->y()); 353 EXPECT_EQ(102, ev1.location.y());
371 EXPECT_EQ(1, ev1->touch_id()); 354 EXPECT_EQ(1, ev1.touch_id);
372 355
373 EXPECT_FLOAT_EQ(.5f, ev1->force()); 356 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
374 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle());
375 357
376 // Move 0, stationary 1. 358 // Move 0, stationary 1.
377 struct input_event mock_kernel_queue_move0_stationary1[] = { 359 struct input_event mock_kernel_queue_move0_stationary1[] = {
378 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39}, 360 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39},
379 {{0, 0}, EV_SYN, SYN_REPORT, 0} 361 {{0, 0}, EV_SYN, SYN_REPORT, 0}
380 }; 362 };
381 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0); 363 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0);
382 dev->ReadNow(); 364 dev->ReadNow();
383 EXPECT_EQ(6u, dev->size()); 365 EXPECT_EQ(6u, dev->size());
384 ev0 = dev->event(5); 366 ev0 = dev->event(5);
385 367
386 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0->type()); 368 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type);
387 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); 369 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
388 EXPECT_EQ(39, ev0->x()); 370 EXPECT_EQ(39, ev0.location.x());
389 EXPECT_EQ(51, ev0->y()); 371 EXPECT_EQ(51, ev0.location.y());
390 EXPECT_EQ(0, ev0->touch_id()); 372 EXPECT_EQ(0, ev0.touch_id);
391 EXPECT_FLOAT_EQ(.5f, ev0->force()); 373 EXPECT_FLOAT_EQ(.5f, ev0.pressure);
392 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle());
393 374
394 // Release 0, move 1. 375 // Release 0, move 1.
395 struct input_event mock_kernel_queue_release0_move1[] = { 376 struct input_event mock_kernel_queue_release0_move1[] = {
396 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, 377 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1},
397 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 378 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
398 }; 379 };
399 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0); 380 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0);
400 dev->ReadNow(); 381 dev->ReadNow();
401 EXPECT_EQ(8u, dev->size()); 382 EXPECT_EQ(8u, dev->size());
402 ev0 = dev->event(6); 383 ev0 = dev->event(6);
403 ev1 = dev->event(7); 384 ev1 = dev->event(7);
404 385
405 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0->type()); 386 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0.type);
406 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0->time_stamp()); 387 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
407 EXPECT_EQ(39, ev0->x()); 388 EXPECT_EQ(39, ev0.location.x());
408 EXPECT_EQ(51, ev0->y()); 389 EXPECT_EQ(51, ev0.location.y());
409 EXPECT_EQ(0, ev0->touch_id()); 390 EXPECT_EQ(0, ev0.touch_id);
410 EXPECT_FLOAT_EQ(.5f, ev0->force()); 391 EXPECT_FLOAT_EQ(.5f, ev0.pressure);
411 EXPECT_FLOAT_EQ(0.f, ev0->rotation_angle());
412 392
413 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1->type()); 393 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type);
414 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); 394 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
415 EXPECT_EQ(38, ev1->x()); 395 EXPECT_EQ(38, ev1.location.x());
416 EXPECT_EQ(102, ev1->y()); 396 EXPECT_EQ(102, ev1.location.y());
417 EXPECT_EQ(1, ev1->touch_id()); 397 EXPECT_EQ(1, ev1.touch_id);
418 EXPECT_FLOAT_EQ(.5f, ev1->force()); 398 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
419 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle());
420 399
421 // Release 1. 400 // Release 1.
422 struct input_event mock_kernel_queue_release1[] = { 401 struct input_event mock_kernel_queue_release1[] = {
423 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, 402 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0},
424 }; 403 };
425 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0); 404 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0);
426 dev->ReadNow(); 405 dev->ReadNow();
427 EXPECT_EQ(9u, dev->size()); 406 EXPECT_EQ(9u, dev->size());
428 ev1 = dev->event(8); 407 ev1 = dev->event(8);
429 408
430 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1->type()); 409 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1.type);
431 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1->time_stamp()); 410 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
432 EXPECT_EQ(38, ev1->x()); 411 EXPECT_EQ(38, ev1.location.x());
433 EXPECT_EQ(102, ev1->y()); 412 EXPECT_EQ(102, ev1.location.y());
434 EXPECT_EQ(1, ev1->touch_id()); 413 EXPECT_EQ(1, ev1.touch_id);
435 EXPECT_FLOAT_EQ(.5f, ev1->force()); 414 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
436 EXPECT_FLOAT_EQ(0.f, ev1->rotation_angle());
437 } 415 }
438 416
439 TEST_F(TouchEventConverterEvdevTest, TypeA) { 417 TEST_F(TouchEventConverterEvdevTest, TypeA) {
440 ui::MockTouchEventConverterEvdev* dev = device(); 418 ui::MockTouchEventConverterEvdev* dev = device();
441 419
442 struct input_event mock_kernel_queue_press0[] = { 420 struct input_event mock_kernel_queue_press0[] = {
443 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 421 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
444 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 422 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
445 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 423 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
446 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, 424 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51},
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 496
519 // Check that two events are generated. 497 // Check that two events are generated.
520 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0); 498 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0);
521 dev->ReadNow(); 499 dev->ReadNow();
522 500
523 const unsigned int kExpectedEventCount = 2; 501 const unsigned int kExpectedEventCount = 2;
524 EXPECT_EQ(kExpectedEventCount, dev->size()); 502 EXPECT_EQ(kExpectedEventCount, dev->size());
525 if (kExpectedEventCount != dev->size()) 503 if (kExpectedEventCount != dev->size())
526 return; 504 return;
527 505
528 ui::TouchEvent* ev0 = dev->event(0); 506 ui::TouchEventParams ev0 = dev->event(0);
529 ui::TouchEvent* ev1 = dev->event(1); 507 ui::TouchEventParams ev1 = dev->event(1);
530 508
531 EXPECT_EQ(0, ev0->touch_id()); 509 EXPECT_EQ(0, ev0.touch_id);
532 EXPECT_EQ(999, ev0->x()); 510 EXPECT_EQ(999, ev0.location.x());
533 EXPECT_EQ(888, ev0->y()); 511 EXPECT_EQ(888, ev0.location.y());
534 EXPECT_FLOAT_EQ(0.8333333f, ev0->force()); 512 EXPECT_FLOAT_EQ(0.8333333f, ev0.pressure);
535 513
536 EXPECT_EQ(1, ev1->touch_id()); 514 EXPECT_EQ(1, ev1.touch_id);
537 EXPECT_EQ(777, ev1->x()); 515 EXPECT_EQ(777, ev1.location.x());
538 EXPECT_EQ(666, ev1->y()); 516 EXPECT_EQ(666, ev1.location.y());
539 EXPECT_FLOAT_EQ(0.4666666f, ev1->force()); 517 EXPECT_FLOAT_EQ(0.4666666f, ev1.pressure);
540 } 518 }
541 519
542 // crbug.com/446939 520 // crbug.com/446939
543 TEST_F(TouchEventConverterEvdevTest, CheckSlotLimit) { 521 TEST_F(TouchEventConverterEvdevTest, CheckSlotLimit) {
544 ui::MockTouchEventConverterEvdev* dev = device(); 522 ui::MockTouchEventConverterEvdev* dev = device();
545 523
546 struct input_event mock_kernel_queue[] = { 524 struct input_event mock_kernel_queue[] = {
547 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, 525 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0},
548 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 100}, 526 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 100},
549 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 999}, 527 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 999},
550 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 888}, 528 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 888},
551 {{0, 0}, EV_ABS, ABS_MT_SLOT, ui::TouchEventConverterEvdev::MAX_FINGERS}, 529 {{0, 0}, EV_ABS, ABS_MT_SLOT, ui::TouchEventConverterEvdev::MAX_FINGERS},
552 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 200}, 530 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 200},
553 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 777}, 531 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 777},
554 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 666}, 532 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 666},
555 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 533 {{0, 0}, EV_SYN, SYN_REPORT, 0},
556 }; 534 };
557 535
558 // Check that one 1 event is generated 536 // Check that one 1 event is generated
559 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0); 537 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0);
560 dev->ReadNow(); 538 dev->ReadNow();
561 EXPECT_EQ(1u, dev->size()); 539 EXPECT_EQ(1u, dev->size());
562 } 540 }
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/touch_event_converter_evdev.cc ('k') | ui/events/ozone/events_ozone.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698