| Index: ui/aura/window_unittest.cc
|
| diff --git a/ui/aura/window_unittest.cc b/ui/aura/window_unittest.cc
|
| index cb7ad0ec7e7458e3d53053a91fefb2af2dd9201c..7c1e3a877ef37f468e480950cb2e5b9095cfe32a 100644
|
| --- a/ui/aura/window_unittest.cc
|
| +++ b/ui/aura/window_unittest.cc
|
| @@ -236,6 +236,23 @@ base::TimeDelta getTime() {
|
| return base::Time::NowFromSystemTime() - base::Time();
|
| }
|
|
|
| +class ClickthoughWindowDelegate : public TestWindowDelegate {
|
| + public:
|
| + ClickthoughWindowDelegate() {}
|
| +
|
| + virtual bool ShouldDescendIntoChildForEventHandling(
|
| + Window* child,
|
| + const gfx::Point& event_location,
|
| + ui::EventType event_type) OVERRIDE {
|
| + return event_type != ui::ET_MOUSE_PRESSED &&
|
| + event_type != ui::ET_MOUSE_DRAGGED &&
|
| + event_type != ui::ET_MOUSE_RELEASED;
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(ClickthoughWindowDelegate);
|
| +};
|
| +
|
| } // namespace
|
|
|
| TEST_F(WindowTest, GetChildById) {
|
| @@ -487,14 +504,22 @@ TEST_F(WindowTest, GetEventHandlerForPoint) {
|
|
|
| Window* root = root_window();
|
| w1->parent()->SetBounds(gfx::Rect(500, 500));
|
| - EXPECT_EQ(NULL, root->GetEventHandlerForPoint(gfx::Point(5, 5)));
|
| - EXPECT_EQ(w1.get(), root->GetEventHandlerForPoint(gfx::Point(11, 11)));
|
| - EXPECT_EQ(w11.get(), root->GetEventHandlerForPoint(gfx::Point(16, 16)));
|
| - EXPECT_EQ(w111.get(), root->GetEventHandlerForPoint(gfx::Point(21, 21)));
|
| - EXPECT_EQ(w1111.get(), root->GetEventHandlerForPoint(gfx::Point(26, 26)));
|
| - EXPECT_EQ(w12.get(), root->GetEventHandlerForPoint(gfx::Point(21, 431)));
|
| - EXPECT_EQ(w121.get(), root->GetEventHandlerForPoint(gfx::Point(26, 436)));
|
| - EXPECT_EQ(w13.get(), root->GetEventHandlerForPoint(gfx::Point(26, 481)));
|
| + EXPECT_EQ(NULL, root->GetEventHandlerForPoint(
|
| + gfx::Point(5, 5), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(w1.get(), root->GetEventHandlerForPoint(
|
| + gfx::Point(11, 11), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(w11.get(), root->GetEventHandlerForPoint(
|
| + gfx::Point(16, 16), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(w111.get(), root->GetEventHandlerForPoint(
|
| + gfx::Point(21, 21), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(w1111.get(), root->GetEventHandlerForPoint(
|
| + gfx::Point(26, 26), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(w12.get(), root->GetEventHandlerForPoint(
|
| + gfx::Point(21, 431), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(w121.get(), root->GetEventHandlerForPoint(
|
| + gfx::Point(26, 436), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(w13.get(), root->GetEventHandlerForPoint(
|
| + gfx::Point(26, 481), ui::ET_MOUSE_ENTERED));
|
| }
|
|
|
| TEST_F(WindowTest, GetEventHandlerForPointWithOverride) {
|
| @@ -504,14 +529,42 @@ TEST_F(WindowTest, GetEventHandlerForPointWithOverride) {
|
| CreateTestWindow(SK_ColorWHITE, 1, gfx::Rect(10, 20, 400, 500), NULL));
|
| scoped_ptr<Window> child(
|
| CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 60, 70), parent.get()));
|
| - EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0)));
|
| - EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1)));
|
| + EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(0, 0), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(1, 1), ui::ET_MOUSE_ENTERED));
|
|
|
| // We can override the hit test bounds of the parent to make the parent grab
|
| // events along that edge.
|
| parent->set_hit_test_bounds_override_inner(gfx::Insets(1, 1, 1, 1));
|
| - EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(gfx::Point(0, 0)));
|
| - EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(gfx::Point(1, 1)));
|
| + EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(0, 0), ui::ET_MOUSE_ENTERED));
|
| + EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(1, 1), ui::ET_MOUSE_ENTERED));
|
| +}
|
| +
|
| +TEST_F(WindowTest, GetEventHandlerForPointWithinClickthroughRegion) {
|
| + scoped_ptr<ClickthoughWindowDelegate> paren_delegate(
|
| + new ClickthoughWindowDelegate);
|
| + scoped_ptr<Window> parent(CreateTestWindowWithDelegate(
|
| + paren_delegate.get(), 1, gfx::Rect(10, 20, 400, 500), NULL));
|
| + scoped_ptr<Window> child(
|
| + CreateTestWindow(SK_ColorRED, 2, gfx::Rect(0, 0, 390, 480),
|
| + parent.get()));
|
| +
|
| + // Parent should grab all mouse click/drag related events.
|
| + EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(50, 50), ui::ET_MOUSE_PRESSED));
|
| + EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(50, 50), ui::ET_MOUSE_DRAGGED));
|
| + EXPECT_EQ(parent.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(50, 50), ui::ET_MOUSE_RELEASED));
|
| +
|
| + // Child should grab all other mouse events.
|
| + EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(50, 50), ui::ET_MOUSE_MOVED));
|
| + EXPECT_EQ(child.get(), parent->GetEventHandlerForPoint(
|
| + gfx::Point(50, 50), ui::ET_MOUSE_ENTERED));
|
| }
|
|
|
| TEST_F(WindowTest, GetTopWindowContainingPoint) {
|
| @@ -1168,7 +1221,8 @@ TEST_F(WindowTest, GetEventHandlerForPoint_NoDelegate) {
|
| gfx::Rect(0, 0, 500, 500), w1.get()));
|
|
|
| gfx::Point target_point = w111->bounds().CenterPoint();
|
| - EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(target_point));
|
| + EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(
|
| + target_point, ui::ET_MOUSE_ENTERED));
|
| }
|
|
|
| class VisibilityWindowDelegate : public TestWindowDelegate {
|
| @@ -1274,18 +1328,24 @@ TEST_F(WindowTest, IgnoreEventsTest) {
|
| scoped_ptr<Window> w121(CreateTestWindowWithDelegate(&d121, 121,
|
| gfx::Rect(150, 150, 50, 50), w12.get()));
|
|
|
| - EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10)));
|
| + EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(
|
| + gfx::Point(10, 10), ui::ET_MOUSE_ENTERED));
|
| w12->set_ignore_events(true);
|
| - EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(gfx::Point(10, 10)));
|
| + EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(
|
| + gfx::Point(10, 10), ui::ET_MOUSE_ENTERED));
|
| w12->set_ignore_events(false);
|
|
|
| - EXPECT_EQ(w121.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160)));
|
| + EXPECT_EQ(w121.get(), w1->GetEventHandlerForPoint(
|
| + gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
|
| w121->set_ignore_events(true);
|
| - EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160)));
|
| + EXPECT_EQ(w12.get(), w1->GetEventHandlerForPoint(
|
| + gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
|
| w12->set_ignore_events(true);
|
| - EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160)));
|
| + EXPECT_EQ(w111.get(), w1->GetEventHandlerForPoint(
|
| + gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
|
| w111->set_ignore_events(true);
|
| - EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(gfx::Point(160, 160)));
|
| + EXPECT_EQ(w11.get(), w1->GetEventHandlerForPoint(
|
| + gfx::Point(160, 160), ui::ET_MOUSE_ENTERED));
|
| }
|
|
|
| // Tests transformation on the root window.
|
|
|