Commit 4db6bf82 authored by yhirano's avatar yhirano Committed by Commit bot

Teach mojo::Watcher in URLResponseBodyConsumer the correct task runner

This CL makes mojo::Watcher run on the correct task runner instead of the
default task runner of the main thread.

BUG=603396

Review-Url: https://codereview.chromium.org/2274833002
Cr-Commit-Position: refs/heads/master@{#415537}
parent d9da141c
......@@ -98,7 +98,7 @@ class URLLoaderClientImpl final : public mojom::URLLoaderClient {
mojo::ScopedDataPipeConsumerHandle body) override {
DCHECK(!body_consumer_);
body_consumer_ = new URLResponseBodyConsumer(
request_id_, resource_dispatcher_, std::move(body), task_runner_.get());
request_id_, resource_dispatcher_, std::move(body), task_runner_);
}
void OnComplete(const ResourceRequestCompletionStatus& status) override {
......
......@@ -44,10 +44,11 @@ URLResponseBodyConsumer::URLResponseBodyConsumer(
int request_id,
ResourceDispatcher* resource_dispatcher,
mojo::ScopedDataPipeConsumerHandle handle,
base::SingleThreadTaskRunner* task_runner)
scoped_refptr<base::SingleThreadTaskRunner> task_runner)
: request_id_(request_id),
resource_dispatcher_(resource_dispatcher),
handle_(std::move(handle)),
handle_watcher_(task_runner),
has_seen_end_of_data_(!handle_.is_valid()) {
handle_watcher_.Start(
handle_.get(), MOJO_HANDLE_SIGNAL_READABLE,
......@@ -83,7 +84,6 @@ void URLResponseBodyConsumer::OnReadable(MojoResult unused) {
return;
// TODO(yhirano): Suppress notification when deferred.
// TODO(yhirano): Run this operation on the loading task runner.
while (!has_been_cancelled_) {
const void* buffer = nullptr;
uint32_t available = 0;
......
......@@ -31,10 +31,11 @@ class CONTENT_EXPORT URLResponseBodyConsumer final
: public base::RefCounted<URLResponseBodyConsumer>,
public base::SupportsWeakPtr<URLResponseBodyConsumer> {
public:
URLResponseBodyConsumer(int request_id,
ResourceDispatcher* resource_dispatcher,
mojo::ScopedDataPipeConsumerHandle handle,
base::SingleThreadTaskRunner* task_runner);
URLResponseBodyConsumer(
int request_id,
ResourceDispatcher* resource_dispatcher,
mojo::ScopedDataPipeConsumerHandle handle,
scoped_refptr<base::SingleThreadTaskRunner> task_runner);
// Sets the completion status. The completion status is dispatched to the
// ResourceDispatcher when the both following conditions hold:
......
......@@ -135,7 +135,7 @@ TEST_F(URLResponseBodyConsumerTest, ReceiveData) {
scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer(
request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle),
message_loop_.task_runner().get()));
message_loop_.task_runner()));
mojo::ScopedDataPipeProducerHandle writer =
std::move(data_pipe.producer_handle);
......@@ -160,7 +160,7 @@ TEST_F(URLResponseBodyConsumerTest, OnCompleteThenClose) {
scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer(
request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle),
message_loop_.task_runner().get()));
message_loop_.task_runner()));
consumer->OnComplete(ResourceRequestCompletionStatus());
mojo::ScopedDataPipeProducerHandle writer =
......@@ -192,7 +192,7 @@ TEST_F(URLResponseBodyConsumerTest, CloseThenOnComplete) {
scoped_refptr<URLResponseBodyConsumer> consumer(new URLResponseBodyConsumer(
request_id, dispatcher_.get(), std::move(data_pipe.consumer_handle),
message_loop_.task_runner().get()));
message_loop_.task_runner()));
ResourceRequestCompletionStatus status;
status.error_code = net::ERR_FAILED;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment