| 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.
|
| + UploadFileElementReader::FileStreamDeleter deleter(NULL);
|
| + UploadFileElementReader::ScopedFileStreamPtr file_stream(NULL, deleter);
|
|
|
| const int result = InitInternal(path_, range_offset_, range_length_,
|
| expected_modification_time_,
|
|
|