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 10 namespace sync_file_system { 11 12 const 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 54 // Database related errors. 55 case SYNC_DATABASE_ERROR_NOT_FOUND: 56 return "Database not found."; 57 case SYNC_DATABASE_ERROR_CORRUPTION: 58 return "Database was corrupted."; 59 case SYNC_DATABASE_ERROR_IO_ERROR: 60 return "Database I/O error."; 61 case SYNC_DATABASE_ERROR_FAILED: 62 return "Database operation failed."; 63 64 // Sync specific status code. 65 case SYNC_STATUS_FILE_BUSY: 66 return "Sync: file is busy."; 67 case SYNC_STATUS_HAS_CONFLICT: 68 return "Sync: file has conflict."; 69 case SYNC_STATUS_NO_CONFLICT: 70 return "Sync: file has no conflict."; 71 case SYNC_STATUS_ABORT: 72 return "Sync: operation aborted."; 73 case SYNC_STATUS_NO_CHANGE_TO_SYNC: 74 return "Sync: no change to synchronize."; 75 case SYNC_STATUS_RETRY: 76 return "Sync: retry to synchronize."; 77 case SYNC_STATUS_NETWORK_ERROR: 78 return "Sync: network error."; 79 case SYNC_STATUS_AUTHENTICATION_FAILED: 80 return "Sync: authentication failed."; 81 case SYNC_STATUS_UNKNOWN_ORIGIN: 82 return "Sync: unknown origin."; 83 case SYNC_STATUS_NOT_MODIFIED: 84 return "Sync: file not modified."; 85 case SYNC_STATUS_SYNC_DISABLED: 86 return "Sync: sync is disabled."; 87 case SYNC_STATUS_ACCESS_FORBIDDEN: 88 return "Sync: service access forbidden."; 89 } 90 NOTREACHED(); 91 return "Unknown error."; 92 } 93 94 SyncStatusCode LevelDBStatusToSyncStatusCode(const leveldb::Status& status) { 95 if (status.ok()) 96 return SYNC_STATUS_OK; 97 else if (status.IsNotFound()) 98 return SYNC_DATABASE_ERROR_NOT_FOUND; 99 else if (status.IsCorruption()) 100 return SYNC_DATABASE_ERROR_CORRUPTION; 101 else if (status.IsIOError()) 102 return SYNC_DATABASE_ERROR_IO_ERROR; 103 else 104 return SYNC_DATABASE_ERROR_FAILED; 105 } 106 107 SyncStatusCode PlatformFileErrorToSyncStatusCode( 108 base::PlatformFileError file_error) { 109 switch (file_error) { 110 case base::PLATFORM_FILE_OK: 111 return SYNC_STATUS_OK; 112 case base::PLATFORM_FILE_ERROR_FAILED: 113 return SYNC_FILE_ERROR_FAILED; 114 case base::PLATFORM_FILE_ERROR_IN_USE: 115 return SYNC_FILE_ERROR_IN_USE; 116 case base::PLATFORM_FILE_ERROR_EXISTS: 117 return SYNC_FILE_ERROR_EXISTS; 118 case base::PLATFORM_FILE_ERROR_NOT_FOUND: 119 return SYNC_FILE_ERROR_NOT_FOUND; 120 case base::PLATFORM_FILE_ERROR_ACCESS_DENIED: 121 return SYNC_FILE_ERROR_ACCESS_DENIED; 122 case base::PLATFORM_FILE_ERROR_TOO_MANY_OPENED: 123 return SYNC_FILE_ERROR_TOO_MANY_OPENED; 124 case base::PLATFORM_FILE_ERROR_NO_MEMORY: 125 return SYNC_FILE_ERROR_NO_MEMORY; 126 case base::PLATFORM_FILE_ERROR_NO_SPACE: 127 return SYNC_FILE_ERROR_NO_SPACE; 128 case base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY: 129 return SYNC_FILE_ERROR_NOT_A_DIRECTORY; 130 case base::PLATFORM_FILE_ERROR_INVALID_OPERATION: 131 return SYNC_FILE_ERROR_INVALID_OPERATION; 132 case base::PLATFORM_FILE_ERROR_SECURITY: 133 return SYNC_FILE_ERROR_SECURITY; 134 case base::PLATFORM_FILE_ERROR_ABORT: 135 return SYNC_FILE_ERROR_ABORT; 136 case base::PLATFORM_FILE_ERROR_NOT_A_FILE: 137 return SYNC_FILE_ERROR_NOT_A_FILE; 138 case base::PLATFORM_FILE_ERROR_NOT_EMPTY: 139 return SYNC_FILE_ERROR_NOT_EMPTY; 140 case base::PLATFORM_FILE_ERROR_INVALID_URL: 141 return SYNC_FILE_ERROR_INVALID_URL; 142 default: 143 return SYNC_FILE_ERROR_FAILED; 144 } 145 } 146 147 } // namespace sync_file_system 148