| 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 "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 ui::KeyEvent key_press(0x062f, ui::VKEY_N, 0); | 202 ui::KeyEvent key_press(0x062f, ui::VKEY_N, 0); |
| 203 generator.Dispatch(&key_press); | 203 generator.Dispatch(&key_press); |
| 204 EXPECT_FALSE(runner->IsRunning()); | 204 EXPECT_FALSE(runner->IsRunning()); |
| 205 TestMenuDelegate* delegate = menu_delegate(); | 205 TestMenuDelegate* delegate = menu_delegate(); |
| 206 EXPECT_EQ(2, delegate->execute_command_id()); | 206 EXPECT_EQ(2, delegate->execute_command_id()); |
| 207 EXPECT_EQ(1, delegate->on_menu_closed_called()); | 207 EXPECT_EQ(1, delegate->on_menu_closed_called()); |
| 208 EXPECT_NE(nullptr, delegate->on_menu_closed_menu()); | 208 EXPECT_NE(nullptr, delegate->on_menu_closed_menu()); |
| 209 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); | 209 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); |
| 210 } | 210 } |
| 211 | 211 |
| 212 // Tests that attempting to nest a menu within a drag-and-drop menu does not |
| 213 // cause a crash. Instead the drag and drop action should be canceled, and the |
| 214 // new menu should be openned. |
| 215 TEST_F(MenuRunnerTest, NestingDuringDrag) { |
| 216 InitMenuRunner(MenuRunner::FOR_DROP); |
| 217 MenuRunner* runner = menu_runner(); |
| 218 MenuRunner::RunResult result = runner->RunMenuAt( |
| 219 owner(), nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); |
| 220 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); |
| 221 EXPECT_TRUE(runner->IsRunning()); |
| 222 |
| 223 scoped_ptr<TestMenuDelegate> nested_delegate(new TestMenuDelegate); |
| 224 MenuItemView* nested_menu = new MenuItemView(nested_delegate.get()); |
| 225 scoped_ptr<MenuRunner> nested_runner( |
| 226 new MenuRunner(nested_menu, MenuRunner::IS_NESTED | MenuRunner::ASYNC)); |
| 227 result = nested_runner->RunMenuAt(owner(), nullptr, gfx::Rect(), |
| 228 MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_NONE); |
| 229 EXPECT_EQ(MenuRunner::NORMAL_EXIT, result); |
| 230 EXPECT_TRUE(nested_runner->IsRunning()); |
| 231 EXPECT_FALSE(runner->IsRunning()); |
| 232 TestMenuDelegate* delegate = menu_delegate(); |
| 233 EXPECT_EQ(1, delegate->on_menu_closed_called()); |
| 234 EXPECT_NE(nullptr, delegate->on_menu_closed_menu()); |
| 235 EXPECT_EQ(MenuRunner::NORMAL_EXIT, delegate->on_menu_closed_run_result()); |
| 236 } |
| 237 |
| 212 } // namespace test | 238 } // namespace test |
| 213 } // namespace views | 239 } // namespace views |
| OLD | NEW |