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 |