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

Unified Diff: chrome/browser/ui/gtk/browser_actions_toolbar_gtk.cc

Issue 10412052: Pull browser action click logic into ToolbarModelController, so that when I (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: views changes Created 8 years, 7 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/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;
}
}

Powered by Google App Engine
This is Rietveld 408576698