| Index: chrome/browser/extensions/extension_action_context_menu_model.cc
|
| diff --git a/chrome/browser/extensions/extension_action_context_menu_model.cc b/chrome/browser/extensions/extension_action_context_menu_model.cc
|
| index 40b49b752b75fda88bd934ec395af0b23b94b5fc..fa49c4e89058c4ac21c957b3da1dd5384bb8eb2c 100644
|
| --- a/chrome/browser/extensions/extension_action_context_menu_model.cc
|
| +++ b/chrome/browser/extensions/extension_action_context_menu_model.cc
|
| @@ -7,10 +7,14 @@
|
| #include "app/l10n_util.h"
|
| #include "chrome/browser/browser_list.h"
|
| #include "chrome/browser/browser_process.h"
|
| +#include "chrome/browser/extensions/extension_tabs_module.h"
|
| #include "chrome/browser/extensions/extensions_service.h"
|
| +#include "chrome/browser/pref_service.h"
|
| #include "chrome/browser/profile.h"
|
| #include "chrome/common/extensions/extension.h"
|
| +#include "chrome/common/extensions/extension_action.h"
|
| #include "chrome/common/extensions/extension_constants.h"
|
| +#include "chrome/common/pref_names.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "grit/generated_resources.h"
|
|
|
| @@ -20,20 +24,29 @@ enum MenuEntries {
|
| DISABLE,
|
| UNINSTALL,
|
| MANAGE,
|
| + INSPECT_POPUP
|
| };
|
|
|
| ExtensionActionContextMenuModel::ExtensionActionContextMenuModel(
|
| - Extension* extension)
|
| + Extension* extension, ExtensionAction* extension_action, PrefService* prefs,
|
| + MenuDelegate* delegate)
|
| : ALLOW_THIS_IN_INITIALIZER_LIST(SimpleMenuModel(this)),
|
| - extension_(extension) {
|
| + extension_(extension),
|
| + extension_action_(extension_action),
|
| + delegate_(delegate) {
|
| AddItem(NAME, UTF8ToUTF16(extension->name()));
|
| AddSeparator();
|
| AddItemWithStringId(CONFIGURE, IDS_EXTENSIONS_OPTIONS);
|
| AddItemWithStringId(DISABLE, IDS_EXTENSIONS_DISABLE);
|
| AddItemWithStringId(UNINSTALL, IDS_EXTENSIONS_UNINSTALL);
|
| AddSeparator();
|
| -
|
| AddItemWithStringId(MANAGE, IDS_MANAGE_EXTENSIONS);
|
| +
|
| + if (extension_ && delegate_ && prefs &&
|
| + prefs->GetBoolean(prefs::kExtensionsUIDeveloperMode)) {
|
| + AddSeparator();
|
| + AddItemWithStringId(INSPECT_POPUP, IDS_EXTENSION_ACTION_INSPECT_POPUP);
|
| + }
|
| }
|
|
|
| ExtensionActionContextMenuModel::~ExtensionActionContextMenuModel() {
|
| @@ -52,6 +65,19 @@ bool ExtensionActionContextMenuModel::IsCommandIdEnabled(int command_id) const {
|
| // homepage url, so we just disable this menu item on those cases, at least
|
| // for now.
|
| return extension_->update_url().DomainIs("google.com");
|
| + } else if (command_id == INSPECT_POPUP) {
|
| + if (!delegate_ || !extension_)
|
| + return false;
|
| + Browser* browser = BrowserList::GetLastActive();
|
| + if (!browser)
|
| + return false;
|
| + TabContents* contents = browser->GetSelectedTabContents();
|
| + if (!contents)
|
| + return false;
|
| +
|
| + // Different tabs can have different popups set. We need to make sure we
|
| + // only enable the menu item if the current tab has a popup.
|
| + return (extension_action_->HasPopup(ExtensionTabUtil::GetTabId(contents)));
|
| }
|
| return true;
|
| }
|
| @@ -97,6 +123,11 @@ void ExtensionActionContextMenuModel::ExecuteCommand(int command_id) {
|
| SINGLETON_TAB, PageTransition::LINK);
|
| break;
|
| }
|
| + case INSPECT_POPUP: {
|
| + if (delegate_)
|
| + delegate_->ShowPopupForDevToolsWindow(extension_, extension_action_);
|
| + break;
|
| + }
|
| default:
|
| NOTREACHED() << "Unknown option";
|
| break;
|
|
|