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

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

Issue 1868363002: Replace scoped_ptr with std::unique_ptr in //ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@scopedptrcc
Patch Set: scopedptrui: rebase-make_scoped_ptr Created 4 years, 8 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 "ui/events/ozone/evdev/tablet_event_converter_evdev.h" 5 #include "ui/events/ozone/evdev/tablet_event_converter_evdev.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <linux/input.h> 9 #include <linux/input.h>
10 #include <unistd.h> 10 #include <unistd.h>
11
12 #include <memory>
11 #include <utility> 13 #include <utility>
12 #include <vector> 14 #include <vector>
13 15
14 #include "base/bind.h" 16 #include "base/bind.h"
15 #include "base/files/file_util.h" 17 #include "base/files/file_util.h"
16 #include "base/macros.h" 18 #include "base/macros.h"
17 #include "base/memory/scoped_ptr.h" 19 #include "base/memory/ptr_util.h"
18 #include "base/memory/scoped_vector.h" 20 #include "base/memory/scoped_vector.h"
19 #include "base/posix/eintr_wrapper.h" 21 #include "base/posix/eintr_wrapper.h"
20 #include "base/run_loop.h" 22 #include "base/run_loop.h"
21 #include "base/time/time.h" 23 #include "base/time/time.h"
22 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
23 #include "ui/events/event.h" 25 #include "ui/events/event.h"
24 #include "ui/events/ozone/device/device_manager.h" 26 #include "ui/events/ozone/device/device_manager.h"
25 #include "ui/events/ozone/evdev/event_converter_test_util.h" 27 #include "ui/events/ozone/evdev/event_converter_test_util.h"
26 #include "ui/events/ozone/evdev/event_device_test_util.h" 28 #include "ui/events/ozone/evdev/event_device_test_util.h"
27 #include "ui/events/ozone/evdev/event_factory_evdev.h" 29 #include "ui/events/ozone/evdev/event_factory_evdev.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 // Actually dispatch the event reader code. 92 // Actually dispatch the event reader code.
91 void ReadNow() { 93 void ReadNow() {
92 OnFileCanReadWithoutBlocking(read_pipe_); 94 OnFileCanReadWithoutBlocking(read_pipe_);
93 base::RunLoop().RunUntilIdle(); 95 base::RunLoop().RunUntilIdle();
94 } 96 }
95 97
96 private: 98 private:
97 int read_pipe_; 99 int read_pipe_;
98 int write_pipe_; 100 int write_pipe_;
99 101
100 std::vector<scoped_ptr<Event>> dispatched_events_; 102 std::vector<std::unique_ptr<Event>> dispatched_events_;
101 103
102 DISALLOW_COPY_AND_ASSIGN(MockTabletEventConverterEvdev); 104 DISALLOW_COPY_AND_ASSIGN(MockTabletEventConverterEvdev);
103 }; 105 };
104 106
105 class MockTabletCursorEvdev : public CursorDelegateEvdev { 107 class MockTabletCursorEvdev : public CursorDelegateEvdev {
106 public: 108 public:
107 MockTabletCursorEvdev() { cursor_confined_bounds_ = gfx::Rect(1024, 768); } 109 MockTabletCursorEvdev() { cursor_confined_bounds_ = gfx::Rect(1024, 768); }
108 ~MockTabletCursorEvdev() override {} 110 ~MockTabletCursorEvdev() override {}
109 111
110 // CursorDelegateEvdev: 112 // CursorDelegateEvdev:
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 208
207 unsigned size() { return dispatched_events_.size(); } 209 unsigned size() { return dispatched_events_.size(); }
208 ui::MouseEvent* dispatched_event(unsigned index) { 210 ui::MouseEvent* dispatched_event(unsigned index) {
209 DCHECK_GT(dispatched_events_.size(), index); 211 DCHECK_GT(dispatched_events_.size(), index);
210 ui::Event* ev = dispatched_events_[index].get(); 212 ui::Event* ev = dispatched_events_[index].get();
211 DCHECK(ev->IsMouseEvent()); 213 DCHECK(ev->IsMouseEvent());
212 return ev->AsMouseEvent(); 214 return ev->AsMouseEvent();
213 } 215 }
214 216
215 void DispatchEventForTest(ui::Event* event) { 217 void DispatchEventForTest(ui::Event* event) {
216 scoped_ptr<ui::Event> cloned_event = ui::Event::Clone(*event); 218 std::unique_ptr<ui::Event> cloned_event = ui::Event::Clone(*event);
217 dispatched_events_.push_back(std::move(cloned_event)); 219 dispatched_events_.push_back(std::move(cloned_event));
218 } 220 }
219 221
220 private: 222 private:
221 scoped_ptr<ui::MockTabletCursorEvdev> cursor_; 223 std::unique_ptr<ui::MockTabletCursorEvdev> cursor_;
222 scoped_ptr<ui::DeviceManager> device_manager_; 224 std::unique_ptr<ui::DeviceManager> device_manager_;
223 scoped_ptr<ui::EventFactoryEvdev> event_factory_; 225 std::unique_ptr<ui::EventFactoryEvdev> event_factory_;
224 scoped_ptr<ui::DeviceEventDispatcherEvdev> dispatcher_; 226 std::unique_ptr<ui::DeviceEventDispatcherEvdev> dispatcher_;
225 227
226 std::vector<scoped_ptr<ui::Event>> dispatched_events_; 228 std::vector<std::unique_ptr<ui::Event>> dispatched_events_;
227 229
228 int events_out_; 230 int events_out_;
229 int events_in_; 231 int events_in_;
230 232
231 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest); 233 DISALLOW_COPY_AND_ASSIGN(TabletEventConverterEvdevTest);
232 }; 234 };
233 235
234 #define EPSILON 20 236 #define EPSILON 20
235 237
236 // Uses real data captured from Wacom Intuos 5 Pen 238 // Uses real data captured from Wacom Intuos 5 Pen
237 TEST_F(TabletEventConverterEvdevTest, MoveTopLeft) { 239 TEST_F(TabletEventConverterEvdevTest, MoveTopLeft) {
238 scoped_ptr<ui::MockTabletEventConverterEvdev> dev = 240 std::unique_ptr<ui::MockTabletEventConverterEvdev> dev =
239 make_scoped_ptr(CreateDevice(kWacomIntuos5SPen)); 241 base::WrapUnique(CreateDevice(kWacomIntuos5SPen));
240 242
241 struct input_event mock_kernel_queue[] = { 243 struct input_event mock_kernel_queue[] = {
242 {{0, 0}, EV_ABS, ABS_DISTANCE, 63}, 244 {{0, 0}, EV_ABS, ABS_DISTANCE, 63},
243 {{0, 0}, EV_ABS, ABS_X, 477}, 245 {{0, 0}, EV_ABS, ABS_X, 477},
244 {{0, 0}, EV_ABS, ABS_TILT_X, 66}, 246 {{0, 0}, EV_ABS, ABS_TILT_X, 66},
245 {{0, 0}, EV_ABS, ABS_TILT_Y, 62}, 247 {{0, 0}, EV_ABS, ABS_TILT_Y, 62},
246 {{0, 0}, EV_ABS, ABS_MISC, 1050626}, 248 {{0, 0}, EV_ABS, ABS_MISC, 1050626},
247 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1}, 249 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1},
248 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290}, 250 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290},
249 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 251 {{0, 0}, EV_SYN, SYN_REPORT, 0},
(...skipping 10 matching lines...) Expand all
260 EXPECT_EQ(1u, size()); 262 EXPECT_EQ(1u, size());
261 263
262 ui::MouseEvent* event = dispatched_event(0); 264 ui::MouseEvent* event = dispatched_event(0);
263 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 265 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
264 266
265 EXPECT_LT(cursor()->GetLocation().x(), EPSILON); 267 EXPECT_LT(cursor()->GetLocation().x(), EPSILON);
266 EXPECT_LT(cursor()->GetLocation().y(), EPSILON); 268 EXPECT_LT(cursor()->GetLocation().y(), EPSILON);
267 } 269 }
268 270
269 TEST_F(TabletEventConverterEvdevTest, MoveTopRight) { 271 TEST_F(TabletEventConverterEvdevTest, MoveTopRight) {
270 scoped_ptr<ui::MockTabletEventConverterEvdev> dev = 272 std::unique_ptr<ui::MockTabletEventConverterEvdev> dev =
271 make_scoped_ptr(CreateDevice(kWacomIntuos5SPen)); 273 base::WrapUnique(CreateDevice(kWacomIntuos5SPen));
272 274
273 struct input_event mock_kernel_queue[] = { 275 struct input_event mock_kernel_queue[] = {
274 {{0, 0}, EV_ABS, ABS_DISTANCE, 63}, 276 {{0, 0}, EV_ABS, ABS_DISTANCE, 63},
275 {{0, 0}, EV_ABS, ABS_X, 31496}, 277 {{0, 0}, EV_ABS, ABS_X, 31496},
276 {{0, 0}, EV_ABS, ABS_Y, 109}, 278 {{0, 0}, EV_ABS, ABS_Y, 109},
277 {{0, 0}, EV_ABS, ABS_TILT_X, 66}, 279 {{0, 0}, EV_ABS, ABS_TILT_X, 66},
278 {{0, 0}, EV_ABS, ABS_TILT_Y, 61}, 280 {{0, 0}, EV_ABS, ABS_TILT_Y, 61},
279 {{0, 0}, EV_ABS, ABS_MISC, 1050626}, 281 {{0, 0}, EV_ABS, ABS_MISC, 1050626},
280 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1}, 282 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1},
281 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290}, 283 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290},
(...skipping 13 matching lines...) Expand all
295 297
296 ui::MouseEvent* event = dispatched_event(0); 298 ui::MouseEvent* event = dispatched_event(0);
297 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 299 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
298 300
299 EXPECT_GT(cursor()->GetLocation().x(), 301 EXPECT_GT(cursor()->GetLocation().x(),
300 cursor()->GetCursorConfinedBounds().width() - EPSILON); 302 cursor()->GetCursorConfinedBounds().width() - EPSILON);
301 EXPECT_LT(cursor()->GetLocation().y(), EPSILON); 303 EXPECT_LT(cursor()->GetLocation().y(), EPSILON);
302 } 304 }
303 305
304 TEST_F(TabletEventConverterEvdevTest, MoveBottomLeft) { 306 TEST_F(TabletEventConverterEvdevTest, MoveBottomLeft) {
305 scoped_ptr<ui::MockTabletEventConverterEvdev> dev = 307 std::unique_ptr<ui::MockTabletEventConverterEvdev> dev =
306 make_scoped_ptr(CreateDevice(kWacomIntuos5SPen)); 308 base::WrapUnique(CreateDevice(kWacomIntuos5SPen));
307 309
308 struct input_event mock_kernel_queue[] = { 310 struct input_event mock_kernel_queue[] = {
309 {{0, 0}, EV_ABS, ABS_DISTANCE, 63}, 311 {{0, 0}, EV_ABS, ABS_DISTANCE, 63},
310 {{0, 0}, EV_ABS, ABS_Y, 19685}, 312 {{0, 0}, EV_ABS, ABS_Y, 19685},
311 {{0, 0}, EV_ABS, ABS_TILT_X, 64}, 313 {{0, 0}, EV_ABS, ABS_TILT_X, 64},
312 {{0, 0}, EV_ABS, ABS_TILT_Y, 61}, 314 {{0, 0}, EV_ABS, ABS_TILT_Y, 61},
313 {{0, 0}, EV_ABS, ABS_MISC, 1050626}, 315 {{0, 0}, EV_ABS, ABS_MISC, 1050626},
314 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1}, 316 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1},
315 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290}, 317 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290},
316 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 318 {{0, 0}, EV_SYN, SYN_REPORT, 0},
(...skipping 13 matching lines...) Expand all
330 332
331 ui::MouseEvent* event = dispatched_event(0); 333 ui::MouseEvent* event = dispatched_event(0);
332 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 334 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
333 335
334 EXPECT_LT(cursor()->GetLocation().x(), EPSILON); 336 EXPECT_LT(cursor()->GetLocation().x(), EPSILON);
335 EXPECT_GT(cursor()->GetLocation().y(), 337 EXPECT_GT(cursor()->GetLocation().y(),
336 cursor()->GetCursorConfinedBounds().height() - EPSILON); 338 cursor()->GetCursorConfinedBounds().height() - EPSILON);
337 } 339 }
338 340
339 TEST_F(TabletEventConverterEvdevTest, MoveBottomRight) { 341 TEST_F(TabletEventConverterEvdevTest, MoveBottomRight) {
340 scoped_ptr<ui::MockTabletEventConverterEvdev> dev = 342 std::unique_ptr<ui::MockTabletEventConverterEvdev> dev =
341 make_scoped_ptr(CreateDevice(kWacomIntuos5SPen)); 343 base::WrapUnique(CreateDevice(kWacomIntuos5SPen));
342 344
343 struct input_event mock_kernel_queue[] = { 345 struct input_event mock_kernel_queue[] = {
344 {{0, 0}, EV_ABS, ABS_DISTANCE, 63}, 346 {{0, 0}, EV_ABS, ABS_DISTANCE, 63},
345 {{0, 0}, EV_ABS, ABS_X, 31496}, 347 {{0, 0}, EV_ABS, ABS_X, 31496},
346 {{0, 0}, EV_ABS, ABS_Y, 19685}, 348 {{0, 0}, EV_ABS, ABS_Y, 19685},
347 {{0, 0}, EV_ABS, ABS_TILT_X, 67}, 349 {{0, 0}, EV_ABS, ABS_TILT_X, 67},
348 {{0, 0}, EV_ABS, ABS_TILT_Y, 63}, 350 {{0, 0}, EV_ABS, ABS_TILT_Y, 63},
349 {{0, 0}, EV_ABS, ABS_MISC, 1050626}, 351 {{0, 0}, EV_ABS, ABS_MISC, 1050626},
350 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1}, 352 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1},
351 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290}, 353 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290},
(...skipping 15 matching lines...) Expand all
367 ui::MouseEvent* event = dispatched_event(0); 369 ui::MouseEvent* event = dispatched_event(0);
368 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); 370 EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type());
369 371
370 EXPECT_GT(cursor()->GetLocation().x(), 372 EXPECT_GT(cursor()->GetLocation().x(),
371 cursor()->GetCursorConfinedBounds().height() - EPSILON); 373 cursor()->GetCursorConfinedBounds().height() - EPSILON);
372 EXPECT_GT(cursor()->GetLocation().y(), 374 EXPECT_GT(cursor()->GetLocation().y(),
373 cursor()->GetCursorConfinedBounds().height() - EPSILON); 375 cursor()->GetCursorConfinedBounds().height() - EPSILON);
374 } 376 }
375 377
376 TEST_F(TabletEventConverterEvdevTest, Tap) { 378 TEST_F(TabletEventConverterEvdevTest, Tap) {
377 scoped_ptr<ui::MockTabletEventConverterEvdev> dev = 379 std::unique_ptr<ui::MockTabletEventConverterEvdev> dev =
378 make_scoped_ptr(CreateDevice(kWacomIntuos5SPen)); 380 base::WrapUnique(CreateDevice(kWacomIntuos5SPen));
379 381
380 struct input_event mock_kernel_queue[] = { 382 struct input_event mock_kernel_queue[] = {
381 {{0, 0}, EV_ABS, ABS_X, 15456}, 383 {{0, 0}, EV_ABS, ABS_X, 15456},
382 {{0, 0}, EV_ABS, ABS_Y, 8605}, 384 {{0, 0}, EV_ABS, ABS_Y, 8605},
383 {{0, 0}, EV_ABS, ABS_DISTANCE, 49}, 385 {{0, 0}, EV_ABS, ABS_DISTANCE, 49},
384 {{0, 0}, EV_ABS, ABS_TILT_X, 68}, 386 {{0, 0}, EV_ABS, ABS_TILT_X, 68},
385 {{0, 0}, EV_ABS, ABS_TILT_Y, 64}, 387 {{0, 0}, EV_ABS, ABS_TILT_Y, 64},
386 {{0, 0}, EV_ABS, ABS_MISC, 1050626}, 388 {{0, 0}, EV_ABS, ABS_MISC, 1050626},
387 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1}, 389 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1},
388 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290}, 390 {{0, 0}, EV_MSC, MSC_SERIAL, 897618290},
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 EXPECT_EQ(true, event->IsLeftMouseButton()); 431 EXPECT_EQ(true, event->IsLeftMouseButton());
430 event = dispatched_event(2); 432 event = dispatched_event(2);
431 EXPECT_EQ(ui::EventPointerType::POINTER_TYPE_PEN, 433 EXPECT_EQ(ui::EventPointerType::POINTER_TYPE_PEN,
432 event->pointer_details().pointer_type); 434 event->pointer_details().pointer_type);
433 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type()); 435 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type());
434 EXPECT_FLOAT_EQ(0.0f, event->pointer_details().force); 436 EXPECT_FLOAT_EQ(0.0f, event->pointer_details().force);
435 EXPECT_EQ(true, event->IsLeftMouseButton()); 437 EXPECT_EQ(true, event->IsLeftMouseButton());
436 } 438 }
437 439
438 TEST_F(TabletEventConverterEvdevTest, StylusButtonPress) { 440 TEST_F(TabletEventConverterEvdevTest, StylusButtonPress) {
439 scoped_ptr<ui::MockTabletEventConverterEvdev> dev = 441 std::unique_ptr<ui::MockTabletEventConverterEvdev> dev =
440 make_scoped_ptr(CreateDevice(kWacomIntuos5SPen)); 442 base::WrapUnique(CreateDevice(kWacomIntuos5SPen));
441 443
442 struct input_event mock_kernel_queue[] = { 444 struct input_event mock_kernel_queue[] = {
443 {{0, 0}, EV_ABS, ABS_DISTANCE, 63}, 445 {{0, 0}, EV_ABS, ABS_DISTANCE, 63},
444 {{0, 0}, EV_ABS, ABS_X, 18372}, 446 {{0, 0}, EV_ABS, ABS_X, 18372},
445 {{0, 0}, EV_ABS, ABS_Y, 9880}, 447 {{0, 0}, EV_ABS, ABS_Y, 9880},
446 {{0, 0}, EV_ABS, ABS_DISTANCE, 61}, 448 {{0, 0}, EV_ABS, ABS_DISTANCE, 61},
447 {{0, 0}, EV_ABS, ABS_TILT_X, 60}, 449 {{0, 0}, EV_ABS, ABS_TILT_X, 60},
448 {{0, 0}, EV_ABS, ABS_TILT_Y, 63}, 450 {{0, 0}, EV_ABS, ABS_TILT_Y, 63},
449 {{0, 0}, EV_ABS, ABS_MISC, 1050626}, 451 {{0, 0}, EV_ABS, ABS_MISC, 1050626},
450 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1}, 452 {{0, 0}, EV_KEY, BTN_TOOL_PEN, 1},
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 event = dispatched_event(1); 484 event = dispatched_event(1);
483 EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type()); 485 EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type());
484 EXPECT_EQ(true, event->IsRightMouseButton()); 486 EXPECT_EQ(true, event->IsRightMouseButton());
485 event = dispatched_event(2); 487 event = dispatched_event(2);
486 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type()); 488 EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type());
487 EXPECT_EQ(true, event->IsRightMouseButton()); 489 EXPECT_EQ(true, event->IsRightMouseButton());
488 } 490 }
489 491
490 // Should only get an event if BTN_TOOL received 492 // Should only get an event if BTN_TOOL received
491 TEST_F(TabletEventConverterEvdevTest, CheckStylusFiltering) { 493 TEST_F(TabletEventConverterEvdevTest, CheckStylusFiltering) {
492 scoped_ptr<ui::MockTabletEventConverterEvdev> dev = 494 std::unique_ptr<ui::MockTabletEventConverterEvdev> dev =
493 make_scoped_ptr(CreateDevice(kWacomIntuos5SPen)); 495 base::WrapUnique(CreateDevice(kWacomIntuos5SPen));
494 496
495 struct input_event mock_kernel_queue[] = { 497 struct input_event mock_kernel_queue[] = {
496 {{0, 0}, EV_ABS, ABS_X, 0}, 498 {{0, 0}, EV_ABS, ABS_X, 0},
497 {{0, 0}, EV_ABS, ABS_Y, 0}, 499 {{0, 0}, EV_ABS, ABS_Y, 0},
498 {{0, 0}, EV_SYN, SYN_REPORT, 0}, 500 {{0, 0}, EV_SYN, SYN_REPORT, 0},
499 }; 501 };
500 502
501 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); 503 dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue));
502 EXPECT_EQ(0u, size()); 504 EXPECT_EQ(0u, size());
503 } 505 }
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/libgestures_glue/gesture_property_provider.cc ('k') | ui/events/ozone/evdev/touch_evdev_debug_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698