Index: chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
diff --git a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
index a946a226ee70a6bf12ddf4c8a1907852a4fe5feb..ccc35ddadb37f55b85c9fd9e9a8c2be41c31a7e6 100644 |
--- a/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
+++ b/chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm |
@@ -721,25 +721,20 @@ class ExtensionServiceObserverBridge : public content::NotificationObserver, |
} |
- (void)browserActionClicked:(BrowserActionButton*)button { |
- int tabId = [self currentTabId]; |
- if (tabId < 0) { |
- NOTREACHED() << "No current tab."; |
- return; |
- } |
- // If an extension popup is already open, it will get closed when it |
- // loses focus. |
- |
- ExtensionAction* action = [button extension]->browser_action(); |
- if (action->HasPopup(tabId)) { |
- GURL popupUrl = action->GetPopupUrl(tabId); |
- NSPoint arrowPoint = [self popupPointForBrowserAction:[button extension]]; |
- [ExtensionPopupController showURL:popupUrl |
- inBrowser:browser_ |
- anchoredAt:arrowPoint |
- arrowLocation:info_bubble::kTopRight |
- devMode:NO]; |
- } else { |
- toolbarModel_->ExecuteBrowserAction(action->extension_id(), browser_); |
+ const Extension* extension = [button extension]; |
+ GURL popupUrl; |
+ switch (toolbarModel_->ExecuteBrowserAction(extension, browser_, &popupUrl)) { |
+ case ExtensionToolbarModel::ACTION_NONE: |
+ break; |
+ case ExtensionToolbarModel::ACTION_SHOW_POPUP: { |
+ NSPoint arrowPoint = [self popupPointForBrowserAction:extension]; |
+ [ExtensionPopupController showURL:popupUrl |
+ inBrowser:browser_ |
+ anchoredAt:arrowPoint |
+ arrowLocation:info_bubble::kTopRight |
+ devMode:NO]; |
+ break; |
+ } |
} |
} |