Index: chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc |
diff --git a/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc b/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc |
index 01ab9de38e2553048baca12b0fb7499d07c0dafd..9c2e2aa78c7da58d1a4e47a86c29916d7025ce0c 100644 |
--- a/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc |
+++ b/chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc |
@@ -278,26 +278,6 @@ class BrowserActionButton : public content::NotificationObserver, |
toolbar_->overflow_menu_->Cancel(); |
} |
- // Returns true to prevent further processing of the event that caused us to |
- // show the popup, or false to continue processing. |
- bool ShowPopup() { |
- ExtensionAction* browser_action = extension_->browser_action(); |
- |
- int tab_id = toolbar_->GetCurrentTabId(); |
- if (tab_id < 0) { |
- NOTREACHED() << "No current tab."; |
- return true; |
- } |
- |
- if (browser_action->HasPopup(tab_id)) { |
- ExtensionPopupGtk::Show( |
- browser_action->GetPopupUrl(tab_id), toolbar_->browser(), widget()); |
- return true; |
- } |
- |
- return false; |
- } |
- |
void SetImage(GdkPixbuf* image) { |
if (!image_) { |
image_ = gtk_image_new_from_pixbuf(image); |
@@ -324,11 +304,19 @@ class BrowserActionButton : public content::NotificationObserver, |
} |
static void OnClicked(GtkWidget* widget, BrowserActionButton* action) { |
- if (action->ShowPopup()) |
- return; |
- |
- action->toolbar_->model()->ExecuteBrowserAction( |
- action->extension_->id(), action->toolbar_->browser()); |
+ ExtensionToolbarModel* model = action->toolbar_->model(); |
+ const Extension* extension = action->extension_; |
+ Browser* browser = action->toolbar_->browser(); |
+ GtkWidget* chevron = action->toolbar_->chevron(); |
+ GURL popup_url; |
+ |
+ switch (model->ExecuteBrowserAction(extension, browser, &popup_url)) { |
+ case ExtensionToolbarModel::ACTION_NONE: |
+ break; |
+ case ExtensionToolbarModel::ACTION_SHOW_POPUP: |
+ ExtensionPopupGtk::Show(popup_url, browser, chevron); |
+ break; |
+ } |
} |
static gboolean OnExposeEvent(GtkWidget* widget, |
@@ -794,19 +782,14 @@ bool BrowserActionsToolbarGtk::GetAcceleratorForCommandId( |
void BrowserActionsToolbarGtk::ExecuteCommand(int command_id) { |
const Extension* extension = model_->GetExtensionByIndex(command_id); |
- ExtensionAction* browser_action = extension->browser_action(); |
- |
- int tab_id = GetCurrentTabId(); |
- if (tab_id < 0) { |
- NOTREACHED() << "No current tab."; |
- return; |
- } |
+ GURL popup_url; |
- if (browser_action->HasPopup(tab_id)) { |
- ExtensionPopupGtk::Show( |
- browser_action->GetPopupUrl(tab_id), browser(), chevron()); |
- } else { |
- model_->ExecuteBrowserAction(extension->id(), browser()); |
+ switch (model_->ExecuteBrowserAction(extension, browser(), &popup_url)) { |
+ case ExtensionToolbarModel::ACTION_NONE: |
+ break; |
+ case ExtensionToolbarModel::ACTION_SHOW_POPUP: |
+ ExtensionPopupGtk::Show(popup_url, browser(), chevron()); |
+ break; |
} |
} |