summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-03 00:31:02 +0000
committerderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-03 00:31:02 +0000
commit367d9b17688f47133ad03d522fc5caf1ac428d01 (patch)
tree5ec3428ef017c959f8a0ae4016ac5de1e48c40e6
parent55ca88fb8016cfe219cd097283e012362d929807 (diff)
downloadchromium_src-367d9b17688f47133ad03d522fc5caf1ac428d01.zip
chromium_src-367d9b17688f47133ad03d522fc5caf1ac428d01.tar.gz
chromium_src-367d9b17688f47133ad03d522fc5caf1ac428d01.tar.bz2
Remove ExtensionPrefFactory's dependency on Profile.
Move the code that checks whether the command-line flag or pref to disable extensions is set into ExtensionsBrowserClient, and make ExtensionPrefFactory work with a BrowserContext instead of requiring a Profile. BUG=313284 Review URL: https://codereview.chromium.org/89253002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@238243 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--apps/app_restore_service.cc1
-rw-r--r--apps/app_restore_service_browsertest.cc1
-rw-r--r--apps/saved_files_service.cc1
-rw-r--r--chrome/browser/extensions/api/file_system/file_system_apitest.cc1
-rw-r--r--chrome/browser/extensions/chrome_extensions_browser_client.cc13
-rw-r--r--chrome/browser/extensions/chrome_extensions_browser_client.h6
-rw-r--r--chrome/browser/extensions/extension_pref_value_map_factory.cc1
-rw-r--r--chrome/browser/extensions/extension_pref_value_map_factory.h1
-rw-r--r--chrome/browser/extensions/extension_prefs.cc4
-rw-r--r--chrome/browser/extensions/extension_prefs.h9
-rw-r--r--chrome/browser/extensions/extension_prefs_factory.cc27
-rw-r--r--chrome/browser/extensions/extension_prefs_factory.h4
-rw-r--r--chrome/browser/extensions/extension_service.cc5
-rw-r--r--chrome/browser/extensions/extension_sync_service_factory.cc2
-rw-r--r--chrome/browser/extensions/extension_toolbar_model.h1
-rw-r--r--chrome/browser/extensions/extension_toolbar_model_factory.cc5
-rw-r--r--extensions/browser/extensions_browser_client.h12
17 files changed, 63 insertions, 31 deletions
diff --git a/apps/app_restore_service.cc b/apps/app_restore_service.cc
index 524ab96..50cb7d0 100644
--- a/apps/app_restore_service.cc
+++ b/apps/app_restore_service.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_system.h"
+#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/extension_set.h"
#include "extensions/common/extension.h"
diff --git a/apps/app_restore_service_browsertest.cc b/apps/app_restore_service_browsertest.cc
index 27b179a..381efbf3 100644
--- a/apps/app_restore_service_browsertest.cc
+++ b/apps/app_restore_service_browsertest.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/extensions/api/file_system/file_system_api.h"
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_test_message_listener.h"
+#include "chrome/browser/profiles/profile.h"
#include "content/public/browser/notification_service.h"
#include "content/public/test/test_utils.h"
#include "extensions/common/extension.h"
diff --git a/apps/saved_files_service.cc b/apps/saved_files_service.cc
index b4dfab7..86e1bd6 100644
--- a/apps/saved_files_service.cc
+++ b/apps/saved_files_service.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/extensions/extension_prefs.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_system.h"
+#include "chrome/browser/profiles/profile.h"
#include "content/public/browser/notification_service.h"
#include "extensions/common/permissions/api_permission.h"
#include "extensions/common/permissions/permission_set.h"
diff --git a/chrome/browser/extensions/api/file_system/file_system_apitest.cc b/chrome/browser/extensions/api/file_system/file_system_apitest.cc
index b3348ba..762b515 100644
--- a/chrome/browser/extensions/api/file_system/file_system_apitest.cc
+++ b/chrome/browser/extensions/api/file_system/file_system_apitest.cc
@@ -10,6 +10,7 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/extensions/api/file_system/file_system_api.h"
#include "chrome/browser/extensions/extension_prefs.h"
+#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_service.h"
diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.cc b/chrome/browser/extensions/chrome_extensions_browser_client.cc
index 500534e..8005825 100644
--- a/chrome/browser/extensions/chrome_extensions_browser_client.cc
+++ b/chrome/browser/extensions/chrome_extensions_browser_client.cc
@@ -34,6 +34,14 @@ bool ChromeExtensionsBrowserClient::IsShuttingDown() {
return g_browser_process->IsShuttingDown();
}
+bool ChromeExtensionsBrowserClient::AreExtensionsDisabled(
+ const CommandLine& command_line,
+ content::BrowserContext* context) {
+ Profile* profile = static_cast<Profile*>(context);
+ return command_line.HasSwitch(switches::kDisableExtensions) ||
+ profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions);
+}
+
bool ChromeExtensionsBrowserClient::IsValidContext(
content::BrowserContext* context) {
Profile* profile = static_cast<Profile*>(context);
@@ -62,6 +70,11 @@ content::BrowserContext* ChromeExtensionsBrowserClient::GetOriginalContext(
return static_cast<Profile*>(context)->GetOriginalProfile();
}
+PrefService* ChromeExtensionsBrowserClient::GetPrefServiceForContext(
+ content::BrowserContext* context) {
+ return static_cast<Profile*>(context)->GetPrefs();
+}
+
bool ChromeExtensionsBrowserClient::DeferLoadingBackgroundHosts(
content::BrowserContext* context) const {
Profile* profile = static_cast<Profile*>(context);
diff --git a/chrome/browser/extensions/chrome_extensions_browser_client.h b/chrome/browser/extensions/chrome_extensions_browser_client.h
index dc9d4fd..24aa6e8 100644
--- a/chrome/browser/extensions/chrome_extensions_browser_client.h
+++ b/chrome/browser/extensions/chrome_extensions_browser_client.h
@@ -12,6 +12,8 @@
#include "chrome/browser/extensions/chrome_notification_observer.h"
#include "extensions/browser/extensions_browser_client.h"
+class CommandLine;
+
namespace content {
class BrowserContext;
}
@@ -31,6 +33,8 @@ class ChromeExtensionsBrowserClient : public ExtensionsBrowserClient {
// BrowserClient overrides:
virtual bool IsShuttingDown() OVERRIDE;
+ virtual bool AreExtensionsDisabled(const CommandLine& command_line,
+ content::BrowserContext* context) OVERRIDE;
virtual bool IsValidContext(content::BrowserContext* context) OVERRIDE;
virtual bool IsSameContext(content::BrowserContext* first,
content::BrowserContext* second) OVERRIDE;
@@ -40,6 +44,8 @@ class ChromeExtensionsBrowserClient : public ExtensionsBrowserClient {
content::BrowserContext* context) OVERRIDE;
virtual content::BrowserContext* GetOriginalContext(
content::BrowserContext* context) OVERRIDE;
+ virtual PrefService* GetPrefServiceForContext(
+ content::BrowserContext* context) OVERRIDE;
virtual bool DeferLoadingBackgroundHosts(
content::BrowserContext* context) const OVERRIDE;
virtual bool DidVersionUpdate(content::BrowserContext* context) OVERRIDE;
diff --git a/chrome/browser/extensions/extension_pref_value_map_factory.cc b/chrome/browser/extensions/extension_pref_value_map_factory.cc
index fdc9c5c..bc926ea 100644
--- a/chrome/browser/extensions/extension_pref_value_map_factory.cc
+++ b/chrome/browser/extensions/extension_pref_value_map_factory.cc
@@ -5,7 +5,6 @@
#include "chrome/browser/extensions/extension_pref_value_map_factory.h"
#include "chrome/browser/extensions/extension_pref_value_map.h"
-#include "chrome/browser/profiles/profile.h"
#include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
ExtensionPrefValueMapFactory::ExtensionPrefValueMapFactory()
diff --git a/chrome/browser/extensions/extension_pref_value_map_factory.h b/chrome/browser/extensions/extension_pref_value_map_factory.h
index 5aefc38..3689265 100644
--- a/chrome/browser/extensions/extension_pref_value_map_factory.h
+++ b/chrome/browser/extensions/extension_pref_value_map_factory.h
@@ -9,7 +9,6 @@
#include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h"
class ExtensionPrefValueMap;
-class Profile;
// The usual factory boilerplate for ExtensionPrefValueMap.
class ExtensionPrefValueMapFactory : public BrowserContextKeyedServiceFactory {
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index 21158a5..b84e043 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -348,8 +348,8 @@ ExtensionPrefs::~ExtensionPrefs() {
}
// static
-ExtensionPrefs* ExtensionPrefs::Get(Profile* profile) {
- return ExtensionPrefsFactory::GetInstance()->GetForProfile(profile);
+ExtensionPrefs* ExtensionPrefs::Get(content::BrowserContext* context) {
+ return ExtensionPrefsFactory::GetInstance()->GetForBrowserContext(context);
}
static base::FilePath::StringType MakePathRelative(const base::FilePath& parent,
diff --git a/chrome/browser/extensions/extension_prefs.h b/chrome/browser/extensions/extension_prefs.h
index f7130a5..6906f90 100644
--- a/chrome/browser/extensions/extension_prefs.h
+++ b/chrome/browser/extensions/extension_prefs.h
@@ -24,7 +24,10 @@
class ExtensionPrefValueMap;
class PrefService;
-class Profile;
+
+namespace content {
+class BrowserContext;
+}
namespace user_prefs {
class PrefRegistrySyncable;
@@ -158,8 +161,8 @@ class ExtensionPrefs : public ExtensionScopedPrefs,
virtual ~ExtensionPrefs();
- // Convenience function to get the ExtensionPrefs for a Profile.
- static ExtensionPrefs* Get(Profile* profile);
+ // Convenience function to get the ExtensionPrefs for a BrowserContext.
+ static ExtensionPrefs* Get(content::BrowserContext* context);
// Returns all installed extensions from extension preferences provided by
// |pref_service|. This is exposed for ProtectedPrefsWatcher because it needs
diff --git a/chrome/browser/extensions/extension_prefs_factory.cc b/chrome/browser/extensions/extension_prefs_factory.cc
index c3cfe967..e0bb1ba 100644
--- a/chrome/browser/extensions/extension_prefs_factory.cc
+++ b/chrome/browser/extensions/extension_prefs_factory.cc
@@ -10,19 +10,18 @@
#include "chrome/browser/extensions/extension_prefs_factory.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/incognito_helpers.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/pref_names.h"
#include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
+#include "content/public/browser/browser_context.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/common/constants.h"
namespace extensions {
// static
-ExtensionPrefs* ExtensionPrefsFactory::GetForProfile(Profile* profile) {
+ExtensionPrefs* ExtensionPrefsFactory::GetForBrowserContext(
+ content::BrowserContext* context) {
return static_cast<ExtensionPrefs*>(
- GetInstance()->GetServiceForBrowserContext(profile, true));
+ GetInstance()->GetServiceForBrowserContext(context, true));
}
// static
@@ -46,21 +45,19 @@ ExtensionPrefsFactory::~ExtensionPrefsFactory() {
BrowserContextKeyedService* ExtensionPrefsFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
- Profile* profile = Profile::FromBrowserContext(context);
- bool extensions_disabled =
- profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions) ||
- CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableExtensions);
+ ExtensionsBrowserClient* client = ExtensionsBrowserClient::Get();
return ExtensionPrefs::Create(
- profile->GetPrefs(),
- profile->GetPath().AppendASCII(extensions::kInstallDirectoryName),
- ExtensionPrefValueMapFactory::GetForBrowserContext(profile),
- ExtensionsBrowserClient::Get()->CreateAppSorting().Pass(),
- extensions_disabled);
+ client->GetPrefServiceForContext(context),
+ context->GetPath().AppendASCII(extensions::kInstallDirectoryName),
+ ExtensionPrefValueMapFactory::GetForBrowserContext(context),
+ client->CreateAppSorting().Pass(),
+ client->AreExtensionsDisabled(
+ *CommandLine::ForCurrentProcess(), context));
}
content::BrowserContext* ExtensionPrefsFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
- return chrome::GetBrowserContextRedirectedInIncognito(context);
+ return ExtensionsBrowserClient::Get()->GetOriginalContext(context);
}
} // namespace extensions
diff --git a/chrome/browser/extensions/extension_prefs_factory.h b/chrome/browser/extensions/extension_prefs_factory.h
index b3057f2..911f949 100644
--- a/chrome/browser/extensions/extension_prefs_factory.h
+++ b/chrome/browser/extensions/extension_prefs_factory.h
@@ -15,7 +15,7 @@ class ExtensionPrefs;
class ExtensionPrefsFactory : public BrowserContextKeyedServiceFactory {
public:
- static ExtensionPrefs* GetForProfile(Profile* profile);
+ static ExtensionPrefs* GetForBrowserContext(content::BrowserContext* context);
static ExtensionPrefsFactory* GetInstance();
@@ -29,7 +29,7 @@ class ExtensionPrefsFactory : public BrowserContextKeyedServiceFactory {
virtual ~ExtensionPrefsFactory();
virtual BrowserContextKeyedService* BuildServiceInstanceFor(
- content::BrowserContext* profile) const OVERRIDE;
+ content::BrowserContext* context) const OVERRIDE;
virtual content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const OVERRIDE;
};
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 955e43f..ed4cf34 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -337,10 +337,9 @@ ExtensionService::ExtensionService(Profile* profile,
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Figure out if extension installation should be enabled.
- if (command_line->HasSwitch(switches::kDisableExtensions) ||
- profile->GetPrefs()->GetBoolean(prefs::kDisableExtensions)) {
+ if (extensions::ExtensionsBrowserClient::Get()->AreExtensionsDisabled(
+ *command_line, profile))
extensions_enabled_ = false;
- }
registrar_.Add(this, chrome::NOTIFICATION_APP_TERMINATING,
content::NotificationService::AllBrowserContextsAndSources());
diff --git a/chrome/browser/extensions/extension_sync_service_factory.cc b/chrome/browser/extensions/extension_sync_service_factory.cc
index 5b9b9a4..cc3ca65 100644
--- a/chrome/browser/extensions/extension_sync_service_factory.cc
+++ b/chrome/browser/extensions/extension_sync_service_factory.cc
@@ -41,7 +41,7 @@ BrowserContextKeyedService*
Profile* profile = Profile::FromBrowserContext(context);
return new ExtensionSyncService(
profile,
- extensions::ExtensionPrefsFactory::GetForProfile(profile),
+ extensions::ExtensionPrefsFactory::GetForBrowserContext(profile),
extensions::ExtensionSystemFactory::GetForProfile(profile)->
extension_service());
}
diff --git a/chrome/browser/extensions/extension_toolbar_model.h b/chrome/browser/extensions/extension_toolbar_model.h
index d739ce3..a69fa79 100644
--- a/chrome/browser/extensions/extension_toolbar_model.h
+++ b/chrome/browser/extensions/extension_toolbar_model.h
@@ -17,6 +17,7 @@
class Browser;
class ExtensionService;
class PrefService;
+class Profile;
// Model for the browser actions toolbar.
class ExtensionToolbarModel : public content::NotificationObserver,
diff --git a/chrome/browser/extensions/extension_toolbar_model_factory.cc b/chrome/browser/extensions/extension_toolbar_model_factory.cc
index f4056a6..474c6a0 100644
--- a/chrome/browser/extensions/extension_toolbar_model_factory.cc
+++ b/chrome/browser/extensions/extension_toolbar_model_factory.cc
@@ -35,10 +35,9 @@ ExtensionToolbarModelFactory::~ExtensionToolbarModelFactory() {}
BrowserContextKeyedService*
ExtensionToolbarModelFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
- Profile* profile = Profile::FromBrowserContext(context);
return new ExtensionToolbarModel(
- profile,
- extensions::ExtensionPrefsFactory::GetForProfile(profile));
+ Profile::FromBrowserContext(context),
+ extensions::ExtensionPrefsFactory::GetForBrowserContext(context));
}
content::BrowserContext* ExtensionToolbarModelFactory::GetBrowserContextToUse(
diff --git a/extensions/browser/extensions_browser_client.h b/extensions/browser/extensions_browser_client.h
index 6331dae..61641a7 100644
--- a/extensions/browser/extensions_browser_client.h
+++ b/extensions/browser/extensions_browser_client.h
@@ -7,6 +7,9 @@
#include "base/memory/scoped_ptr.h"
+class CommandLine;
+class PrefService;
+
namespace content {
class BrowserContext;
}
@@ -28,6 +31,11 @@ class ExtensionsBrowserClient {
// Returns true if the embedder has started shutting down.
virtual bool IsShuttingDown() = 0;
+ // Returns true if extensions have been disabled (e.g. via a command-line flag
+ // or preference).
+ virtual bool AreExtensionsDisabled(const CommandLine& command_line,
+ content::BrowserContext* context) = 0;
+
// Returns true if the |context| is known to the embedder.
virtual bool IsValidContext(content::BrowserContext* context) = 0;
@@ -51,6 +59,10 @@ class ExtensionsBrowserClient {
virtual content::BrowserContext* GetOriginalContext(
content::BrowserContext* context) = 0;
+ // Returns the PrefService associated with |context|.
+ virtual PrefService* GetPrefServiceForContext(
+ content::BrowserContext* context) = 0;
+
// Returns true if loading background pages should be deferred.
virtual bool DeferLoadingBackgroundHosts(
content::BrowserContext* context) const = 0;