Index: ui/views/mus/window_manager_connection_unittest.cc |
diff --git a/ui/views/mus/window_manager_connection_unittest.cc b/ui/views/mus/window_manager_connection_unittest.cc |
index e84d9eae989e423a3e863176a68396372911944f..c6796d8d940f8466803bb0d731fd88832660a37d 100644 |
--- a/ui/views/mus/window_manager_connection_unittest.cc |
+++ b/ui/views/mus/window_manager_connection_unittest.cc |
@@ -9,9 +9,9 @@ |
#include "base/message_loop/message_loop.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/events/event.h" |
+#include "ui/views/pointer_event_watcher.h" |
#include "ui/views/pointer_watcher.h" |
#include "ui/views/test/scoped_views_test_helper.h" |
-#include "ui/views/touch_event_watcher.h" |
namespace views { |
namespace { |
@@ -52,25 +52,33 @@ class TestPointerWatcher : public PointerWatcher { |
namespace { |
-class TestTouchEventWatcher : public TouchEventWatcher { |
+class TestPointerEventWatcher : public PointerEventWatcher { |
public: |
- TestTouchEventWatcher() {} |
- ~TestTouchEventWatcher() override {} |
+ TestPointerEventWatcher() {} |
+ ~TestPointerEventWatcher() override {} |
bool touch_observed() const { return touch_observed_; } |
+ bool mouse_observed() const { return mouse_observed_; } |
- void Reset() { touch_observed_ = false; } |
+ void Reset() { |
+ touch_observed_ = false; |
+ mouse_observed_ = false; |
+ } |
- // TouchEventWatcher: |
- void OnTouchEventObserved(const ui::LocatedEvent& event, |
- Widget* target) override { |
- touch_observed_ = true; |
+ // PointerEventWatcher: |
+ void OnPointerEventObserved(const ui::LocatedEvent& event, |
+ Widget* target) override { |
+ if (event.IsTouchPointerEvent() || event.IsTouchEvent()) |
+ touch_observed_ = true; |
+ else if (event.IsMousePointerEvent() || event.IsMouseEvent()) |
+ mouse_observed_ = true; |
} |
private: |
bool touch_observed_ = false; |
+ bool mouse_observed_ = false; |
- DISALLOW_COPY_AND_ASSIGN(TestTouchEventWatcher); |
+ DISALLOW_COPY_AND_ASSIGN(TestPointerEventWatcher); |
}; |
} // namespace |
@@ -154,8 +162,9 @@ TEST_F(WindowManagerConnectionTest, TouchEventWatcher) { |
ui::ET_TOUCH_RELEASED, |
ui::ET_TOUCH_CANCELLED}; |
- TestTouchEventWatcher watcher1; |
- connection->AddTouchEventWatcher(&watcher1); |
+ TestPointerEventWatcher watcher1; |
+ connection->AddPointerEventWatcher(&watcher1, |
+ ui::EventPointerType::POINTER_TYPE_TOUCH); |
// TouchEventWatchers do not trigger for mouse events. |
for (size_t i = 0; i < arraysize(kMouseType); i++) { |
@@ -185,8 +194,9 @@ TEST_F(WindowManagerConnectionTest, TouchEventWatcher) { |
} |
// Two TouchEventWatchers can both receive a single observed event. |
- TestTouchEventWatcher watcher2; |
- connection->AddTouchEventWatcher(&watcher2); |
+ TestPointerEventWatcher watcher2; |
+ connection->AddPointerEventWatcher(&watcher2, |
+ ui::EventPointerType::POINTER_TYPE_TOUCH); |
ui::TouchEvent touch_event(ui::ET_TOUCH_PRESSED, gfx::Point(), 0, |
base::TimeTicks()); |
ui::PointerEvent touch_pointer_event(touch_event); |
@@ -197,7 +207,8 @@ TEST_F(WindowManagerConnectionTest, TouchEventWatcher) { |
watcher2.Reset(); |
// Removing the first TouchEventWatcher stops sending events to it. |
- connection->RemoveTouchEventWatcher(&watcher1); |
+ connection->RemovePointerEventWatcher( |
+ &watcher1, ui::EventPointerType::POINTER_TYPE_TOUCH); |
OnEventObserved(touch_pointer_event); |
EXPECT_FALSE(watcher1.touch_observed()); |
EXPECT_TRUE(watcher2.touch_observed()); |
@@ -205,10 +216,85 @@ TEST_F(WindowManagerConnectionTest, TouchEventWatcher) { |
watcher2.Reset(); |
// Removing the last TouchEventWatcher stops sending events to it. |
- connection->RemoveTouchEventWatcher(&watcher2); |
+ connection->RemovePointerEventWatcher( |
+ &watcher2, ui::EventPointerType::POINTER_TYPE_TOUCH); |
OnEventObserved(touch_pointer_event); |
EXPECT_FALSE(watcher1.touch_observed()); |
EXPECT_FALSE(watcher2.touch_observed()); |
} |
+TEST_F(WindowManagerConnectionTest, MouseEventWatcher) { |
+ base::MessageLoop message_loop(base::MessageLoop::TYPE_UI); |
+ ScopedViewsTestHelper helper; |
+ WindowManagerConnection* connection = WindowManagerConnection::Get(); |
+ ASSERT_TRUE(connection); |
+ |
+ const ui::EventType kMouseType[] = { |
+ ui::ET_MOUSE_PRESSED, ui::ET_MOUSE_DRAGGED, ui::ET_MOUSE_MOVED, |
+ ui::ET_MOUSE_ENTERED, ui::ET_MOUSE_EXITED, ui::ET_MOUSE_RELEASED}; |
+ const ui::EventType kTouchType[] = {ui::ET_TOUCH_PRESSED, ui::ET_TOUCH_MOVED, |
+ ui::ET_TOUCH_RELEASED, |
+ ui::ET_TOUCH_CANCELLED}; |
+ |
+ TestPointerEventWatcher watcher1; |
+ connection->AddPointerEventWatcher(&watcher1, |
+ ui::EventPointerType::POINTER_TYPE_MOUSE); |
+ |
+ // MouseEventWatchers receive both MouseEvent and MousePointerEvent. |
+ for (size_t i = 0; i < arraysize(kMouseType); i++) { |
+ ui::MouseEvent mouse_event(kMouseType[i], gfx::Point(), gfx::Point(), |
+ base::TimeTicks(), 0, 0); |
+ EXPECT_TRUE(mouse_event.IsMouseEvent()); |
+ OnEventObserved(mouse_event); |
+ EXPECT_TRUE(watcher1.mouse_observed()); |
+ watcher1.Reset(); |
+ |
+ ui::PointerEvent mouse_pointer_event(mouse_event); |
+ EXPECT_TRUE(mouse_pointer_event.IsMousePointerEvent()); |
+ OnEventObserved(mouse_pointer_event); |
+ EXPECT_TRUE(watcher1.mouse_observed()); |
+ watcher1.Reset(); |
+ } |
+ |
+ // MouseEventWatchers do not trigger for touch events. |
+ for (size_t i = 0; i < arraysize(kTouchType); i++) { |
+ ui::TouchEvent touch_event(kTouchType[i], gfx::Point(), 0, |
+ base::TimeTicks()); |
+ ui::PointerEvent touch_pointer_event(touch_event); |
+ EXPECT_TRUE(touch_pointer_event.IsTouchPointerEvent()); |
+ OnEventObserved(touch_pointer_event); |
+ EXPECT_FALSE(watcher1.touch_observed()); |
+ watcher1.Reset(); |
+ } |
+ |
+ // Two MouseEventWatchers can both receive a single observed event. |
+ TestPointerEventWatcher watcher2; |
+ connection->AddPointerEventWatcher(&watcher2, |
+ ui::EventPointerType::POINTER_TYPE_MOUSE); |
+ ui::MouseEvent mouse_event(ui::ET_MOUSE_ENTERED, gfx::Point(), gfx::Point(), |
+ base::TimeTicks(), 0, 0); |
+ ui::PointerEvent mouse_pointer_event(mouse_event); |
+ OnEventObserved(mouse_pointer_event); |
+ EXPECT_TRUE(watcher1.mouse_observed()); |
+ EXPECT_TRUE(watcher2.mouse_observed()); |
+ watcher1.Reset(); |
+ watcher2.Reset(); |
+ |
+ // Removing the first MouseEventWatcher stops sending events to it. |
+ connection->RemovePointerEventWatcher( |
+ &watcher1, ui::EventPointerType::POINTER_TYPE_MOUSE); |
+ OnEventObserved(mouse_pointer_event); |
+ EXPECT_FALSE(watcher1.mouse_observed()); |
+ EXPECT_TRUE(watcher2.mouse_observed()); |
+ watcher1.Reset(); |
+ watcher2.Reset(); |
+ |
+ // Removing the last MouseEventWatcher stops sending events to it. |
+ connection->RemovePointerEventWatcher( |
+ &watcher2, ui::EventPointerType::POINTER_TYPE_MOUSE); |
+ OnEventObserved(mouse_pointer_event); |
+ EXPECT_FALSE(watcher1.mouse_observed()); |
+ EXPECT_FALSE(watcher2.mouse_observed()); |
+} |
+ |
} // namespace views |