summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-10 01:40:34 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-03-10 01:40:34 +0000
commit550e9940051b17d2b904f3cc6a5a249b7012df19 (patch)
treea7ead5948fcf2dcc605660bfaed77d0172af5b45 /chrome/browser/extensions
parentf28ca35d25c88f43f36c123e9e15e7d969b92372 (diff)
downloadchromium_src-550e9940051b17d2b904f3cc6a5a249b7012df19.zip
chromium_src-550e9940051b17d2b904f3cc6a5a249b7012df19.tar.gz
chromium_src-550e9940051b17d2b904f3cc6a5a249b7012df19.tar.bz2
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
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r--chrome/browser/extensions/extension_action_context_menu_model.cc4
-rw-r--r--chrome/browser/extensions/extension_process_manager.cc15
-rw-r--r--chrome/browser/extensions/extension_process_manager.h3
-rw-r--r--chrome/browser/extensions/extensions_ui.cc12
4 files changed, 25 insertions, 9 deletions
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);