1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "ui/events/ozone/evdev/event_converter_test_util.h"
6 
7 #include <stdint.h>
8 
9 #include "ui/events/ozone/device/device_manager.h"
10 #include "ui/events/ozone/evdev/device_event_dispatcher_evdev.h"
11 #include "ui/events/ozone/evdev/event_factory_evdev.h"
12 #include "ui/events/platform/platform_event_dispatcher.h"
13 
14 namespace ui {
15 
16 namespace {
17 
18 class TestDeviceManager : public ui::DeviceManager {
19  public:
TestDeviceManager()20   TestDeviceManager() {}
~TestDeviceManager()21   ~TestDeviceManager() override {}
22 
23   // DeviceManager:
ScanDevices(DeviceEventObserver * observer)24   void ScanDevices(DeviceEventObserver* observer) override {}
AddObserver(DeviceEventObserver * observer)25   void AddObserver(DeviceEventObserver* observer) override {}
RemoveObserver(DeviceEventObserver * observer)26   void RemoveObserver(DeviceEventObserver* observer) override {}
27 };
28 
29 class TestDeviceEventDispatcherEvdev : public DeviceEventDispatcherEvdev {
30  public:
TestDeviceEventDispatcherEvdev(EventFactoryEvdev * event_factory_evdev)31   TestDeviceEventDispatcherEvdev(EventFactoryEvdev* event_factory_evdev)
32       : event_factory_evdev_(event_factory_evdev) {}
~TestDeviceEventDispatcherEvdev()33   ~TestDeviceEventDispatcherEvdev() override {}
34 
35   // DeviceEventDispatcher:
36 
DispatchKeyEvent(const KeyEventParams & params)37   void DispatchKeyEvent(const KeyEventParams& params) override {
38     event_factory_evdev_->DispatchKeyEvent(params);
39   }
40 
DispatchMouseMoveEvent(const MouseMoveEventParams & params)41   void DispatchMouseMoveEvent(const MouseMoveEventParams& params) override {
42     event_factory_evdev_->DispatchMouseMoveEvent(params);
43   }
44 
DispatchMouseButtonEvent(const MouseButtonEventParams & params)45   void DispatchMouseButtonEvent(const MouseButtonEventParams& params) override {
46     event_factory_evdev_->DispatchMouseButtonEvent(params);
47   }
48 
DispatchMouseWheelEvent(const MouseWheelEventParams & params)49   void DispatchMouseWheelEvent(const MouseWheelEventParams& params) override {
50     event_factory_evdev_->DispatchMouseWheelEvent(params);
51   }
52 
DispatchPinchEvent(const PinchEventParams & params)53   void DispatchPinchEvent(const PinchEventParams& params) override {
54     event_factory_evdev_->DispatchPinchEvent(params);
55   }
56 
DispatchScrollEvent(const ScrollEventParams & params)57   void DispatchScrollEvent(const ScrollEventParams& params) override {
58     event_factory_evdev_->DispatchScrollEvent(params);
59   }
60 
DispatchTouchEvent(const TouchEventParams & params)61   void DispatchTouchEvent(const TouchEventParams& params) override {
62     event_factory_evdev_->DispatchTouchEvent(params);
63   }
64 
DispatchKeyboardDevicesUpdated(const std::vector<InputDevice> & devices)65   void DispatchKeyboardDevicesUpdated(
66       const std::vector<InputDevice>& devices) override {
67     event_factory_evdev_->DispatchKeyboardDevicesUpdated(devices);
68   }
DispatchTouchscreenDevicesUpdated(const std::vector<TouchscreenDevice> & devices)69   void DispatchTouchscreenDevicesUpdated(
70       const std::vector<TouchscreenDevice>& devices) override {
71     event_factory_evdev_->DispatchTouchscreenDevicesUpdated(devices);
72   }
DispatchMouseDevicesUpdated(const std::vector<InputDevice> & devices)73   void DispatchMouseDevicesUpdated(
74       const std::vector<InputDevice>& devices) override {
75     event_factory_evdev_->DispatchMouseDevicesUpdated(devices);
76   }
DispatchTouchpadDevicesUpdated(const std::vector<InputDevice> & devices)77   void DispatchTouchpadDevicesUpdated(
78       const std::vector<InputDevice>& devices) override {
79     event_factory_evdev_->DispatchTouchpadDevicesUpdated(devices);
80   }
DispatchUncategorizedDevicesUpdated(const std::vector<InputDevice> & devices)81   void DispatchUncategorizedDevicesUpdated(
82       const std::vector<InputDevice>& devices) override {
83     event_factory_evdev_->DispatchUncategorizedDevicesUpdated(devices);
84   }
DispatchDeviceListsComplete()85   void DispatchDeviceListsComplete() override {
86     event_factory_evdev_->DispatchDeviceListsComplete();
87   }
DispatchStylusStateChanged(StylusState stylus_state)88   void DispatchStylusStateChanged(StylusState stylus_state) override {
89     event_factory_evdev_->DispatchStylusStateChanged(stylus_state);
90   }
91 
DispatchGamepadEvent(const GamepadEvent & event)92   void DispatchGamepadEvent(const GamepadEvent& event) override {
93     event_factory_evdev_->DispatchGamepadEvent(event);
94   }
95 
DispatchGamepadDevicesUpdated(const std::vector<GamepadDevice> & devices)96   void DispatchGamepadDevicesUpdated(
97       const std::vector<GamepadDevice>& devices) override {
98     event_factory_evdev_->DispatchGamepadDevicesUpdated(devices);
99   }
100 
101  private:
102   EventFactoryEvdev* event_factory_evdev_;
103 };
104 
105 class TestEventFactoryEvdev : public EventFactoryEvdev {
106  public:
TestEventFactoryEvdev(CursorDelegateEvdev * cursor,DeviceManager * device_manager,KeyboardLayoutEngine * keyboard_layout_engine,const EventDispatchCallback & callback)107   TestEventFactoryEvdev(CursorDelegateEvdev* cursor,
108                         DeviceManager* device_manager,
109                         KeyboardLayoutEngine* keyboard_layout_engine,
110                         const EventDispatchCallback& callback)
111       : EventFactoryEvdev(cursor, device_manager, keyboard_layout_engine),
112         callback_(callback) {}
~TestEventFactoryEvdev()113   ~TestEventFactoryEvdev() override {}
114 
115  private:
DispatchEvent(PlatformEvent event)116   uint32_t DispatchEvent(PlatformEvent event) override {
117     callback_.Run(event);
118     return POST_DISPATCH_NONE;
119   }
120 
121   const EventDispatchCallback callback_;
122 };
123 
124 }  // namespace
125 
126 std::unique_ptr<DeviceEventDispatcherEvdev>
CreateDeviceEventDispatcherEvdevForTest(EventFactoryEvdev * event_factory)127 CreateDeviceEventDispatcherEvdevForTest(EventFactoryEvdev* event_factory) {
128   return std::make_unique<TestDeviceEventDispatcherEvdev>(event_factory);
129 }
130 
CreateDeviceManagerForTest()131 std::unique_ptr<DeviceManager> CreateDeviceManagerForTest() {
132   return std::make_unique<TestDeviceManager>();
133 }
134 
CreateEventFactoryEvdevForTest(CursorDelegateEvdev * cursor,DeviceManager * device_manager,KeyboardLayoutEngine * keyboard_layout_engine,const EventDispatchCallback & callback)135 std::unique_ptr<EventFactoryEvdev> CreateEventFactoryEvdevForTest(
136     CursorDelegateEvdev* cursor,
137     DeviceManager* device_manager,
138     KeyboardLayoutEngine* keyboard_layout_engine,
139     const EventDispatchCallback& callback) {
140   return std::make_unique<TestEventFactoryEvdev>(
141       cursor, device_manager, keyboard_layout_engine, callback);
142 }
143 
144 }  // namespace ui
145