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

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

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