Home | History | Annotate | Download | only in protocol
      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 
     13 namespace syncer{
     14 
     15 enum 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 
     52 enum 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 
     83 struct 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 
     94 SYNC_EXPORT const char* GetSyncErrorTypeString(SyncProtocolErrorType type);
     95 SYNC_EXPORT const char* GetClientActionString(ClientAction action);
     96 }  // namespace syncer
     97 #endif  // SYNC_PROTOCOL_SYNC_PROTOCOL_ERROR_H_
     98 
     99