Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(219)

Unified Diff: net/base/upload_file_element_reader.cc

Issue 11778016: net: Stop using base::WorkerPool from UploadFileElementReader (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: _ Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_,

Powered by Google App Engine
This is Rietveld 408576698