Chromium Code Reviews| Index: net/base/upload_file_element_reader.cc |
| diff --git a/net/base/upload_file_element_reader.cc b/net/base/upload_file_element_reader.cc |
| index 32cb27ff42e3cc7758129cbd562b51fd9d0c8d93..cdfc95ed35ebaa16a22b3b33dedf858e7cf67d0a 100644 |
| --- a/net/base/upload_file_element_reader.cc |
| +++ b/net/base/upload_file_element_reader.cc |
| @@ -8,7 +8,6 @@ |
| #include "base/file_util.h" |
| #include "base/location.h" |
| #include "base/task_runner_util.h" |
| -#include "base/threading/worker_pool.h" |
| #include "net/base/file_stream.h" |
| #include "net/base/io_buffer.h" |
| #include "net/base/net_errors.h" |
| @@ -92,25 +91,33 @@ int ReadInternal(scoped_refptr<IOBuffer> buf, |
| } // namespace |
| +UploadFileElementReader::FileStreamDeleter::FileStreamDeleter( |
| + base::TaskRunner* task_runner) : task_runner_(task_runner) {} |
| + |
| +UploadFileElementReader::FileStreamDeleter::~FileStreamDeleter() {} |
| + |
| void UploadFileElementReader::FileStreamDeleter::operator() ( |
| FileStream* file_stream) const { |
| if (file_stream) { |
| - base::WorkerPool::PostTask(FROM_HERE, |
| - base::Bind(&base::DeletePointer<FileStream>, |
| - file_stream), |
| - true /* task_is_slow */); |
| + DCHECK(task_runner_); |
| + task_runner_->PostTask(FROM_HERE, |
| + base::Bind(&base::DeletePointer<FileStream>, |
| + file_stream)); |
| } |
| } |
| UploadFileElementReader::UploadFileElementReader( |
| + base::TaskRunner* task_runner, |
| const FilePath& path, |
| uint64 range_offset, |
| uint64 range_length, |
| const base::Time& expected_modification_time) |
| - : path_(path), |
| + : task_runner_(task_runner), |
| + path_(path), |
| range_offset_(range_offset), |
| range_length_(range_length), |
| expected_modification_time_(expected_modification_time), |
| + file_stream_(NULL, FileStreamDeleter(task_runner_)), |
| content_length_(0), |
| bytes_remaining_(0), |
| ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
| @@ -127,10 +134,11 @@ int UploadFileElementReader::Init(const CompletionCallback& callback) { |
| DCHECK(!callback.is_null()); |
| Reset(); |
| - ScopedFileStreamPtr* file_stream = new ScopedFileStreamPtr; |
| + ScopedFileStreamPtr* file_stream = |
| + new ScopedFileStreamPtr(NULL, FileStreamDeleter(task_runner_)); |
| uint64* content_length = new uint64; |
| const bool posted = base::PostTaskAndReplyWithResult( |
| - base::WorkerPool::GetTaskRunner(true /* task_is_slow */), |
| + task_runner_, |
| FROM_HERE, |
| base::Bind(&InitInternal, |
| path_, |
| @@ -171,7 +179,7 @@ int UploadFileElementReader::Read(IOBuffer* buf, |
| // Pass the ownership of file_stream_ to the worker pool to safely perform |
| // operation even when |this| is destructed before the read completes. |
| const bool posted = base::PostTaskAndReplyWithResult( |
| - base::WorkerPool::GetTaskRunner(true /* task_is_slow */), |
| + task_runner_, |
| FROM_HERE, |
| base::Bind(&ReadInternal, |
| scoped_refptr<IOBuffer>(buf), |
| @@ -249,7 +257,9 @@ int UploadFileElementReaderSync::Init(const CompletionCallback& callback) { |
| content_length_ = 0; |
| file_stream_.reset(); |
| - UploadFileElementReader::ScopedFileStreamPtr file_stream; |
| + // It's safe to pass NULL for |deleter| here because it will not be used. |
|
mmenke
2013/01/07 16:40:51
nit: "NULL to deleter" - The deleter itself is no
hashimoto
2013/01/08 02:27:36
Now passing MessageLoopProxy::current() to satisfy
|
| + UploadFileElementReader::FileStreamDeleter deleter(NULL); |
| + UploadFileElementReader::ScopedFileStreamPtr file_stream(NULL, deleter); |
| const int result = InitInternal(path_, range_offset_, range_length_, |
| expected_modification_time_, |