// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_THEMES_THEME_SERVICE_FACTORY_H_ #define CHROME_BROWSER_THEMES_THEME_SERVICE_FACTORY_H_ #include <map> #include "base/memory/singleton.h" #include "chrome/browser/profiles/profile_keyed_service_factory.h" #include "content/common/notification_observer.h" #include "content/common/notification_registrar.h" class ThemeService; class Extension; class Profile; // Singleton that owns all ThemeServices and associates them with // Profiles. Listens for the Profile's destruction notification and cleans up // the associated ThemeService. class ThemeServiceFactory : public ProfileKeyedServiceFactory { public: // Returns the ThemeService that provides theming resources for // |profile|. Note that even if a Profile doesn't have a theme installed, it // still needs a ThemeService to hand back the default theme images. static ThemeService* GetForProfile(Profile* profile); // Returns the Extension that implements the theme associated with // |profile|. Returns NULL if the theme is no longer installed, if there is // no installed theme, or the theme was cleared. static const Extension* GetThemeForProfile(Profile* profile); static ThemeServiceFactory* GetInstance(); private: friend struct DefaultSingletonTraits<ThemeServiceFactory>; ThemeServiceFactory(); virtual ~ThemeServiceFactory(); // ProfileKeyedServiceFactory: virtual ProfileKeyedService* BuildServiceInstanceFor(Profile* profile) const; virtual bool ServiceRedirectedInIncognito(); }; #endif // CHROME_BROWSER_THEMES_THEME_SERVICE_FACTORY_H_