| Index: components/scheduler/child/webthread_impl_for_worker_scheduler.cc
|
| diff --git a/components/scheduler/child/webthread_impl_for_worker_scheduler.cc b/components/scheduler/child/webthread_impl_for_worker_scheduler.cc
|
| deleted file mode 100644
|
| index ff7ec336f000ab9190110b28d92959c34a35a4b1..0000000000000000000000000000000000000000
|
| --- a/components/scheduler/child/webthread_impl_for_worker_scheduler.cc
|
| +++ /dev/null
|
| @@ -1,129 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/scheduler/child/webthread_impl_for_worker_scheduler.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/location.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/synchronization/waitable_event.h"
|
| -#include "base/time/default_tick_clock.h"
|
| -#include "components/scheduler/base/task_queue.h"
|
| -#include "components/scheduler/child/scheduler_tqm_delegate_impl.h"
|
| -#include "components/scheduler/child/web_scheduler_impl.h"
|
| -#include "components/scheduler/child/web_task_runner_impl.h"
|
| -#include "components/scheduler/child/worker_scheduler_impl.h"
|
| -#include "third_party/WebKit/public/platform/WebTraceLocation.h"
|
| -
|
| -namespace scheduler {
|
| -
|
| -WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(
|
| - const char* name)
|
| - : WebThreadImplForWorkerScheduler(name, base::Thread::Options()) {}
|
| -
|
| -WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(
|
| - const char* name,
|
| - base::Thread::Options options)
|
| - : thread_(new base::Thread(name ? name : std::string())) {
|
| - bool started = thread_->StartWithOptions(options);
|
| - CHECK(started);
|
| - thread_task_runner_ = thread_->task_runner();
|
| -}
|
| -
|
| -void WebThreadImplForWorkerScheduler::Init() {
|
| - base::WaitableEvent completion(
|
| - base::WaitableEvent::ResetPolicy::AUTOMATIC,
|
| - base::WaitableEvent::InitialState::NOT_SIGNALED);
|
| - thread_task_runner_->PostTask(
|
| - FROM_HERE, base::Bind(&WebThreadImplForWorkerScheduler::InitOnThread,
|
| - base::Unretained(this), &completion));
|
| - completion.Wait();
|
| -}
|
| -
|
| -WebThreadImplForWorkerScheduler::~WebThreadImplForWorkerScheduler() {
|
| - if (task_runner_delegate_) {
|
| - base::WaitableEvent completion(
|
| - base::WaitableEvent::ResetPolicy::AUTOMATIC,
|
| - base::WaitableEvent::InitialState::NOT_SIGNALED);
|
| - // Restore the original task runner so that the thread can tear itself down.
|
| - thread_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread,
|
| - base::Unretained(this), &completion));
|
| - completion.Wait();
|
| - }
|
| - thread_->Stop();
|
| -}
|
| -
|
| -void WebThreadImplForWorkerScheduler::InitOnThread(
|
| - base::WaitableEvent* completion) {
|
| - // TODO(alexclarke): Do we need to unify virtual time for workers and the
|
| - // main thread?
|
| - worker_scheduler_ = CreateWorkerScheduler();
|
| - worker_scheduler_->Init();
|
| - task_runner_ = worker_scheduler_->DefaultTaskRunner();
|
| - idle_task_runner_ = worker_scheduler_->IdleTaskRunner();
|
| - web_scheduler_.reset(new WebSchedulerImpl(
|
| - worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(),
|
| - worker_scheduler_->DefaultTaskRunner(),
|
| - worker_scheduler_->DefaultTaskRunner()));
|
| - base::MessageLoop::current()->AddDestructionObserver(this);
|
| - web_task_runner_ = base::WrapUnique(new WebTaskRunnerImpl(task_runner_));
|
| - completion->Signal();
|
| -}
|
| -
|
| -void WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread(
|
| - base::WaitableEvent* completion) {
|
| - task_runner_delegate_->RestoreDefaultTaskRunner();
|
| - completion->Signal();
|
| -}
|
| -
|
| -void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() {
|
| - task_runner_ = nullptr;
|
| - idle_task_runner_ = nullptr;
|
| - web_scheduler_.reset();
|
| - worker_scheduler_.reset();
|
| -}
|
| -
|
| -std::unique_ptr<scheduler::WorkerScheduler>
|
| -WebThreadImplForWorkerScheduler::CreateWorkerScheduler() {
|
| - task_runner_delegate_ = SchedulerTqmDelegateImpl::Create(
|
| - thread_->message_loop(), base::WrapUnique(new base::DefaultTickClock()));
|
| - return WorkerScheduler::Create(task_runner_delegate_);
|
| -}
|
| -
|
| -blink::PlatformThreadId WebThreadImplForWorkerScheduler::threadId() const {
|
| - return thread_->GetThreadId();
|
| -}
|
| -
|
| -blink::WebScheduler* WebThreadImplForWorkerScheduler::scheduler() const {
|
| - return web_scheduler_.get();
|
| -}
|
| -
|
| -base::SingleThreadTaskRunner* WebThreadImplForWorkerScheduler::GetTaskRunner()
|
| - const {
|
| - return task_runner_.get();
|
| -}
|
| -
|
| -SingleThreadIdleTaskRunner* WebThreadImplForWorkerScheduler::GetIdleTaskRunner()
|
| - const {
|
| - return idle_task_runner_.get();
|
| -}
|
| -
|
| -blink::WebTaskRunner* WebThreadImplForWorkerScheduler::getWebTaskRunner() {
|
| - return web_task_runner_.get();
|
| -}
|
| -
|
| -void WebThreadImplForWorkerScheduler::AddTaskObserverInternal(
|
| - base::MessageLoop::TaskObserver* observer) {
|
| - worker_scheduler_->AddTaskObserver(observer);
|
| -}
|
| -
|
| -void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal(
|
| - base::MessageLoop::TaskObserver* observer) {
|
| - worker_scheduler_->RemoveTaskObserver(observer);
|
| -}
|
| -
|
| -} // namespace scheduler
|
|
|