| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/aura/window_targeter.h" |
| |
| #include "ui/aura/test/aura_test_base.h" |
| #include "ui/aura/test/test_event_handler.h" |
| #include "ui/aura/test/test_window_delegate.h" |
| #include "ui/aura/window.h" |
| |
| namespace aura { |
| |
| class WindowTargeterTest : public test::AuraTestBase { |
| public: |
| WindowTargeterTest() {} |
| virtual ~WindowTargeterTest() {} |
| |
| Window* root_window() { return AuraTestBase::root_window(); } |
| }; |
| |
| TEST_F(WindowTargeterTest, Basic) { |
| test::TestWindowDelegate delegate; |
| scoped_ptr<Window> window(CreateNormalWindow(1, root_window(), &delegate)); |
| Window* one = CreateNormalWindow(2, window.get(), &delegate); |
| Window* two = CreateNormalWindow(3, window.get(), &delegate); |
| |
| window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
| one->SetBounds(gfx::Rect(0, 0, 500, 100)); |
| two->SetBounds(gfx::Rect(501, 0, 500, 1000)); |
| |
| root_window()->Show(); |
| |
| test::TestEventHandler handler; |
| one->AddPreTargetHandler(&handler); |
| |
| ui::MouseEvent press(ui::ET_MOUSE_PRESSED, |
| gfx::Point(20, 20), |
| gfx::Point(20, 20), |
| ui::EF_NONE); |
| root_window()->GetDispatcher()->AsRootWindowHostDelegate()-> |
| OnHostMouseEvent(&press); |
| EXPECT_EQ(1, handler.num_mouse_events()); |
| |
| handler.Reset(); |
| ui::EventDispatchDetails details = |
| root_window()->GetDispatcher()->OnEventFromSource(&press); |
| EXPECT_FALSE(details.dispatcher_destroyed); |
| EXPECT_EQ(1, handler.num_mouse_events()); |
| |
| one->RemovePreTargetHandler(&handler); |
| } |
| |
| } // namespace aura |