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