// 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_