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

Unified Diff: ui/base/events/event_dispatcher_unittest.cc

Issue 10956045: events: Cleanup the EventDispatcher API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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
« no previous file with comments | « ui/base/events/event_dispatcher.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/events/event_dispatcher_unittest.cc
diff --git a/ui/base/events/event_dispatcher_unittest.cc b/ui/base/events/event_dispatcher_unittest.cc
index 4f7b1a796aceae62f12604007d1f6ca6575f1fa1..74e2ef8f6658b0efad7cf1c91ccac6ee9b866866 100644
--- a/ui/base/events/event_dispatcher_unittest.cc
+++ b/ui/base/events/event_dispatcher_unittest.cc
@@ -48,18 +48,31 @@ class TestEventHandler : public EventHandler {
TestEventHandler(int id)
: id_(id),
event_result_(ER_UNHANDLED),
- expected_phase_(EP_PREDISPATCH) {
+ expect_pre_target_(false),
+ expect_post_target_(false),
+ received_pre_target_(false) {
}
virtual ~TestEventHandler() {}
void ReceivedEvent(Event* event) {
- EXPECT_EQ(expected_phase_, event->phase());
static_cast<TestTarget*>(event->target())->AddHandlerId(id_);
+ if (event->phase() == ui::EP_POSTTARGET) {
+ EXPECT_TRUE(expect_post_target_);
+ if (expect_pre_target_)
+ EXPECT_TRUE(received_pre_target_);
+ } else if (event->phase() == ui::EP_PRETARGET) {
+ EXPECT_TRUE(expect_pre_target_);
+ received_pre_target_ = true;
+ } else {
+ NOTREACHED();
+ }
}
void set_event_result(EventResult result) { event_result_ = result; }
- void set_expected_phase(EventPhase phase) { expected_phase_ = phase; }
+
+ void set_expect_pre_target(bool expect) { expect_pre_target_ = expect; }
+ void set_expect_post_target(bool expect) { expect_post_target_ = expect; }
private:
// Overridden from EventHandler:
@@ -90,7 +103,9 @@ class TestEventHandler : public EventHandler {
int id_;
EventResult event_result_;
- EventPhase expected_phase_;
+ bool expect_pre_target_;
+ bool expect_post_target_;
+ bool received_pre_target_;
DISALLOW_COPY_AND_ASSIGN(TestEventHandler);
};
@@ -106,18 +121,6 @@ class TestEventDispatcher : public EventDispatcher {
return true;
}
- virtual void ProcessPreTargetList(EventHandlerList* list) OVERRIDE {
- for (EventHandlerList::iterator i = list->begin(); i != list->end(); ++i) {
- static_cast<TestEventHandler*>(*i)->set_expected_phase(EP_PRETARGET);
- }
- }
-
- virtual void ProcessPostTargetList(EventHandlerList* list) OVERRIDE {
- for (EventHandlerList::iterator i = list->begin(); i != list->end(); ++i) {
- static_cast<TestEventHandler*>(*i)->set_expected_phase(EP_POSTTARGET);
- }
- }
-
DISALLOW_COPY_AND_ASSIGN(TestEventDispatcher);
};
@@ -137,12 +140,22 @@ TEST(EventDispatcherTest, EventDispatchOrder) {
child.AddPreTargetHandler(&h3);
child.AddPreTargetHandler(&h4);
+ h1.set_expect_pre_target(true);
+ h2.set_expect_pre_target(true);
+ h3.set_expect_pre_target(true);
+ h4.set_expect_pre_target(true);
+
child.AddPostTargetHandler(&h5);
child.AddPostTargetHandler(&h6);
parent.AddPostTargetHandler(&h7);
parent.AddPostTargetHandler(&h8);
+ h5.set_expect_post_target(true);
+ h6.set_expect_post_target(true);
+ h7.set_expect_post_target(true);
+ h8.set_expect_post_target(true);
+
MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4),
gfx::Point(3, 4), 0);
Event::DispatcherApi event_mod(&mouse);
@@ -200,4 +213,28 @@ TEST(EventDispatcherTest, EventDispatchOrder) {
child.handler_list());
}
+// Tests that the event-phases are correct.
+TEST(EventDispatcherTest, EventDispatchPhase) {
+ TestEventDispatcher dispatcher;
+ TestTarget target;
+
+ TestEventHandler handler(11);
+
+ target.AddPreTargetHandler(&handler);
+ target.AddPostTargetHandler(&handler);
+ handler.set_expect_pre_target(true);
+ handler.set_expect_post_target(true);
+
+ MouseEvent mouse(ui::ET_MOUSE_MOVED, gfx::Point(3, 4),
+ gfx::Point(3, 4), 0);
+ Event::DispatcherApi event_mod(&mouse);
+ int result = dispatcher.ProcessEvent(&target, &mouse);
+ EXPECT_EQ(ER_UNHANDLED, result);
+
+ int handlers[] = { 11, 11 };
+ EXPECT_EQ(
+ std::vector<int>(handlers, handlers + sizeof(handlers) / sizeof(int)),
+ target.handler_list());
+}
+
} // namespace ui
« no previous file with comments | « ui/base/events/event_dispatcher.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698