|  | // Copyright 2012 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  | #ifndef COMPONENTS_SYNC_ENGINE_SYNC_PROTOCOL_ERROR_H_ | 
|  | #define COMPONENTS_SYNC_ENGINE_SYNC_PROTOCOL_ERROR_H_ | 
|  |  | 
|  | #include <memory> | 
|  | #include <string> | 
|  |  | 
|  | #include "components/sync/base/data_type.h" | 
|  |  | 
|  | namespace syncer { | 
|  |  | 
|  | enum SyncProtocolErrorType { | 
|  | // Success case. | 
|  | SYNC_SUCCESS, | 
|  |  | 
|  | // Birthday does not match that of the server. | 
|  | NOT_MY_BIRTHDAY, | 
|  |  | 
|  | // Server is busy. Try later. | 
|  | THROTTLED, | 
|  |  | 
|  | // Server cannot service the request now. | 
|  | TRANSIENT_ERROR, | 
|  |  | 
|  | // Indicates the datatypes have been migrated and the client should resync | 
|  | // them to get the latest progress markers. | 
|  | MIGRATION_DONE, | 
|  |  | 
|  | // An administrator disabled sync for this domain. | 
|  | DISABLED_BY_ADMIN, | 
|  |  | 
|  | // Some of servers are busy. Try later with busy servers. | 
|  | PARTIAL_FAILURE, | 
|  |  | 
|  | // Returned when server detects that this client's data is obsolete. Client | 
|  | // should reset local data and restart syncing. | 
|  | CLIENT_DATA_OBSOLETE, | 
|  |  | 
|  | // Returned when the server detects that the encryption state (Nigori, | 
|  | // keystore keys) has been reset/overridden, which means the local | 
|  | // Nigori-related state is obsolete and should be cleared. | 
|  | ENCRYPTION_OBSOLETE, | 
|  |  | 
|  | // The default value. | 
|  | UNKNOWN_ERROR, | 
|  |  | 
|  | // Below are commit specific values (corresponds to | 
|  | // CommitResponse::ResponseType). | 
|  | // At least one of the entities had conflict. | 
|  | CONFLICT, | 
|  |  | 
|  | // Server reports that the request was malformed. | 
|  | INVALID_MESSAGE | 
|  | }; | 
|  |  | 
|  | enum ClientAction { | 
|  | // Upgrade the client to latest version. | 
|  | UPGRADE_CLIENT, | 
|  |  | 
|  | // Wipe this client of any sync data. | 
|  | DISABLE_SYNC_ON_CLIENT, | 
|  |  | 
|  | // Account is disabled by admin. Stop sync, clear prefs and show message on | 
|  | // settings page that account is disabled. | 
|  | STOP_SYNC_FOR_DISABLED_ACCOUNT, | 
|  |  | 
|  | // Generated in response to CLIENT_DATA_OBSOLETE error. SyncServiceImpl | 
|  | // should stop sync engine, delete the data and restart sync engine. | 
|  | RESET_LOCAL_SYNC_DATA, | 
|  |  | 
|  | // The default. No action. | 
|  | UNKNOWN_ACTION | 
|  | }; | 
|  |  | 
|  | struct SyncProtocolError { | 
|  | SyncProtocolErrorType error_type = UNKNOWN_ERROR; | 
|  | std::string error_description; | 
|  | ClientAction action = UNKNOWN_ACTION; | 
|  | DataTypeSet error_data_types; | 
|  | }; | 
|  |  | 
|  | const char* GetSyncErrorTypeString(SyncProtocolErrorType type); | 
|  | const char* GetClientActionString(ClientAction action); | 
|  |  | 
|  | }  // namespace syncer | 
|  |  | 
|  | #endif  // COMPONENTS_SYNC_ENGINE_SYNC_PROTOCOL_ERROR_H_ |