sync_status_code.cc revision 3551c9c881056c480085172ff9840cab31610854
1// Copyright 2013 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 "chrome/browser/sync_file_system/sync_status_code.h" 6 7#include "base/logging.h" 8#include "third_party/leveldatabase/src/include/leveldb/db.h" 9 10namespace sync_file_system { 11 12const char* SyncStatusCodeToString(SyncStatusCode status) { 13 switch (status) { 14 case SYNC_STATUS_OK: 15 return "OK."; 16 case SYNC_STATUS_UNKNOWN: 17 return "Unknown sync status."; 18 case SYNC_STATUS_FAILED: 19 return "Failed."; 20 21 // PlatformFile related errors. 22 // TODO(nhiroki): add stringize function for PlatformFileError into base/. 23 case SYNC_FILE_ERROR_FAILED: 24 return "File operation failed."; 25 case SYNC_FILE_ERROR_IN_USE: 26 return "File currently in use."; 27 case SYNC_FILE_ERROR_EXISTS: 28 return "File already exists."; 29 case SYNC_FILE_ERROR_NOT_FOUND: 30 return "File not found."; 31 case SYNC_FILE_ERROR_ACCESS_DENIED: 32 return "File access denied."; 33 case SYNC_FILE_ERROR_TOO_MANY_OPENED: 34 return "Too many files open."; 35 case SYNC_FILE_ERROR_NO_MEMORY: 36 return "Out of memory."; 37 case SYNC_FILE_ERROR_NO_SPACE: 38 return "No space left on disk."; 39 case SYNC_FILE_ERROR_NOT_A_DIRECTORY: 40 return "Not a directory."; 41 case SYNC_FILE_ERROR_INVALID_OPERATION: 42 return "Invalid file operation."; 43 case SYNC_FILE_ERROR_SECURITY: 44 return "Security error."; 45 case SYNC_FILE_ERROR_ABORT: 46 return "File operation aborted."; 47 case SYNC_FILE_ERROR_NOT_A_FILE: 48 return "Not a file."; 49 case SYNC_FILE_ERROR_NOT_EMPTY: 50 return "File not empty."; 51 case SYNC_FILE_ERROR_INVALID_URL: 52 return "Invalid URL."; 53 case SYNC_FILE_ERROR_IO: 54 return "OS or hardware error."; 55 56 // Database related errors. 57 case SYNC_DATABASE_ERROR_NOT_FOUND: 58 return "Database not found."; 59 case SYNC_DATABASE_ERROR_CORRUPTION: 60 return "Database was corrupted."; 61 case SYNC_DATABASE_ERROR_IO_ERROR: 62 return "Database I/O error."; 63 case SYNC_DATABASE_ERROR_FAILED: 64 return "Database operation failed."; 65 66 // Sync specific status code. 67 case SYNC_STATUS_FILE_BUSY: 68 return "Sync: file is busy."; 69 case SYNC_STATUS_HAS_CONFLICT: 70 return "Sync: file has conflict."; 71 case SYNC_STATUS_NO_CONFLICT: 72 return "Sync: file has no conflict."; 73 case SYNC_STATUS_ABORT: 74 return "Sync: operation aborted."; 75 case SYNC_STATUS_NO_CHANGE_TO_SYNC: 76 return "Sync: no change to synchronize."; 77 case SYNC_STATUS_RETRY: 78 return "Sync: retry to synchronize."; 79 case SYNC_STATUS_NETWORK_ERROR: 80 return "Sync: network error."; 81 case SYNC_STATUS_AUTHENTICATION_FAILED: 82 return "Sync: authentication failed."; 83 case SYNC_STATUS_UNKNOWN_ORIGIN: 84 return "Sync: unknown origin."; 85 case SYNC_STATUS_NOT_MODIFIED: 86 return "Sync: file not modified."; 87 case SYNC_STATUS_SYNC_DISABLED: 88 return "Sync: sync is disabled."; 89 case SYNC_STATUS_ACCESS_FORBIDDEN: 90 return "Sync: service access forbidden."; 91 } 92 NOTREACHED(); 93 return "Unknown error."; 94} 95 96SyncStatusCode LevelDBStatusToSyncStatusCode(const leveldb::Status& status) { 97 if (status.ok()) 98 return SYNC_STATUS_OK; 99 else if (status.IsNotFound()) 100 return SYNC_DATABASE_ERROR_NOT_FOUND; 101 else if (status.IsCorruption()) 102 return SYNC_DATABASE_ERROR_CORRUPTION; 103 else if (status.IsIOError()) 104 return SYNC_DATABASE_ERROR_IO_ERROR; 105 else 106 return SYNC_DATABASE_ERROR_FAILED; 107} 108 109SyncStatusCode PlatformFileErrorToSyncStatusCode( 110 base::PlatformFileError file_error) { 111 switch (file_error) { 112 case base::PLATFORM_FILE_OK: 113 return SYNC_STATUS_OK; 114 case base::PLATFORM_FILE_ERROR_FAILED: 115 return SYNC_FILE_ERROR_FAILED; 116 case base::PLATFORM_FILE_ERROR_IN_USE: 117 return SYNC_FILE_ERROR_IN_USE; 118 case base::PLATFORM_FILE_ERROR_EXISTS: 119 return SYNC_FILE_ERROR_EXISTS; 120 case base::PLATFORM_FILE_ERROR_NOT_FOUND: 121 return SYNC_FILE_ERROR_NOT_FOUND; 122 case base::PLATFORM_FILE_ERROR_ACCESS_DENIED: 123 return SYNC_FILE_ERROR_ACCESS_DENIED; 124 case base::PLATFORM_FILE_ERROR_TOO_MANY_OPENED: 125 return SYNC_FILE_ERROR_TOO_MANY_OPENED; 126 case base::PLATFORM_FILE_ERROR_NO_MEMORY: 127 return SYNC_FILE_ERROR_NO_MEMORY; 128 case base::PLATFORM_FILE_ERROR_NO_SPACE: 129 return SYNC_FILE_ERROR_NO_SPACE; 130 case base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY: 131 return SYNC_FILE_ERROR_NOT_A_DIRECTORY; 132 case base::PLATFORM_FILE_ERROR_INVALID_OPERATION: 133 return SYNC_FILE_ERROR_INVALID_OPERATION; 134 case base::PLATFORM_FILE_ERROR_SECURITY: 135 return SYNC_FILE_ERROR_SECURITY; 136 case base::PLATFORM_FILE_ERROR_ABORT: 137 return SYNC_FILE_ERROR_ABORT; 138 case base::PLATFORM_FILE_ERROR_NOT_A_FILE: 139 return SYNC_FILE_ERROR_NOT_A_FILE; 140 case base::PLATFORM_FILE_ERROR_NOT_EMPTY: 141 return SYNC_FILE_ERROR_NOT_EMPTY; 142 case base::PLATFORM_FILE_ERROR_INVALID_URL: 143 return SYNC_FILE_ERROR_INVALID_URL; 144 case base::PLATFORM_FILE_ERROR_IO: 145 return SYNC_FILE_ERROR_IO; 146 default: 147 return SYNC_FILE_ERROR_FAILED; 148 } 149} 150 151} // namespace sync_file_system 152