Home | History | Annotate | Download | only in protocol
      1 // Copyright (c) 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 
      5 #include "sync/protocol/sync_protocol_error.h"
      6 
      7 #include <string>
      8 
      9 #include "base/logging.h"
     10 #include "base/values.h"
     11 
     12 namespace syncer {
     13 #define ENUM_CASE(x) case x: return #x; break;
     14 
     15 const char* GetSyncErrorTypeString(SyncProtocolErrorType type) {
     16   switch (type) {
     17     ENUM_CASE(SYNC_SUCCESS);
     18     ENUM_CASE(NOT_MY_BIRTHDAY);
     19     ENUM_CASE(THROTTLED);
     20     ENUM_CASE(CLEAR_PENDING);
     21     ENUM_CASE(TRANSIENT_ERROR);
     22     ENUM_CASE(NON_RETRIABLE_ERROR);
     23     ENUM_CASE(MIGRATION_DONE);
     24     ENUM_CASE(INVALID_CREDENTIAL);
     25     ENUM_CASE(DISABLED_BY_ADMIN);
     26     ENUM_CASE(USER_ROLLBACK);
     27     ENUM_CASE(UNKNOWN_ERROR);
     28   }
     29   NOTREACHED();
     30   return "";
     31 }
     32 
     33 const char* GetClientActionString(ClientAction action) {
     34   switch (action) {
     35     ENUM_CASE(UPGRADE_CLIENT);
     36     ENUM_CASE(CLEAR_USER_DATA_AND_RESYNC);
     37     ENUM_CASE(ENABLE_SYNC_ON_ACCOUNT);
     38     ENUM_CASE(STOP_AND_RESTART_SYNC);
     39     ENUM_CASE(DISABLE_SYNC_ON_CLIENT);
     40     ENUM_CASE(STOP_SYNC_FOR_DISABLED_ACCOUNT);
     41     ENUM_CASE(DISABLE_SYNC_AND_ROLLBACK);
     42     ENUM_CASE(ROLLBACK_DONE);
     43     ENUM_CASE(UNKNOWN_ACTION);
     44   }
     45   NOTREACHED();
     46   return "";
     47 }
     48 
     49 SyncProtocolError::SyncProtocolError()
     50     : error_type(UNKNOWN_ERROR),
     51       action(UNKNOWN_ACTION) {
     52 }
     53 
     54 SyncProtocolError::~SyncProtocolError() {
     55 }
     56 
     57 base::DictionaryValue* SyncProtocolError::ToValue() const {
     58   base::DictionaryValue* value = new base::DictionaryValue();
     59   value->SetString("ErrorType",
     60                    GetSyncErrorTypeString(error_type));
     61   value->SetString("ErrorDescription", error_description);
     62   value->SetString("url", url);
     63   value->SetString("action", GetClientActionString(action));
     64   return value;
     65 }
     66 
     67 }  // namespace syncer
     68 
     69