| Index: chrome/browser/themes/theme_service.h
|
| diff --git a/chrome/browser/themes/theme_service.h b/chrome/browser/themes/theme_service.h
|
| index b37a34842e42615d042ff27658f9100d78516407..b29dde803a9f2cb5c041c2c2b76f49f21886f7be 100644
|
| --- a/chrome/browser/themes/theme_service.h
|
| +++ b/chrome/browser/themes/theme_service.h
|
| @@ -15,6 +15,8 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/threading/non_thread_safe.h"
|
| #include "chrome/browser/profiles/profile_keyed_service.h"
|
| +#include "content/public/browser/notification_observer.h"
|
| +#include "content/public/browser/notification_registrar.h"
|
| #include "ui/base/theme_provider.h"
|
|
|
| class BrowserThemePack;
|
| @@ -47,6 +49,7 @@ extern "C" NSString* const kBrowserThemeDidChangeNotification;
|
| #endif // __OBJC__
|
|
|
| class ThemeService : public base::NonThreadSafe,
|
| + public content::NotificationObserver,
|
| public ProfileKeyedService,
|
| public ui::ThemeProvider {
|
| public:
|
| @@ -197,6 +200,10 @@ class ThemeService : public base::NonThreadSafe,
|
| // same as the default theme).
|
| virtual bool UsingNativeTheme() const;
|
|
|
| + // Gets the id of the last installed theme. (The theme may have been further
|
| + // locally customized.)
|
| + virtual std::string GetThemeID() const;
|
| +
|
| // This class needs to keep track of the number of theme infobars so that we
|
| // clean up unused themes.
|
| void OnInfobarDisplayed();
|
| @@ -205,23 +212,6 @@ class ThemeService : public base::NonThreadSafe,
|
| // destroyed, uninstalls all themes that aren't the currently selected.
|
| void OnInfobarDestroyed();
|
|
|
| - // Gets the id of the last installed theme for |profile|. (The theme
|
| - // may have been further locally customized.)
|
| - static std::string GetThemeIDForProfile(Profile* profile);
|
| -
|
| - // Save the id of the last theme installed. If the theme service
|
| - // already exists, SetTheme() must be used instead.
|
| - static void SaveThemeIDForProfile(Profile* profile, const std::string& id);
|
| -
|
| - // Uninstall extensions for themes that are no longer in use.
|
| - static void RemoveUnusedThemesForProfile(Profile* profile);
|
| -
|
| - // Gets the id of the last installed theme. (The theme may have been
|
| - // further locally customized.)
|
| - //
|
| - // TODO(akalin): Make everything use GetThemeIDForProfile().
|
| - virtual std::string GetThemeID() const;
|
| -
|
| // Convert a bitfield alignment into a string like "top left". Public so that
|
| // it can be used to generate CSS values. Takes a bitmask of Alignment.
|
| static std::string AlignmentToString(int alignment);
|
| @@ -250,6 +240,9 @@ class ThemeService : public base::NonThreadSafe,
|
| // Returns the set of IDR_* resources that should be tinted.
|
| static const std::set<int>& GetTintableToolbarButtons();
|
|
|
| + // Remove preference values for themes that are no longer in use.
|
| + void RemoveUnusedThemes();
|
| +
|
| // Returns the syncable service for syncing theme. The returned service is
|
| // owned by |this| object.
|
| virtual ThemeSyncableService* GetThemeSyncableService() const;
|
| @@ -281,12 +274,20 @@ class ThemeService : public base::NonThreadSafe,
|
|
|
| Profile* profile() { return profile_; }
|
|
|
| + // content::NotificationObserver:
|
| + virtual void Observe(int type,
|
| + const content::NotificationSource& source,
|
| + const content::NotificationDetails& details) OVERRIDE;
|
| +
|
| private:
|
| friend class ThemeServiceTest;
|
|
|
| // Saves the filename of the cached theme pack.
|
| void SavePackName(const FilePath& pack_path);
|
|
|
| + // Save the id of the last theme installed.
|
| + void SaveThemeID(const std::string& id);
|
| +
|
| // Implementation of SetTheme() (and the fallback from LoadThemePrefs() in
|
| // case we don't have a theme pack).
|
| void BuildFromExtension(const extensions::Extension* extension);
|
| @@ -319,6 +320,8 @@ class ThemeService : public base::NonThreadSafe,
|
| // The number of infobars currently displayed.
|
| int number_of_infobars_;
|
|
|
| + content::NotificationRegistrar registrar_;
|
| +
|
| scoped_ptr<ThemeSyncableService> theme_syncable_service_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ThemeService);
|
|
|