| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/views/controls/menu/menu_runner.h" | 5 #include "ui/views/controls/menu/menu_runner.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 EXPECT_FALSE(runner->IsRunning()); | 98 EXPECT_FALSE(runner->IsRunning()); |
| 99 TestMenuDelegate* delegate = menu_delegate(); | 99 TestMenuDelegate* delegate = menu_delegate(); |
| 100 EXPECT_EQ(1, delegate->on_menu_closed_called()); | 100 EXPECT_EQ(1, delegate->on_menu_closed_called()); |
| 101 EXPECT_EQ(nullptr, delegate->on_menu_closed_menu()); | 101 EXPECT_EQ(nullptr, delegate->on_menu_closed_menu()); |
| 102 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); | 102 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); |
| 103 } | 103 } |
| 104 | 104 |
| 105 // Tests that when a menu is run asynchronously, key events are handled properly | 105 // Tests that when a menu is run asynchronously, key events are handled properly |
| 106 // by testing that Escape key closes the menu. | 106 // by testing that Escape key closes the menu. |
| 107 TEST_F(MenuRunnerTest, AsynchronousKeyEventHandling) { | 107 TEST_F(MenuRunnerTest, AsynchronousKeyEventHandling) { |
| 108 // TODO: test uses GetContext(), which is not applicable to aura-mus. |
| 109 // http://crbug.com/663809. |
| 110 if (IsAuraMusClient()) |
| 111 return; |
| 112 |
| 108 InitMenuRunner(MenuRunner::ASYNC); | 113 InitMenuRunner(MenuRunner::ASYNC); |
| 109 MenuRunner* runner = menu_runner(); | 114 MenuRunner* runner = menu_runner(); |
| 110 MenuRunner::RunResult result = runner->RunMenuAt( | 115 MenuRunner::RunResult result = runner->RunMenuAt( |
| 111 owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); | 116 owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); |
| 112 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); | 117 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); |
| 113 EXPECT_TRUE(runner->IsRunning()); | 118 EXPECT_TRUE(runner->IsRunning()); |
| 114 | 119 |
| 115 ui::test::EventGenerator generator(GetContext(), owner()->GetNativeWindow()); | 120 ui::test::EventGenerator generator(GetContext(), owner()->GetNativeWindow()); |
| 116 generator.PressKey(ui::VKEY_ESCAPE, 0); | 121 generator.PressKey(ui::VKEY_ESCAPE, 0); |
| 117 EXPECT_FALSE(runner->IsRunning()); | 122 EXPECT_FALSE(runner->IsRunning()); |
| 118 TestMenuDelegate* delegate = menu_delegate(); | 123 TestMenuDelegate* delegate = menu_delegate(); |
| 119 EXPECT_EQ(1, delegate->on_menu_closed_called()); | 124 EXPECT_EQ(1, delegate->on_menu_closed_called()); |
| 120 EXPECT_EQ(nullptr, delegate->on_menu_closed_menu()); | 125 EXPECT_EQ(nullptr, delegate->on_menu_closed_menu()); |
| 121 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); | 126 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); |
| 122 } | 127 } |
| 123 | 128 |
| 124 // Tests that a key press on a US keyboard layout activates the correct menu | 129 // Tests that a key press on a US keyboard layout activates the correct menu |
| 125 // item. | 130 // item. |
| 126 TEST_F(MenuRunnerTest, LatinMnemonic) { | 131 TEST_F(MenuRunnerTest, LatinMnemonic) { |
| 132 // TODO: test uses GetContext(), which is not applicable to aura-mus. |
| 133 // http://crbug.com/663809. |
| 134 if (IsAuraMusClient()) |
| 135 return; |
| 136 |
| 127 InitMenuRunner(MenuRunner::ASYNC); | 137 InitMenuRunner(MenuRunner::ASYNC); |
| 128 MenuRunner* runner = menu_runner(); | 138 MenuRunner* runner = menu_runner(); |
| 129 MenuRunner::RunResult result = runner->RunMenuAt( | 139 MenuRunner::RunResult result = runner->RunMenuAt( |
| 130 owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); | 140 owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); |
| 131 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); | 141 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); |
| 132 EXPECT_TRUE(runner->IsRunning()); | 142 EXPECT_TRUE(runner->IsRunning()); |
| 133 | 143 |
| 134 ui::test::EventGenerator generator(GetContext(), owner()->GetNativeWindow()); | 144 ui::test::EventGenerator generator(GetContext(), owner()->GetNativeWindow()); |
| 135 generator.PressKey(ui::VKEY_O, 0); | 145 generator.PressKey(ui::VKEY_O, 0); |
| 136 EXPECT_FALSE(runner->IsRunning()); | 146 EXPECT_FALSE(runner->IsRunning()); |
| 137 TestMenuDelegate* delegate = menu_delegate(); | 147 TestMenuDelegate* delegate = menu_delegate(); |
| 138 EXPECT_EQ(1, delegate->execute_command_id()); | 148 EXPECT_EQ(1, delegate->execute_command_id()); |
| 139 EXPECT_EQ(1, delegate->on_menu_closed_called()); | 149 EXPECT_EQ(1, delegate->on_menu_closed_called()); |
| 140 EXPECT_NE(nullptr, delegate->on_menu_closed_menu()); | 150 EXPECT_NE(nullptr, delegate->on_menu_closed_menu()); |
| 141 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); | 151 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); |
| 142 } | 152 } |
| 143 | 153 |
| 144 // Tests that a key press on a non-US keyboard layout activates the correct menu | 154 // Tests that a key press on a non-US keyboard layout activates the correct menu |
| 145 // item. | 155 // item. |
| 146 TEST_F(MenuRunnerTest, NonLatinMnemonic) { | 156 TEST_F(MenuRunnerTest, NonLatinMnemonic) { |
| 157 // TODO: test uses GetContext(), which is not applicable to aura-mus. |
| 158 // http://crbug.com/663809. |
| 159 if (IsAuraMusClient()) |
| 160 return; |
| 161 |
| 147 InitMenuRunner(MenuRunner::ASYNC); | 162 InitMenuRunner(MenuRunner::ASYNC); |
| 148 MenuRunner* runner = menu_runner(); | 163 MenuRunner* runner = menu_runner(); |
| 149 MenuRunner::RunResult result = runner->RunMenuAt( | 164 MenuRunner::RunResult result = runner->RunMenuAt( |
| 150 owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); | 165 owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); |
| 151 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); | 166 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); |
| 152 EXPECT_TRUE(runner->IsRunning()); | 167 EXPECT_TRUE(runner->IsRunning()); |
| 153 | 168 |
| 154 ui::test::EventGenerator generator(GetContext(), owner()->GetNativeWindow()); | 169 ui::test::EventGenerator generator(GetContext(), owner()->GetNativeWindow()); |
| 155 ui::KeyEvent key_press(0x062f, ui::VKEY_N, 0); | 170 ui::KeyEvent key_press(0x062f, ui::VKEY_N, 0); |
| 156 generator.Dispatch(&key_press); | 171 generator.Dispatch(&key_press); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 class MenuRunnerWidgetTest : public MenuRunnerTest { | 234 class MenuRunnerWidgetTest : public MenuRunnerTest { |
| 220 public: | 235 public: |
| 221 MenuRunnerWidgetTest() {} | 236 MenuRunnerWidgetTest() {} |
| 222 | 237 |
| 223 Widget* widget() { return widget_; } | 238 Widget* widget() { return widget_; } |
| 224 EventCountView* event_count_view() { return event_count_view_; } | 239 EventCountView* event_count_view() { return event_count_view_; } |
| 225 | 240 |
| 226 std::unique_ptr<ui::test::EventGenerator> EventGeneratorForWidget( | 241 std::unique_ptr<ui::test::EventGenerator> EventGeneratorForWidget( |
| 227 Widget* widget) { | 242 Widget* widget) { |
| 228 return base::MakeUnique<ui::test::EventGenerator>( | 243 return base::MakeUnique<ui::test::EventGenerator>( |
| 229 IsMus() ? widget->GetNativeWindow() : GetContext(), | 244 IsMus() || IsAuraMusClient() ? widget->GetNativeWindow() : GetContext(), |
| 230 widget->GetNativeWindow()); | 245 widget->GetNativeWindow()); |
| 231 } | 246 } |
| 232 | 247 |
| 233 void AddMenuLauncherEventHandler(Widget* widget) { | 248 void AddMenuLauncherEventHandler(Widget* widget) { |
| 234 consumer_ = | 249 consumer_ = |
| 235 base::MakeUnique<MenuLauncherEventHandler>(menu_runner(), widget); | 250 base::MakeUnique<MenuLauncherEventHandler>(menu_runner(), widget); |
| 236 event_count_view_->AddPostTargetHandler(consumer_.get()); | 251 event_count_view_->AddPostTargetHandler(consumer_.get()); |
| 237 } | 252 } |
| 238 | 253 |
| 239 // ViewsTestBase: | 254 // ViewsTestBase: |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 menu_runner->OnMenuClosed(internal::MenuControllerDelegate::NOTIFY_DELEGATE, | 370 menu_runner->OnMenuClosed(internal::MenuControllerDelegate::NOTIFY_DELEGATE, |
| 356 nullptr, 0); | 371 nullptr, 0); |
| 357 | 372 |
| 358 // This should not access the destroyed MenuController | 373 // This should not access the destroyed MenuController |
| 359 menu_runner2->Release(); | 374 menu_runner2->Release(); |
| 360 menu_runner->Release(); | 375 menu_runner->Release(); |
| 361 } | 376 } |
| 362 | 377 |
| 363 } // namespace test | 378 } // namespace test |
| 364 } // namespace views | 379 } // namespace views |
| OLD | NEW |