Home | History | Annotate | Download | only in themes
      1 // Copyright (c) 2011 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_THEMES_THEME_SERVICE_FACTORY_H_
      6 #define CHROME_BROWSER_THEMES_THEME_SERVICE_FACTORY_H_
      7 
      8 #include <map>
      9 
     10 #include "base/memory/singleton.h"
     11 #include "chrome/browser/profiles/profile_keyed_service_factory.h"
     12 #include "content/common/notification_observer.h"
     13 #include "content/common/notification_registrar.h"
     14 
     15 class ThemeService;
     16 class Extension;
     17 class Profile;
     18 
     19 // Singleton that owns all ThemeServices and associates them with
     20 // Profiles. Listens for the Profile's destruction notification and cleans up
     21 // the associated ThemeService.
     22 class ThemeServiceFactory : public ProfileKeyedServiceFactory {
     23  public:
     24   // Returns the ThemeService that provides theming resources for
     25   // |profile|. Note that even if a Profile doesn't have a theme installed, it
     26   // still needs a ThemeService to hand back the default theme images.
     27   static ThemeService* GetForProfile(Profile* profile);
     28 
     29   // Returns the Extension that implements the theme associated with
     30   // |profile|. Returns NULL if the theme is no longer installed, if there is
     31   // no installed theme, or the theme was cleared.
     32   static const Extension* GetThemeForProfile(Profile* profile);
     33 
     34   static ThemeServiceFactory* GetInstance();
     35 
     36  private:
     37   friend struct DefaultSingletonTraits<ThemeServiceFactory>;
     38 
     39   ThemeServiceFactory();
     40   virtual ~ThemeServiceFactory();
     41 
     42   // ProfileKeyedServiceFactory:
     43   virtual ProfileKeyedService* BuildServiceInstanceFor(Profile* profile) const;
     44   virtual bool ServiceRedirectedInIncognito();
     45 };
     46 
     47 #endif  // CHROME_BROWSER_THEMES_THEME_SERVICE_FACTORY_H_
     48