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