Index: chrome/browser/extensions/extension_action_context_menu_model.cc |
=================================================================== |
--- chrome/browser/extensions/extension_action_context_menu_model.cc (revision 41960) |
+++ chrome/browser/extensions/extension_action_context_menu_model.cc (working copy) |
@@ -1,144 +0,0 @@ |
-// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/extensions/extension_action_context_menu_model.h" |
- |
-#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" |
- |
-enum MenuEntries { |
- NAME = 0, |
- CONFIGURE, |
- DISABLE, |
- UNINSTALL, |
- MANAGE, |
- INSPECT_POPUP |
-}; |
- |
-ExtensionActionContextMenuModel::ExtensionActionContextMenuModel( |
- Extension* extension, ExtensionAction* extension_action, PrefService* prefs, |
- MenuDelegate* delegate) |
- : ALLOW_THIS_IN_INITIALIZER_LIST(SimpleMenuModel(this)), |
- 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() { |
-} |
- |
-bool ExtensionActionContextMenuModel::IsCommandIdChecked(int command_id) const { |
- return false; |
-} |
- |
-bool ExtensionActionContextMenuModel::IsCommandIdEnabled(int command_id) const { |
- if (command_id == CONFIGURE) { |
- return extension_->options_url().spec().length() > 0; |
- } else if (command_id == NAME) { |
- // The NAME links to the gallery page, which only makes sense if Google is |
- // hosting the extension. For other 3rd party extensions we don't have a |
- // 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; |
-} |
- |
-bool ExtensionActionContextMenuModel::GetAcceleratorForCommandId( |
- int command_id, menus::Accelerator* accelerator) { |
- return false; |
-} |
- |
-void ExtensionActionContextMenuModel::ExecuteCommand(int command_id) { |
- // TODO(finnur): GetLastActive returns NULL in unit tests. |
- Browser* browser = BrowserList::GetLastActive(); |
- Profile* profile = browser->profile(); |
- |
- switch (command_id) { |
- case NAME: { |
- GURL url(std::string(extension_urls::kGalleryBrowsePrefix) + |
- std::string("/detail/") + extension_->id()); |
- browser->OpenURL(url, GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); |
- break; |
- } |
- case CONFIGURE: |
- DCHECK(!extension_->options_url().is_empty()); |
- profile->GetExtensionProcessManager()->OpenOptionsPage(extension_, |
- browser); |
- break; |
- case DISABLE: { |
- ExtensionsService* extension_service = profile->GetExtensionsService(); |
- extension_service->DisableExtension(extension_->id()); |
- break; |
- } |
- case UNINSTALL: { |
- scoped_ptr<SkBitmap> uninstall_icon; |
- Extension::DecodeIcon(extension_, Extension::EXTENSION_ICON_LARGE, |
- &uninstall_icon); |
- |
- ExtensionInstallUI client(profile); |
- client.ConfirmUninstall(this, extension_, uninstall_icon.get()); |
- break; |
- } |
- case MANAGE: { |
- browser->OpenURL(GURL(chrome::kChromeUIExtensionsURL), GURL(), |
- SINGLETON_TAB, PageTransition::LINK); |
- break; |
- } |
- case INSPECT_POPUP: { |
- if (delegate_) |
- delegate_->ShowPopupForDevToolsWindow(extension_, extension_action_); |
- break; |
- } |
- default: |
- NOTREACHED() << "Unknown option"; |
- break; |
- } |
-} |
- |
-void ExtensionActionContextMenuModel::InstallUIProceed(bool create_app) { |
- DCHECK(!create_app); |
- |
- // TODO(finnur): GetLastActive returns NULL in unit tests. |
- Browser* browser = BrowserList::GetLastActive(); |
- std::string id = extension_->id(); |
- browser->profile()->GetExtensionsService()->UninstallExtension(id, false); |
-} |