From 550e9940051b17d2b904f3cc6a5a249b7012df19 Mon Sep 17 00:00:00 2001 From: "mpcomplete@chromium.org" Date: Wed, 10 Mar 2010 01:40:34 +0000 Subject: Fix few remaining issues with incognito extensions. - Open the options page in a regular browser window. - Rip out the "incognito" permission and revise the warning dialog. BUG=37677 Review URL: http://codereview.chromium.org/749002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41109 0039d316-1c4b-4281-b951-d872f2087c98 --- .../extensions/extension_action_context_menu_model.cc | 4 ++-- chrome/browser/extensions/extension_process_manager.cc | 15 +++++++++++++++ chrome/browser/extensions/extension_process_manager.h | 3 +++ chrome/browser/extensions/extensions_ui.cc | 12 +++++------- 4 files changed, 25 insertions(+), 9 deletions(-) (limited to 'chrome/browser/extensions') diff --git a/chrome/browser/extensions/extension_action_context_menu_model.cc b/chrome/browser/extensions/extension_action_context_menu_model.cc index aa009e1..40b49b7 100644 --- a/chrome/browser/extensions/extension_action_context_menu_model.cc +++ b/chrome/browser/extensions/extension_action_context_menu_model.cc @@ -75,8 +75,8 @@ void ExtensionActionContextMenuModel::ExecuteCommand(int command_id) { } case CONFIGURE: DCHECK(!extension_->options_url().is_empty()); - browser->OpenURL(extension_->options_url(), GURL(), - SINGLETON_TAB, PageTransition::LINK); + profile->GetExtensionProcessManager()->OpenOptionsPage(extension_, + browser); break; case DISABLE: { ExtensionsService* extension_service = profile->GetExtensionsService(); diff --git a/chrome/browser/extensions/extension_process_manager.cc b/chrome/browser/extensions/extension_process_manager.cc index 3121d3c..410165f 100644 --- a/chrome/browser/extensions/extension_process_manager.cc +++ b/chrome/browser/extensions/extension_process_manager.cc @@ -4,6 +4,7 @@ #include "chrome/browser/extensions/extension_process_manager.h" +#include "chrome/browser/browser.h" #include "chrome/browser/browsing_instance.h" #if defined(OS_MACOSX) #include "chrome/browser/extensions/extension_host_mac.h" @@ -13,6 +14,7 @@ #include "chrome/browser/profile.h" #include "chrome/browser/renderer_host/site_instance.h" #include "chrome/browser/renderer_host/render_view_host.h" +#include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/notification_service.h" #include "chrome/common/notification_type.h" @@ -133,6 +135,19 @@ ExtensionHost* ExtensionProcessManager::CreateBackgroundHost( return host; } +void ExtensionProcessManager::OpenOptionsPage(Extension* extension, + Browser* browser) { + DCHECK(!extension->options_url().is_empty()); + + // We can't open extensions URLs in incognito windows. + if (!browser || browser->profile()->IsOffTheRecord()) + browser = Browser::GetOrCreateTabbedBrowser(browsing_instance_->profile()); + + browser->OpenURL(extension->options_url(), GURL(), SINGLETON_TAB, + PageTransition::LINK); + browser->GetSelectedTabContents()->Activate(); +} + ExtensionHost* ExtensionProcessManager::GetBackgroundHostForExtension( Extension* extension) { for (ExtensionHostSet::iterator iter = background_hosts_.begin(); diff --git a/chrome/browser/extensions/extension_process_manager.h b/chrome/browser/extensions/extension_process_manager.h index 1cfec71..d002cb9 100644 --- a/chrome/browser/extensions/extension_process_manager.h +++ b/chrome/browser/extensions/extension_process_manager.h @@ -55,6 +55,9 @@ class ExtensionProcessManager : public NotificationObserver { // displayed anywhere. ExtensionHost* CreateBackgroundHost(Extension* extension, const GURL& url); + // Open the extension's options page. + void OpenOptionsPage(Extension* extension, Browser* browser); + // Gets the ExtensionHost for the background page for an extension, or NULL if // the extension isn't running or doesn't have a background page. ExtensionHost* GetBackgroundHostForExtension(Extension* extension); diff --git a/chrome/browser/extensions/extensions_ui.cc b/chrome/browser/extensions/extensions_ui.cc index bd0c70a..6f23280 100644 --- a/chrome/browser/extensions/extensions_ui.cc +++ b/chrome/browser/extensions/extensions_ui.cc @@ -44,6 +44,7 @@ #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "grit/browser_resources.h" +#include "grit/chromium_strings.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "net/base/net_util.h" @@ -123,7 +124,8 @@ void ExtensionsUIHTMLSource::StartDataRequest(const std::string& path, localized_strings.SetString(L"enableIncognito", l10n_util::GetString(IDS_EXTENSIONS_ENABLE_INCOGNITO)); localized_strings.SetString(L"enableIncognitoWarning", - l10n_util::GetString(IDS_EXTENSIONS_ENABLE_INCOGNITO_WARNING)); + l10n_util::GetStringF(IDS_EXTENSIONS_ENABLE_INCOGNITO_WARNING, + l10n_util::GetString(IDS_PRODUCT_NAME))); localized_strings.SetString(L"reload", l10n_util::GetString(IDS_EXTENSIONS_RELOAD)); localized_strings.SetString(L"uninstall", @@ -498,10 +500,8 @@ void ExtensionsDOMHandler::HandleOptionsMessage(const Value* value) { if (!extension || extension->options_url().is_empty()) { return; } - Browser* browser = Browser::GetOrCreateTabbedBrowser(dom_ui_->GetProfile()); - CHECK(browser); - browser->OpenURL(extension->options_url(), GURL(), SINGLETON_TAB, - PageTransition::LINK); + dom_ui_->GetProfile()->GetExtensionProcessManager()->OpenOptionsPage( + extension, NULL); } void ExtensionsDOMHandler::HandleLoadMessage(const Value* value) { @@ -716,8 +716,6 @@ DictionaryValue* ExtensionsDOMHandler::CreateExtensionDetailValue( extension_data->SetBoolean(L"enabled", enabled); extension_data->SetBoolean(L"enabledIncognito", service ? service->IsIncognitoEnabled(extension->id()) : false); - extension_data->SetBoolean(L"incognitoSafe", - extension->HasApiPermission(Extension::kIncognitoPermission)); extension_data->SetBoolean(L"allow_reload", extension->location() == Extension::LOAD); -- cgit v1.1