diff --git a/shell/browser/api/atom_api_menu_mac.h b/shell/browser/api/atom_api_menu_mac.h index 67c3b9d9ff314..a2885c4ef9b53 100644 --- a/shell/browser/api/atom_api_menu_mac.h +++ b/shell/browser/api/atom_api_menu_mac.h @@ -35,6 +35,7 @@ class MenuMac : public Menu { int positioning_item, base::Closure callback); void ClosePopupAt(int32_t window_id) override; + void ClosePopupOnUI(int32_t window_id); private: friend class Menu; diff --git a/shell/browser/api/atom_api_menu_mac.mm b/shell/browser/api/atom_api_menu_mac.mm index 0408c6c045566..3119f9453dd95 100644 --- a/shell/browser/api/atom_api_menu_mac.mm +++ b/shell/browser/api/atom_api_menu_mac.mm @@ -48,7 +48,7 @@ base::BindOnce(&MenuMac::PopupOnUI, weak_factory_.GetWeakPtr(), native_window->GetWeakPtr(), window->weak_map_id(), x, y, positioning_item, callback); - base::PostTaskWithTraits(FROM_HERE, {BrowserThread::UI}, std::move(popup)); + base::SequencedTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(popup)); } void MenuMac::PopupOnUI(const base::WeakPtr& native_window, @@ -117,6 +117,13 @@ } void MenuMac::ClosePopupAt(int32_t window_id) { + auto close_popup = base::BindOnce(&MenuMac::ClosePopupOnUI, + weak_factory_.GetWeakPtr(), window_id); + base::SequencedTaskRunnerHandle::Get()->PostTask(FROM_HERE, + std::move(close_popup)); +} + +void MenuMac::ClosePopupOnUI(int32_t window_id) { auto controller = popup_controllers_.find(window_id); if (controller != popup_controllers_.end()) { // Close the controller for the window.