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 13namespace extensions { 14class ExtensionSystem; 15 16// BrowserContextKeyedServiceFactory for ExtensionSystemImpl::Shared. 17// Should not be used except by ExtensionSystem(Factory). 18class 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. 42class 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