Index: base/platform_file_win.cc |
diff --git a/base/platform_file_win.cc b/base/platform_file_win.cc |
index 2d25d3327c45bcfe53c5059be9b7105d4f2dc85e..6d4440245601bdecfaba17f2bee1feb50b44a078 100644 |
--- a/base/platform_file_win.cc |
+++ b/base/platform_file_win.cc |
@@ -90,51 +90,8 @@ PlatformFile CreatePlatformFileUnsafe(const FilePath& name, |
if (error) { |
if (file != kInvalidPlatformFileValue) |
*error = PLATFORM_FILE_OK; |
- else { |
- DWORD last_error = GetLastError(); |
- switch (last_error) { |
- case ERROR_SHARING_VIOLATION: |
- *error = PLATFORM_FILE_ERROR_IN_USE; |
- break; |
- case ERROR_FILE_EXISTS: |
- *error = PLATFORM_FILE_ERROR_EXISTS; |
- break; |
- case ERROR_FILE_NOT_FOUND: |
- case ERROR_PATH_NOT_FOUND: |
- *error = PLATFORM_FILE_ERROR_NOT_FOUND; |
- break; |
- case ERROR_ACCESS_DENIED: |
- *error = PLATFORM_FILE_ERROR_ACCESS_DENIED; |
- break; |
- case ERROR_TOO_MANY_OPEN_FILES: |
- *error = PLATFORM_FILE_ERROR_TOO_MANY_OPENED; |
- break; |
- case ERROR_OUTOFMEMORY: |
- case ERROR_NOT_ENOUGH_MEMORY: |
- *error = PLATFORM_FILE_ERROR_NO_MEMORY; |
- break; |
- case ERROR_HANDLE_DISK_FULL: |
- case ERROR_DISK_FULL: |
- case ERROR_DISK_RESOURCES_EXHAUSTED: |
- *error = PLATFORM_FILE_ERROR_NO_SPACE; |
- break; |
- case ERROR_USER_MAPPED_FILE: |
- *error = PLATFORM_FILE_ERROR_INVALID_OPERATION; |
- break; |
- case ERROR_NOT_READY: |
- case ERROR_SECTOR_NOT_FOUND: |
- case ERROR_DEV_NOT_EXIST: |
- case ERROR_IO_DEVICE: |
- case ERROR_FILE_CORRUPT: |
- case ERROR_DISK_CORRUPT: |
- *error = PLATFORM_FILE_ERROR_IO; |
- break; |
- default: |
- UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownCreateFileErrors", |
- last_error); |
- *error = PLATFORM_FILE_ERROR_FAILED; |
- } |
- } |
+ else |
+ *error = LastErrorToPlatformFileError(GetLastError()); |
} |
return file; |
@@ -299,4 +256,40 @@ bool GetPlatformFileInfo(PlatformFile file, PlatformFileInfo* info) { |
return true; |
} |
+PlatformFileError LastErrorToPlatformFileError(DWORD last_error) { |
+ switch (last_error) { |
+ case ERROR_SHARING_VIOLATION: |
+ return PLATFORM_FILE_ERROR_IN_USE; |
+ case ERROR_FILE_EXISTS: |
+ return PLATFORM_FILE_ERROR_EXISTS; |
+ case ERROR_FILE_NOT_FOUND: |
+ case ERROR_PATH_NOT_FOUND: |
+ return PLATFORM_FILE_ERROR_NOT_FOUND; |
+ case ERROR_ACCESS_DENIED: |
+ return PLATFORM_FILE_ERROR_ACCESS_DENIED; |
+ case ERROR_TOO_MANY_OPEN_FILES: |
+ return PLATFORM_FILE_ERROR_TOO_MANY_OPENED; |
+ case ERROR_OUTOFMEMORY: |
+ case ERROR_NOT_ENOUGH_MEMORY: |
+ return PLATFORM_FILE_ERROR_NO_MEMORY; |
+ case ERROR_HANDLE_DISK_FULL: |
+ case ERROR_DISK_FULL: |
+ case ERROR_DISK_RESOURCES_EXHAUSTED: |
+ return PLATFORM_FILE_ERROR_NO_SPACE; |
+ case ERROR_USER_MAPPED_FILE: |
+ return PLATFORM_FILE_ERROR_INVALID_OPERATION; |
+ case ERROR_NOT_READY: |
+ case ERROR_SECTOR_NOT_FOUND: |
+ case ERROR_DEV_NOT_EXIST: |
+ case ERROR_IO_DEVICE: |
+ case ERROR_FILE_CORRUPT: |
+ case ERROR_DISK_CORRUPT: |
+ return PLATFORM_FILE_ERROR_IO; |
+ default: |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("PlatformFile.UnknownCreateFileErrors", |
+ last_error); |
+ return PLATFORM_FILE_ERROR_FAILED; |
+ } |
+} |
+ |
} // namespace base |