1 // 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 7 #include "chrome/browser/extensions/extension_prefs_factory.h" 8 #include "chrome/browser/extensions/extension_system.h" 9 #include "chrome/browser/policy/profile_policy_connector_factory.h" 10 #include "chrome/browser/profiles/incognito_helpers.h" 11 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/themes/theme_service_factory.h" 13 #include "chrome/browser/ui/global_error/global_error_service_factory.h" 14 #include "components/browser_context_keyed_service/browser_context_dependency_manager.h" 15 16 namespace extensions { 17 18 // ExtensionSystemSharedFactory 19 20 // static 21 ExtensionSystemImpl::Shared* 22 ExtensionSystemSharedFactory::GetForProfile(Profile* profile) { 23 return static_cast<ExtensionSystemImpl::Shared*>( 24 GetInstance()->GetServiceForBrowserContext(profile, true)); 25 } 26 27 // static 28 ExtensionSystemSharedFactory* ExtensionSystemSharedFactory::GetInstance() { 29 return Singleton<ExtensionSystemSharedFactory>::get(); 30 } 31 32 ExtensionSystemSharedFactory::ExtensionSystemSharedFactory() 33 : BrowserContextKeyedServiceFactory( 34 "ExtensionSystemShared", 35 BrowserContextDependencyManager::GetInstance()) { 36 DependsOn(ExtensionPrefsFactory::GetInstance()); 37 DependsOn(GlobalErrorServiceFactory::GetInstance()); 38 #if defined(ENABLE_THEMES) 39 DependsOn(ThemeServiceFactory::GetInstance()); 40 #endif 41 DependsOn(policy::ProfilePolicyConnectorFactory::GetInstance()); 42 } 43 44 ExtensionSystemSharedFactory::~ExtensionSystemSharedFactory() { 45 } 46 47 BrowserContextKeyedService* 48 ExtensionSystemSharedFactory::BuildServiceInstanceFor( 49 content::BrowserContext* profile) const { 50 return new ExtensionSystemImpl::Shared(static_cast<Profile*>(profile)); 51 } 52 53 content::BrowserContext* ExtensionSystemSharedFactory::GetBrowserContextToUse( 54 content::BrowserContext* context) const { 55 return chrome::GetBrowserContextRedirectedInIncognito(context); 56 } 57 58 // ExtensionSystemFactory 59 60 // static 61 ExtensionSystem* ExtensionSystemFactory::GetForProfile(Profile* profile) { 62 return static_cast<ExtensionSystem*>( 63 GetInstance()->GetServiceForBrowserContext(profile, true)); 64 } 65 66 // static 67 ExtensionSystemFactory* ExtensionSystemFactory::GetInstance() { 68 return Singleton<ExtensionSystemFactory>::get(); 69 } 70 71 ExtensionSystemFactory::ExtensionSystemFactory() 72 : BrowserContextKeyedServiceFactory( 73 "ExtensionSystem", 74 BrowserContextDependencyManager::GetInstance()) { 75 DependsOn(ExtensionSystemSharedFactory::GetInstance()); 76 } 77 78 ExtensionSystemFactory::~ExtensionSystemFactory() { 79 } 80 81 BrowserContextKeyedService* ExtensionSystemFactory::BuildServiceInstanceFor( 82 content::BrowserContext* profile) const { 83 return new ExtensionSystemImpl(static_cast<Profile*>(profile)); 84 } 85 86 content::BrowserContext* ExtensionSystemFactory::GetBrowserContextToUse( 87 content::BrowserContext* context) const { 88 return chrome::GetBrowserContextOwnInstanceInIncognito(context); 89 } 90 91 bool ExtensionSystemFactory::ServiceIsCreatedWithBrowserContext() const { 92 return true; 93 } 94 95 } // namespace extensions 96