| Index: base/files/file.cc
|
| diff --git a/base/files/file.cc b/base/files/file.cc
|
| index 58f80c52322ec38125e1acbe3fda1120f64aa912..9a4ddb1de4a17e174f569a648096e631ad857f8f 100644
|
| --- a/base/files/file.cc
|
| +++ b/base/files/file.cc
|
| @@ -52,22 +52,30 @@ File::File(Error error_details)
|
|
|
| File::File(RValue other)
|
| : file_(other.object->TakePlatformFile()),
|
| - path_(other.object->path_),
|
| + tracing_path_(other.object->tracing_path_),
|
| error_details_(other.object->error_details()),
|
| created_(other.object->created()),
|
| - async_(other.object->async_) {
|
| -}
|
| + async_(other.object->async_) {}
|
|
|
| File::~File() {
|
| // Go through the AssertIOAllowed logic.
|
| Close();
|
| }
|
|
|
| +// static
|
| +File File::CreateForAsyncHandle(PlatformFile platform_file) {
|
| + File file(platform_file);
|
| + // It would be nice if we could validate that |platform_file| was opened with
|
| + // FILE_FLAG_OVERLAPPED on Windows but this doesn't appear to be possible.
|
| + file.async_ = true;
|
| + return file.Pass();
|
| +}
|
| +
|
| File& File::operator=(RValue other) {
|
| if (this != other.object) {
|
| Close();
|
| SetPlatformFile(other.object->TakePlatformFile());
|
| - path_ = other.object->path_;
|
| + tracing_path_ = other.object->tracing_path_;
|
| error_details_ = other.object->error_details();
|
| created_ = other.object->created();
|
| async_ = other.object->async_;
|
| @@ -81,9 +89,10 @@ void File::Initialize(const FilePath& path, uint32 flags) {
|
| error_details_ = FILE_ERROR_ACCESS_DENIED;
|
| return;
|
| }
|
| - path_ = path;
|
| + if (FileTracing::IsCategoryEnabled())
|
| + tracing_path_ = path;
|
| SCOPED_FILE_TRACE("Initialize");
|
| - DoInitialize(flags);
|
| + DoInitialize(path, flags);
|
| }
|
| #endif
|
|
|
|
|