| Index: chrome/browser/extensions/extension_toolbar_model.cc
|
| diff --git a/chrome/browser/extensions/extension_toolbar_model.cc b/chrome/browser/extensions/extension_toolbar_model.cc
|
| index c869fd91d184932f037a508c2b9ecfb58be2b29a..0b162abdb6f5e1e9affdf50ac9bd71d02cdc4ba3 100644
|
| --- a/chrome/browser/extensions/extension_toolbar_model.cc
|
| +++ b/chrome/browser/extensions/extension_toolbar_model.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "chrome/browser/extensions/extension_toolbar_model.h"
|
|
|
| +#include <string>
|
| +
|
| #include "base/prefs/pref_service.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
|
| @@ -41,6 +43,11 @@ bool IsInExtensionList(const Extension* extension,
|
|
|
| } // namespace
|
|
|
| +bool ExtensionToolbarModel::Observer::BrowserActionShowPopup(
|
| + const extensions::Extension* extension) {
|
| + return false;
|
| +}
|
| +
|
| ExtensionToolbarModel::ExtensionToolbarModel(ExtensionService* service)
|
| : service_(service),
|
| prefs_(service->profile()->GetPrefs()),
|
| @@ -129,6 +136,14 @@ ExtensionToolbarModel::Action ExtensionToolbarModel::ExecuteBrowserAction(
|
| const Extension* extension,
|
| Browser* browser,
|
| GURL* popup_url_out) {
|
| + return ExecuteBrowserAction(extension, browser, popup_url_out, true);
|
| +}
|
| +
|
| +ExtensionToolbarModel::Action ExtensionToolbarModel::ExecuteBrowserAction(
|
| + const Extension* extension,
|
| + Browser* browser,
|
| + GURL* popup_url_out,
|
| + bool should_grant) {
|
| content::WebContents* web_contents = NULL;
|
| int tab_id = 0;
|
| if (!ExtensionTabUtil::GetDefaultTab(browser, &web_contents, &tab_id))
|
| @@ -142,8 +157,10 @@ ExtensionToolbarModel::Action ExtensionToolbarModel::ExecuteBrowserAction(
|
| if (!browser_action->GetIsVisible(tab_id))
|
| return ACTION_NONE;
|
|
|
| - extensions::TabHelper::FromWebContents(web_contents)->
|
| - active_tab_permission_granter()->GrantIfRequested(extension);
|
| + if (should_grant) {
|
| + extensions::TabHelper::FromWebContents(web_contents)->
|
| + active_tab_permission_granter()->GrantIfRequested(extension);
|
| + }
|
|
|
| if (browser_action->HasPopup(tab_id)) {
|
| if (popup_url_out)
|
| @@ -454,3 +471,15 @@ void ExtensionToolbarModel::OnExtensionToolbarPrefChange() {
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
| }
|
| +
|
| +bool ExtensionToolbarModel::ShowBrowserActionPopup(
|
| + const extensions::Extension* extension) {
|
| + ObserverListBase<Observer>::Iterator it(observers_);
|
| + Observer* obs = NULL;
|
| + while ((obs = it.GetNext()) != NULL) {
|
| + // Stop after first popup since it should only show in the active window.
|
| + if (obs->BrowserActionShowPopup(extension))
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
|
|