Commit cecd4c6c authored by Yutaka Hirano's avatar Yutaka Hirano Committed by Commit Bot

Introduce RequestPeer::GetTaskRunner

This is preliminary work for reading data pipes in RequestPeer
implementations.

Bug: 894819
Change-Id: I93ce399fa83796ab6fd095ea7dbf4666fb1458d4
Reviewed-on: https://chromium-review.googlesource.com/c/1312184Reviewed-by: default avatarJochen Eisinger <jochen@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Yutaka Hirano <yhirano@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607184}
parent 62008b21
......@@ -115,6 +115,11 @@ void ExtensionLocalizationPeer::OnCompletedRequest(
original_peer_->OnCompletedRequest(status);
}
scoped_refptr<base::TaskRunner> ExtensionLocalizationPeer::GetTaskRunner()
const {
return original_peer_->GetTaskRunner();
}
void ExtensionLocalizationPeer::ReplaceMessages() {
if (!message_sender_ || data_.empty())
return;
......
......@@ -46,6 +46,7 @@ class ExtensionLocalizationPeer : public content::RequestPeer {
void OnTransferSizeUpdated(int transfer_size_diff) override;
void OnCompletedRequest(
const network::URLLoaderCompletionStatus& status) override;
scoped_refptr<base::TaskRunner> GetTaskRunner() const override;
private:
friend class ExtensionLocalizationPeerTest;
......
......@@ -80,6 +80,10 @@ class MockRequestPeer : public content::RequestPeer {
MOCK_METHOD1(OnTransferSizeUpdated, void(int transfer_size_diff));
MOCK_METHOD1(OnCompletedRequest,
void(const network::URLLoaderCompletionStatus& status));
scoped_refptr<base::TaskRunner> GetTaskRunner() const override {
NOTREACHED();
return nullptr;
}
private:
DISALLOW_COPY_AND_ASSIGN(MockRequestPeer);
......
......@@ -115,6 +115,10 @@ void SecurityFilterPeer::OnCompletedRequest(
original_peer_->OnCompletedRequest(ok_status);
}
scoped_refptr<base::TaskRunner> SecurityFilterPeer::GetTaskRunner() const {
return original_peer_->GetTaskRunner();
}
scoped_refptr<net::HttpResponseHeaders> SecurityFilterPeer::CreateHeaders(
const std::string& mime_type) {
std::string raw_headers;
......
......@@ -44,6 +44,7 @@ class SecurityFilterPeer final : public content::RequestPeer {
void OnTransferSizeUpdated(int transfer_size_diff) override;
void OnCompletedRequest(
const network::URLLoaderCompletionStatus& status) override;
scoped_refptr<base::TaskRunner> GetTaskRunner() const override;
private:
SecurityFilterPeer(std::unique_ptr<content::RequestPeer> peer,
......
......@@ -10,6 +10,7 @@
#include <memory>
#include <string>
#include "base/task_runner.h"
#include "content/common/content_export.h"
#include "mojo/public/cpp/system/data_pipe.h"
......@@ -96,6 +97,9 @@ class CONTENT_EXPORT RequestPeer {
virtual void OnCompletedRequest(
const network::URLLoaderCompletionStatus& status) = 0;
// Returns the task runner on which this request peer is running.
virtual scoped_refptr<base::TaskRunner> GetTaskRunner() const = 0;
virtual ~RequestPeer() {}
};
......
......@@ -197,6 +197,9 @@ class TestResourceDispatcherDelegate : public ResourceDispatcherDelegate {
}
original_peer_->OnCompletedRequest(status);
}
scoped_refptr<base::TaskRunner> GetTaskRunner() const override {
return blink::scheduler::GetSingleThreadTaskRunnerForTesting();
}
private:
std::unique_ptr<RequestPeer> original_peer_;
......
......@@ -217,6 +217,10 @@ void SyncLoadContext::OnCompletedRequest(
CompleteRequest(true /* remove_pending_request */);
}
scoped_refptr<base::TaskRunner> SyncLoadContext::GetTaskRunner() const {
return task_runner_;
}
void SyncLoadContext::OnFinishCreatingBlob(
blink::mojom::SerializedBlobPtr blob) {
DCHECK(!Completed());
......
......@@ -79,6 +79,7 @@ class SyncLoadContext : public RequestPeer {
void OnTransferSizeUpdated(int transfer_size_diff) override;
void OnCompletedRequest(
const network::URLLoaderCompletionStatus& status) override;
scoped_refptr<base::TaskRunner> GetTaskRunner() const override;
void OnFinishCreatingBlob(blink::mojom::SerializedBlobPtr blob);
......
......@@ -98,6 +98,10 @@ void TestRequestPeer::OnCompletedRequest(
context_->completion_status = status;
}
scoped_refptr<base::TaskRunner> TestRequestPeer::GetTaskRunner() const {
return blink::scheduler::GetSingleThreadTaskRunnerForTesting();
}
TestRequestPeer::Context::Context() = default;
TestRequestPeer::Context::~Context() = default;
......
......@@ -46,6 +46,7 @@ class TestRequestPeer : public RequestPeer {
void OnReceivedCachedMetadata(const char* data, int len) override;
void OnCompletedRequest(
const network::URLLoaderCompletionStatus& status) override;
scoped_refptr<base::TaskRunner> GetTaskRunner() const override;
struct Context final {
Context();
......
......@@ -73,6 +73,9 @@ class TestRequestPeer : public RequestPeer {
context_->error_code = status.error_code;
context_->run_loop_quit_closure.Run();
}
scoped_refptr<base::TaskRunner> GetTaskRunner() const override {
return blink::scheduler::GetSingleThreadTaskRunnerForTesting();
}
struct Context {
// Data received. If downloading to file, remains empty.
......
......@@ -478,6 +478,9 @@ class WebURLLoaderImpl::RequestPeerImpl : public RequestPeer {
void OnReceivedCachedMetadata(const char* data, int len) override;
void OnCompletedRequest(
const network::URLLoaderCompletionStatus& status) override;
scoped_refptr<base::TaskRunner> GetTaskRunner() const override {
return context_->task_runner();
}
private:
scoped_refptr<Context> context_;
......@@ -507,6 +510,9 @@ class WebURLLoaderImpl::SinkPeer : public RequestPeer {
context_->resource_dispatcher()->Cancel(context_->request_id(),
context_->task_runner());
}
scoped_refptr<base::TaskRunner> GetTaskRunner() const override {
return context_->task_runner();
}
private:
scoped_refptr<Context> context_;
......
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