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

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: rebase 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/input_device_factory_evdev.cc ('k') | no next file » | 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/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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 void MockTabletEventConverterEvdev::ConfigureReadMock(struct input_event* queue, 127 void MockTabletEventConverterEvdev::ConfigureReadMock(struct input_event* queue,
127 long read_this_many, 128 long read_this_many,
128 long queue_index) { 129 long queue_index) {
129 int nwrite = HANDLE_EINTR(write(write_pipe_, queue + queue_index, 130 int nwrite = HANDLE_EINTR(write(write_pipe_, queue + queue_index,
130 sizeof(struct input_event) * read_this_many)); 131 sizeof(struct input_event) * read_this_many));
131 DCHECK(nwrite == 132 DCHECK(nwrite ==
132 static_cast<int>(sizeof(struct input_event) * read_this_many)) 133 static_cast<int>(sizeof(struct input_event) * read_this_many))
133 << "write() failed, errno: " << errno; 134 << "write() failed, errno: " << errno;
134 } 135 }
135 136
136 class MockDeviceManager : public ui::DeviceManager {
137 public:
138 MockDeviceManager() {}
139 ~MockDeviceManager() override {}
140
141 // DeviceManager:
142 void ScanDevices(DeviceEventObserver* observer) override {}
143 void AddObserver(DeviceEventObserver* observer) override {}
144 void RemoveObserver(DeviceEventObserver* observer) override {}
145 };
146
147 class TestEventFactoryEvdev : public EventFactoryEvdev {
148 public:
149 TestEventFactoryEvdev(CursorDelegateEvdev* cursor,
150 DeviceManager* device_manager,
151 KeyboardLayoutEngine* keyboard_layout_engine,
152 const EventDispatchCallback& callback)
153 : EventFactoryEvdev(cursor, device_manager, keyboard_layout_engine),
154 callback_(callback) {}
155 ~TestEventFactoryEvdev() override {}
156
157 private:
158 void PostUiEvent(scoped_ptr<Event> event) override {
159 callback_.Run(event.Pass());
160 }
161
162 EventDispatchCallback callback_;
163 };
164
165 } // namespace ui 137 } // namespace ui
166 138
167 // Test fixture. 139 // Test fixture.
168 class TabletEventConverterEvdevTest : public testing::Test { 140 class TabletEventConverterEvdevTest : public testing::Test {
169 public: 141 public:
170 TabletEventConverterEvdevTest() {} 142 TabletEventConverterEvdevTest() {}
171 143
172 // Overridden from testing::Test: 144 // Overridden from testing::Test:
173 void SetUp() override { 145 void SetUp() override {
174 // Set up pipe to satisfy message pump (unused). 146 // Set up pipe to satisfy message pump (unused).
175 int evdev_io[2]; 147 int evdev_io[2];
176 if (pipe(evdev_io)) 148 if (pipe(evdev_io))
177 PLOG(FATAL) << "failed pipe"; 149 PLOG(FATAL) << "failed pipe";
178 events_in_ = evdev_io[0]; 150 events_in_ = evdev_io[0];
179 events_out_ = evdev_io[1]; 151 events_out_ = evdev_io[1];
180 152
181 cursor_.reset(new ui::MockTabletCursorEvdev()); 153 cursor_.reset(new ui::MockTabletCursorEvdev());
182 device_manager_.reset(new ui::MockDeviceManager); 154 device_manager_ = ui::CreateDeviceManagerForTest();
183 event_factory_.reset(new ui::TestEventFactoryEvdev( 155 event_factory_ = ui::CreateEventFactoryEvdevForTest(
184 cursor_.get(), device_manager_.get(), 156 cursor_.get(), device_manager_.get(),
185 ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine(), 157 ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine(),
186 base::Bind(&TabletEventConverterEvdevTest::DispatchEventForTest, 158 base::Bind(&TabletEventConverterEvdevTest::DispatchEventForTest,
187 base::Unretained(this)))); 159 base::Unretained(this)));
160 dispatcher_ =
161 ui::CreateDeviceEventDispatcherEvdevForTest(event_factory_.get());
188 device_.reset(new ui::MockTabletEventConverterEvdev( 162 device_.reset(new ui::MockTabletEventConverterEvdev(
189 events_in_, base::FilePath(kTestDevicePath), cursor_.get(), 163 events_in_, base::FilePath(kTestDevicePath), cursor_.get(),
190 event_factory_.get())); 164 dispatcher_.get()));
191 } 165 }
192 166
193 void TearDown() override { 167 void TearDown() override {
194 cursor_.reset(); 168 cursor_.reset();
195 device_.reset(); 169 device_.reset();
196 } 170 }
197 171
198 ui::MockTabletEventConverterEvdev* device() { return device_.get(); } 172 ui::MockTabletEventConverterEvdev* device() { return device_.get(); }
199 ui::CursorDelegateEvdev* cursor() { return cursor_.get(); } 173 ui::CursorDelegateEvdev* cursor() { return cursor_.get(); }
200 174
201 unsigned size() { return dispatched_events_.size(); } 175 unsigned size() { return dispatched_events_.size(); }
202 ui::MouseEvent* dispatched_event(unsigned index) { 176 ui::MouseEvent* dispatched_event(unsigned index) {
203 DCHECK_GT(dispatched_events_.size(), index); 177 DCHECK_GT(dispatched_events_.size(), index);
204 ui::Event* ev = dispatched_events_[index]; 178 ui::Event* ev = dispatched_events_[index];
205 DCHECK(ev->IsMouseEvent()); 179 DCHECK(ev->IsMouseEvent());
206 return static_cast<ui::MouseEvent*>(ev); 180 return static_cast<ui::MouseEvent*>(ev);
207 } 181 }
208 182
209 void DispatchEventForTest(scoped_ptr<ui::Event> event) { 183 void DispatchEventForTest(scoped_ptr<ui::Event> event) {
210 dispatched_events_.push_back(event.release()); 184 dispatched_events_.push_back(event.release());
211 } 185 }
212 186
213 private: 187 private:
214 scoped_ptr<ui::MockTabletCursorEvdev> cursor_; 188 scoped_ptr<ui::MockTabletCursorEvdev> cursor_;
215 scoped_ptr<ui::DeviceManager> device_manager_; 189 scoped_ptr<ui::DeviceManager> device_manager_;
216 scoped_ptr<ui::EventFactoryEvdev> event_factory_; 190 scoped_ptr<ui::EventFactoryEvdev> event_factory_;
191 scoped_ptr<ui::DeviceEventDispatcherEvdev> dispatcher_;
217 scoped_ptr<ui::MockTabletEventConverterEvdev> device_; 192 scoped_ptr<ui::MockTabletEventConverterEvdev> device_;
218 193
219 ScopedVector<ui::Event> dispatched_events_; 194 ScopedVector<ui::Event> dispatched_events_;
220 195
221 int events_out_; 196 int events_out_;
222 int events_in_; 197 int events_in_;
223 198
224 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest); 199 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest);
225 }; 200 };
226 201
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 440
466 struct input_event mock_kernel_queue[] = { 441 struct input_event mock_kernel_queue[] = {
467 {{0, 0}, EV_ABS, ABS_X, 0}, 442 {{0, 0}, EV_ABS, ABS_X, 0},
468 {{0, 0}, EV_ABS, ABS_Y, 0}, 443 {{0, 0}, EV_ABS, ABS_Y, 0},
469 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 444 {{0, 0}, EV_SYN, SYN_REPORT, 0},
470 }; 445 };
471 446
472 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 447 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
473 EXPECT_EQ(0u, size()); 448 EXPECT_EQ(0u, size());
474 } 449 }
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/input_device_factory_evdev.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698