| 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;
|
| + 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();
|
| }
|
|
|