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   // The default value.
     46   UNKNOWN_ERROR
     47 };
     48 
     49 enum ClientAction {
     50   // Upgrade the client to latest version.
     51   UPGRADE_CLIENT,
     52 
     53   // Clear user data and setup sync again.
     54   CLEAR_USER_DATA_AND_RESYNC,
     55 
     56   // Set the bit on the account to enable sync.
     57   ENABLE_SYNC_ON_ACCOUNT,
     58 
     59   // Stop sync and restart sync.
     60   STOP_AND_RESTART_SYNC,
     61 
     62   // Wipe this client of any sync data.
     63   DISABLE_SYNC_ON_CLIENT,
     64 
     65   // Account is disabled by admin. Stop sync, clear prefs and show message on
     66   // settings page that account is disabled.
     67   STOP_SYNC_FOR_DISABLED_ACCOUNT,
     68 
     69   // The default. No action.
     70   UNKNOWN_ACTION
     71 };
     72 
     73 struct SYNC_EXPORT SyncProtocolError {
     74   SyncProtocolErrorType error_type;
     75   std::string error_description;
     76   std::string url;
     77   ClientAction action;
     78   ModelTypeSet error_data_types;
     79   SyncProtocolError();
     80   ~SyncProtocolError();
     81   base::DictionaryValue* ToValue() const;
     82 };
     83 
     84 SYNC_EXPORT const char* GetSyncErrorTypeString(SyncProtocolErrorType type);
     85 SYNC_EXPORT const char* GetClientActionString(ClientAction action);
     86 }  // namespace syncer
     87 #endif  // SYNC_PROTOCOL_SYNC_PROTOCOL_ERROR_H_
     88 
     89