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_SYNC_SYNC_UI_UTIL_H_ 6#define CHROME_BROWSER_SYNC_SYNC_UI_UTIL_H_ 7#pragma once 8 9#include <string> 10 11#include "base/string16.h" 12#include "base/values.h" 13#include "chrome/browser/sync/profile_sync_service.h" 14 15class Browser; 16class Profile; 17class ListValue; 18class DictionaryValue; 19 20// Utility functions to gather current sync status information from the sync 21// service and constructs messages suitable for showing in UI. 22namespace sync_ui_util { 23 24enum MessageType { 25 PRE_SYNCED, // User has not set up sync. 26 SYNCED, // We are synced and authenticated to a gmail account. 27 SYNC_ERROR, // A sync error (such as invalid credentials) has occurred. 28 SYNC_PROMO, // A situation has occurred which should be brought to the user's 29 // attention, but not as an error. 30}; 31 32// TODO(akalin): audit the use of ProfileSyncService* service below, 33// and use const ProfileSyncService& service where possible. 34 35// Create status and link labels for the current status labels and link text 36// by querying |service|. 37MessageType GetStatusLabels(ProfileSyncService* service, 38 string16* status_label, 39 string16* link_label); 40 41// Same as above but for use specifically on the New Tab Page. 42MessageType GetStatusLabelsForNewTabPage(ProfileSyncService* service, 43 string16* status_label, 44 string16* link_label); 45 46MessageType GetStatus(ProfileSyncService* service); 47 48// Determines whether or not the sync error button should be visible. 49bool ShouldShowSyncErrorButton(ProfileSyncService* service); 50 51// Returns a string with the synchronization status. 52string16 GetSyncMenuLabel(ProfileSyncService* service); 53 54// Open the appropriate sync dialog for the given profile (which can be 55// incognito). |browser| is the browser window that should be used if the UI 56// is in-window (i.e., WebUI). |code| should be one of the START_FROM_* codes. 57void OpenSyncMyBookmarksDialog(Profile* profile, 58 Browser* browser, 59 ProfileSyncService::SyncEventCodes code); 60 61void AddBoolSyncDetail(ListValue* details, 62 const std::string& stat_name, 63 bool stat_value); 64 65// |service| can be NULL. 66void ConstructAboutInformation(ProfileSyncService* service, 67 DictionaryValue* strings); 68 69void AddIntSyncDetail(ListValue* details, 70 const std::string& stat_name, 71 int64 stat_value); 72} // namespace sync_ui_util 73#endif // CHROME_BROWSER_SYNC_SYNC_UI_UTIL_H_ 74