Home | History | Annotate | Download | only in browser
      1 // Copyright 2014 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 EXTENSIONS_BROWSER_IMAGE_LOADER_FACTORY_H_
      6 #define EXTENSIONS_BROWSER_IMAGE_LOADER_FACTORY_H_
      7 
      8 #include "base/memory/singleton.h"
      9 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
     10 
     11 namespace content {
     12 class BrowserContext;
     13 }
     14 
     15 namespace extensions {
     16 
     17 class ImageLoader;
     18 
     19 // Singleton that owns all ImageLoaders and associates them with
     20 // BrowserContexts. Listens for the BrowserContext's destruction notification
     21 // and cleans up the associated ImageLoader. Uses the original BrowserContext
     22 // for incognito contexts.
     23 class ImageLoaderFactory : public BrowserContextKeyedServiceFactory {
     24  public:
     25   static ImageLoader* GetForBrowserContext(content::BrowserContext* context);
     26 
     27   static ImageLoaderFactory* GetInstance();
     28 
     29  private:
     30   friend struct DefaultSingletonTraits<ImageLoaderFactory>;
     31 
     32   ImageLoaderFactory();
     33   virtual ~ImageLoaderFactory();
     34 
     35   // BrowserContextKeyedServiceFactory:
     36   virtual KeyedService* BuildServiceInstanceFor(
     37       content::BrowserContext* context) const OVERRIDE;
     38   virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE;
     39   virtual content::BrowserContext* GetBrowserContextToUse(
     40       content::BrowserContext* context) const OVERRIDE;
     41 };
     42 
     43 }  // namespace extensions
     44 
     45 #endif  // EXTENSIONS_BROWSER_IMAGE_LOADER_FACTORY_H_
     46