diff options
author | yoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-13 15:15:48 +0000 |
---|---|---|
committer | yoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-13 15:15:48 +0000 |
commit | 70489306be95e9700051e6f9e1ee3cd91ecc71d3 (patch) | |
tree | c1fbae7bc7d6ecab253ee260d1601c774bf1e8f2 /extensions | |
parent | b2593b3ca3d5dc74b5313c725233290e99920381 (diff) | |
download | chromium_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/DEPS | 1 | ||||
-rw-r--r-- | extensions/browser/extension_system.cc | 8 | ||||
-rw-r--r-- | extensions/browser/extension_system.h | 1 | ||||
-rw-r--r-- | extensions/browser/extension_system_provider.cc | 19 | ||||
-rw-r--r-- | extensions/browser/extension_system_provider.h | 35 | ||||
-rw-r--r-- | extensions/browser/extensions_browser_client.h | 12 | ||||
-rw-r--r-- | extensions/extensions.gyp | 2 |
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', |