[go: nahoru, domu]

blob: 451d30c7264c657b26222e8b753dfdb0ff7018d7 [file] [log] [blame]
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/drive/file_errors.h"
#include <type_traits>
#include "base/notreached.h"
namespace drive {
std::ostream& operator<<(std::ostream& out, const FileError error) {
const std::string s = FileErrorToString(error);
if (!s.empty()) {
return out << s;
}
return out << "FileError("
<< static_cast<std::underlying_type_t<FileError>>(error) << ")";
}
std::string FileErrorToString(FileError error) {
switch (error) {
#define PRINT(s) \
case s: \
return #s;
PRINT(FILE_ERROR_OK)
PRINT(FILE_ERROR_FAILED)
PRINT(FILE_ERROR_IN_USE)
PRINT(FILE_ERROR_EXISTS)
PRINT(FILE_ERROR_NOT_FOUND)
PRINT(FILE_ERROR_ACCESS_DENIED)
PRINT(FILE_ERROR_TOO_MANY_OPENED)
PRINT(FILE_ERROR_NO_MEMORY)
PRINT(FILE_ERROR_NO_SERVER_SPACE)
PRINT(FILE_ERROR_NOT_A_DIRECTORY)
PRINT(FILE_ERROR_INVALID_OPERATION)
PRINT(FILE_ERROR_SECURITY)
PRINT(FILE_ERROR_ABORT)
PRINT(FILE_ERROR_NOT_A_FILE)
PRINT(FILE_ERROR_NOT_EMPTY)
PRINT(FILE_ERROR_INVALID_URL)
PRINT(FILE_ERROR_NO_CONNECTION)
PRINT(FILE_ERROR_NO_LOCAL_SPACE)
PRINT(FILE_ERROR_SERVICE_UNAVAILABLE)
PRINT(FILE_ERROR_OK_WITH_MORE_RESULTS)
#undef PRINT
}
NOTREACHED() << "Unexpected FileError "
<< static_cast<std::underlying_type_t<FileError>>(error);
return "";
}
base::File::Error FileErrorToBaseFileError(FileError error) {
switch (error) {
case FILE_ERROR_OK:
case FILE_ERROR_OK_WITH_MORE_RESULTS:
return base::File::FILE_OK;
case FILE_ERROR_FAILED:
return base::File::FILE_ERROR_FAILED;
case FILE_ERROR_IN_USE:
return base::File::FILE_ERROR_IN_USE;
case FILE_ERROR_EXISTS:
return base::File::FILE_ERROR_EXISTS;
case FILE_ERROR_NOT_FOUND:
return base::File::FILE_ERROR_NOT_FOUND;
case FILE_ERROR_ACCESS_DENIED:
return base::File::FILE_ERROR_ACCESS_DENIED;
case FILE_ERROR_TOO_MANY_OPENED:
return base::File::FILE_ERROR_TOO_MANY_OPENED;
case FILE_ERROR_NO_MEMORY:
return base::File::FILE_ERROR_NO_MEMORY;
case FILE_ERROR_NO_SERVER_SPACE:
return base::File::FILE_ERROR_NO_SPACE;
case FILE_ERROR_NOT_A_DIRECTORY:
return base::File::FILE_ERROR_NOT_A_DIRECTORY;
case FILE_ERROR_INVALID_OPERATION:
return base::File::FILE_ERROR_INVALID_OPERATION;
case FILE_ERROR_SECURITY:
return base::File::FILE_ERROR_SECURITY;
case FILE_ERROR_ABORT:
return base::File::FILE_ERROR_ABORT;
case FILE_ERROR_NOT_A_FILE:
return base::File::FILE_ERROR_NOT_A_FILE;
case FILE_ERROR_NOT_EMPTY:
return base::File::FILE_ERROR_NOT_EMPTY;
case FILE_ERROR_INVALID_URL:
return base::File::FILE_ERROR_INVALID_URL;
case FILE_ERROR_NO_CONNECTION:
return base::File::FILE_ERROR_FAILED;
case FILE_ERROR_NO_LOCAL_SPACE:
return base::File::FILE_ERROR_FAILED;
case FILE_ERROR_SERVICE_UNAVAILABLE:
return base::File::FILE_ERROR_FAILED;
}
NOTREACHED();
return base::File::FILE_ERROR_FAILED;
}
FileError GDataToFileError(google_apis::ApiErrorCode status) {
switch (status) {
case google_apis::HTTP_SUCCESS:
case google_apis::HTTP_CREATED:
case google_apis::HTTP_NO_CONTENT:
return FILE_ERROR_OK;
case google_apis::HTTP_UNAUTHORIZED:
case google_apis::HTTP_FORBIDDEN:
return FILE_ERROR_ACCESS_DENIED;
case google_apis::HTTP_NOT_FOUND:
case google_apis::HTTP_GONE:
return FILE_ERROR_NOT_FOUND;
case google_apis::HTTP_INTERNAL_SERVER_ERROR:
case google_apis::HTTP_SERVICE_UNAVAILABLE:
return FILE_ERROR_SERVICE_UNAVAILABLE;
case google_apis::HTTP_NOT_IMPLEMENTED:
return FILE_ERROR_INVALID_OPERATION;
case google_apis::CANCELLED:
return FILE_ERROR_ABORT;
case google_apis::NO_CONNECTION:
return FILE_ERROR_NO_CONNECTION;
case google_apis::DRIVE_NO_SPACE:
return FILE_ERROR_NO_SERVER_SPACE;
default:
return FILE_ERROR_FAILED;
}
}
} // namespace drive