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

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

Issue 874723002: [PATCH 9/11] ozone: evdev: Add a device event dispatcher that forwards to UI thread (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/event.h" 19 #include "ui/events/event.h"
20 #include "ui/events/ozone/device/device_manager.h" 20 #include "ui/events/ozone/device/device_manager.h"
21 #include "ui/events/ozone/evdev/event_converter_test_util.h"
21 #include "ui/events/ozone/evdev/event_factory_evdev.h" 22 #include "ui/events/ozone/evdev/event_factory_evdev.h"
22 #include "ui/events/ozone/evdev/tablet_event_converter_evdev.h" 23 #include "ui/events/ozone/evdev/tablet_event_converter_evdev.h"
23 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h" 24 #include "ui/events/ozone/layout/keyboard_layout_engine_manager.h"
24 #include "ui/events/platform/platform_event_dispatcher.h" 25 #include "ui/events/platform/platform_event_dispatcher.h"
25 #include "ui/events/platform/platform_event_source.h" 26 #include "ui/events/platform/platform_event_source.h"
26 27
27 namespace { 28 namespace {
28 29
29 static int SetNonBlocking(int fd) { 30 static int SetNonBlocking(int fd) {
30 int flags = fcntl(fd, F_GETFL, 0); 31 int flags = fcntl(fd, F_GETFL, 0);
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 void MockTabletEventConverterEvdev::ConfigureReadMock(struct input_event* queue, 125 void MockTabletEventConverterEvdev::ConfigureReadMock(struct input_event* queue,
125 long read_this_many, 126 long read_this_many,
126 long queue_index) { 127 long queue_index) {
127 int nwrite = HANDLE_EINTR(write(write_pipe_, queue + queue_index, 128 int nwrite = HANDLE_EINTR(write(write_pipe_, queue + queue_index,
128 sizeof(struct input_event) * read_this_many)); 129 sizeof(struct input_event) * read_this_many));
129 DCHECK(nwrite == 130 DCHECK(nwrite ==
130 static_cast<int>(sizeof(struct input_event) * read_this_many)) 131 static_cast<int>(sizeof(struct input_event) * read_this_many))
131 << "write() failed, errno: " << errno; 132 << "write() failed, errno: " << errno;
132 } 133 }
133 134
134 class MockDeviceManager : public ui::DeviceManager {
135 public:
136 MockDeviceManager() {}
137 ~MockDeviceManager() override {}
138
139 // DeviceManager:
140 void ScanDevices(DeviceEventObserver* observer) override {}
141 void AddObserver(DeviceEventObserver* observer) override {}
142 void RemoveObserver(DeviceEventObserver* observer) override {}
143 };
144
145 class TestEventFactoryEvdev : public EventFactoryEvdev {
146 public:
147 TestEventFactoryEvdev(CursorDelegateEvdev* cursor,
148 DeviceManager* device_manager,
149 KeyboardLayoutEngine* keyboard_layout_engine,
150 const EventDispatchCallback& callback)
151 : EventFactoryEvdev(cursor, device_manager, keyboard_layout_engine),
152 callback_(callback) {}
153 ~TestEventFactoryEvdev() override {}
154
155 private:
156 void PostUiEvent(scoped_ptr<Event> event) override {
157 callback_.Run(event.Pass());
158 }
159
160 EventDispatchCallback callback_;
161 };
162
163 } // namespace ui 135 } // namespace ui
164 136
165 // Test fixture. 137 // Test fixture.
166 class TabletEventConverterEvdevTest : public testing::Test { 138 class TabletEventConverterEvdevTest : public testing::Test {
167 public: 139 public:
168 TabletEventConverterEvdevTest() {} 140 TabletEventConverterEvdevTest() {}
169 141
170 // Overridden from testing::Test: 142 // Overridden from testing::Test:
171 void SetUp() override { 143 void SetUp() override {
172 // Set up pipe to satisfy message pump (unused). 144 // Set up pipe to satisfy message pump (unused).
173 int evdev_io[2]; 145 int evdev_io[2];
174 if (pipe(evdev_io)) 146 if (pipe(evdev_io))
175 PLOG(FATAL) << "failed pipe"; 147 PLOG(FATAL) << "failed pipe";
176 events_in_ = evdev_io[0]; 148 events_in_ = evdev_io[0];
177 events_out_ = evdev_io[1]; 149 events_out_ = evdev_io[1];
178 150
179 cursor_.reset(new ui::MockTabletCursorEvdev()); 151 cursor_.reset(new ui::MockTabletCursorEvdev());
180 device_manager_.reset(new ui::MockDeviceManager); 152 device_manager_ = ui::CreateDeviceManagerForTest();
181 event_factory_.reset(new ui::TestEventFactoryEvdev( 153 event_factory_ = ui::CreateEventFactoryEvdevForTest(
182 cursor_.get(), device_manager_.get(), 154 cursor_.get(), device_manager_.get(),
183 ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine(), 155 ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine(),
184 base::Bind(&TabletEventConverterEvdevTest::DispatchEventForTest, 156 base::Bind(&TabletEventConverterEvdevTest::DispatchEventForTest,
185 base::Unretained(this)))); 157 base::Unretained(this)));
158 dispatcher_ =
159 ui::CreateDeviceEventDispatcherEvdevForTest(event_factory_.get());
186 device_.reset(new ui::MockTabletEventConverterEvdev( 160 device_.reset(new ui::MockTabletEventConverterEvdev(
187 events_in_, base::FilePath(kTestDevicePath), cursor_.get(), 161 events_in_, base::FilePath(kTestDevicePath), cursor_.get(),
188 event_factory_.get())); 162 dispatcher_.get()));
189 } 163 }
190 164
191 void TearDown() override { 165 void TearDown() override {
192 cursor_.reset(); 166 cursor_.reset();
193 device_.reset(); 167 device_.reset();
194 } 168 }
195 169
196 ui::MockTabletEventConverterEvdev* device() { return device_.get(); } 170 ui::MockTabletEventConverterEvdev* device() { return device_.get(); }
197 ui::CursorDelegateEvdev* cursor() { return cursor_.get(); } 171 ui::CursorDelegateEvdev* cursor() { return cursor_.get(); }
198 172
199 unsigned size() { return dispatched_events_.size(); } 173 unsigned size() { return dispatched_events_.size(); }
200 ui::MouseEvent* dispatched_event(unsigned index) { 174 ui::MouseEvent* dispatched_event(unsigned index) {
201 DCHECK_GT(dispatched_events_.size(), index); 175 DCHECK_GT(dispatched_events_.size(), index);
202 ui::Event* ev = dispatched_events_[index]; 176 ui::Event* ev = dispatched_events_[index];
203 DCHECK(ev->IsMouseEvent()); 177 DCHECK(ev->IsMouseEvent());
204 return static_cast<ui::MouseEvent*>(ev); 178 return static_cast<ui::MouseEvent*>(ev);
205 } 179 }
206 180
207 void DispatchEventForTest(scoped_ptr<ui::Event> event) { 181 void DispatchEventForTest(scoped_ptr<ui::Event> event) {
208 dispatched_events_.push_back(event.release()); 182 dispatched_events_.push_back(event.release());
209 } 183 }
210 184
211 private: 185 private:
212 scoped_ptr<ui::MockTabletCursorEvdev> cursor_; 186 scoped_ptr<ui::MockTabletCursorEvdev> cursor_;
213 scoped_ptr<ui::DeviceManager> device_manager_; 187 scoped_ptr<ui::DeviceManager> device_manager_;
214 scoped_ptr<ui::EventFactoryEvdev> event_factory_; 188 scoped_ptr<ui::EventFactoryEvdev> event_factory_;
189 scoped_ptr<ui::DeviceEventDispatcherEvdev> dispatcher_;
215 scoped_ptr<ui::MockTabletEventConverterEvdev> device_; 190 scoped_ptr<ui::MockTabletEventConverterEvdev> device_;
216 191
217 ScopedVector<ui::Event> dispatched_events_; 192 ScopedVector<ui::Event> dispatched_events_;
218 193
219 int events_out_; 194 int events_out_;
220 int events_in_; 195 int events_in_;
221 196
222 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest); 197 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest);
223 }; 198 };
224 199
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 438
464 struct input_event mock_kernel_queue[] = { 439 struct input_event mock_kernel_queue[] = {
465 {{0, 0}, EV_ABS, ABS_X, 0}, 440 {{0, 0}, EV_ABS, ABS_X, 0},
466 {{0, 0}, EV_ABS, ABS_Y, 0}, 441 {{0, 0}, EV_ABS, ABS_Y, 0},
467 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 442 {{0, 0}, EV_SYN, SYN_REPORT, 0},
468 }; 443 };
469 444
470 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 445 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
471 EXPECT_EQ(0u, size()); 446 EXPECT_EQ(0u, size());
472 } 447 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698