blob: 14485894227486109c8eab24f09cf17dea4efe8e [file] [log] [blame]
[email protected]31d8f5f22012-04-02 15:22:081// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/extensions/extension_system_factory.h"
6
[email protected]d81bb3e2013-05-02 18:17:037#include "chrome/browser/policy/profile_policy_connector_factory.h"
[email protected]31d8f5f22012-04-02 15:22:088#include "chrome/browser/profiles/profile.h"
[email protected]1ba55cf2012-06-29 19:11:399#include "chrome/browser/ui/global_error/global_error_service_factory.h"
[email protected]0dd6f2032013-05-20 23:33:4010#include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
[email protected]489db0842014-01-22 18:20:0311#include "extensions/browser/extension_prefs_factory.h"
[email protected]5fdfa562013-12-27 17:43:5912#include "extensions/browser/extension_registry_factory.h"
[email protected]59b0e602014-01-30 00:41:2413#include "extensions/browser/extension_system.h"
[email protected]da762a82013-12-07 03:45:5814#include "extensions/browser/extensions_browser_client.h"
[email protected]44366da12014-01-28 01:38:4115#include "extensions/browser/renderer_startup_helper.h"
[email protected]31d8f5f22012-04-02 15:22:0816
[email protected]bd306722012-07-11 20:43:5917namespace extensions {
18
[email protected]31d8f5f22012-04-02 15:22:0819// ExtensionSystemSharedFactory
20
21// static
[email protected]bd306722012-07-11 20:43:5922ExtensionSystemImpl::Shared*
[email protected]59b0e602014-01-30 00:41:2423ExtensionSystemSharedFactory::GetForBrowserContext(
24 content::BrowserContext* context) {
[email protected]31d8f5f22012-04-02 15:22:0825 return static_cast<ExtensionSystemImpl::Shared*>(
[email protected]59b0e602014-01-30 00:41:2426 GetInstance()->GetServiceForBrowserContext(context, true));
[email protected]31d8f5f22012-04-02 15:22:0827}
28
29// static
30ExtensionSystemSharedFactory* ExtensionSystemSharedFactory::GetInstance() {
31 return Singleton<ExtensionSystemSharedFactory>::get();
32}
33
34ExtensionSystemSharedFactory::ExtensionSystemSharedFactory()
[email protected]f1484c52013-05-22 23:25:4435 : BrowserContextKeyedServiceFactory(
[email protected]31d8f5f22012-04-02 15:22:0836 "ExtensionSystemShared",
[email protected]f1484c52013-05-22 23:25:4437 BrowserContextDependencyManager::GetInstance()) {
[email protected]836e2982013-05-16 08:07:4238 DependsOn(ExtensionPrefsFactory::GetInstance());
[email protected]5fdfa562013-12-27 17:43:5939 // This depends on ExtensionService which depends on ExtensionRegistry.
40 DependsOn(ExtensionRegistryFactory::GetInstance());
[email protected]31d8f5f22012-04-02 15:22:0841 DependsOn(GlobalErrorServiceFactory::GetInstance());
[email protected]d81bb3e2013-05-02 18:17:0342 DependsOn(policy::ProfilePolicyConnectorFactory::GetInstance());
[email protected]44366da12014-01-28 01:38:4143 DependsOn(RendererStartupHelperFactory::GetInstance());
[email protected]31d8f5f22012-04-02 15:22:0844}
45
46ExtensionSystemSharedFactory::~ExtensionSystemSharedFactory() {
47}
48
[email protected]f1484c52013-05-22 23:25:4449BrowserContextKeyedService*
50ExtensionSystemSharedFactory::BuildServiceInstanceFor(
[email protected]59b0e602014-01-30 00:41:2451 content::BrowserContext* context) const {
52 return new ExtensionSystemImpl::Shared(static_cast<Profile*>(context));
[email protected]31d8f5f22012-04-02 15:22:0853}
54
[email protected]018bf652013-05-03 23:18:3455content::BrowserContext* ExtensionSystemSharedFactory::GetBrowserContextToUse(
56 content::BrowserContext* context) const {
[email protected]da762a82013-12-07 03:45:5857 // Redirected in incognito.
[email protected]8172a9d2014-01-09 23:18:3058 return ExtensionsBrowserClient::Get()->GetOriginalContext(context);
[email protected]31d8f5f22012-04-02 15:22:0859}
60
61// ExtensionSystemFactory
62
63// static
[email protected]59b0e602014-01-30 00:41:2464ExtensionSystem* ExtensionSystemFactory::GetForBrowserContext(
65 content::BrowserContext* context) {
[email protected]31d8f5f22012-04-02 15:22:0866 return static_cast<ExtensionSystem*>(
[email protected]59b0e602014-01-30 00:41:2467 GetInstance()->GetServiceForBrowserContext(context, true));
[email protected]31d8f5f22012-04-02 15:22:0868}
69
70// static
71ExtensionSystemFactory* ExtensionSystemFactory::GetInstance() {
72 return Singleton<ExtensionSystemFactory>::get();
73}
74
75ExtensionSystemFactory::ExtensionSystemFactory()
[email protected]70489302014-02-13 15:15:4876 : ExtensionSystemProvider("ExtensionSystem",
77 BrowserContextDependencyManager::GetInstance()) {
[email protected]8172a9d2014-01-09 23:18:3078 DCHECK(ExtensionsBrowserClient::Get())
79 << "ExtensionSystemFactory must be initialized after BrowserProcess";
[email protected]70489302014-02-13 15:15:4880 DependsOn(ExtensionSystemSharedFactory::GetInstance());
[email protected]31d8f5f22012-04-02 15:22:0881}
82
83ExtensionSystemFactory::~ExtensionSystemFactory() {
84}
85
[email protected]f1484c52013-05-22 23:25:4486BrowserContextKeyedService* ExtensionSystemFactory::BuildServiceInstanceFor(
[email protected]8172a9d2014-01-09 23:18:3087 content::BrowserContext* context) const {
[email protected]70489302014-02-13 15:15:4888 return new ExtensionSystemImpl(static_cast<Profile*>(context));
[email protected]31d8f5f22012-04-02 15:22:0889}
90
[email protected]018bf652013-05-03 23:18:3491content::BrowserContext* ExtensionSystemFactory::GetBrowserContextToUse(
92 content::BrowserContext* context) const {
[email protected]da762a82013-12-07 03:45:5893 // Separate instance in incognito.
94 return context;
[email protected]31d8f5f22012-04-02 15:22:0895}
96
[email protected]f1484c52013-05-22 23:25:4497bool ExtensionSystemFactory::ServiceIsCreatedWithBrowserContext() const {
[email protected]31d8f5f22012-04-02 15:22:0898 return true;
99}
[email protected]bd306722012-07-11 20:43:59100
101} // namespace extensions