Home | History | Annotate | Download | only in extensions
      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