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

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

Issue 677113002: ozone: evdev: Handle mouse events (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix nits and a small bug Created 6 years, 1 month 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 <linux/input.h> 5 #include <linux/input.h>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/events/event.h" 12 #include "ui/events/event.h"
13 #include "ui/events/keycodes/keyboard_codes.h" 13 #include "ui/events/keycodes/keyboard_codes.h"
14 #include "ui/events/ozone/evdev/key_event_converter_evdev.h" 14 #include "ui/events/ozone/evdev/event_converter_evdev_impl.h"
15 #include "ui/events/ozone/evdev/keyboard_evdev.h" 15 #include "ui/events/ozone/evdev/keyboard_evdev.h"
16 16
17 namespace ui { 17 namespace ui {
18 18
19 const char kTestDevicePath[] = "/dev/input/test-device"; 19 const char kTestDevicePath[] = "/dev/input/test-device";
20 20
21 class MockKeyEventConverterEvdev : public KeyEventConverterEvdev { 21 class MockEventConverterEvdevImpl : public EventConverterEvdevImpl {
22 public: 22 public:
23 MockKeyEventConverterEvdev(int fd, KeyboardEvdev* keyboard) 23 MockEventConverterEvdevImpl(int fd, KeyboardEvdev* keyboard)
24 : KeyEventConverterEvdev(fd, 24 : EventConverterEvdevImpl(fd,
25 base::FilePath(kTestDevicePath), 25 base::FilePath(kTestDevicePath),
26 1, 26 1,
27 keyboard) { 27 keyboard) {
28 Start(); 28 Start();
29 } 29 }
30 virtual ~MockKeyEventConverterEvdev() {}; 30 virtual ~MockEventConverterEvdevImpl() {}
31 31
32 private: 32 private:
33 DISALLOW_COPY_AND_ASSIGN(MockKeyEventConverterEvdev); 33 DISALLOW_COPY_AND_ASSIGN(MockEventConverterEvdevImpl);
34 }; 34 };
35 35
36 } // namespace ui 36 } // namespace ui
37 37
38 // Test fixture. 38 // Test fixture.
39 class KeyEventConverterEvdevTest : public testing::Test { 39 class EventConverterEvdevImplTest : public testing::Test {
40 public: 40 public:
41 KeyEventConverterEvdevTest() {} 41 EventConverterEvdevImplTest() {}
42 42
43 // Overridden from testing::Test: 43 // Overridden from testing::Test:
44 virtual void SetUp() override { 44 void SetUp() override {
45
46 // Set up pipe to satisfy message pump (unused). 45 // Set up pipe to satisfy message pump (unused).
47 int evdev_io[2]; 46 int evdev_io[2];
48 if (pipe(evdev_io)) 47 if (pipe(evdev_io))
49 PLOG(FATAL) << "failed pipe"; 48 PLOG(FATAL) << "failed pipe";
50 events_in_ = evdev_io[0]; 49 events_in_ = evdev_io[0];
51 events_out_ = evdev_io[1]; 50 events_out_ = evdev_io[1];
52 51
53 modifiers_.reset(new ui::EventModifiersEvdev()); 52 modifiers_.reset(new ui::EventModifiersEvdev());
54 keyboard_.reset(new ui::KeyboardEvdev( 53 keyboard_.reset(new ui::KeyboardEvdev(
55 modifiers_.get(), 54 modifiers_.get(),
56 base::Bind(&KeyEventConverterEvdevTest::DispatchEventForTest, 55 base::Bind(&EventConverterEvdevImplTest::DispatchEventForTest,
57 base::Unretained(this)))); 56 base::Unretained(this))));
58 device_.reset( 57 device_.reset(
59 new ui::MockKeyEventConverterEvdev(events_in_, keyboard_.get())); 58 new ui::MockEventConverterEvdevImpl(events_in_, keyboard_.get()));
60 } 59 }
61 virtual void TearDown() override { 60 void TearDown() override {
62 device_.reset(); 61 device_.reset();
63 keyboard_.reset(); 62 keyboard_.reset();
64 modifiers_.reset(); 63 modifiers_.reset();
65 close(events_in_); 64 close(events_in_);
66 close(events_out_); 65 close(events_out_);
67 } 66 }
68 67
69 ui::MockKeyEventConverterEvdev* device() { return device_.get(); } 68 ui::MockEventConverterEvdevImpl* device() { return device_.get(); }
70 ui::EventModifiersEvdev* modifiers() { return modifiers_.get(); } 69 ui::EventModifiersEvdev* modifiers() { return modifiers_.get(); }
71 70
72 unsigned size() { return dispatched_events_.size(); } 71 unsigned size() { return dispatched_events_.size(); }
73 ui::KeyEvent* dispatched_event(unsigned index) { 72 ui::KeyEvent* dispatched_event(unsigned index) {
74 DCHECK_GT(dispatched_events_.size(), index); 73 DCHECK_GT(dispatched_events_.size(), index);
75 ui::Event* ev = dispatched_events_[index]; 74 ui::Event* ev = dispatched_events_[index];
76 DCHECK(ev->IsKeyEvent()); 75 DCHECK(ev->IsKeyEvent());
77 return static_cast<ui::KeyEvent*>(ev); 76 return static_cast<ui::KeyEvent*>(ev);
78 } 77 }
79 78
80 private: 79 private:
81 void DispatchEventForTest(scoped_ptr<ui::Event> event) { 80 void DispatchEventForTest(scoped_ptr<ui::Event> event) {
82 dispatched_events_.push_back(event.release()); 81 dispatched_events_.push_back(event.release());
83 } 82 }
84 83
85 base::MessageLoopForUI ui_loop_; 84 base::MessageLoopForUI ui_loop_;
86 85
87 scoped_ptr<ui::EventModifiersEvdev> modifiers_; 86 scoped_ptr<ui::EventModifiersEvdev> modifiers_;
88 scoped_ptr<ui::KeyboardEvdev> keyboard_; 87 scoped_ptr<ui::KeyboardEvdev> keyboard_;
89 scoped_ptr<ui::MockKeyEventConverterEvdev> device_; 88 scoped_ptr<ui::MockEventConverterEvdevImpl> device_;
90 89
91 ScopedVector<ui::Event> dispatched_events_; 90 ScopedVector<ui::Event> dispatched_events_;
92 91
93 int events_out_; 92 int events_out_;
94 int events_in_; 93 int events_in_;
95 94
96 DISALLOW_COPY_AND_ASSIGN(KeyEventConverterEvdevTest); 95 DISALLOW_COPY_AND_ASSIGN(EventConverterEvdevImplTest);
97 }; 96 };
98 97
99 TEST_F(KeyEventConverterEvdevTest, KeyPress) { 98 TEST_F(EventConverterEvdevImplTest, KeyPress) {
100 ui::MockKeyEventConverterEvdev* dev = device(); 99 ui::MockEventConverterEvdevImpl* dev = device();
101 100
102 struct input_event mock_kernel_queue[] = { 101 struct input_event mock_kernel_queue[] = {
103 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a}, 102 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a},
104 {{0, 0}, EV_KEY, KEY_BACKSPACE, 1}, 103 {{0, 0}, EV_KEY, KEY_BACKSPACE, 1},
105 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 104 {{0, 0}, EV_SYN, SYN_REPORT, 0},
106 105
107 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a}, 106 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a},
108 {{0, 0}, EV_KEY, KEY_BACKSPACE, 0}, 107 {{0, 0}, EV_KEY, KEY_BACKSPACE, 0},
109 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 108 {{0, 0}, EV_SYN, SYN_REPORT, 0},
110 }; 109 };
111 110
112 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 111 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
113 EXPECT_EQ(2u, size()); 112 EXPECT_EQ(2u, size());
114 113
115 ui::KeyEvent* event; 114 ui::KeyEvent* event;
116 115
117 event = dispatched_event(0); 116 event = dispatched_event(0);
118 EXPECT_EQ(ui::ET_KEY_PRESSED, event->type()); 117 EXPECT_EQ(ui::ET_KEY_PRESSED, event->type());
119 EXPECT_EQ(ui::VKEY_BACK, event->key_code()); 118 EXPECT_EQ(ui::VKEY_BACK, event->key_code());
120 EXPECT_EQ(0, event->flags()); 119 EXPECT_EQ(0, event->flags());
121 120
122 event = dispatched_event(1); 121 event = dispatched_event(1);
123 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type()); 122 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
124 EXPECT_EQ(ui::VKEY_BACK, event->key_code()); 123 EXPECT_EQ(ui::VKEY_BACK, event->key_code());
125 EXPECT_EQ(0, event->flags()); 124 EXPECT_EQ(0, event->flags());
126 } 125 }
127 126
128 TEST_F(KeyEventConverterEvdevTest, KeyRepeat) { 127 TEST_F(EventConverterEvdevImplTest, KeyRepeat) {
129 ui::MockKeyEventConverterEvdev* dev = device(); 128 ui::MockEventConverterEvdevImpl* dev = device();
130 129
131 struct input_event mock_kernel_queue[] = { 130 struct input_event mock_kernel_queue[] = {
132 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a}, 131 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a},
133 {{0, 0}, EV_KEY, KEY_BACKSPACE, 1}, 132 {{0, 0}, EV_KEY, KEY_BACKSPACE, 1},
134 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 133 {{0, 0}, EV_SYN, SYN_REPORT, 0},
135 134
136 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a}, 135 {{0, 0}, EV_MSC, MSC_SCAN, 0x7002a},
137 {{0, 0}, EV_KEY, KEY_BACKSPACE, 2}, 136 {{0, 0}, EV_KEY, KEY_BACKSPACE, 2},
138 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 137 {{0, 0}, EV_SYN, SYN_REPORT, 0},
139 138
(...skipping 25 matching lines...) Expand all
165 EXPECT_EQ(ui::ET_KEY_PRESSED, event->type()); 164 EXPECT_EQ(ui::ET_KEY_PRESSED, event->type());
166 EXPECT_EQ(ui::VKEY_BACK, event->key_code()); 165 EXPECT_EQ(ui::VKEY_BACK, event->key_code());
167 EXPECT_EQ(0, event->flags()); 166 EXPECT_EQ(0, event->flags());
168 167
169 event = dispatched_event(3); 168 event = dispatched_event(3);
170 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type()); 169 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
171 EXPECT_EQ(ui::VKEY_BACK, event->key_code()); 170 EXPECT_EQ(ui::VKEY_BACK, event->key_code());
172 EXPECT_EQ(0, event->flags()); 171 EXPECT_EQ(0, event->flags());
173 } 172 }
174 173
175 TEST_F(KeyEventConverterEvdevTest, NoEvents) { 174 TEST_F(EventConverterEvdevImplTest, NoEvents) {
176 ui::MockKeyEventConverterEvdev* dev = device(); 175 ui::MockEventConverterEvdevImpl* dev = device();
177 dev->ProcessEvents(NULL, 0); 176 dev->ProcessEvents(NULL, 0);
178 EXPECT_EQ(0u, size()); 177 EXPECT_EQ(0u, size());
179 } 178 }
180 179
181 TEST_F(KeyEventConverterEvdevTest, KeyWithModifier) { 180 TEST_F(EventConverterEvdevImplTest, KeyWithModifier) {
182 ui::MockKeyEventConverterEvdev* dev = device(); 181 ui::MockEventConverterEvdevImpl* dev = device();
183 182
184 struct input_event mock_kernel_queue[] = { 183 struct input_event mock_kernel_queue[] = {
185 {{0, 0}, EV_MSC, MSC_SCAN, 0x700e1}, 184 {{0, 0}, EV_MSC, MSC_SCAN, 0x700e1},
186 {{0, 0}, EV_KEY, KEY_LEFTSHIFT, 1}, 185 {{0, 0}, EV_KEY, KEY_LEFTSHIFT, 1},
187 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 186 {{0, 0}, EV_SYN, SYN_REPORT, 0},
188 187
189 {{0, 0}, EV_MSC, MSC_SCAN, 0x70004}, 188 {{0, 0}, EV_MSC, MSC_SCAN, 0x70004},
190 {{0, 0}, EV_KEY, KEY_A, 1}, 189 {{0, 0}, EV_KEY, KEY_A, 1},
191 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 190 {{0, 0}, EV_SYN, SYN_REPORT, 0},
192 191
(...skipping 25 matching lines...) Expand all
218 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type()); 217 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
219 EXPECT_EQ(ui::VKEY_A, event->key_code()); 218 EXPECT_EQ(ui::VKEY_A, event->key_code());
220 EXPECT_EQ(ui::EF_SHIFT_DOWN, event->flags()); 219 EXPECT_EQ(ui::EF_SHIFT_DOWN, event->flags());
221 220
222 event = dispatched_event(3); 221 event = dispatched_event(3);
223 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type()); 222 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
224 EXPECT_EQ(ui::VKEY_SHIFT, event->key_code()); 223 EXPECT_EQ(ui::VKEY_SHIFT, event->key_code());
225 EXPECT_EQ(0, event->flags()); 224 EXPECT_EQ(0, event->flags());
226 } 225 }
227 226
228 TEST_F(KeyEventConverterEvdevTest, KeyWithDuplicateModifier) { 227 TEST_F(EventConverterEvdevImplTest, KeyWithDuplicateModifier) {
229 ui::MockKeyEventConverterEvdev* dev = device(); 228 ui::MockEventConverterEvdevImpl* dev = device();
230 229
231 struct input_event mock_kernel_queue[] = { 230 struct input_event mock_kernel_queue[] = {
232 {{0, 0}, EV_MSC, MSC_SCAN, 0x700e1}, 231 {{0, 0}, EV_MSC, MSC_SCAN, 0x700e1},
233 {{0, 0}, EV_KEY, KEY_LEFTCTRL, 1}, 232 {{0, 0}, EV_KEY, KEY_LEFTCTRL, 1},
234 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 233 {{0, 0}, EV_SYN, SYN_REPORT, 0},
235 234
236 {{0, 0}, EV_MSC, MSC_SCAN, 0x700e5}, 235 {{0, 0}, EV_MSC, MSC_SCAN, 0x700e5},
237 {{0, 0}, EV_KEY, KEY_RIGHTCTRL, 1}, 236 {{0, 0}, EV_KEY, KEY_RIGHTCTRL, 1},
238 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 237 {{0, 0}, EV_SYN, SYN_REPORT, 0},
239 238
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type()); 282 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
284 EXPECT_EQ(ui::VKEY_CONTROL, event->key_code()); 283 EXPECT_EQ(ui::VKEY_CONTROL, event->key_code());
285 EXPECT_EQ(ui::EF_CONTROL_DOWN, event->flags()); 284 EXPECT_EQ(ui::EF_CONTROL_DOWN, event->flags());
286 285
287 event = dispatched_event(5); 286 event = dispatched_event(5);
288 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type()); 287 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
289 EXPECT_EQ(ui::VKEY_CONTROL, event->key_code()); 288 EXPECT_EQ(ui::VKEY_CONTROL, event->key_code());
290 EXPECT_EQ(0, event->flags()); 289 EXPECT_EQ(0, event->flags());
291 } 290 }
292 291
293 TEST_F(KeyEventConverterEvdevTest, KeyWithLock) { 292 TEST_F(EventConverterEvdevImplTest, KeyWithLock) {
294 ui::MockKeyEventConverterEvdev* dev = device(); 293 ui::MockEventConverterEvdevImpl* dev = device();
295 294
296 struct input_event mock_kernel_queue[] = { 295 struct input_event mock_kernel_queue[] = {
297 {{0, 0}, EV_MSC, MSC_SCAN, 0x70039}, 296 {{0, 0}, EV_MSC, MSC_SCAN, 0x70039},
298 {{0, 0}, EV_KEY, KEY_CAPSLOCK, 1}, 297 {{0, 0}, EV_KEY, KEY_CAPSLOCK, 1},
299 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 298 {{0, 0}, EV_SYN, SYN_REPORT, 0},
300 299
301 {{0, 0}, EV_MSC, MSC_SCAN, 0x70039}, 300 {{0, 0}, EV_MSC, MSC_SCAN, 0x70039},
302 {{0, 0}, EV_KEY, KEY_CAPSLOCK, 0}, 301 {{0, 0}, EV_KEY, KEY_CAPSLOCK, 0},
303 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 302 {{0, 0}, EV_SYN, SYN_REPORT, 0},
304 303
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 EXPECT_EQ(ui::ET_KEY_PRESSED, event->type()); 347 EXPECT_EQ(ui::ET_KEY_PRESSED, event->type());
349 EXPECT_EQ(ui::VKEY_CAPITAL, event->key_code()); 348 EXPECT_EQ(ui::VKEY_CAPITAL, event->key_code());
350 EXPECT_EQ(0, event->flags()); 349 EXPECT_EQ(0, event->flags());
351 350
352 event = dispatched_event(5); 351 event = dispatched_event(5);
353 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type()); 352 EXPECT_EQ(ui::ET_KEY_RELEASED, event->type());
354 EXPECT_EQ(ui::VKEY_CAPITAL, event->key_code()); 353 EXPECT_EQ(ui::VKEY_CAPITAL, event->key_code());
355 EXPECT_EQ(0, event->flags()); 354 EXPECT_EQ(0, event->flags());
356 } 355 }
357 356
358 TEST_F(KeyEventConverterEvdevTest, UnmappedKeyPress) { 357 TEST_F(EventConverterEvdevImplTest, UnmappedKeyPress) {
359 ui::MockKeyEventConverterEvdev* dev = device(); 358 ui::MockEventConverterEvdevImpl* dev = device();
360 359
361 struct input_event mock_kernel_queue[] = { 360 struct input_event mock_kernel_queue[] = {
362 {{0, 0}, EV_KEY, BTN_TOUCH, 1}, 361 {{0, 0}, EV_KEY, BTN_TOUCH, 1},
363 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 362 {{0, 0}, EV_SYN, SYN_REPORT, 0},
364 363
365 {{0, 0}, EV_KEY, BTN_TOUCH, 0}, 364 {{0, 0}, EV_KEY, BTN_TOUCH, 0},
366 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 365 {{0, 0}, EV_SYN, SYN_REPORT, 0},
367 }; 366 };
368 367
369 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 368 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
370 EXPECT_EQ(0u, size()); 369 EXPECT_EQ(0u, size());
371 } 370 }
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/event_converter_evdev_impl.cc ('k') | ui/events/ozone/evdev/event_factory_evdev.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698