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

Unified Diff: ui/views/controls/menu/menu_runner_cocoa_unittest.mm

Issue 2790773002: Cleanup MenuRunner API (Closed)
Patch Set: Rebase Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/views/controls/menu/menu_runner.cc ('k') | ui/views/controls/menu/menu_runner_handler.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/controls/menu/menu_runner_cocoa_unittest.mm
diff --git a/ui/views/controls/menu/menu_runner_cocoa_unittest.mm b/ui/views/controls/menu/menu_runner_cocoa_unittest.mm
index e387dc39802566e53621968a72e9ef0367bffaa7..839cefc5b196cdf43da1afb1a376011617499c83 100644
--- a/ui/views/controls/menu/menu_runner_cocoa_unittest.mm
+++ b/ui/views/controls/menu/menu_runner_cocoa_unittest.mm
@@ -114,7 +114,7 @@ class MenuRunnerCocoaTest : public ViewsTestBase,
int IsAsync() const { return GetParam() == MenuType::VIEWS; }
// Runs the menu after registering |callback| as the menu open callback.
- MenuRunner::RunResult RunMenu(const base::Closure& callback) {
+ void RunMenu(const base::Closure& callback) {
if (IsAsync()) {
// Cancelling an async menu under MenuController::OpenMenuImpl() (which
// invokes WillShowMenu()) will cause a UAF when that same function tries
@@ -126,15 +126,14 @@ class MenuRunnerCocoaTest : public ViewsTestBase,
base::Unretained(this), callback));
}
- // Always pass ASYNC, even though native menus will be sync.
- int run_types = MenuRunner::CONTEXT_MENU | MenuRunner::ASYNC;
- return MaybeRunAsync(runner_->RunMenuAt(parent_, nullptr, gfx::Rect(),
- MENU_ANCHOR_TOPLEFT, run_types));
+ runner_->RunMenuAt(parent_, nullptr, gfx::Rect(), MENU_ANCHOR_TOPLEFT,
+ MenuRunner::CONTEXT_MENU);
+ MaybeRunAsync();
}
// Runs then cancels a combobox menu and captures the frame of the anchoring
// view.
- MenuRunner::RunResult RunMenuAt(const gfx::Rect& anchor) {
+ void RunMenuAt(const gfx::Rect& anchor) {
last_anchor_frame_ = NSZeroRect;
// Should be one child (the compositor layer) before showing, and it should
@@ -149,13 +148,12 @@ class MenuRunnerCocoaTest : public ViewsTestBase,
else
menu_->set_menu_open_callback(callback);
- MenuRunner::RunResult result = MaybeRunAsync(
- runner_->RunMenuAt(parent_, nullptr, anchor, MENU_ANCHOR_TOPLEFT,
- MenuRunner::COMBOBOX | MenuRunner::ASYNC));
+ runner_->RunMenuAt(parent_, nullptr, anchor, MENU_ANCHOR_TOPLEFT,
+ MenuRunner::COMBOBOX);
+ MaybeRunAsync();
// Ensure the anchor view is removed.
EXPECT_EQ(1u, [[parent_->GetNativeView() subviews] count]);
- return result;
}
void MenuCancelCallback() {
@@ -213,12 +211,10 @@ class MenuRunnerCocoaTest : public ViewsTestBase,
// Run a nested message loop so that async and sync menus can be tested the
// same way.
- MenuRunner::RunResult MaybeRunAsync(MenuRunner::RunResult run_result) {
+ void MaybeRunAsync() {
if (!IsAsync())
- return run_result;
+ return;
- // Async menus should always return NORMAL_EXIT.
- EXPECT_EQ(MenuRunner::NORMAL_EXIT, run_result);
base::RunLoop run_loop;
quit_closure_ = run_loop.QuitClosure();
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
@@ -227,7 +223,6 @@ class MenuRunnerCocoaTest : public ViewsTestBase,
// |quit_closure_| should be run by QuitAsyncRunLoop(), not the timeout.
EXPECT_TRUE(quit_closure_.is_null());
- return run_result;
}
void QuitAsyncRunLoop() {
@@ -253,11 +248,10 @@ class MenuRunnerCocoaTest : public ViewsTestBase,
TEST_P(MenuRunnerCocoaTest, RunMenuAndCancel) {
base::TimeTicks min_time = ui::EventTimeForNow();
- MenuRunner::RunResult result = RunMenu(base::Bind(
- &MenuRunnerCocoaTest::MenuCancelCallback, base::Unretained(this)));
+ RunMenu(base::Bind(&MenuRunnerCocoaTest::MenuCancelCallback,
+ base::Unretained(this)));
EXPECT_EQ(1, menu_close_count_);
- EXPECT_EQ(MenuRunner::NORMAL_EXIT, result);
EXPECT_FALSE(runner_->IsRunning());
if (GetParam() == MenuType::VIEWS) {
@@ -277,30 +271,21 @@ TEST_P(MenuRunnerCocoaTest, RunMenuAndCancel) {
}
TEST_P(MenuRunnerCocoaTest, RunMenuAndDelete) {
- MenuRunner::RunResult result = RunMenu(base::Bind(
- &MenuRunnerCocoaTest::MenuDeleteCallback, base::Unretained(this)));
+ RunMenu(base::Bind(&MenuRunnerCocoaTest::MenuDeleteCallback,
+ base::Unretained(this)));
// Note the close callback is NOT invoked for deleted menus.
EXPECT_EQ(0, menu_close_count_);
-
- // Async menus always return NORMAL from RunMenuAt().
- if (GetParam() == MenuType::VIEWS)
- EXPECT_EQ(MenuRunner::NORMAL_EXIT, result);
- else
- EXPECT_EQ(MenuRunner::MENU_DELETED, result);
}
// Ensure a menu can be safely released immediately after a call to Cancel() in
// the same run loop iteration.
TEST_P(MenuRunnerCocoaTest, DestroyAfterCanceling) {
- MenuRunner::RunResult result =
- RunMenu(base::Bind(&MenuRunnerCocoaTest::MenuCancelAndDeleteCallback,
- base::Unretained(this)));
+ RunMenu(base::Bind(&MenuRunnerCocoaTest::MenuCancelAndDeleteCallback,
+ base::Unretained(this)));
if (IsAsync()) {
- EXPECT_EQ(MenuRunner::NORMAL_EXIT, result);
EXPECT_EQ(1, menu_close_count_);
} else {
- EXPECT_EQ(MenuRunner::MENU_DELETED, result);
// For a synchronous menu, the deletion happens before the cancel can be
// processed, so the close callback will not be invoked.
EXPECT_EQ(0, menu_close_count_);
@@ -309,9 +294,8 @@ TEST_P(MenuRunnerCocoaTest, DestroyAfterCanceling) {
TEST_P(MenuRunnerCocoaTest, RunMenuTwice) {
for (int i = 0; i < 2; ++i) {
- MenuRunner::RunResult result = RunMenu(base::Bind(
- &MenuRunnerCocoaTest::MenuCancelCallback, base::Unretained(this)));
- EXPECT_EQ(MenuRunner::NORMAL_EXIT, result);
+ RunMenu(base::Bind(&MenuRunnerCocoaTest::MenuCancelCallback,
+ base::Unretained(this)));
EXPECT_FALSE(runner_->IsRunning());
EXPECT_EQ(i + 1, menu_close_count_);
}
« no previous file with comments | « ui/views/controls/menu/menu_runner.cc ('k') | ui/views/controls/menu/menu_runner_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698