| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "webkit/browser/fileapi/file_system_operation_impl.h" | 5 #include "webkit/browser/fileapi/file_system_operation_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/single_thread_task_runner.h" | 8 #include "base/single_thread_task_runner.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 196 base::Bind(&FileSystemOperationImpl::DidFinishOperation, | 196 base::Bind(&FileSystemOperationImpl::DidFinishOperation, |
| 197 weak_factory_.GetWeakPtr(), callback)); | 197 weak_factory_.GetWeakPtr(), callback)); |
| 198 } | 198 } |
| 199 | 199 |
| 200 void FileSystemOperationImpl::OpenFile(const FileSystemURL& url, | 200 void FileSystemOperationImpl::OpenFile(const FileSystemURL& url, |
| 201 int file_flags, | 201 int file_flags, |
| 202 const OpenFileCallback& callback) { | 202 const OpenFileCallback& callback) { |
| 203 DCHECK(SetPendingOperationType(kOperationOpenFile)); | 203 DCHECK(SetPendingOperationType(kOperationOpenFile)); |
| 204 | 204 |
| 205 if (file_flags & | 205 if (file_flags & |
| 206 (base::PLATFORM_FILE_TEMPORARY | base::PLATFORM_FILE_HIDDEN)) { | 206 (base::File::FLAG_TEMPORARY | base::File::FLAG_HIDDEN)) { |
| 207 callback.Run(base::File::FILE_ERROR_FAILED, | 207 callback.Run(base::File(base::File::FILE_ERROR_FAILED), |
| 208 base::kInvalidPlatformFileValue, | |
| 209 base::Closure()); | 208 base::Closure()); |
| 210 return; | 209 return; |
| 211 } | 210 } |
| 212 GetUsageAndQuotaThenRunTask( | 211 GetUsageAndQuotaThenRunTask( |
| 213 url, | 212 url, |
| 214 base::Bind(&FileSystemOperationImpl::DoOpenFile, | 213 base::Bind(&FileSystemOperationImpl::DoOpenFile, |
| 215 weak_factory_.GetWeakPtr(), | 214 weak_factory_.GetWeakPtr(), |
| 216 url, callback, file_flags), | 215 url, callback, file_flags), |
| 217 base::Bind(callback, base::File::FILE_ERROR_FAILED, | 216 base::Bind(callback, Passed(base::File(base::File::FILE_ERROR_FAILED)), |
| 218 base::kInvalidPlatformFileValue, | |
| 219 base::Closure())); | 217 base::Closure())); |
| 220 } | 218 } |
| 221 | 219 |
| 222 // We can only get here on a write or truncate that's not yet completed. | 220 // We can only get here on a write or truncate that's not yet completed. |
| 223 // We don't support cancelling any other operation at this time. | 221 // We don't support cancelling any other operation at this time. |
| 224 void FileSystemOperationImpl::Cancel(const StatusCallback& cancel_callback) { | 222 void FileSystemOperationImpl::Cancel(const StatusCallback& cancel_callback) { |
| 225 DCHECK(cancel_callback_.is_null()); | 223 DCHECK(cancel_callback_.is_null()); |
| 226 cancel_callback_ = cancel_callback; | 224 cancel_callback_ = cancel_callback; |
| 227 | 225 |
| 228 if (file_writer_delegate_.get()) { | 226 if (file_writer_delegate_.get()) { |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 StatusCallback cancel_callback = cancel_callback_; | 538 StatusCallback cancel_callback = cancel_callback_; |
| 541 write_callback.Run(rv, bytes, complete); | 539 write_callback.Run(rv, bytes, complete); |
| 542 if (!cancel_callback.is_null()) | 540 if (!cancel_callback.is_null()) |
| 543 cancel_callback.Run(base::File::FILE_OK); | 541 cancel_callback.Run(base::File::FILE_OK); |
| 544 } | 542 } |
| 545 | 543 |
| 546 void FileSystemOperationImpl::DidOpenFile( | 544 void FileSystemOperationImpl::DidOpenFile( |
| 547 const OpenFileCallback& callback, | 545 const OpenFileCallback& callback, |
| 548 base::File file, | 546 base::File file, |
| 549 const base::Closure& on_close_callback) { | 547 const base::Closure& on_close_callback) { |
| 550 // TODO(rvargas): Remove PlatformFile from FileSystemOperation. | 548 callback.Run(file.Pass(), on_close_callback); |
| 551 base::File::Error error; | |
| 552 base::PlatformFile platform_file; | |
| 553 if (file.IsValid()) { | |
| 554 error = base::File::FILE_OK; | |
| 555 platform_file = file.TakePlatformFile(); | |
| 556 } else { | |
| 557 error = file.error_details(); | |
| 558 platform_file = base::kInvalidPlatformFileValue; | |
| 559 } | |
| 560 callback.Run(error, platform_file, on_close_callback); | |
| 561 } | 549 } |
| 562 | 550 |
| 563 bool FileSystemOperationImpl::SetPendingOperationType(OperationType type) { | 551 bool FileSystemOperationImpl::SetPendingOperationType(OperationType type) { |
| 564 if (pending_operation_ != kOperationNone) | 552 if (pending_operation_ != kOperationNone) |
| 565 return false; | 553 return false; |
| 566 pending_operation_ = type; | 554 pending_operation_ = type; |
| 567 return true; | 555 return true; |
| 568 } | 556 } |
| 569 | 557 |
| 570 } // namespace fileapi | 558 } // namespace fileapi |
| OLD | NEW |