1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file.
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/chromeos/drive/file_errors.h"
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/logging.h"
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace drive {
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)std::string FileErrorToString(FileError error) {
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  switch (error) {
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_OK:
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_OK";
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_FAILED:
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_FAILED";
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_IN_USE:
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_IN_USE";
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_EXISTS:
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_EXISTS";
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_FOUND:
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_NOT_FOUND";
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_ACCESS_DENIED:
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_ACCESS_DENIED";
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_TOO_MANY_OPENED:
32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_TOO_MANY_OPENED";
33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NO_MEMORY:
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_NO_MEMORY";
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case FILE_ERROR_NO_SERVER_SPACE:
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return "FILE_ERROR_NO_SERVER_SPACE";
39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_A_DIRECTORY:
41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_NOT_A_DIRECTORY";
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_INVALID_OPERATION:
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_INVALID_OPERATION";
45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_SECURITY:
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_SECURITY";
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_ABORT:
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_ABORT";
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_A_FILE:
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_NOT_A_FILE";
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_EMPTY:
56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_NOT_EMPTY";
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_INVALID_URL:
59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_INVALID_URL";
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NO_CONNECTION:
62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      return "FILE_ERROR_NO_CONNECTION";
63a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case FILE_ERROR_NO_LOCAL_SPACE:
65a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return "FILE_ERROR_NO_LOCAL_SPACE";
66ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
67ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    case FILE_ERROR_SERVICE_UNAVAILABLE:
68ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      return "FILE_ERROR_SERVICE_UNAVAILABLE";
69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  NOTREACHED();
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  return "";
73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::File::Error FileErrorToBaseFileError(FileError error) {
76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  switch (error) {
77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_OK:
785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_OK;
79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
80c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_FAILED:
815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_FAILED;
82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
83c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_IN_USE:
845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_IN_USE;
85c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
86c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_EXISTS:
875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_EXISTS;
88c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
89c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_FOUND:
905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_NOT_FOUND;
91c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
92c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_ACCESS_DENIED:
935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_ACCESS_DENIED;
94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_TOO_MANY_OPENED:
965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_TOO_MANY_OPENED;
97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NO_MEMORY:
995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_NO_MEMORY;
100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
101a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case FILE_ERROR_NO_SERVER_SPACE:
1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_NO_SPACE;
103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_A_DIRECTORY:
1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_NOT_A_DIRECTORY;
106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_INVALID_OPERATION:
1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_INVALID_OPERATION;
109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_SECURITY:
1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_SECURITY;
112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_ABORT:
1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_ABORT;
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_A_FILE:
1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_NOT_A_FILE;
118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NOT_EMPTY:
1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_NOT_EMPTY;
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
122c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_INVALID_URL:
1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_INVALID_URL;
124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
125c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    case FILE_ERROR_NO_CONNECTION:
1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_FAILED;
127a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
128a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case FILE_ERROR_NO_LOCAL_SPACE:
1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_FAILED;
130ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
131ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    case FILE_ERROR_SERVICE_UNAVAILABLE:
1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      return base::File::FILE_ERROR_FAILED;
133c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  }
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
135c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  NOTREACHED();
1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return base::File::FILE_ERROR_FAILED;
137c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
139a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)FileError GDataToFileError(google_apis::GDataErrorCode status) {
140a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  switch (status) {
141a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::HTTP_SUCCESS:
142a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::HTTP_CREATED:
143a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::HTTP_NO_CONTENT:
144a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_OK;
145a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::HTTP_UNAUTHORIZED:
146a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::HTTP_FORBIDDEN:
147a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_ACCESS_DENIED;
148a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::HTTP_NOT_FOUND:
149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    case google_apis::HTTP_GONE:
150a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_NOT_FOUND;
151ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    case google_apis::HTTP_INTERNAL_SERVER_ERROR:
152ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch    case google_apis::HTTP_SERVICE_UNAVAILABLE:
153ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch      return FILE_ERROR_SERVICE_UNAVAILABLE;
154a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::HTTP_NOT_IMPLEMENTED:
155a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_INVALID_OPERATION;
156a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::GDATA_CANCELLED:
157a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_ABORT;
158a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::GDATA_NO_CONNECTION:
159a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_NO_CONNECTION;
160a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    case google_apis::GDATA_NO_SPACE:
161a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_NO_SERVER_SPACE;
162a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    default:
163a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      return FILE_ERROR_FAILED;
164a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  }
165a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
166a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
167c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}  // namespace drive
168