Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(484)

Unified Diff: ui/views/mus/window_manager_connection_unittest.cc

Issue 2163453002: mus: Change PointerWatcher to watch for all events. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: AddPointerEventWatcher Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698