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.h"
     10 #include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h"
     11 
     12 class BrowserContextKeyedService;
     13 class Profile;
     14 
     15 namespace extensions {
     16 class ExtensionSystem;
     17 
     18 // BrowserContextKeyedServiceFactory for ExtensionSystemImpl::Shared.
     19 // Should not be used except by ExtensionSystem(Factory).
     20 class ExtensionSystemSharedFactory : public BrowserContextKeyedServiceFactory {
     21  public:
     22   static ExtensionSystemImpl::Shared* GetForProfile(
     23       Profile* profile);
     24 
     25   static ExtensionSystemSharedFactory* GetInstance();
     26 
     27  private:
     28   friend struct DefaultSingletonTraits<ExtensionSystemSharedFactory>;
     29 
     30   ExtensionSystemSharedFactory();
     31   virtual ~ExtensionSystemSharedFactory();
     32 
     33   virtual BrowserContextKeyedService* BuildServiceInstanceFor(
     34       content::BrowserContext* profile) const OVERRIDE;
     35   virtual content::BrowserContext* GetBrowserContextToUse(
     36       content::BrowserContext* context) const OVERRIDE;
     37 };
     38 
     39 // BrowserContextKeyedServiceFactory for ExtensionSystem.
     40 class ExtensionSystemFactory : public BrowserContextKeyedServiceFactory {
     41  public:
     42   // BrowserContextKeyedServiceFactory implementation:
     43   static ExtensionSystem* GetForProfile(Profile* profile);
     44 
     45   static ExtensionSystemFactory* GetInstance();
     46 
     47  private:
     48   friend struct DefaultSingletonTraits<ExtensionSystemFactory>;
     49 
     50   ExtensionSystemFactory();
     51   virtual ~ExtensionSystemFactory();
     52 
     53   virtual BrowserContextKeyedService* BuildServiceInstanceFor(
     54       content::BrowserContext* profile) const OVERRIDE;
     55   virtual content::BrowserContext* GetBrowserContextToUse(
     56       content::BrowserContext* context) const OVERRIDE;
     57   virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE;
     58 };
     59 
     60 }  // namespace extensions
     61 
     62 #endif  // CHROME_BROWSER_EXTENSIONS_EXTENSION_SYSTEM_FACTORY_H_
     63