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

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

Issue 869613003: [PATCH 5/11] ozone: evdev: Replace dispatch callbacks with an interface (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: updates for events_unittests Created 5 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
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/ozone/evdev/device_event_dispatcher_evdev.h"
20 #include "ui/events/ozone/evdev/touch_event_converter_evdev.h" 21 #include "ui/events/ozone/evdev/touch_event_converter_evdev.h"
21 #include "ui/events/platform/platform_event_dispatcher.h" 22 #include "ui/events/platform/platform_event_dispatcher.h"
22 #include "ui/events/platform/platform_event_source.h" 23 #include "ui/events/platform/platform_event_source.h"
23 24
24 namespace { 25 namespace {
25 26
26 static int SetNonBlocking(int fd) { 27 static int SetNonBlocking(int fd) {
27 int flags = fcntl(fd, F_GETFL, 0); 28 int flags = fcntl(fd, F_GETFL, 0);
28 if (flags == -1) 29 if (flags == -1)
29 flags = 0; 30 flags = 0;
30 return fcntl(fd, F_SETFL, flags | O_NONBLOCK); 31 return fcntl(fd, F_SETFL, flags | O_NONBLOCK);
31 } 32 }
32 33
33 const char kTestDevicePath[] = "/dev/input/test-device"; 34 const char kTestDevicePath[] = "/dev/input/test-device";
34 35
35 } // namespace 36 } // namespace
36 37
37 namespace ui { 38 namespace ui {
38 39
39 class MockTouchEventConverterEvdev : public TouchEventConverterEvdev { 40 class MockTouchEventConverterEvdev : public TouchEventConverterEvdev {
40 public: 41 public:
41 MockTouchEventConverterEvdev(int fd, base::FilePath path); 42 MockTouchEventConverterEvdev(int fd,
43 base::FilePath path,
44 DeviceEventDispatcherEvdev* dispatcher);
42 ~MockTouchEventConverterEvdev() override {} 45 ~MockTouchEventConverterEvdev() override {}
43 46
44 void ConfigureReadMock(struct input_event* queue, 47 void ConfigureReadMock(struct input_event* queue,
45 long read_this_many, 48 long read_this_many,
46 long queue_index); 49 long queue_index);
47 50
48 unsigned size() { return dispatched_events_.size(); }
49 const TouchEventParams& event(unsigned index) {
50 DCHECK_GT(dispatched_events_.size(), index);
51 return dispatched_events_[index];
52 }
53
54 // Actually dispatch the event reader code. 51 // Actually dispatch the event reader code.
55 void ReadNow() { 52 void ReadNow() {
56 OnFileCanReadWithoutBlocking(read_pipe_); 53 OnFileCanReadWithoutBlocking(read_pipe_);
57 base::RunLoop().RunUntilIdle(); 54 base::RunLoop().RunUntilIdle();
58 } 55 }
59 56
60 void DispatchCallback(const TouchEventParams& params) {
61 dispatched_events_.push_back(params);
62 }
63
64 void Initialize(const EventDeviceInfo& device_info) override {} 57 void Initialize(const EventDeviceInfo& device_info) override {}
65 bool Reinitialize() override { return true; } 58 bool Reinitialize() override { return true; }
66 59
67 private: 60 private:
68 int read_pipe_; 61 int read_pipe_;
69 int write_pipe_; 62 int write_pipe_;
70 63
71 std::vector<TouchEventParams> dispatched_events_;
72
73 DISALLOW_COPY_AND_ASSIGN(MockTouchEventConverterEvdev); 64 DISALLOW_COPY_AND_ASSIGN(MockTouchEventConverterEvdev);
74 }; 65 };
75 66
76 MockTouchEventConverterEvdev::MockTouchEventConverterEvdev(int fd, 67 class MockDeviceEventDispatcherEvdev : public DeviceEventDispatcherEvdev {
77 base::FilePath path) 68 public:
78 : TouchEventConverterEvdev( 69 MockDeviceEventDispatcherEvdev(
79 fd, 70 const base::Callback<void(const TouchEventParams& params)>& callback)
80 path, 71 : callback_(callback) {}
81 1, 72 ~MockDeviceEventDispatcherEvdev() {}
82 INPUT_DEVICE_UNKNOWN, 73
83 base::Bind(&MockTouchEventConverterEvdev::DispatchCallback, 74 // DeviceEventDispatcherEvdev:
84 base::Unretained(this))) { 75 void DispatchKeyEvent(int device_id, unsigned int code, bool down) override {}
76 void DispatchMouseMoveEvent(int device_id,
77 const gfx::PointF& location) override {}
78 void DispatchMouseButtonEvent(int device_id,
79 const gfx::PointF& location,
80 unsigned int button,
81 bool down,
82 bool allow_remap) override {}
83 void DispatchMouseWheelEvent(int device_id,
84 const gfx::PointF& location,
85 const gfx::Vector2d& delta) override {}
86 void DispatchScrollEvent(const ScrollEventParams& params) override {}
87 void DispatchTouchEvent(const TouchEventParams& params) override {
88 callback_.Run(params);
89 }
90
91 private:
92 base::Callback<void(const TouchEventParams& params)> callback_;
93 };
94
95 MockTouchEventConverterEvdev::MockTouchEventConverterEvdev(
96 int fd,
97 base::FilePath path,
98 DeviceEventDispatcherEvdev* dispatcher)
99 : TouchEventConverterEvdev(fd, path, 1, INPUT_DEVICE_UNKNOWN, dispatcher) {
85 pressure_min_ = 30; 100 pressure_min_ = 30;
86 pressure_max_ = 60; 101 pressure_max_ = 60;
87 102
88 // TODO(rjkroege): Check test axes. 103 // TODO(rjkroege): Check test axes.
89 x_min_tuxels_ = 0; 104 x_min_tuxels_ = 0;
90 x_num_tuxels_ = std::numeric_limits<int>::max(); 105 x_num_tuxels_ = std::numeric_limits<int>::max();
91 y_min_tuxels_ = 0; 106 y_min_tuxels_ = 0;
92 y_num_tuxels_ = std::numeric_limits<int>::max(); 107 y_num_tuxels_ = std::numeric_limits<int>::max();
93 108
94 int fds[2]; 109 int fds[2];
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 // Set up pipe to satisfy message pump (unused). 142 // Set up pipe to satisfy message pump (unused).
128 int evdev_io[2]; 143 int evdev_io[2];
129 if (pipe(evdev_io)) 144 if (pipe(evdev_io))
130 PLOG(FATAL) << "failed pipe"; 145 PLOG(FATAL) << "failed pipe";
131 events_in_ = evdev_io[0]; 146 events_in_ = evdev_io[0];
132 events_out_ = evdev_io[1]; 147 events_out_ = evdev_io[1];
133 148
134 // Device creation happens on a worker thread since it may involve blocking 149 // Device creation happens on a worker thread since it may involve blocking
135 // operations. Simulate that by creating it before creating a UI message 150 // operations. Simulate that by creating it before creating a UI message
136 // loop. 151 // loop.
152 dispatcher_.reset(new ui::MockDeviceEventDispatcherEvdev(
153 base::Bind(&TouchEventConverterEvdevTest::DispatchCallback,
154 base::Unretained(this))));
137 device_ = new ui::MockTouchEventConverterEvdev( 155 device_ = new ui::MockTouchEventConverterEvdev(
138 events_in_, base::FilePath(kTestDevicePath)); 156 events_in_, base::FilePath(kTestDevicePath), dispatcher_.get());
139 loop_ = new base::MessageLoopForUI; 157 loop_ = new base::MessageLoopForUI;
140 158
141 ui::DeviceDataManager::CreateInstance(); 159 ui::DeviceDataManager::CreateInstance();
142 } 160 }
143 161
144 void TearDown() override { 162 void TearDown() override {
145 delete device_; 163 delete device_;
146 delete loop_; 164 delete loop_;
147 } 165 }
148 166
149 ui::MockTouchEventConverterEvdev* device() { return device_; } 167 ui::MockTouchEventConverterEvdev* device() { return device_; }
150 168
169 unsigned size() { return dispatched_events_.size(); }
170 const ui::TouchEventParams& dispatched_event(unsigned index) {
171 DCHECK_GT(dispatched_events_.size(), index);
172 return dispatched_events_[index];
173 }
174
151 private: 175 private:
152 base::MessageLoop* loop_; 176 base::MessageLoop* loop_;
153 ui::MockTouchEventConverterEvdev* device_; 177 ui::MockTouchEventConverterEvdev* device_;
178 scoped_ptr<ui::MockDeviceEventDispatcherEvdev> dispatcher_;
154 179
155 int events_out_; 180 int events_out_;
156 int events_in_; 181 int events_in_;
157 182
183 void DispatchCallback(const ui::TouchEventParams& params) {
184 dispatched_events_.push_back(params);
185 }
186 std::vector<ui::TouchEventParams> dispatched_events_;
187
158 DISALLOW_COPY_AND_ASSIGN(TouchEventConverterEvdevTest); 188 DISALLOW_COPY_AND_ASSIGN(TouchEventConverterEvdevTest);
159 }; 189 };
160 190
161 // TODO(rjkroege): Test for valid handling of time stamps. 191 // TODO(rjkroege): Test for valid handling of time stamps.
162 TEST_F(TouchEventConverterEvdevTest, TouchDown) { 192 TEST_F(TouchEventConverterEvdevTest, TouchDown) {
163 ui::MockTouchEventConverterEvdev* dev = device(); 193 ui::MockTouchEventConverterEvdev* dev = device();
164 194
165 struct input_event mock_kernel_queue[] = { 195 struct input_event mock_kernel_queue[] = {
166 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 196 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
167 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 197 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
168 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 198 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
169 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 199 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
170 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 200 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
171 }; 201 };
172 202
173 dev->ConfigureReadMock(mock_kernel_queue, 1, 0); 203 dev->ConfigureReadMock(mock_kernel_queue, 1, 0);
174 dev->ReadNow(); 204 dev->ReadNow();
175 EXPECT_EQ(0u, dev->size()); 205 EXPECT_EQ(0u, size());
176 206
177 dev->ConfigureReadMock(mock_kernel_queue, 2, 1); 207 dev->ConfigureReadMock(mock_kernel_queue, 2, 1);
178 dev->ReadNow(); 208 dev->ReadNow();
179 EXPECT_EQ(0u, dev->size()); 209 EXPECT_EQ(0u, size());
180 210
181 dev->ConfigureReadMock(mock_kernel_queue, 3, 3); 211 dev->ConfigureReadMock(mock_kernel_queue, 3, 3);
182 dev->ReadNow(); 212 dev->ReadNow();
183 EXPECT_EQ(1u, dev->size()); 213 EXPECT_EQ(1u, size());
184 214
185 ui::TouchEventParams event = dev->event(0); 215 ui::TouchEventParams event = dispatched_event(0);
186 216
187 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event.type); 217 EXPECT_EQ(ui::ET_TOUCH_PRESSED, event.type);
188 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp); 218 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
189 EXPECT_EQ(42, event.location.x()); 219 EXPECT_EQ(42, event.location.x());
190 EXPECT_EQ(51, event.location.y()); 220 EXPECT_EQ(51, event.location.y());
191 EXPECT_EQ(0, event.touch_id); 221 EXPECT_EQ(0, event.touch_id);
192 EXPECT_FLOAT_EQ(1.5f, event.radii.x()); 222 EXPECT_FLOAT_EQ(1.5f, event.radii.x());
193 EXPECT_FLOAT_EQ(.5f, event.pressure); 223 EXPECT_FLOAT_EQ(.5f, event.pressure);
194 } 224 }
195 225
196 TEST_F(TouchEventConverterEvdevTest, NoEvents) { 226 TEST_F(TouchEventConverterEvdevTest, NoEvents) {
197 ui::MockTouchEventConverterEvdev* dev = device(); 227 ui::MockTouchEventConverterEvdev* dev = device();
198 dev->ConfigureReadMock(NULL, 0, 0); 228 dev->ConfigureReadMock(NULL, 0, 0);
199 EXPECT_EQ(0u, dev->size()); 229 EXPECT_EQ(0u, size());
200 } 230 }
201 231
202 TEST_F(TouchEventConverterEvdevTest, TouchMove) { 232 TEST_F(TouchEventConverterEvdevTest, TouchMove) {
203 ui::MockTouchEventConverterEvdev* dev = device(); 233 ui::MockTouchEventConverterEvdev* dev = device();
204 234
205 struct input_event mock_kernel_queue_press[] = { 235 struct input_event mock_kernel_queue_press[] = {
206 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 236 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
207 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 237 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
208 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 238 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
209 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 239 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
210 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 240 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
211 }; 241 };
212 242
213 struct input_event mock_kernel_queue_move1[] = { 243 struct input_event mock_kernel_queue_move1[] = {
214 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 50}, 244 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 50},
215 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 245 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
216 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 43}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 246 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 43}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
217 }; 247 };
218 248
219 struct input_event mock_kernel_queue_move2[] = { 249 struct input_event mock_kernel_queue_move2[] = {
220 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 42}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 250 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 42}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
221 }; 251 };
222 252
223 // Setup and discard a press. 253 // Setup and discard a press.
224 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0); 254 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0);
225 dev->ReadNow(); 255 dev->ReadNow();
226 EXPECT_EQ(1u, dev->size()); 256 EXPECT_EQ(1u, size());
227 257
228 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0); 258 dev->ConfigureReadMock(mock_kernel_queue_move1, 4, 0);
229 dev->ReadNow(); 259 dev->ReadNow();
230 EXPECT_EQ(2u, dev->size()); 260 EXPECT_EQ(2u, size());
231 ui::TouchEventParams event = dev->event(1); 261 ui::TouchEventParams event = dispatched_event(1);
232 262
233 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type); 263 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type);
234 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp); 264 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
235 EXPECT_EQ(42, event.location.x()); 265 EXPECT_EQ(42, event.location.x());
236 EXPECT_EQ(43, event.location.y()); 266 EXPECT_EQ(43, event.location.y());
237 EXPECT_EQ(0, event.touch_id); 267 EXPECT_EQ(0, event.touch_id);
238 EXPECT_FLOAT_EQ(2.f / 3.f, event.pressure); 268 EXPECT_FLOAT_EQ(2.f / 3.f, event.pressure);
239 269
240 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0); 270 dev->ConfigureReadMock(mock_kernel_queue_move2, 2, 0);
241 dev->ReadNow(); 271 dev->ReadNow();
242 EXPECT_EQ(3u, dev->size()); 272 EXPECT_EQ(3u, size());
243 event = dev->event(2); 273 event = dispatched_event(2);
244 274
245 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type); 275 EXPECT_EQ(ui::ET_TOUCH_MOVED, event.type);
246 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp); 276 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
247 EXPECT_EQ(42, event.location.x()); 277 EXPECT_EQ(42, event.location.x());
248 EXPECT_EQ(42, event.location.y()); 278 EXPECT_EQ(42, event.location.y());
249 EXPECT_EQ(0, event.touch_id); 279 EXPECT_EQ(0, event.touch_id);
250 EXPECT_FLOAT_EQ(2.f / 3.f, event.pressure); 280 EXPECT_FLOAT_EQ(2.f / 3.f, event.pressure);
251 } 281 }
252 282
253 TEST_F(TouchEventConverterEvdevTest, TouchRelease) { 283 TEST_F(TouchEventConverterEvdevTest, TouchRelease) {
254 ui::MockTouchEventConverterEvdev* dev = device(); 284 ui::MockTouchEventConverterEvdev* dev = device();
255 285
256 struct input_event mock_kernel_queue_press[] = { 286 struct input_event mock_kernel_queue_press[] = {
257 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 287 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
258 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 288 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
259 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 289 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
260 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 290 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
261 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 291 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
262 }; 292 };
263 293
264 struct input_event mock_kernel_queue_release[] = { 294 struct input_event mock_kernel_queue_release[] = {
265 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 295 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
266 }; 296 };
267 297
268 // Setup and discard a press. 298 // Setup and discard a press.
269 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0); 299 dev->ConfigureReadMock(mock_kernel_queue_press, 6, 0);
270 dev->ReadNow(); 300 dev->ReadNow();
271 EXPECT_EQ(1u, dev->size()); 301 EXPECT_EQ(1u, size());
272 ui::TouchEventParams event = dev->event(0); 302 ui::TouchEventParams event = dispatched_event(0);
273 303
274 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0); 304 dev->ConfigureReadMock(mock_kernel_queue_release, 2, 0);
275 dev->ReadNow(); 305 dev->ReadNow();
276 EXPECT_EQ(2u, dev->size()); 306 EXPECT_EQ(2u, size());
277 event = dev->event(1); 307 event = dispatched_event(1);
278 308
279 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event.type); 309 EXPECT_EQ(ui::ET_TOUCH_RELEASED, event.type);
280 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp); 310 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), event.timestamp);
281 EXPECT_EQ(42, event.location.x()); 311 EXPECT_EQ(42, event.location.x());
282 EXPECT_EQ(51, event.location.y()); 312 EXPECT_EQ(51, event.location.y());
283 EXPECT_EQ(0, event.touch_id); 313 EXPECT_EQ(0, event.touch_id);
284 EXPECT_FLOAT_EQ(.5f, event.pressure); 314 EXPECT_FLOAT_EQ(.5f, event.pressure);
285 } 315 }
286 316
287 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) { 317 TEST_F(TouchEventConverterEvdevTest, TwoFingerGesture) {
288 ui::MockTouchEventConverterEvdev* dev = device(); 318 ui::MockTouchEventConverterEvdev* dev = device();
289 319
290 struct input_event mock_kernel_queue_press0[] = { 320 struct input_event mock_kernel_queue_press0[] = {
291 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 321 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
292 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 322 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
293 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 323 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
294 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 324 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
295 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 325 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
296 }; 326 };
297 // Setup and discard a press. 327 // Setup and discard a press.
298 dev->ConfigureReadMock(mock_kernel_queue_press0, 6, 0); 328 dev->ConfigureReadMock(mock_kernel_queue_press0, 6, 0);
299 dev->ReadNow(); 329 dev->ReadNow();
300 EXPECT_EQ(1u, dev->size()); 330 EXPECT_EQ(1u, size());
301 331
302 struct input_event mock_kernel_queue_move0[] = { 332 struct input_event mock_kernel_queue_move0[] = {
303 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 333 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
304 }; 334 };
305 // Setup and discard a move. 335 // Setup and discard a move.
306 dev->ConfigureReadMock(mock_kernel_queue_move0, 2, 0); 336 dev->ConfigureReadMock(mock_kernel_queue_move0, 2, 0);
307 dev->ReadNow(); 337 dev->ReadNow();
308 EXPECT_EQ(2u, dev->size()); 338 EXPECT_EQ(2u, size());
309 339
310 struct input_event mock_kernel_queue_move0press1[] = { 340 struct input_event mock_kernel_queue_move0press1[] = {
311 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, 341 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0},
312 {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 686}, 342 {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 686},
313 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 343 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
314 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 344 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
315 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 101}, 345 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 101},
316 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 102}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 346 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 102}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
317 }; 347 };
318 // Move on 0, press on 1. 348 // Move on 0, press on 1.
319 dev->ConfigureReadMock(mock_kernel_queue_move0press1, 9, 0); 349 dev->ConfigureReadMock(mock_kernel_queue_move0press1, 9, 0);
320 dev->ReadNow(); 350 dev->ReadNow();
321 EXPECT_EQ(4u, dev->size()); 351 EXPECT_EQ(4u, size());
322 ui::TouchEventParams ev0 = dev->event(2); 352 ui::TouchEventParams ev0 = dispatched_event(2);
323 ui::TouchEventParams ev1 = dev->event(3); 353 ui::TouchEventParams ev1 = dispatched_event(3);
324 354
325 // Move 355 // Move
326 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type); 356 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type);
327 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp); 357 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
328 EXPECT_EQ(40, ev0.location.x()); 358 EXPECT_EQ(40, ev0.location.x());
329 EXPECT_EQ(51, ev0.location.y()); 359 EXPECT_EQ(51, ev0.location.y());
330 EXPECT_EQ(0, ev0.touch_id); 360 EXPECT_EQ(0, ev0.touch_id);
331 EXPECT_FLOAT_EQ(.5f, ev0.pressure); 361 EXPECT_FLOAT_EQ(.5f, ev0.pressure);
332 362
333 // Press 363 // Press
334 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1.type); 364 EXPECT_EQ(ui::ET_TOUCH_PRESSED, ev1.type);
335 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 365 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
336 EXPECT_EQ(101, ev1.location.x()); 366 EXPECT_EQ(101, ev1.location.x());
337 EXPECT_EQ(102, ev1.location.y()); 367 EXPECT_EQ(102, ev1.location.y());
338 EXPECT_EQ(1, ev1.touch_id); 368 EXPECT_EQ(1, ev1.touch_id);
339 EXPECT_FLOAT_EQ(.5f, ev1.pressure); 369 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
340 370
341 // Stationary 0, Moves 1. 371 // Stationary 0, Moves 1.
342 struct input_event mock_kernel_queue_stationary0_move1[] = { 372 struct input_event mock_kernel_queue_stationary0_move1[] = {
343 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 373 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
344 }; 374 };
345 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0); 375 dev->ConfigureReadMock(mock_kernel_queue_stationary0_move1, 2, 0);
346 dev->ReadNow(); 376 dev->ReadNow();
347 EXPECT_EQ(5u, dev->size()); 377 EXPECT_EQ(5u, size());
348 ev1 = dev->event(4); 378 ev1 = dispatched_event(4);
349 379
350 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type); 380 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type);
351 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 381 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
352 EXPECT_EQ(40, ev1.location.x()); 382 EXPECT_EQ(40, ev1.location.x());
353 EXPECT_EQ(102, ev1.location.y()); 383 EXPECT_EQ(102, ev1.location.y());
354 EXPECT_EQ(1, ev1.touch_id); 384 EXPECT_EQ(1, ev1.touch_id);
355 385
356 EXPECT_FLOAT_EQ(.5f, ev1.pressure); 386 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
357 387
358 // Move 0, stationary 1. 388 // Move 0, stationary 1.
359 struct input_event mock_kernel_queue_move0_stationary1[] = { 389 struct input_event mock_kernel_queue_move0_stationary1[] = {
360 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39}, 390 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 39},
361 {{0, 0}, EV_SYN, SYN_REPORT, 0} 391 {{0, 0}, EV_SYN, SYN_REPORT, 0}
362 }; 392 };
363 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0); 393 dev->ConfigureReadMock(mock_kernel_queue_move0_stationary1, 3, 0);
364 dev->ReadNow(); 394 dev->ReadNow();
365 EXPECT_EQ(6u, dev->size()); 395 EXPECT_EQ(6u, size());
366 ev0 = dev->event(5); 396 ev0 = dispatched_event(5);
367 397
368 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type); 398 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev0.type);
369 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp); 399 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
370 EXPECT_EQ(39, ev0.location.x()); 400 EXPECT_EQ(39, ev0.location.x());
371 EXPECT_EQ(51, ev0.location.y()); 401 EXPECT_EQ(51, ev0.location.y());
372 EXPECT_EQ(0, ev0.touch_id); 402 EXPECT_EQ(0, ev0.touch_id);
373 EXPECT_FLOAT_EQ(.5f, ev0.pressure); 403 EXPECT_FLOAT_EQ(.5f, ev0.pressure);
374 404
375 // Release 0, move 1. 405 // Release 0, move 1.
376 struct input_event mock_kernel_queue_release0_move1[] = { 406 struct input_event mock_kernel_queue_release0_move1[] = {
377 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, 407 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_ABS, ABS_MT_SLOT, 1},
378 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 408 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 38}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
379 }; 409 };
380 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0); 410 dev->ConfigureReadMock(mock_kernel_queue_release0_move1, 4, 0);
381 dev->ReadNow(); 411 dev->ReadNow();
382 EXPECT_EQ(8u, dev->size()); 412 EXPECT_EQ(8u, size());
383 ev0 = dev->event(6); 413 ev0 = dispatched_event(6);
384 ev1 = dev->event(7); 414 ev1 = dispatched_event(7);
385 415
386 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0.type); 416 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev0.type);
387 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp); 417 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev0.timestamp);
388 EXPECT_EQ(39, ev0.location.x()); 418 EXPECT_EQ(39, ev0.location.x());
389 EXPECT_EQ(51, ev0.location.y()); 419 EXPECT_EQ(51, ev0.location.y());
390 EXPECT_EQ(0, ev0.touch_id); 420 EXPECT_EQ(0, ev0.touch_id);
391 EXPECT_FLOAT_EQ(.5f, ev0.pressure); 421 EXPECT_FLOAT_EQ(.5f, ev0.pressure);
392 422
393 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type); 423 EXPECT_EQ(ui::ET_TOUCH_MOVED, ev1.type);
394 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 424 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
395 EXPECT_EQ(38, ev1.location.x()); 425 EXPECT_EQ(38, ev1.location.x());
396 EXPECT_EQ(102, ev1.location.y()); 426 EXPECT_EQ(102, ev1.location.y());
397 EXPECT_EQ(1, ev1.touch_id); 427 EXPECT_EQ(1, ev1.touch_id);
398 EXPECT_FLOAT_EQ(.5f, ev1.pressure); 428 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
399 429
400 // Release 1. 430 // Release 1.
401 struct input_event mock_kernel_queue_release1[] = { 431 struct input_event mock_kernel_queue_release1[] = {
402 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0}, 432 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, -1}, {{0, 0}, EV_SYN, SYN_REPORT, 0},
403 }; 433 };
404 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0); 434 dev->ConfigureReadMock(mock_kernel_queue_release1, 2, 0);
405 dev->ReadNow(); 435 dev->ReadNow();
406 EXPECT_EQ(9u, dev->size()); 436 EXPECT_EQ(9u, size());
407 ev1 = dev->event(8); 437 ev1 = dispatched_event(8);
408 438
409 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1.type); 439 EXPECT_EQ(ui::ET_TOUCH_RELEASED, ev1.type);
410 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp); 440 EXPECT_EQ(base::TimeDelta::FromMicroseconds(0), ev1.timestamp);
411 EXPECT_EQ(38, ev1.location.x()); 441 EXPECT_EQ(38, ev1.location.x());
412 EXPECT_EQ(102, ev1.location.y()); 442 EXPECT_EQ(102, ev1.location.y());
413 EXPECT_EQ(1, ev1.touch_id); 443 EXPECT_EQ(1, ev1.touch_id);
414 EXPECT_FLOAT_EQ(.5f, ev1.pressure); 444 EXPECT_FLOAT_EQ(.5f, ev1.pressure);
415 } 445 }
416 446
417 TEST_F(TouchEventConverterEvdevTest, TypeA) { 447 TEST_F(TouchEventConverterEvdevTest, TypeA) {
418 ui::MockTouchEventConverterEvdev* dev = device(); 448 ui::MockTouchEventConverterEvdev* dev = device();
419 449
420 struct input_event mock_kernel_queue_press0[] = { 450 struct input_event mock_kernel_queue_press0[] = {
421 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 451 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
422 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 452 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
423 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 453 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
424 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, 454 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51},
425 {{0, 0}, EV_SYN, SYN_MT_REPORT, 0}, 455 {{0, 0}, EV_SYN, SYN_MT_REPORT, 0},
426 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 456 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
427 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 61}, 457 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 61},
428 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 71}, 458 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 71},
429 {{0, 0}, EV_SYN, SYN_MT_REPORT, 0}, 459 {{0, 0}, EV_SYN, SYN_MT_REPORT, 0},
430 {{0, 0}, EV_SYN, SYN_REPORT, 0} 460 {{0, 0}, EV_SYN, SYN_REPORT, 0}
431 }; 461 };
432 462
433 // Check that two events are generated. 463 // Check that two events are generated.
434 dev->ConfigureReadMock(mock_kernel_queue_press0, 10, 0); 464 dev->ConfigureReadMock(mock_kernel_queue_press0, 10, 0);
435 dev->ReadNow(); 465 dev->ReadNow();
436 EXPECT_EQ(2u, dev->size()); 466 EXPECT_EQ(2u, size());
437 } 467 }
438 468
439 TEST_F(TouchEventConverterEvdevTest, Unsync) { 469 TEST_F(TouchEventConverterEvdevTest, Unsync) {
440 ui::MockTouchEventConverterEvdev* dev = device(); 470 ui::MockTouchEventConverterEvdev* dev = device();
441 471
442 struct input_event mock_kernel_queue_press0[] = { 472 struct input_event mock_kernel_queue_press0[] = {
443 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684}, 473 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 684},
444 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3}, 474 {{0, 0}, EV_ABS, ABS_MT_TOUCH_MAJOR, 3},
445 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45}, 475 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 45},
446 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42}, 476 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 42},
447 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 477 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 51}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
448 }; 478 };
449 479
450 dev->ConfigureReadMock(mock_kernel_queue_press0, 6, 0); 480 dev->ConfigureReadMock(mock_kernel_queue_press0, 6, 0);
451 dev->ReadNow(); 481 dev->ReadNow();
452 EXPECT_EQ(1u, dev->size()); 482 EXPECT_EQ(1u, size());
453 483
454 // Prepare a move with a drop. 484 // Prepare a move with a drop.
455 struct input_event mock_kernel_queue_move0[] = { 485 struct input_event mock_kernel_queue_move0[] = {
456 {{0, 0}, EV_SYN, SYN_DROPPED, 0}, 486 {{0, 0}, EV_SYN, SYN_DROPPED, 0},
457 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 487 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
458 }; 488 };
459 489
460 // Verify that we didn't receive it/ 490 // Verify that we didn't receive it/
461 dev->ConfigureReadMock(mock_kernel_queue_move0, 3, 0); 491 dev->ConfigureReadMock(mock_kernel_queue_move0, 3, 0);
462 dev->ReadNow(); 492 dev->ReadNow();
463 EXPECT_EQ(1u, dev->size()); 493 EXPECT_EQ(1u, size());
464 494
465 struct input_event mock_kernel_queue_move1[] = { 495 struct input_event mock_kernel_queue_move1[] = {
466 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0} 496 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 40}, {{0, 0}, EV_SYN, SYN_REPORT, 0}
467 }; 497 };
468 498
469 // Verify that it re-syncs after a SYN_REPORT. 499 // Verify that it re-syncs after a SYN_REPORT.
470 dev->ConfigureReadMock(mock_kernel_queue_move1, 2, 0); 500 dev->ConfigureReadMock(mock_kernel_queue_move1, 2, 0);
471 dev->ReadNow(); 501 dev->ReadNow();
472 EXPECT_EQ(2u, dev->size()); 502 EXPECT_EQ(2u, size());
473 } 503 }
474 504
475 // crbug.com/407386 505 // crbug.com/407386
476 TEST_F(TouchEventConverterEvdevTest, 506 TEST_F(TouchEventConverterEvdevTest,
477 DontChangeMultitouchPositionFromLegacyAxes) { 507 DontChangeMultitouchPositionFromLegacyAxes) {
478 ui::MockTouchEventConverterEvdev* dev = device(); 508 ui::MockTouchEventConverterEvdev* dev = device();
479 509
480 struct input_event mock_kernel_queue[] = { 510 struct input_event mock_kernel_queue[] = {
481 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0}, 511 {{0, 0}, EV_ABS, ABS_MT_SLOT, 0},
482 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 100}, 512 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 100},
483 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 999}, 513 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 999},
484 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 888}, 514 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 888},
485 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 55}, 515 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 55},
486 {{0, 0}, EV_ABS, ABS_MT_SLOT, 1}, 516 {{0, 0}, EV_ABS, ABS_MT_SLOT, 1},
487 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 200}, 517 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 200},
488 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 44}, 518 {{0, 0}, EV_ABS, ABS_MT_PRESSURE, 44},
489 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 777}, 519 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 777},
490 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 666}, 520 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 666},
491 {{0, 0}, EV_ABS, ABS_X, 999}, 521 {{0, 0}, EV_ABS, ABS_X, 999},
492 {{0, 0}, EV_ABS, ABS_Y, 888}, 522 {{0, 0}, EV_ABS, ABS_Y, 888},
493 {{0, 0}, EV_ABS, ABS_PRESSURE, 55}, 523 {{0, 0}, EV_ABS, ABS_PRESSURE, 55},
494 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 524 {{0, 0}, EV_SYN, SYN_REPORT, 0},
495 }; 525 };
496 526
497 // Check that two events are generated. 527 // Check that two events are generated.
498 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0); 528 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0);
499 dev->ReadNow(); 529 dev->ReadNow();
500 530
501 const unsigned int kExpectedEventCount = 2; 531 const unsigned int kExpectedEventCount = 2;
502 EXPECT_EQ(kExpectedEventCount, dev->size()); 532 EXPECT_EQ(kExpectedEventCount, size());
503 if (kExpectedEventCount != dev->size()) 533 if (kExpectedEventCount != size())
504 return; 534 return;
505 535
506 ui::TouchEventParams ev0 = dev->event(0); 536 ui::TouchEventParams ev0 = dispatched_event(0);
507 ui::TouchEventParams ev1 = dev->event(1); 537 ui::TouchEventParams ev1 = dispatched_event(1);
508 538
509 EXPECT_EQ(0, ev0.touch_id); 539 EXPECT_EQ(0, ev0.touch_id);
510 EXPECT_EQ(999, ev0.location.x()); 540 EXPECT_EQ(999, ev0.location.x());
511 EXPECT_EQ(888, ev0.location.y()); 541 EXPECT_EQ(888, ev0.location.y());
512 EXPECT_FLOAT_EQ(0.8333333f, ev0.pressure); 542 EXPECT_FLOAT_EQ(0.8333333f, ev0.pressure);
513 543
514 EXPECT_EQ(1, ev1.touch_id); 544 EXPECT_EQ(1, ev1.touch_id);
515 EXPECT_EQ(777, ev1.location.x()); 545 EXPECT_EQ(777, ev1.location.x());
516 EXPECT_EQ(666, ev1.location.y()); 546 EXPECT_EQ(666, ev1.location.y());
517 EXPECT_FLOAT_EQ(0.4666666f, ev1.pressure); 547 EXPECT_FLOAT_EQ(0.4666666f, ev1.pressure);
(...skipping 11 matching lines...) Expand all
529 {{0, 0}, EV_ABS, ABS_MT_SLOT, ui::TouchEventConverterEvdev::MAX_FINGERS}, 559 {{0, 0}, EV_ABS, ABS_MT_SLOT, ui::TouchEventConverterEvdev::MAX_FINGERS},
530 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 200}, 560 {{0, 0}, EV_ABS, ABS_MT_TRACKING_ID, 200},
531 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 777}, 561 {{0, 0}, EV_ABS, ABS_MT_POSITION_X, 777},
532 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 666}, 562 {{0, 0}, EV_ABS, ABS_MT_POSITION_Y, 666},
533 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 563 {{0, 0}, EV_SYN, SYN_REPORT, 0},
534 }; 564 };
535 565
536 // Check that one 1 event is generated 566 // Check that one 1 event is generated
537 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0); 567 dev->ConfigureReadMock(mock_kernel_queue, arraysize(mock_kernel_queue), 0);
538 dev->ReadNow(); 568 dev->ReadNow();
539 EXPECT_EQ(1u, dev->size()); 569 EXPECT_EQ(1u, size());
540 } 570 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698