Chromium Code Reviews| Index: chrome/browser/ui/views/browser_actions_container.cc |
| diff --git a/chrome/browser/ui/views/browser_actions_container.cc b/chrome/browser/ui/views/browser_actions_container.cc |
| index 850189762babaf027940beb6b62b50d63e4e86c2..6427ed4c2ec66b661703d68a64b4731cbdaca197 100644 |
| --- a/chrome/browser/ui/views/browser_actions_container.cc |
| +++ b/chrome/browser/ui/views/browser_actions_container.cc |
| @@ -686,6 +686,23 @@ void BrowserActionsContainer::BrowserActionMoved(const Extension* extension, |
| SchedulePaint(); |
| } |
| +void BrowserActionsContainer::BrowserActionShowPopup( |
| + const extensions::Extension* extension) { |
| + // Do not override other popups and only show in active window. |
| + if (popup_ || !browser_->window()->IsActive()) |
| + return; |
| + |
| + BrowserActionButton* button = NULL; |
|
sky
2013/10/16 22:26:07
Did you try this? I think you want to nuke button,
justinlin
2013/10/17 04:14:52
err, right. Was *just* about to compile it and tes
Finnur
2013/10/17 14:58:34
Wait? A window is created for extension's backgrou
justinlin
2013/10/17 18:32:53
I mean when opening the console view of the backgr
|
| + for (BrowserActionViews::iterator it = browser_action_views_.begin(); |
| + it != browser_action_views_.end(); ++it) { |
| + if ((*it)->button()->extension() == extension) { |
| + if (button != NULL) |
| + ShowPopup(button, ExtensionPopup::SHOW, false); |
| + return; |
| + } |
| + } |
| +} |
| + |
| void BrowserActionsContainer::ModelLoaded() { |
| SetContainerWidth(); |
| } |
| @@ -815,9 +832,17 @@ bool BrowserActionsContainer::ShouldDisplayBrowserAction( |
| void BrowserActionsContainer::ShowPopup( |
| BrowserActionButton* button, |
| ExtensionPopup::ShowAction show_action) { |
| + ShowPopup(button, show_action, true); |
| +} |
| + |
| +void BrowserActionsContainer::ShowPopup( |
| + BrowserActionButton* button, |
| + ExtensionPopup::ShowAction show_action, |
| + bool should_grant) { |
| const Extension* extension = button->extension(); |
| GURL popup_url; |
| - if (model_->ExecuteBrowserAction(extension, browser_, &popup_url) != |
| + if (model_->ExecuteBrowserAction( |
| + extension, browser_, &popup_url, should_grant) != |
| ExtensionToolbarModel::ACTION_SHOW_POPUP) { |
| return; |
| } |
| @@ -845,5 +870,8 @@ void BrowserActionsContainer::ShowPopup( |
| show_action); |
| popup_->GetWidget()->AddObserver(this); |
| popup_button_ = button; |
| - popup_button_->SetButtonPushed(); |
| + |
| + // Only set button as pushed if it was triggered by a user click. |
| + if (should_grant) |
| + popup_button_->SetButtonPushed(); |
| } |