| 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());
|
| }
|
|
|