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

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