diff options
Diffstat (limited to 'ui/aura/window_tree_host_x11_unittest.cc')
-rw-r--r-- | ui/aura/window_tree_host_x11_unittest.cc | 177 |
1 files changed, 71 insertions, 106 deletions
diff --git a/ui/aura/window_tree_host_x11_unittest.cc b/ui/aura/window_tree_host_x11_unittest.cc index c1e5579..0deb034 100644 --- a/ui/aura/window_tree_host_x11_unittest.cc +++ b/ui/aura/window_tree_host_x11_unittest.cc @@ -6,8 +6,8 @@ #include "base/sys_info.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/aura/test/aura_test_base.h" +#include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" -#include "ui/aura/window_tree_host_delegate.h" #include "ui/aura/window_tree_host_x11.h" #include "ui/events/event_processor.h" #include "ui/events/event_target.h" @@ -15,37 +15,14 @@ #include "ui/events/test/events_test_utils_x11.h" namespace { -class TestWindowTreeHostDelegate : public aura::WindowTreeHostDelegate, - public ui::EventProcessor, - public ui::EventTarget { - public: - TestWindowTreeHostDelegate() : last_touch_type_(ui::ET_UNKNOWN), - last_touch_id_(-1), - last_touch_location_(0, 0) { - } - virtual ~TestWindowTreeHostDelegate() {} - - // aura::WindowTreeHostDelegate: - virtual void OnHostCancelMode() OVERRIDE {} - virtual void OnHostActivated() OVERRIDE {} - virtual void OnHostLostWindowCapture() OVERRIDE {} - virtual void OnHostLostMouseGrab() OVERRIDE {} - virtual void OnHostResized(const gfx::Size& size) OVERRIDE {} - virtual void OnCursorMovedToRootLocation( - const gfx::Point& root_location) OVERRIDE {} - virtual aura::WindowEventDispatcher* AsDispatcher() OVERRIDE { return NULL; } - virtual const aura::WindowEventDispatcher* AsDispatcher() const OVERRIDE { - return NULL; - } - virtual ui::EventProcessor* GetEventProcessor() OVERRIDE { - return this; - } - // ui::EventProcessor: - virtual ui::EventTarget* GetRootTarget() OVERRIDE { return this; } - virtual bool CanDispatchToTarget(ui::EventTarget* target) OVERRIDE { - return true; +class RootWindowEventHandler : public ui::EventHandler { + public: + RootWindowEventHandler() : last_touch_type_(ui::ET_UNKNOWN), + last_touch_id_(-1), + last_touch_location_(0, 0) { } + virtual ~RootWindowEventHandler () {} // ui::EventHandler: virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE { @@ -54,17 +31,6 @@ class TestWindowTreeHostDelegate : public aura::WindowTreeHostDelegate, last_touch_location_ = event->location(); } - // ui::EventTarget: - virtual bool CanAcceptEvent(const ui::Event& event) OVERRIDE { - return true; - } - virtual ui::EventTarget* GetParentTarget() OVERRIDE { return NULL; } - virtual scoped_ptr<ui::EventTargetIterator> - GetChildIterator() const OVERRIDE { - return scoped_ptr<ui::EventTargetIterator>(); - } - virtual ui::EventTargeter* GetEventTargeter() OVERRIDE { return &targeter_; } - ui::EventType last_touch_type() { return last_touch_type_; } @@ -81,9 +47,8 @@ class TestWindowTreeHostDelegate : public aura::WindowTreeHostDelegate, ui::EventType last_touch_type_; int last_touch_id_; gfx::Point last_touch_location_; - ui::EventTargeter targeter_; - DISALLOW_COPY_AND_ASSIGN(TestWindowTreeHostDelegate); + DISALLOW_COPY_AND_ASSIGN(RootWindowEventHandler); }; } // namespace @@ -104,17 +69,17 @@ TEST_F(WindowTreeHostX11Test, DispatchTouchEventToOneRootWindow) { scoped_ptr<WindowTreeHostX11> window_tree_host( new WindowTreeHostX11(gfx::Rect(0, 0, 2560, 1700))); - scoped_ptr<TestWindowTreeHostDelegate> delegate( - new TestWindowTreeHostDelegate()); - window_tree_host->set_delegate(delegate.get()); + window_tree_host->InitHost(); + scoped_ptr<RootWindowEventHandler> handler(new RootWindowEventHandler()); + window_tree_host->window()->AddPreTargetHandler(handler.get()); std::vector<unsigned int> devices; devices.push_back(0); ui::SetUpTouchDevicesForTest(devices); std::vector<ui::Valuator> valuators; - EXPECT_EQ(ui::ET_UNKNOWN, delegate->last_touch_type()); - EXPECT_EQ(-1, delegate->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler->last_touch_type()); + EXPECT_EQ(-1, handler->last_touch_id()); ui::ScopedXI2Event scoped_xevent; #if defined(OS_CHROMEOS) @@ -122,32 +87,32 @@ TEST_F(WindowTreeHostX11Test, DispatchTouchEventToOneRootWindow) { scoped_xevent.InitTouchEvent( 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators); window_tree_host->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_UNKNOWN, delegate->last_touch_type()); - EXPECT_EQ(-1, delegate->last_touch_id()); - EXPECT_EQ(gfx::Point(0, 0), delegate->last_touch_location()); + EXPECT_EQ(ui::ET_UNKNOWN, handler->last_touch_type()); + EXPECT_EQ(-1, handler->last_touch_id()); + EXPECT_EQ(gfx::Point(0, 0), handler->last_touch_location()); #endif // defined(OS_CHROMEOS) // Following touchs are within bounds and are passed to delegate. scoped_xevent.InitTouchEvent( 0, XI_TouchBegin, 5, gfx::Point(1500, 1500), valuators); window_tree_host->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_TOUCH_PRESSED, delegate->last_touch_type()); - EXPECT_EQ(0, delegate->last_touch_id()); - EXPECT_EQ(gfx::Point(1500, 1500), delegate->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler->last_touch_type()); + EXPECT_EQ(0, handler->last_touch_id()); + EXPECT_EQ(gfx::Point(1500, 1500), handler->last_touch_location()); scoped_xevent.InitTouchEvent( 0, XI_TouchUpdate, 5, gfx::Point(1500, 1600), valuators); window_tree_host->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_TOUCH_MOVED, delegate->last_touch_type()); - EXPECT_EQ(0, delegate->last_touch_id()); - EXPECT_EQ(gfx::Point(1500, 1600), delegate->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_MOVED, handler->last_touch_type()); + EXPECT_EQ(0, handler->last_touch_id()); + EXPECT_EQ(gfx::Point(1500, 1600), handler->last_touch_location()); scoped_xevent.InitTouchEvent( 0, XI_TouchEnd, 5, gfx::Point(1500, 1600), valuators); window_tree_host->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_TOUCH_RELEASED, delegate->last_touch_type()); - EXPECT_EQ(0, delegate->last_touch_id()); - EXPECT_EQ(gfx::Point(1500, 1600), delegate->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler->last_touch_type()); + EXPECT_EQ(0, handler->last_touch_id()); + EXPECT_EQ(gfx::Point(1500, 1600), handler->last_touch_location()); // Revert the CrOS testing env otherwise the following non-CrOS aura // tests will fail. @@ -169,26 +134,26 @@ TEST_F(WindowTreeHostX11Test, DispatchTouchEventToTwoRootWindow) { scoped_ptr<WindowTreeHostX11> window_tree_host1( new WindowTreeHostX11(gfx::Rect(0, 0, 2560, 1700))); - scoped_ptr<TestWindowTreeHostDelegate> delegate1( - new TestWindowTreeHostDelegate()); - window_tree_host1->set_delegate(delegate1.get()); + window_tree_host1->InitHost(); + scoped_ptr<RootWindowEventHandler> handler1(new RootWindowEventHandler()); + window_tree_host1->window()->AddPreTargetHandler(handler1.get()); int host2_y_offset = 1700; scoped_ptr<WindowTreeHostX11> window_tree_host2( new WindowTreeHostX11(gfx::Rect(0, host2_y_offset, 1920, 1080))); - scoped_ptr<TestWindowTreeHostDelegate> delegate2( - new TestWindowTreeHostDelegate()); - window_tree_host2->set_delegate(delegate2.get()); + window_tree_host2->InitHost(); + scoped_ptr<RootWindowEventHandler> handler2(new RootWindowEventHandler()); + window_tree_host2->window()->AddPreTargetHandler(handler2.get()); std::vector<unsigned int> devices; devices.push_back(0); ui::SetUpTouchDevicesForTest(devices); std::vector<ui::Valuator> valuators; - EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type()); - EXPECT_EQ(-1, delegate1->last_touch_id()); - EXPECT_EQ(ui::ET_UNKNOWN, delegate2->last_touch_type()); - EXPECT_EQ(-1, delegate2->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); + EXPECT_EQ(-1, handler1->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler2->last_touch_type()); + EXPECT_EQ(-1, handler2->last_touch_id()); // 2 Touch events are targeted at the second WindowTreeHost. ui::ScopedXI2Event scoped_xevent; @@ -196,73 +161,73 @@ TEST_F(WindowTreeHostX11Test, DispatchTouchEventToTwoRootWindow) { 0, XI_TouchBegin, 5, gfx::Point(1500, 2500), valuators); window_tree_host1->Dispatch(scoped_xevent); window_tree_host2->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type()); - EXPECT_EQ(-1, delegate1->last_touch_id()); - EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location()); - EXPECT_EQ(ui::ET_TOUCH_PRESSED, delegate2->last_touch_type()); - EXPECT_EQ(0, delegate2->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); + EXPECT_EQ(-1, handler1->last_touch_id()); + EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler2->last_touch_type()); + EXPECT_EQ(0, handler2->last_touch_id()); EXPECT_EQ(gfx::Point(1500, 2500 - host2_y_offset), - delegate2->last_touch_location()); + handler2->last_touch_location()); scoped_xevent.InitTouchEvent( 0, XI_TouchBegin, 6, gfx::Point(1600, 2600), valuators); window_tree_host1->Dispatch(scoped_xevent); window_tree_host2->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type()); - EXPECT_EQ(-1, delegate1->last_touch_id()); - EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location()); - EXPECT_EQ(ui::ET_TOUCH_PRESSED, delegate2->last_touch_type()); - EXPECT_EQ(1, delegate2->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); + EXPECT_EQ(-1, handler1->last_touch_id()); + EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_PRESSED, handler2->last_touch_type()); + EXPECT_EQ(1, handler2->last_touch_id()); EXPECT_EQ(gfx::Point(1600, 2600 - host2_y_offset), - delegate2->last_touch_location()); + handler2->last_touch_location()); scoped_xevent.InitTouchEvent( 0, XI_TouchUpdate, 5, gfx::Point(1500, 2550), valuators); window_tree_host1->Dispatch(scoped_xevent); window_tree_host2->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type()); - EXPECT_EQ(-1, delegate1->last_touch_id()); - EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location()); - EXPECT_EQ(ui::ET_TOUCH_MOVED, delegate2->last_touch_type()); - EXPECT_EQ(0, delegate2->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); + EXPECT_EQ(-1, handler1->last_touch_id()); + EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_MOVED, handler2->last_touch_type()); + EXPECT_EQ(0, handler2->last_touch_id()); EXPECT_EQ(gfx::Point(1500, 2550 - host2_y_offset), - delegate2->last_touch_location()); + handler2->last_touch_location()); scoped_xevent.InitTouchEvent( 0, XI_TouchUpdate, 6, gfx::Point(1600, 2650), valuators); window_tree_host1->Dispatch(scoped_xevent); window_tree_host2->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type()); - EXPECT_EQ(-1, delegate1->last_touch_id()); - EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location()); - EXPECT_EQ(ui::ET_TOUCH_MOVED, delegate2->last_touch_type()); - EXPECT_EQ(1, delegate2->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); + EXPECT_EQ(-1, handler1->last_touch_id()); + EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_MOVED, handler2->last_touch_type()); + EXPECT_EQ(1, handler2->last_touch_id()); EXPECT_EQ(gfx::Point(1600, 2650 - host2_y_offset), - delegate2->last_touch_location()); + handler2->last_touch_location()); scoped_xevent.InitTouchEvent( 0, XI_TouchEnd, 5, gfx::Point(1500, 2550), valuators); window_tree_host1->Dispatch(scoped_xevent); window_tree_host2->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type()); - EXPECT_EQ(-1, delegate1->last_touch_id()); - EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location()); - EXPECT_EQ(ui::ET_TOUCH_RELEASED, delegate2->last_touch_type()); - EXPECT_EQ(0, delegate2->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); + EXPECT_EQ(-1, handler1->last_touch_id()); + EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler2->last_touch_type()); + EXPECT_EQ(0, handler2->last_touch_id()); EXPECT_EQ(gfx::Point(1500, 2550 - host2_y_offset), - delegate2->last_touch_location()); + handler2->last_touch_location()); scoped_xevent.InitTouchEvent( 0, XI_TouchEnd, 6, gfx::Point(1600, 2650), valuators); window_tree_host1->Dispatch(scoped_xevent); window_tree_host2->Dispatch(scoped_xevent); - EXPECT_EQ(ui::ET_UNKNOWN, delegate1->last_touch_type()); - EXPECT_EQ(-1, delegate1->last_touch_id()); - EXPECT_EQ(gfx::Point(0, 0), delegate1->last_touch_location()); - EXPECT_EQ(ui::ET_TOUCH_RELEASED, delegate2->last_touch_type()); - EXPECT_EQ(1, delegate2->last_touch_id()); + EXPECT_EQ(ui::ET_UNKNOWN, handler1->last_touch_type()); + EXPECT_EQ(-1, handler1->last_touch_id()); + EXPECT_EQ(gfx::Point(0, 0), handler1->last_touch_location()); + EXPECT_EQ(ui::ET_TOUCH_RELEASED, handler2->last_touch_type()); + EXPECT_EQ(1, handler2->last_touch_id()); EXPECT_EQ(gfx::Point(1600, 2650 - host2_y_offset), - delegate2->last_touch_location()); + handler2->last_touch_location()); // Revert the CrOS testing env otherwise the following non-CrOS aura // tests will fail. |