sync_protocol_error.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
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 12namespace syncer { 13#define ENUM_CASE(x) case x: return #x; break; 14 15const 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 33const 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(UNKNOWN_ACTION); 43 } 44 NOTREACHED(); 45 return ""; 46} 47 48SyncProtocolError::SyncProtocolError() 49 : error_type(UNKNOWN_ERROR), 50 action(UNKNOWN_ACTION) { 51} 52 53SyncProtocolError::~SyncProtocolError() { 54} 55 56base::DictionaryValue* SyncProtocolError::ToValue() const { 57 base::DictionaryValue* value = new base::DictionaryValue(); 58 value->SetString("ErrorType", 59 GetSyncErrorTypeString(error_type)); 60 value->SetString("ErrorDescription", error_description); 61 value->SetString("url", url); 62 value->SetString("action", GetClientActionString(action)); 63 return value; 64} 65 66} // namespace syncer 67 68