Index: net/url_request/url_request_simple_job.cc |
diff --git a/net/url_request/url_request_simple_job.cc b/net/url_request/url_request_simple_job.cc |
index 4f8b01ab3a7ca29de1ebf9c097e46ba72980afe9..f5bbb2405885386f7dbaa6013b04f80dc8434fdf 100644 |
--- a/net/url_request/url_request_simple_job.cc |
+++ b/net/url_request/url_request_simple_job.cc |
@@ -11,6 +11,7 @@ |
#include "base/location.h" |
#include "base/memory/ref_counted_memory.h" |
#include "base/single_thread_task_runner.h" |
+#include "base/task_scheduler/post_task.h" |
#include "base/threading/thread_task_runner_handle.h" |
#include "base/threading/worker_pool.h" |
#include "net/base/io_buffer.h" |
@@ -36,7 +37,6 @@ URLRequestSimpleJob::URLRequestSimpleJob(URLRequest* request, |
NetworkDelegate* network_delegate) |
: URLRangeRequestJob(request, network_delegate), |
next_data_offset_(0), |
- task_runner_(base::WorkerPool::GetTaskRunner(false)), |
weak_factory_(this) { |
} |
@@ -71,20 +71,19 @@ int URLRequestSimpleJob::ReadRawData(IOBuffer* buf, int buf_size) { |
if (buf_size == 0) |
return 0; |
- // Do memory copy on a background thread. See crbug.com/422489. |
- GetTaskRunner()->PostTaskAndReply( |
- FROM_HERE, base::Bind(&CopyData, make_scoped_refptr(buf), buf_size, data_, |
- next_data_offset_), |
+ // Do memory copy asynchronously on a thread that is not the network thread. |
+ // See crbug.com/422489. |
+ base::PostTaskWithTraitsAndReply( |
+ FROM_HERE, base::TaskTraits().WithShutdownBehavior( |
+ base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN), |
+ base::Bind(&CopyData, make_scoped_refptr(buf), buf_size, data_, |
+ next_data_offset_), |
base::Bind(&URLRequestSimpleJob::ReadRawDataComplete, |
weak_factory_.GetWeakPtr(), buf_size)); |
next_data_offset_ += buf_size; |
return ERR_IO_PENDING; |
} |
-base::TaskRunner* URLRequestSimpleJob::GetTaskRunner() const { |
- return task_runner_.get(); |
-} |
- |
int URLRequestSimpleJob::GetData(std::string* mime_type, |
std::string* charset, |
std::string* data, |