| // Copyright (c) 2010 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_SYNC_GLUE_THEME_UTIL_H_ |
| #define CHROME_BROWSER_SYNC_GLUE_THEME_UTIL_H_ |
| #pragma once |
| |
| class Extension; |
| class Profile; |
| |
| namespace sync_pb { |
| class ThemeSpecifics; |
| } // sync_pb |
| |
| namespace browser_sync { |
| |
| extern const char kCurrentThemeClientTag[]; |
| |
| // Returns true iff two ThemeSpecifics indicate the same theme. |
| bool AreThemeSpecificsEqual(const sync_pb::ThemeSpecifics& a, |
| const sync_pb::ThemeSpecifics& b); |
| |
| // Exposed only for testing. |
| bool AreThemeSpecificsEqualHelper( |
| const sync_pb::ThemeSpecifics& a, |
| const sync_pb::ThemeSpecifics& b, |
| bool is_system_theme_distinct_from_default_theme); |
| |
| // Sets the current theme from the information in the given |
| // ThemeSpecifics. |
| void SetCurrentThemeFromThemeSpecifics( |
| const sync_pb::ThemeSpecifics& theme_specifics, |
| Profile* profile); |
| |
| // Sets all fields of the given ThemeSpecifics according to the |
| // current theme. |
| void GetThemeSpecificsFromCurrentTheme( |
| Profile* profile, |
| sync_pb::ThemeSpecifics* theme_specifics); |
| |
| // Exposed only for testing. |
| void GetThemeSpecificsFromCurrentThemeHelper( |
| const Extension* current_theme, |
| bool is_system_theme_distinct_from_default_theme, |
| bool use_system_theme_by_default, |
| sync_pb::ThemeSpecifics* theme_specifics); |
| |
| // Like SetChrrentThemeFromThemeSpecifics() except does nothing if the |
| // current theme is equivalent to that described by theme_specifics. |
| void SetCurrentThemeFromThemeSpecificsIfNecessary( |
| const sync_pb::ThemeSpecifics& theme_specifics, Profile* profile); |
| |
| // Like SetCurrentThemeFromThemeSpecifics() except that in the case where |
| // |theme_specifics| uses the default theme and |profile| does not, the local |
| // data "wins" against the server's and |theme_specifics| is updated with the |
| // custom theme. Returns true iff |theme_specifics| is updated. |
| bool UpdateThemeSpecificsOrSetCurrentThemeIfNecessary( |
| Profile* profile, sync_pb::ThemeSpecifics* theme_specifics); |
| |
| } // namespace browser_sync |
| |
| #endif // CHROME_BROWSER_SYNC_GLUE_THEME_UTIL_H_ |