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

Unified Diff: chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc

Issue 2155243007: Turn Bookmark Menus Async (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
Index: chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
index a5f4eab6d2e88f80a0040a6a21e2fadd336af085..85b7fdd3287c0b0bdf533dc68308cc59057c2c36 100644
--- a/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
+++ b/chrome/browser/ui/views/bookmarks/bookmark_menu_controller_views.cc
@@ -39,8 +39,10 @@ BookmarkMenuController::BookmarkMenuController(Browser* browser,
menu_delegate_->Init(this, NULL, node, start_child_index,
BookmarkMenuDelegate::HIDE_PERMANENT_FOLDERS,
BOOKMARK_LAUNCH_LOCATION_BAR_SUBFOLDER);
- menu_runner_.reset(new views::MenuRunner(
- menu_delegate_->menu(), for_drop ? views::MenuRunner::FOR_DROP : 0));
+ int run_type = views::MenuRunner::ASYNC;
+ if (for_drop)
+ run_type |= views::MenuRunner::FOR_DROP;
+ menu_runner_.reset(new views::MenuRunner(menu_delegate_->menu(), run_type));
}
void BookmarkMenuController::RunMenuAt(BookmarkBarView* bookmark_bar) {
@@ -188,8 +190,12 @@ void BookmarkMenuController::WillShowMenu(MenuItemView* menu) {
}
void BookmarkMenuController::BookmarkModelChanged() {
- if (!menu_delegate_->is_mutating_model())
- menu()->Cancel();
+ // Do not manipulate if menu is shutdown, or if currently changing the model.
+ if (!menu_runner_ || !menu_runner_->IsRunning() ||
sky 2016/07/20 16:47:10 Why do you need the !IsRunning() check? Shouldn't
jonross 2016/07/20 17:43:19 It is a no opt as long as there has not been any d
sky 2016/07/20 19:41:53 I would expect a function named Cancel() to be cal
jonross 2016/07/21 14:02:58 Done.
+ menu_delegate_->is_mutating_model()) {
+ return;
+ }
+ menu()->Cancel();
}
BookmarkMenuController::~BookmarkMenuController() {
« no previous file with comments | « chrome/browser/ui/views/bookmarks/bookmark_editor_view.cc ('k') | ui/views/controls/menu/menu_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698