Commit 3c474400 authored by Hajime Hoshi's avatar Hajime Hoshi Committed by Commit Bot

Pass a task runner to ServiceWorkerContextClient explicitly

This is part of efforts to replace base::ThreadTaskRunnerHandle::Get()
and SequencedTaskRunnerHandle::Get() with other appropriate task runners
in the renderer.

This avoids the ThreadTaskRunnerHandle::Get() usage. We are trying to
ban ThreadTaskRunnerHandle::Get() in content/renderer because it usually
is not the right task runner to use, as a per-frame runner should be
used instead. In this case, it doesn't really matter since frames are
not involved, but we still want to remove the calls for the bigger
benefit of banning it in content/renderer.

Bug: 786332
Change-Id: Ia492ce20737e04f4fc0f031ecfb7a1994756588a
Reviewed-on: https://chromium-review.googlesource.com/939210Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarAlexander Timin <altimin@chromium.org>
Commit-Queue: Hajime Hoshi <hajimehoshi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542117}
parent d2a27a19
......@@ -12,6 +12,7 @@
#include "content/child/thread_safe_sender.h"
#include "content/common/service_worker/service_worker_utils.h"
#include "content/public/common/content_client.h"
#include "content/renderer/render_thread_impl.h"
#include "content/renderer/service_worker/service_worker_context_client.h"
#include "content/renderer/service_worker/web_service_worker_installed_scripts_manager_impl.h"
#include "third_party/WebKit/public/platform/WebContentSettingsClient.h"
......@@ -66,7 +67,9 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker(
std::move(params->controller_request),
std::move(params->service_worker_host), std::move(params->instance_host),
std::move(params->provider_info), std::move(temporal_self_),
ChildThreadImpl::current()->thread_safe_sender(), io_thread_runner_);
ChildThreadImpl::current()->thread_safe_sender(),
RenderThreadImpl::current()->GetRendererScheduler()->DefaultTaskRunner(),
io_thread_runner_);
client->set_blink_initialized_time(blink_initialized_time_);
client->set_start_worker_received_time(base::TimeTicks::Now());
wrapper_ = StartWorkerContext(std::move(params), std::move(client),
......
......@@ -764,13 +764,14 @@ ServiceWorkerContextClient::ServiceWorkerContextClient(
mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info,
std::unique_ptr<EmbeddedWorkerInstanceClientImpl> embedded_worker_client,
scoped_refptr<ThreadSafeSender> sender,
scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner)
: embedded_worker_id_(embedded_worker_id),
service_worker_version_id_(service_worker_version_id),
service_worker_scope_(service_worker_scope),
script_url_(script_url),
sender_(sender),
main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
main_thread_task_runner_(std::move(main_thread_task_runner)),
io_thread_task_runner_(io_thread_task_runner),
proxy_(nullptr),
pending_dispatcher_request_(std::move(dispatcher_request)),
......
......@@ -99,6 +99,7 @@ class CONTENT_EXPORT ServiceWorkerContextClient
mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info,
std::unique_ptr<EmbeddedWorkerInstanceClientImpl> embedded_worker_client,
scoped_refptr<ThreadSafeSender> sender,
scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner);
~ServiceWorkerContextClient() override;
......
......@@ -36,6 +36,7 @@
#include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerClientsInfo.h"
#include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerError.h"
#include "third_party/WebKit/public/platform/modules/serviceworker/WebServiceWorkerRequest.h"
#include "third_party/WebKit/public/platform/scheduler/test/renderer_scheduler_test_support.h"
#include "third_party/WebKit/public/web/modules/serviceworker/WebServiceWorkerContextProxy.h"
namespace content {
......@@ -266,7 +267,9 @@ class ServiceWorkerContextClientTest : public testing::Test {
embedded_worker_host_ptr.PassInterface(),
CreateProviderInfo(&out_pipes->registration_host_request,
&out_pipes->registration),
nullptr /* embedded_worker_client */, sender_, io_task_runner());
nullptr /* embedded_worker_client */, sender_,
blink::scheduler::GetSingleThreadTaskRunnerForTesting(),
io_task_runner());
}
scoped_refptr<base::TestMockTimeTaskRunner> task_runner() const {
......
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