172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_SYNC_SYNC_UI_UTIL_H_ 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_SYNC_SYNC_UI_UTIL_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include <string> 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/string16.h" 12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/values.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/profile_sync_service.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass Browser; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile; 17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass ListValue; 18731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass DictionaryValue; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Utility functions to gather current sync status information from the sync 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// service and constructs messages suitable for showing in UI. 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace sync_ui_util { 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochenum MessageType { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch PRE_SYNCED, // User has not set up sync. 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SYNCED, // We are synced and authenticated to a gmail account. 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SYNC_ERROR, // A sync error (such as invalid credentials) has occurred. 283f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen SYNC_PROMO, // A situation has occurred which should be brought to the user's 293f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // attention, but not as an error. 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// TODO(akalin): audit the use of ProfileSyncService* service below, 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// and use const ProfileSyncService& service where possible. 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Create status and link labels for the current status labels and link text 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// by querying |service|. 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochMessageType GetStatusLabels(ProfileSyncService* service, 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16* status_label, 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16* link_label); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Same as above but for use specifically on the New Tab Page. 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenMessageType GetStatusLabelsForNewTabPage(ProfileSyncService* service, 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen string16* status_label, 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen string16* link_label); 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochMessageType GetStatus(ProfileSyncService* service); 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Determines whether or not the sync error button should be visible. 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochbool ShouldShowSyncErrorButton(ProfileSyncService* service); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Returns a string with the synchronization status. 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstring16 GetSyncMenuLabel(ProfileSyncService* service); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Open the appropriate sync dialog for the given profile (which can be 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// incognito). |browser| is the browser window that should be used if the UI 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// is in-window (i.e., WebUI). |code| should be one of the START_FROM_* codes. 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid OpenSyncMyBookmarksDialog(Profile* profile, 5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen Browser* browser, 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ProfileSyncService::SyncEventCodes code); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 61731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AddBoolSyncDetail(ListValue* details, 62731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const std::string& stat_name, 63731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick bool stat_value); 64731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 6572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// |service| can be NULL. 66731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid ConstructAboutInformation(ProfileSyncService* service, 67731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DictionaryValue* strings); 68731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 69731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid AddIntSyncDetail(ListValue* details, 70731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const std::string& stat_name, 71731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick int64 stat_value); 72731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} // namespace sync_ui_util 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_SYNC_SYNC_UI_UTIL_H_ 74