1// Copyright 2012 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#ifndef SYNC_PROTOCOL_SYNC_PROTOCOL_ERROR_H_
5#define SYNC_PROTOCOL_SYNC_PROTOCOL_ERROR_H_
6
7#include <string>
8
9#include "base/values.h"
10#include "sync/base/sync_export.h"
11#include "sync/internal_api/public/base/model_type.h"
12
13namespace syncer{
14
15enum SyncProtocolErrorType {
16  // Success case.
17  SYNC_SUCCESS,
18
19  // Birthday does not match that of the server.
20  NOT_MY_BIRTHDAY,
21
22  // Server is busy. Try later.
23  THROTTLED,
24
25  // Clear user data is being currently executed by the server.
26  CLEAR_PENDING,
27
28  // Server cannot service the request now.
29  TRANSIENT_ERROR,
30
31  // Server does not wish the client to retry any more until the action has
32  // been taken.
33  NON_RETRIABLE_ERROR,
34
35  // Indicates the datatypes have been migrated and the client should resync
36  // them to get the latest progress markers.
37  MIGRATION_DONE,
38
39  // Invalid Credential.
40  INVALID_CREDENTIAL,
41
42  // An administrator disabled sync for this domain.
43  DISABLED_BY_ADMIN,
44
45  // Client told to stop syncing this device and roll back local data.
46  USER_ROLLBACK,
47
48  // The default value.
49  UNKNOWN_ERROR
50};
51
52enum ClientAction {
53  // Upgrade the client to latest version.
54  UPGRADE_CLIENT,
55
56  // Clear user data and setup sync again.
57  CLEAR_USER_DATA_AND_RESYNC,
58
59  // Set the bit on the account to enable sync.
60  ENABLE_SYNC_ON_ACCOUNT,
61
62  // Stop sync and restart sync.
63  STOP_AND_RESTART_SYNC,
64
65  // Wipe this client of any sync data.
66  DISABLE_SYNC_ON_CLIENT,
67
68  // Account is disabled by admin. Stop sync, clear prefs and show message on
69  // settings page that account is disabled.
70  STOP_SYNC_FOR_DISABLED_ACCOUNT,
71
72  // Disable sync and roll back local model to pre-sync state.
73  DISABLE_SYNC_AND_ROLLBACK,
74
75  // Generated by SyncRollbackManager to notify ProfileSyncService that
76  // rollback is finished.
77  ROLLBACK_DONE,
78
79  // The default. No action.
80  UNKNOWN_ACTION
81};
82
83struct SYNC_EXPORT SyncProtocolError {
84  SyncProtocolErrorType error_type;
85  std::string error_description;
86  std::string url;
87  ClientAction action;
88  ModelTypeSet error_data_types;
89  SyncProtocolError();
90  ~SyncProtocolError();
91  base::DictionaryValue* ToValue() const;
92};
93
94SYNC_EXPORT const char* GetSyncErrorTypeString(SyncProtocolErrorType type);
95SYNC_EXPORT const char* GetClientActionString(ClientAction action);
96}  // namespace syncer
97#endif  // SYNC_PROTOCOL_SYNC_PROTOCOL_ERROR_H_
98
99