summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authoryoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-13 15:15:48 +0000
committeryoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-13 15:15:48 +0000
commit70489306be95e9700051e6f9e1ee3cd91ecc71d3 (patch)
treec1fbae7bc7d6ecab253ee260d1601c774bf1e8f2 /extensions
parentb2593b3ca3d5dc74b5313c725233290e99920381 (diff)
downloadchromium_src-70489306be95e9700051e6f9e1ee3cd91ecc71d3.zip
chromium_src-70489306be95e9700051e6f9e1ee3cd91ecc71d3.tar.gz
chromium_src-70489306be95e9700051e6f9e1ee3cd91ecc71d3.tar.bz2
ExtensionSystem cleanup part 2
This change introduces separate ExtensionSystemFactories for app shell and for chrome; in particular, a new ShellExtensionSystemFactory. ExtensionsBrowserClient now selects between the two at the factory level. Callers can simply use ExtensionSystem::Get. BUG=337707 Review URL: https://codereview.chromium.org/137753016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251014 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions')
-rw-r--r--extensions/browser/DEPS1
-rw-r--r--extensions/browser/extension_system.cc8
-rw-r--r--extensions/browser/extension_system.h1
-rw-r--r--extensions/browser/extension_system_provider.cc19
-rw-r--r--extensions/browser/extension_system_provider.h35
-rw-r--r--extensions/browser/extensions_browser_client.h12
-rw-r--r--extensions/extensions.gyp2
7 files changed, 66 insertions, 12 deletions
diff --git a/extensions/browser/DEPS b/extensions/browser/DEPS
index 7a5f4e1..f1751cc 100644
--- a/extensions/browser/DEPS
+++ b/extensions/browser/DEPS
@@ -18,7 +18,6 @@ include_rules = [
"+chrome/browser/extensions/extension_function_histogram_value.h",
"+chrome/browser/extensions/extension_host.h",
"+chrome/browser/extensions/extension_service.h",
- "+chrome/browser/extensions/extension_system_factory.h",
"+chrome/browser/renderer_host/chrome_render_message_filter.h",
"+chrome/common/extensions/extension_messages.h",
"+chrome/common/extensions/features/feature_channel.h",
diff --git a/extensions/browser/extension_system.cc b/extensions/browser/extension_system.cc
index 2924a74..910e7d9 100644
--- a/extensions/browser/extension_system.cc
+++ b/extensions/browser/extension_system.cc
@@ -4,7 +4,9 @@
#include "extensions/browser/extension_system.h"
-#include "chrome/browser/extensions/extension_system_factory.h"
+#include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h"
+#include "extensions/browser/extension_system_provider.h"
+#include "extensions/browser/extensions_browser_client.h"
namespace extensions {
@@ -16,7 +18,9 @@ ExtensionSystem::~ExtensionSystem() {
// static
ExtensionSystem* ExtensionSystem::Get(content::BrowserContext* context) {
- return ExtensionSystemFactory::GetForBrowserContext(context);
+ return ExtensionsBrowserClient::Get()
+ ->GetExtensionSystemFactory()
+ ->GetForBrowserContext(context);
}
} // namespace extensions
diff --git a/extensions/browser/extension_system.h b/extensions/browser/extension_system.h
index ef967b1..b1e724c 100644
--- a/extensions/browser/extension_system.h
+++ b/extensions/browser/extension_system.h
@@ -51,7 +51,6 @@ class ExtensionSystem : public BrowserContextKeyedService {
virtual ~ExtensionSystem();
// Returns the instance for the given browser context, or NULL if none.
- // A convenience wrapper around ExtensionSystemFactory::GetForBrowserContext.
static ExtensionSystem* Get(content::BrowserContext* context);
// Initializes extensions machinery.
diff --git a/extensions/browser/extension_system_provider.cc b/extensions/browser/extension_system_provider.cc
new file mode 100644
index 0000000..8016e9e
--- /dev/null
+++ b/extensions/browser/extension_system_provider.cc
@@ -0,0 +1,19 @@
+// Copyright 2014 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 "extensions/browser/extension_system_provider.h"
+
+#include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
+
+namespace extensions {
+
+ExtensionSystemProvider::ExtensionSystemProvider(
+ const char* name,
+ BrowserContextDependencyManager* manager)
+ : BrowserContextKeyedServiceFactory(name, manager) {
+}
+
+ExtensionSystemProvider::~ExtensionSystemProvider() {}
+
+} // namespace extensions
diff --git a/extensions/browser/extension_system_provider.h b/extensions/browser/extension_system_provider.h
new file mode 100644
index 0000000..45ca56c
--- /dev/null
+++ b/extensions/browser/extension_system_provider.h
@@ -0,0 +1,35 @@
+// Copyright 2014 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.
+
+#ifndef EXTENSIONS_BROWSER_EXTENSION_SYSTEM_PROVIDER_H_
+#define EXTENSIONS_BROWSER_EXTENSION_SYSTEM_PROVIDER_H_
+
+#include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h"
+
+class BrowserContextDependencyManager;
+
+namespace content {
+class BrowserContext;
+}
+
+namespace extensions {
+class ExtensionSystem;
+
+// An ExtensionSystemProvider maps a BrowserContext to its ExtensionSystem.
+// Different applications may use this to provide differing implementations
+// of ExtensionSystem.
+// TODO(yoz): Rename to ExtensionSystemFactory.
+class ExtensionSystemProvider : public BrowserContextKeyedServiceFactory {
+ public:
+ ExtensionSystemProvider(const char* name,
+ BrowserContextDependencyManager* manager);
+ virtual ~ExtensionSystemProvider();
+
+ virtual ExtensionSystem* GetForBrowserContext(
+ content::BrowserContext* context) = 0;
+};
+
+} // namespace extensions
+
+#endif // EXTENSIONS_BROWSER_EXTENSION_SYSTEM_PROVIDER_H_
diff --git a/extensions/browser/extensions_browser_client.h b/extensions/browser/extensions_browser_client.h
index 3fa84f8..08ffa58 100644
--- a/extensions/browser/extensions_browser_client.h
+++ b/extensions/browser/extensions_browser_client.h
@@ -10,7 +10,6 @@
#include "base/memory/scoped_ptr.h"
-class BrowserContextKeyedServiceFactory;
class CommandLine;
class PrefService;
@@ -27,6 +26,7 @@ class AppSorting;
class Extension;
class ExtensionHost;
class ExtensionSystem;
+class ExtensionSystemProvider;
// Interface to allow the extensions module to make browser-process-specific
// queries of the embedder. Should be Set() once in the browser process.
@@ -122,13 +122,9 @@ class ExtensionsBrowserClient {
virtual ApiActivityMonitor* GetApiActivityMonitor(
content::BrowserContext* context) = 0;
- // Returns the dependencies of ExtensionSystem. May return an empty list.
- virtual std::vector<BrowserContextKeyedServiceFactory*>
- GetExtensionSystemDependencies() = 0;
-
- // Creates a new ExtensionSystem for |context|.
- virtual ExtensionSystem* CreateExtensionSystem(
- content::BrowserContext* context) = 0;
+ // Returns the factory that provides an ExtensionSystem to be returned from
+ // ExtensionSystem::Get.
+ virtual ExtensionSystemProvider* GetExtensionSystemFactory() = 0;
// Returns the single instance of |this|.
static ExtensionsBrowserClient* Get();
diff --git a/extensions/extensions.gyp b/extensions/extensions.gyp
index 8fa8921..1045e53 100644
--- a/extensions/extensions.gyp
+++ b/extensions/extensions.gyp
@@ -201,6 +201,8 @@
'browser/extension_scoped_prefs.h',
'browser/extension_system.cc',
'browser/extension_system.h',
+ 'browser/extension_system_provider.cc',
+ 'browser/extension_system_provider.h',
'browser/extensions_browser_client.cc',
'browser/extensions_browser_client.h',
'browser/external_provider_interface.h',