Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(268)

Unified Diff: chrome/browser/extensions/extension_action_context_menu_model.cc

Issue 1107007: Extension context menu refactor (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
-}

Powered by Google App Engine
This is Rietveld 408576698