Index: base/files/file_win.cc |
diff --git a/base/files/file_win.cc b/base/files/file_win.cc |
index 200ea296644a06238e21642313e831a1845a6596..97928522f106c3c16c58ed0e03b62901da3416a8 100644 |
--- a/base/files/file_win.cc |
+++ b/base/files/file_win.cc |
@@ -6,7 +6,6 @@ |
#include <io.h> |
-#include "base/files/file_path.h" |
#include "base/logging.h" |
#include "base/metrics/sparse_histogram.h" |
#include "base/threading/thread_restrictions.h" |
@@ -31,16 +30,20 @@ PlatformFile File::TakePlatformFile() { |
} |
void File::Close() { |
- if (file_.IsValid()) { |
- ThreadRestrictions::AssertIOAllowed(); |
- file_.Close(); |
- } |
+ if (!file_.IsValid()) |
+ return; |
+ |
+ ThreadRestrictions::AssertIOAllowed(); |
+ SCOPED_FILE_TRACE("Close"); |
+ file_.Close(); |
} |
int64 File::Seek(Whence whence, int64 offset) { |
ThreadRestrictions::AssertIOAllowed(); |
DCHECK(IsValid()); |
+ SCOPED_FILE_TRACE_WITH_SIZE("Seek", offset); |
+ |
LARGE_INTEGER distance, res; |
distance.QuadPart = offset; |
DWORD move_method = static_cast<DWORD>(whence); |
@@ -56,6 +59,8 @@ int File::Read(int64 offset, char* data, int size) { |
if (size < 0) |
return -1; |
+ SCOPED_FILE_TRACE_WITH_SIZE("Read", size); |
+ |
LARGE_INTEGER offset_li; |
offset_li.QuadPart = offset; |
@@ -79,6 +84,8 @@ int File::ReadAtCurrentPos(char* data, int size) { |
if (size < 0) |
return -1; |
+ SCOPED_FILE_TRACE_WITH_SIZE("ReadAtCurrentPos", size); |
+ |
DWORD bytes_read; |
if (::ReadFile(file_.Get(), data, size, &bytes_read, NULL)) |
return bytes_read; |
@@ -89,10 +96,12 @@ int File::ReadAtCurrentPos(char* data, int size) { |
} |
int File::ReadNoBestEffort(int64 offset, char* data, int size) { |
+ // TODO(dbeam): trace this separately? |
return Read(offset, data, size); |
} |
int File::ReadAtCurrentPosNoBestEffort(char* data, int size) { |
+ // TODO(dbeam): trace this separately? |
return ReadAtCurrentPos(data, size); |
} |
@@ -101,6 +110,8 @@ int File::Write(int64 offset, const char* data, int size) { |
DCHECK(IsValid()); |
DCHECK(!async_); |
+ SCOPED_FILE_TRACE_WITH_SIZE("Write", size); |
+ |
LARGE_INTEGER offset_li; |
offset_li.QuadPart = offset; |
@@ -122,6 +133,8 @@ int File::WriteAtCurrentPos(const char* data, int size) { |
if (size < 0) |
return -1; |
+ SCOPED_FILE_TRACE_WITH_SIZE("WriteAtCurrentPos", size); |
+ |
DWORD bytes_written; |
if (::WriteFile(file_.Get(), data, size, &bytes_written, NULL)) |
return bytes_written; |
@@ -136,6 +149,9 @@ int File::WriteAtCurrentPosNoBestEffort(const char* data, int size) { |
int64 File::GetLength() { |
ThreadRestrictions::AssertIOAllowed(); |
DCHECK(IsValid()); |
+ |
+ SCOPED_FILE_TRACE("GetLength"); |
+ |
LARGE_INTEGER size; |
if (!::GetFileSizeEx(file_.Get(), &size)) |
return -1; |
@@ -147,6 +163,8 @@ bool File::SetLength(int64 length) { |
ThreadRestrictions::AssertIOAllowed(); |
DCHECK(IsValid()); |
+ SCOPED_FILE_TRACE_WITH_SIZE("SetLength", length); |
+ |
// Get the current file pointer. |
LARGE_INTEGER file_pointer; |
LARGE_INTEGER zero; |
@@ -176,6 +194,8 @@ bool File::SetTimes(Time last_access_time, Time last_modified_time) { |
ThreadRestrictions::AssertIOAllowed(); |
DCHECK(IsValid()); |
+ SCOPED_FILE_TRACE("SetTimes"); |
+ |
FILETIME last_access_filetime = last_access_time.ToFileTime(); |
FILETIME last_modified_filetime = last_modified_time.ToFileTime(); |
return (::SetFileTime(file_.Get(), NULL, &last_access_filetime, |
@@ -186,6 +206,8 @@ bool File::GetInfo(Info* info) { |
ThreadRestrictions::AssertIOAllowed(); |
DCHECK(IsValid()); |
+ SCOPED_FILE_TRACE("GetInfo"); |
+ |
BY_HANDLE_FILE_INFORMATION file_info; |
if (!GetFileInformationByHandle(file_.Get(), &file_info)) |
return false; |
@@ -205,6 +227,9 @@ bool File::GetInfo(Info* info) { |
File::Error File::Lock() { |
DCHECK(IsValid()); |
+ |
+ SCOPED_FILE_TRACE("Lock"); |
+ |
BOOL result = LockFile(file_.Get(), 0, 0, MAXDWORD, MAXDWORD); |
if (!result) |
return OSErrorToFileError(GetLastError()); |
@@ -213,6 +238,9 @@ File::Error File::Lock() { |
File::Error File::Unlock() { |
DCHECK(IsValid()); |
+ |
+ SCOPED_FILE_TRACE("Unlock"); |
+ |
BOOL result = UnlockFile(file_.Get(), 0, 0, MAXDWORD, MAXDWORD); |
if (!result) |
return OSErrorToFileError(GetLastError()); |
@@ -223,6 +251,8 @@ File File::Duplicate() { |
if (!IsValid()) |
return File(); |
+ SCOPED_FILE_TRACE("Duplicate"); |
+ |
HANDLE other_handle = nullptr; |
if (!::DuplicateHandle(GetCurrentProcess(), // hSourceProcessHandle |
@@ -278,7 +308,7 @@ File::Error File::OSErrorToFileError(DWORD last_error) { |
} |
} |
-void File::DoInitialize(const FilePath& name, uint32 flags) { |
+void File::DoInitialize(uint32 flags) { |
ThreadRestrictions::AssertIOAllowed(); |
DCHECK(!IsValid()); |
@@ -346,7 +376,7 @@ void File::DoInitialize(const FilePath& name, uint32 flags) { |
if (flags & FLAG_BACKUP_SEMANTICS) |
create_flags |= FILE_FLAG_BACKUP_SEMANTICS; |
- file_.Set(CreateFile(name.value().c_str(), access, sharing, NULL, |
+ file_.Set(CreateFile(path_.value().c_str(), access, sharing, NULL, |
disposition, create_flags, NULL)); |
if (file_.IsValid()) { |