- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync_file_system / sync_status_code.cc
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     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_SERVICE_TEMPORARILY_UNAVAILABLE:
78       return "Sync: service is temporarily unavailable.";
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     case SYNC_STATUS_RETRY:
92       return "Sync: retry the operation.";
93   }
94   NOTREACHED();
95   return "Unknown error.";
96 }
97
98 SyncStatusCode LevelDBStatusToSyncStatusCode(const leveldb::Status& status) {
99   if (status.ok())
100     return SYNC_STATUS_OK;
101   else if (status.IsNotFound())
102     return SYNC_DATABASE_ERROR_NOT_FOUND;
103   else if (status.IsCorruption())
104     return SYNC_DATABASE_ERROR_CORRUPTION;
105   else if (status.IsIOError())
106     return SYNC_DATABASE_ERROR_IO_ERROR;
107   else
108     return SYNC_DATABASE_ERROR_FAILED;
109 }
110
111 SyncStatusCode PlatformFileErrorToSyncStatusCode(
112     base::PlatformFileError file_error) {
113   switch (file_error) {
114     case base::PLATFORM_FILE_OK:
115       return SYNC_STATUS_OK;
116     case base::PLATFORM_FILE_ERROR_FAILED:
117       return SYNC_FILE_ERROR_FAILED;
118     case base::PLATFORM_FILE_ERROR_IN_USE:
119       return SYNC_FILE_ERROR_IN_USE;
120     case base::PLATFORM_FILE_ERROR_EXISTS:
121       return SYNC_FILE_ERROR_EXISTS;
122     case base::PLATFORM_FILE_ERROR_NOT_FOUND:
123       return SYNC_FILE_ERROR_NOT_FOUND;
124     case base::PLATFORM_FILE_ERROR_ACCESS_DENIED:
125       return SYNC_FILE_ERROR_ACCESS_DENIED;
126     case base::PLATFORM_FILE_ERROR_TOO_MANY_OPENED:
127       return SYNC_FILE_ERROR_TOO_MANY_OPENED;
128     case base::PLATFORM_FILE_ERROR_NO_MEMORY:
129       return SYNC_FILE_ERROR_NO_MEMORY;
130     case base::PLATFORM_FILE_ERROR_NO_SPACE:
131       return SYNC_FILE_ERROR_NO_SPACE;
132     case base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY:
133       return SYNC_FILE_ERROR_NOT_A_DIRECTORY;
134     case base::PLATFORM_FILE_ERROR_INVALID_OPERATION:
135       return SYNC_FILE_ERROR_INVALID_OPERATION;
136     case base::PLATFORM_FILE_ERROR_SECURITY:
137       return SYNC_FILE_ERROR_SECURITY;
138     case base::PLATFORM_FILE_ERROR_ABORT:
139       return SYNC_FILE_ERROR_ABORT;
140     case base::PLATFORM_FILE_ERROR_NOT_A_FILE:
141       return SYNC_FILE_ERROR_NOT_A_FILE;
142     case base::PLATFORM_FILE_ERROR_NOT_EMPTY:
143       return SYNC_FILE_ERROR_NOT_EMPTY;
144     case base::PLATFORM_FILE_ERROR_INVALID_URL:
145       return SYNC_FILE_ERROR_INVALID_URL;
146     case base::PLATFORM_FILE_ERROR_IO:
147       return SYNC_FILE_ERROR_IO;
148     default:
149       return SYNC_FILE_ERROR_FAILED;
150   }
151 }
152
153 base::PlatformFileError SyncStatusCodeToPlatformFileError(
154     SyncStatusCode status) {
155   switch (status) {
156     case SYNC_STATUS_OK:
157       return base::PLATFORM_FILE_OK;
158     case SYNC_FILE_ERROR_FAILED:
159       return base::PLATFORM_FILE_ERROR_FAILED;
160     case SYNC_FILE_ERROR_IN_USE:
161       return base::PLATFORM_FILE_ERROR_IN_USE;
162     case SYNC_FILE_ERROR_EXISTS:
163       return base::PLATFORM_FILE_ERROR_EXISTS;
164     case SYNC_FILE_ERROR_NOT_FOUND:
165       return base::PLATFORM_FILE_ERROR_NOT_FOUND;
166     case SYNC_FILE_ERROR_ACCESS_DENIED:
167       return base::PLATFORM_FILE_ERROR_ACCESS_DENIED;
168     case SYNC_FILE_ERROR_TOO_MANY_OPENED:
169       return base::PLATFORM_FILE_ERROR_TOO_MANY_OPENED;
170     case SYNC_FILE_ERROR_NO_MEMORY:
171       return base::PLATFORM_FILE_ERROR_NO_MEMORY;
172     case SYNC_FILE_ERROR_NO_SPACE:
173       return base::PLATFORM_FILE_ERROR_NO_SPACE;
174     case SYNC_FILE_ERROR_NOT_A_DIRECTORY:
175       return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY;
176     case SYNC_FILE_ERROR_INVALID_OPERATION:
177       return base::PLATFORM_FILE_ERROR_INVALID_OPERATION;
178     case SYNC_FILE_ERROR_SECURITY:
179       return base::PLATFORM_FILE_ERROR_SECURITY;
180     case SYNC_FILE_ERROR_ABORT:
181       return base::PLATFORM_FILE_ERROR_ABORT;
182     case SYNC_FILE_ERROR_NOT_A_FILE:
183       return base::PLATFORM_FILE_ERROR_NOT_A_FILE;
184     case SYNC_FILE_ERROR_NOT_EMPTY:
185       return base::PLATFORM_FILE_ERROR_NOT_EMPTY;
186     case SYNC_FILE_ERROR_INVALID_URL:
187       return base::PLATFORM_FILE_ERROR_INVALID_URL;
188     case SYNC_FILE_ERROR_IO:
189       return base::PLATFORM_FILE_ERROR_IO;
190     default:
191       return base::PLATFORM_FILE_ERROR_FAILED;
192   }
193 }
194
195 }  // namespace sync_file_system