| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/filesystem/file_impl.h" | 5 #include "components/filesystem/file_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> |
| 7 #include <stdint.h> | 8 #include <stdint.h> |
| 8 #include <limits> | 9 #include <limits> |
| 9 | 10 |
| 10 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
| 11 #include "base/files/scoped_file.h" | 12 #include "base/files/scoped_file.h" |
| 12 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "build/build_config.h" |
| 13 #include "components/filesystem/util.h" | 15 #include "components/filesystem/util.h" |
| 14 #include "mojo/platform_handle/platform_handle_functions.h" | 16 #include "mojo/platform_handle/platform_handle_functions.h" |
| 15 | 17 |
| 16 static_assert(sizeof(off_t) <= sizeof(int64_t), "off_t too big"); | 18 static_assert(sizeof(off_t) <= sizeof(int64_t), "off_t too big"); |
| 17 static_assert(sizeof(size_t) >= sizeof(uint32_t), "size_t too small"); | 19 static_assert(sizeof(size_t) >= sizeof(uint32_t), "size_t too small"); |
| 18 | 20 |
| 19 using base::Time; | 21 using base::Time; |
| 20 using mojo::ScopedHandle; | 22 using mojo::ScopedHandle; |
| 21 | 23 |
| 22 namespace filesystem { | 24 namespace filesystem { |
| 23 | 25 |
| 24 const size_t kMaxReadSize = 1 * 1024 * 1024; // 1 MB. | 26 const size_t kMaxReadSize = 1 * 1024 * 1024; // 1 MB. |
| 25 | 27 |
| 26 FileImpl::FileImpl(mojo::InterfaceRequest<File> request, | 28 FileImpl::FileImpl(mojo::InterfaceRequest<File> request, |
| 27 const base::FilePath& path, | 29 const base::FilePath& path, |
| 28 uint32 flags) | 30 uint32_t flags) |
| 29 : binding_(this, request.Pass()), file_(path, flags) { | 31 : binding_(this, request.Pass()), file_(path, flags) { |
| 30 DCHECK(file_.IsValid()); | 32 DCHECK(file_.IsValid()); |
| 31 } | 33 } |
| 32 | 34 |
| 33 FileImpl::FileImpl(mojo::InterfaceRequest<File> request, base::File file) | 35 FileImpl::FileImpl(mojo::InterfaceRequest<File> request, base::File file) |
| 34 : binding_(this, request.Pass()), file_(file.Pass()) { | 36 : binding_(this, request.Pass()), file_(file.Pass()) { |
| 35 DCHECK(file_.IsValid()); | 37 DCHECK(file_.IsValid()); |
| 36 } | 38 } |
| 37 | 39 |
| 38 FileImpl::~FileImpl() { | 40 FileImpl::~FileImpl() { |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 } | 153 } |
| 152 if (FileError error = IsOffsetValid(offset)) { | 154 if (FileError error = IsOffsetValid(offset)) { |
| 153 callback.Run(error, 0); | 155 callback.Run(error, 0); |
| 154 return; | 156 return; |
| 155 } | 157 } |
| 156 if (FileError error = IsWhenceValid(whence)) { | 158 if (FileError error = IsWhenceValid(whence)) { |
| 157 callback.Run(error, 0); | 159 callback.Run(error, 0); |
| 158 return; | 160 return; |
| 159 } | 161 } |
| 160 | 162 |
| 161 int64 position = file_.Seek(static_cast<base::File::Whence>(whence), offset); | 163 int64_t position = |
| 164 file_.Seek(static_cast<base::File::Whence>(whence), offset); |
| 162 if (position < 0) { | 165 if (position < 0) { |
| 163 callback.Run(FILE_ERROR_FAILED, 0); | 166 callback.Run(FILE_ERROR_FAILED, 0); |
| 164 return; | 167 return; |
| 165 } | 168 } |
| 166 | 169 |
| 167 callback.Run(FILE_ERROR_OK, static_cast<int64>(position)); | 170 callback.Run(FILE_ERROR_OK, static_cast<int64_t>(position)); |
| 168 } | 171 } |
| 169 | 172 |
| 170 void FileImpl::Stat(const StatCallback& callback) { | 173 void FileImpl::Stat(const StatCallback& callback) { |
| 171 if (!file_.IsValid()) { | 174 if (!file_.IsValid()) { |
| 172 callback.Run(GetError(file_), nullptr); | 175 callback.Run(GetError(file_), nullptr); |
| 173 return; | 176 return; |
| 174 } | 177 } |
| 175 | 178 |
| 176 base::File::Info info; | 179 base::File::Info info; |
| 177 if (!file_.GetInfo(&info)) { | 180 if (!file_.GetInfo(&info)) { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 new_file.TakePlatformFile(), &mojo_handle); | 305 new_file.TakePlatformFile(), &mojo_handle); |
| 303 if (create_result != MOJO_RESULT_OK) { | 306 if (create_result != MOJO_RESULT_OK) { |
| 304 callback.Run(FILE_ERROR_FAILED, ScopedHandle()); | 307 callback.Run(FILE_ERROR_FAILED, ScopedHandle()); |
| 305 return; | 308 return; |
| 306 } | 309 } |
| 307 | 310 |
| 308 callback.Run(FILE_ERROR_OK, ScopedHandle(mojo::Handle(mojo_handle)).Pass()); | 311 callback.Run(FILE_ERROR_OK, ScopedHandle(mojo::Handle(mojo_handle)).Pass()); |
| 309 } | 312 } |
| 310 | 313 |
| 311 } // namespace filesystem | 314 } // namespace filesystem |
| OLD | NEW |