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 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_ 7 8 #include "base/memory/singleton.h" 9 #include "chrome/browser/extensions/extension_system_impl.h" 10 #include "components/keyed_service/content/browser_context_keyed_service_factory.h" 11 #include "extensions/browser/extension_system_provider.h" 12 13 namespace extensions { 14 class ExtensionSystem; 15 16 // BrowserContextKeyedServiceFactory for ExtensionSystemImpl::Shared. 17 // Should not be used except by ExtensionSystem(Factory). 18 class ExtensionSystemSharedFactory : public BrowserContextKeyedServiceFactory { 19 public: 20 static ExtensionSystemImpl::Shared* GetForBrowserContext( 21 content::BrowserContext* context); 22 23 static ExtensionSystemSharedFactory* GetInstance(); 24 25 private: 26 friend struct DefaultSingletonTraits<ExtensionSystemSharedFactory>; 27 28 ExtensionSystemSharedFactory(); 29 virtual ~ExtensionSystemSharedFactory(); 30 31 // BrowserContextKeyedServiceFactory implementation: 32 virtual KeyedService* BuildServiceInstanceFor( 33 content::BrowserContext* context) const OVERRIDE; 34 virtual content::BrowserContext* GetBrowserContextToUse( 35 content::BrowserContext* context) const OVERRIDE; 36 37 DISALLOW_COPY_AND_ASSIGN(ExtensionSystemSharedFactory); 38 }; 39 40 // BrowserContextKeyedServiceFactory for ExtensionSystemImpl. 41 // TODO(yoz): Rename to ExtensionSystemImplFactory. 42 class ExtensionSystemFactory : public ExtensionSystemProvider { 43 public: 44 // ExtensionSystem provider implementation: 45 virtual ExtensionSystem* GetForBrowserContext( 46 content::BrowserContext* context) OVERRIDE; 47 48 static ExtensionSystemFactory* GetInstance(); 49 50 private: 51 friend struct DefaultSingletonTraits<ExtensionSystemFactory>; 52 53 ExtensionSystemFactory(); 54 virtual ~ExtensionSystemFactory(); 55 56 // BrowserContextKeyedServiceFactory implementation: 57 virtual KeyedService* BuildServiceInstanceFor( 58 content::BrowserContext* context) const OVERRIDE; 59 virtual content::BrowserContext* GetBrowserContextToUse( 60 content::BrowserContext* context) const OVERRIDE; 61 virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE; 62 63 DISALLOW_COPY_AND_ASSIGN(ExtensionSystemFactory); 64 }; 65 66 } // namespace extensions 67 68 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_ 69