| 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_runner.h" | 5 #include "webkit/browser/fileapi/file_system_operation_runner.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "net/url_request/url_request_context.h" |
| 8 #include "webkit/browser/fileapi/file_observers.h" | 9 #include "webkit/browser/fileapi/file_observers.h" |
| 10 #include "webkit/browser/fileapi/file_stream_writer.h" |
| 9 #include "webkit/browser/fileapi/file_system_context.h" | 11 #include "webkit/browser/fileapi/file_system_context.h" |
| 12 #include "webkit/browser/fileapi/file_writer_delegate.h" |
| 10 #include "webkit/browser/fileapi/local_file_system_operation.h" | 13 #include "webkit/browser/fileapi/local_file_system_operation.h" |
| 11 #include "webkit/common/blob/shareable_file_reference.h" | 14 #include "webkit/common/blob/shareable_file_reference.h" |
| 12 | 15 |
| 13 namespace fileapi { | 16 namespace fileapi { |
| 14 | 17 |
| 15 typedef FileSystemOperationRunner::OperationID OperationID; | 18 typedef FileSystemOperationRunner::OperationID OperationID; |
| 16 | 19 |
| 17 const OperationID FileSystemOperationRunner::kErrorOperationID = -1; | 20 const OperationID FileSystemOperationRunner::kErrorOperationID = -1; |
| 18 | 21 |
| 19 FileSystemOperationRunner::~FileSystemOperationRunner() { | 22 FileSystemOperationRunner::~FileSystemOperationRunner() { |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 const GURL& blob_url, | 210 const GURL& blob_url, |
| 208 int64 offset, | 211 int64 offset, |
| 209 const WriteCallback& callback) { | 212 const WriteCallback& callback) { |
| 210 base::PlatformFileError error = base::PLATFORM_FILE_OK; | 213 base::PlatformFileError error = base::PLATFORM_FILE_OK; |
| 211 FileSystemOperation* operation = | 214 FileSystemOperation* operation = |
| 212 file_system_context_->CreateFileSystemOperation(url, &error); | 215 file_system_context_->CreateFileSystemOperation(url, &error); |
| 213 if (!operation) { | 216 if (!operation) { |
| 214 callback.Run(error, 0, true); | 217 callback.Run(error, 0, true); |
| 215 return kErrorOperationID; | 218 return kErrorOperationID; |
| 216 } | 219 } |
| 220 |
| 221 scoped_ptr<FileStreamWriter> writer( |
| 222 file_system_context_->CreateFileStreamWriter(url, offset)); |
| 223 if (!writer) { |
| 224 // Write is not supported. |
| 225 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, 0, true); |
| 226 return kErrorOperationID; |
| 227 } |
| 228 |
| 229 DCHECK(blob_url.is_valid()); |
| 230 scoped_ptr<FileWriterDelegate> writer_delegate( |
| 231 new FileWriterDelegate(writer.Pass())); |
| 232 scoped_ptr<net::URLRequest> blob_request(url_request_context->CreateRequest( |
| 233 blob_url, writer_delegate.get())); |
| 234 |
| 217 OperationID id = operations_.Add(operation); | 235 OperationID id = operations_.Add(operation); |
| 218 PrepareForWrite(id, url); | 236 PrepareForWrite(id, url); |
| 219 operation->Write( | 237 operation->Write( |
| 220 url_request_context, url, blob_url, offset, | 238 url, writer_delegate.Pass(), blob_request.Pass(), |
| 221 base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(), | 239 base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(), |
| 222 id, callback)); | 240 id, callback)); |
| 223 return id; | 241 return id; |
| 224 } | 242 } |
| 225 | 243 |
| 226 OperationID FileSystemOperationRunner::Truncate( | 244 OperationID FileSystemOperationRunner::Truncate( |
| 227 const FileSystemURL& url, int64 length, | 245 const FileSystemURL& url, int64 length, |
| 228 const StatusCallback& callback) { | 246 const StatusCallback& callback) { |
| 229 base::PlatformFileError error = base::PLATFORM_FILE_OK; | 247 base::PlatformFileError error = base::PLATFORM_FILE_OK; |
| 230 FileSystemOperation* operation = | 248 FileSystemOperation* operation = |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 &FileUpdateObserver::OnEndUpdate, MakeTuple(*iter)); | 556 &FileUpdateObserver::OnEndUpdate, MakeTuple(*iter)); |
| 539 } | 557 } |
| 540 } | 558 } |
| 541 write_target_urls_.erase(found); | 559 write_target_urls_.erase(found); |
| 542 } | 560 } |
| 543 DCHECK(operations_.Lookup(id)); | 561 DCHECK(operations_.Lookup(id)); |
| 544 operations_.Remove(id); | 562 operations_.Remove(id); |
| 545 } | 563 } |
| 546 | 564 |
| 547 } // namespace fileapi | 565 } // namespace fileapi |
| OLD | NEW |