Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: ui/views/controls/menu/menu_runner_unittest.cc

Issue 1834823002: Fix MenuRunnerImpl Crash for context menu during drag-and-drop (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/views/controls/menu/menu_runner_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
OLDNEW
« no previous file with comments | « ui/views/controls/menu/menu_runner_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698