Index: ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc |
diff --git a/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc b/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc |
index 8451ad24c6a0441ec214daf04d64b79d9ebca345..5e04057b3fee8ad6954acdfb1fa67ee34b687221 100644 |
--- a/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc |
+++ b/ui/events/ozone/evdev/tablet_event_converter_evdev_unittest.cc |
@@ -17,7 +17,10 @@ |
#include "base/time/time.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/events/event.h" |
+#include "ui/events/ozone/device/device_manager.h" |
+#include "ui/events/ozone/evdev/event_factory_evdev.h" |
#include "ui/events/ozone/evdev/tablet_event_converter_evdev.h" |
+#include "ui/events/ozone/layout/keyboard_layout_engine_manager.h" |
#include "ui/events/platform/platform_event_dispatcher.h" |
#include "ui/events/platform/platform_event_source.h" |
@@ -38,34 +41,24 @@ namespace ui { |
class MockTabletEventConverterEvdev : public TabletEventConverterEvdev { |
public: |
- MockTabletEventConverterEvdev(int fd, |
- base::FilePath path, |
- EventModifiersEvdev* modifiers, |
- CursorDelegateEvdev* cursor); |
+ MockTabletEventConverterEvdev( |
+ int fd, |
+ base::FilePath path, |
+ CursorDelegateEvdev* cursor, |
+ const MouseMoveEventDispatchCallback& mouse_move_callback, |
+ const MouseButtonEventDispatchCallback& mouse_button_callback); |
~MockTabletEventConverterEvdev() override {}; |
void ConfigureReadMock(struct input_event* queue, |
long read_this_many, |
long queue_index); |
- unsigned size() { return dispatched_events_.size(); } |
- MouseEvent* event(unsigned index) { |
- DCHECK_GT(dispatched_events_.size(), index); |
- Event* ev = dispatched_events_[index]; |
- DCHECK(ev->IsMouseEvent()); |
- return static_cast<MouseEvent*>(ev); |
- } |
- |
// Actually dispatch the event reader code. |
void ReadNow() { |
OnFileCanReadWithoutBlocking(read_pipe_); |
base::RunLoop().RunUntilIdle(); |
} |
- void DispatchCallback(scoped_ptr<Event> event) { |
- dispatched_events_.push_back(event.release()); |
- } |
- |
private: |
int read_pipe_; |
int write_pipe_; |
@@ -102,18 +95,17 @@ class MockTabletCursorEvdev : public CursorDelegateEvdev { |
MockTabletEventConverterEvdev::MockTabletEventConverterEvdev( |
int fd, |
base::FilePath path, |
- EventModifiersEvdev* modifiers, |
- CursorDelegateEvdev* cursor) |
- : TabletEventConverterEvdev( |
- fd, |
- path, |
- 1, |
- INPUT_DEVICE_UNKNOWN, |
- modifiers, |
- cursor, |
- EventDeviceInfo(), |
- base::Bind(&MockTabletEventConverterEvdev::DispatchCallback, |
- base::Unretained(this))) { |
+ CursorDelegateEvdev* cursor, |
+ const MouseMoveEventDispatchCallback& mouse_move_callback, |
+ const MouseButtonEventDispatchCallback& mouse_button_callback) |
+ : TabletEventConverterEvdev(fd, |
+ path, |
+ 1, |
+ INPUT_DEVICE_UNKNOWN, |
+ cursor, |
+ EventDeviceInfo(), |
+ mouse_move_callback, |
+ mouse_button_callback) { |
// Real values taken from Wacom Intuos 4 |
x_abs_min_ = 0; |
x_abs_range_ = 65024; |
@@ -143,6 +135,35 @@ void MockTabletEventConverterEvdev::ConfigureReadMock(struct input_event* queue, |
<< "write() failed, errno: " << errno; |
} |
+class MockDeviceManager : public ui::DeviceManager { |
+ public: |
+ MockDeviceManager() {} |
+ ~MockDeviceManager() override {} |
+ |
+ // DeviceManager: |
+ void ScanDevices(DeviceEventObserver* observer) override {} |
+ void AddObserver(DeviceEventObserver* observer) override {} |
+ void RemoveObserver(DeviceEventObserver* observer) override {} |
+}; |
+ |
+class TestEventFactoryEvdev : public EventFactoryEvdev { |
+ public: |
+ TestEventFactoryEvdev(CursorDelegateEvdev* cursor, |
+ DeviceManager* device_manager, |
+ KeyboardLayoutEngine* keyboard_layout_engine, |
+ const EventDispatchCallback& callback) |
+ : EventFactoryEvdev(cursor, device_manager, keyboard_layout_engine), |
+ callback_(callback) {} |
+ ~TestEventFactoryEvdev() override {} |
+ |
+ private: |
+ void PostUiEvent(scoped_ptr<Event> event) override { |
+ callback_.Run(event.Pass()); |
+ } |
+ |
+ EventDispatchCallback callback_; |
+}; |
+ |
} // namespace ui |
// Test fixture. |
@@ -160,26 +181,47 @@ class TabletEventConverterEvdevTest : public testing::Test { |
events_out_ = evdev_io[1]; |
cursor_.reset(new ui::MockTabletCursorEvdev()); |
- modifiers_.reset(new ui::EventModifiersEvdev()); |
+ device_manager_.reset(new ui::MockDeviceManager); |
+ event_factory_.reset(new ui::TestEventFactoryEvdev( |
+ cursor_.get(), device_manager_.get(), |
+ ui::KeyboardLayoutEngineManager::GetKeyboardLayoutEngine(), |
+ base::Bind(&TabletEventConverterEvdevTest::DispatchEventForTest, |
+ base::Unretained(this)))); |
device_.reset(new ui::MockTabletEventConverterEvdev( |
- events_in_, base::FilePath(kTestDevicePath), modifiers_.get(), |
- cursor_.get())); |
+ events_in_, base::FilePath(kTestDevicePath), cursor_.get(), |
+ base::Bind(&ui::EventFactoryEvdev::PostMouseMoveEvent, |
+ base::Unretained(event_factory_.get())), |
+ base::Bind(&ui::EventFactoryEvdev::PostMouseButtonEvent, |
+ base::Unretained(event_factory_.get())))); |
} |
void TearDown() override { |
- modifiers_.reset(); |
cursor_.reset(); |
device_.reset(); |
} |
ui::MockTabletEventConverterEvdev* device() { return device_.get(); } |
ui::CursorDelegateEvdev* cursor() { return cursor_.get(); } |
- ui::EventModifiersEvdev* modifiers() { return modifiers_.get(); } |
+ |
+ unsigned size() { return dispatched_events_.size(); } |
+ ui::MouseEvent* dispatched_event(unsigned index) { |
+ DCHECK_GT(dispatched_events_.size(), index); |
+ ui::Event* ev = dispatched_events_[index]; |
+ DCHECK(ev->IsMouseEvent()); |
+ return static_cast<ui::MouseEvent*>(ev); |
+ } |
+ |
+ void DispatchEventForTest(scoped_ptr<ui::Event> event) { |
+ dispatched_events_.push_back(event.release()); |
+ } |
private: |
- scoped_ptr<ui::MockTabletEventConverterEvdev> device_; |
scoped_ptr<ui::MockTabletCursorEvdev> cursor_; |
- scoped_ptr<ui::EventModifiersEvdev> modifiers_; |
+ scoped_ptr<ui::DeviceManager> device_manager_; |
+ scoped_ptr<ui::EventFactoryEvdev> event_factory_; |
+ scoped_ptr<ui::MockTabletEventConverterEvdev> device_; |
+ |
+ ScopedVector<ui::Event> dispatched_events_; |
int events_out_; |
int events_in_; |
@@ -212,9 +254,9 @@ TEST_F(TabletEventConverterEvdevTest, MoveTopLeft) { |
}; |
dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); |
- EXPECT_EQ(1u, dev->size()); |
+ EXPECT_EQ(1u, size()); |
- ui::MouseEvent* event = dev->event(0); |
+ ui::MouseEvent* event = dispatched_event(0); |
EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); |
EXPECT_LT(cursor()->GetLocation().x(), EPSILON); |
@@ -245,9 +287,9 @@ TEST_F(TabletEventConverterEvdevTest, MoveTopRight) { |
}; |
dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); |
- EXPECT_EQ(1u, dev->size()); |
+ EXPECT_EQ(1u, size()); |
- ui::MouseEvent* event = dev->event(0); |
+ ui::MouseEvent* event = dispatched_event(0); |
EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); |
EXPECT_GT(cursor()->GetLocation().x(), |
@@ -278,9 +320,9 @@ TEST_F(TabletEventConverterEvdevTest, MoveBottomLeft) { |
}; |
dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); |
- EXPECT_EQ(1u, dev->size()); |
+ EXPECT_EQ(1u, size()); |
- ui::MouseEvent* event = dev->event(0); |
+ ui::MouseEvent* event = dispatched_event(0); |
EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); |
EXPECT_LT(cursor()->GetLocation().x(), EPSILON); |
@@ -313,9 +355,9 @@ TEST_F(TabletEventConverterEvdevTest, MoveBottomRight) { |
}; |
dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); |
- EXPECT_EQ(1u, dev->size()); |
+ EXPECT_EQ(1u, size()); |
- ui::MouseEvent* event = dev->event(0); |
+ ui::MouseEvent* event = dispatched_event(0); |
EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); |
EXPECT_GT(cursor()->GetLocation().x(), |
@@ -363,14 +405,14 @@ TEST_F(TabletEventConverterEvdevTest, Tap) { |
}; |
dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); |
- EXPECT_EQ(3u, dev->size()); |
+ EXPECT_EQ(3u, size()); |
- ui::MouseEvent* event = dev->event(0); |
+ ui::MouseEvent* event = dispatched_event(0); |
EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); |
- event = dev->event(1); |
+ event = dispatched_event(1); |
EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type()); |
EXPECT_EQ(true, event->IsLeftMouseButton()); |
- event = dev->event(2); |
+ event = dispatched_event(2); |
EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type()); |
EXPECT_EQ(true, event->IsLeftMouseButton()); |
} |
@@ -410,14 +452,14 @@ TEST_F(TabletEventConverterEvdevTest, StylusButtonPress) { |
}; |
dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); |
- EXPECT_EQ(3u, dev->size()); |
+ EXPECT_EQ(3u, size()); |
- ui::MouseEvent* event = dev->event(0); |
+ ui::MouseEvent* event = dispatched_event(0); |
EXPECT_EQ(ui::ET_MOUSE_MOVED, event->type()); |
- event = dev->event(1); |
+ event = dispatched_event(1); |
EXPECT_EQ(ui::ET_MOUSE_PRESSED, event->type()); |
EXPECT_EQ(true, event->IsRightMouseButton()); |
- event = dev->event(2); |
+ event = dispatched_event(2); |
EXPECT_EQ(ui::ET_MOUSE_RELEASED, event->type()); |
EXPECT_EQ(true, event->IsRightMouseButton()); |
} |
@@ -433,5 +475,5 @@ TEST_F(TabletEventConverterEvdevTest, CheckStylusFiltering) { |
}; |
dev->ProcessEvents(mock_kernel_queue, arraysize(mock_kernel_queue)); |
- EXPECT_EQ(0u, dev->size()); |
+ EXPECT_EQ(0u, size()); |
} |