Index: ui/views/controls/menu/menu_controller_unittest.cc |
diff --git a/ui/views/controls/menu/menu_controller_unittest.cc b/ui/views/controls/menu/menu_controller_unittest.cc |
index dc089c68b0e706d7da5f89aa1d3ed5bd4c77dc7d..7aa23a317f5567796374d48308f376f97ab516ae 100644 |
--- a/ui/views/controls/menu/menu_controller_unittest.cc |
+++ b/ui/views/controls/menu/menu_controller_unittest.cc |
@@ -5,11 +5,8 @@ |
#include "ui/views/controls/menu/menu_controller.h" |
#include "base/run_loop.h" |
-#include "ui/aura/scoped_window_targeter.h" |
#include "ui/aura/window.h" |
-#include "ui/events/event_targeter.h" |
#include "ui/events/platform/platform_event_source.h" |
-#include "ui/views/controls/menu/menu_item_view.h" |
#include "ui/views/test/views_test_base.h" |
#include "ui/wm/public/dispatcher_client.h" |
@@ -19,21 +16,11 @@ |
#include <X11/Xlib.h> |
#undef Bool |
#undef None |
-#include "ui/events/test/events_test_utils_x11.h" |
#endif |
namespace views { |
namespace { |
- |
-class TestMenuItemView : public MenuItemView { |
- public: |
- TestMenuItemView() : MenuItemView(NULL) {} |
- virtual ~TestMenuItemView() {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(TestMenuItemView); |
-}; |
class TestPlatformEventSource : public ui::PlatformEventSource { |
public: |
@@ -46,20 +33,6 @@ |
private: |
DISALLOW_COPY_AND_ASSIGN(TestPlatformEventSource); |
-}; |
- |
-class TestNullTargeter : public ui::EventTargeter { |
- public: |
- TestNullTargeter() {} |
- virtual ~TestNullTargeter() {} |
- |
- virtual ui::EventTarget* FindTargetForEvent(ui::EventTarget* root, |
- ui::Event* event) OVERRIDE { |
- return NULL; |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(TestNullTargeter); |
}; |
class TestDispatcherClient : public aura::client::DispatcherClient { |
@@ -106,7 +79,16 @@ |
base::MessageLoop::ScopedNestableTaskAllower allow(loop); |
controller_->exit_type_ = MenuController::EXIT_ALL; |
- DispatchEvent(); |
+#if defined(USE_X11) |
+ XEvent xevent; |
+ memset(&xevent, 0, sizeof(xevent)); |
+ event_source_.Dispatch(&xevent); |
+#else |
+ MSG msg; |
+ memset(&msg, 0, sizeof(MSG)); |
+ dispatcher_client_.dispatcher()->Dispatch(msg); |
+#endif |
+ |
if (count) { |
base::MessageLoop::current()->PostTask( |
FROM_HERE, |
@@ -133,57 +115,22 @@ |
} |
void Step1_RunMenu() { |
+ Widget widget; |
+ Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
+ params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
+ widget.Init(params); |
+ widget.Show(); |
+ |
+ aura::client::SetDispatcherClient(widget.GetNativeWindow()->GetRootWindow(), |
+ &dispatcher_client_); |
+ |
+ controller_ = new MenuController(NULL, true, NULL); |
+ controller_->owner_ = &widget; |
base::MessageLoop::current()->PostTask( |
FROM_HERE, |
base::Bind(&MenuControllerTest::Step2_RunNestedLoop, |
base::Unretained(this))); |
- scoped_ptr<Widget> owner(CreateOwnerWidget()); |
- RunMenu(owner.get()); |
- } |
- |
- scoped_ptr<Widget> CreateOwnerWidget() { |
- scoped_ptr<Widget> widget(new Widget); |
- Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); |
- params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
- widget->Init(params); |
- widget->Show(); |
- |
- aura::client::SetDispatcherClient( |
- widget->GetNativeWindow()->GetRootWindow(), &dispatcher_client_); |
- return widget.Pass(); |
- } |
- |
- void RunMenu(views::Widget* owner) { |
- scoped_ptr<TestMenuItemView> menu_item(new TestMenuItemView); |
- controller_ = new MenuController(NULL, true, NULL); |
- controller_->owner_ = owner; |
- controller_->showing_ = true; |
- controller_->SetSelection(menu_item.get(), |
- MenuController::SELECTION_UPDATE_IMMEDIATELY); |
controller_->RunMessageLoop(false); |
- } |
- |
-#if defined(USE_X11) |
- void DispatchEscapeAndExpect(MenuController::ExitType exit_type) { |
- ui::ScopedXI2Event key_event; |
- key_event.InitKeyEvent(ui::ET_KEY_PRESSED, ui::VKEY_ESCAPE, 0); |
- event_source_.Dispatch(key_event); |
- EXPECT_EQ(exit_type, controller_->exit_type()); |
- controller_->exit_type_ = MenuController::EXIT_ALL; |
- DispatchEvent(); |
- } |
-#endif |
- |
- void DispatchEvent() { |
-#if defined(USE_X11) |
- XEvent xevent; |
- memset(&xevent, 0, sizeof(xevent)); |
- event_source_.Dispatch(&xevent); |
-#else |
- MSG msg; |
- memset(&msg, 0, sizeof(MSG)); |
- dispatcher_client_.dispatcher()->Dispatch(msg); |
-#endif |
} |
private: |
@@ -203,36 +150,4 @@ |
base::Bind(&MenuControllerTest::Step1_RunMenu, base::Unretained(this))); |
} |
-#if defined(OS_LINUX) && defined(USE_X11) |
-// Tests that an event targeter which blocks events will be honored by the menu |
-// event dispatcher. |
-TEST_F(MenuControllerTest, EventTargeter) { |
- { |
- // Verify that the menu handles the escape key under normal circumstances. |
- scoped_ptr<Widget> owner(CreateOwnerWidget()); |
- message_loop()->PostTask( |
- FROM_HERE, |
- base::Bind(&MenuControllerTest::DispatchEscapeAndExpect, |
- base::Unretained(this), |
- MenuController::EXIT_OUTERMOST)); |
- RunMenu(owner.get()); |
- } |
- |
- { |
- // With the NULL targeter instantiated and assigned we expect the menu to |
- // not handle the key event. |
- scoped_ptr<Widget> owner(CreateOwnerWidget()); |
- aura::ScopedWindowTargeter scoped_targeter( |
- owner->GetNativeWindow()->GetRootWindow(), |
- scoped_ptr<ui::EventTargeter>(new TestNullTargeter)); |
- message_loop()->PostTask( |
- FROM_HERE, |
- base::Bind(&MenuControllerTest::DispatchEscapeAndExpect, |
- base::Unretained(this), |
- MenuController::EXIT_NONE)); |
- RunMenu(owner.get()); |
- } |
-} |
-#endif |
- |
} // namespace views |