| 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
|
| index 13d23d7fe8ea8dd893d4b3ddcc1d630d44cc0f03..345ecef9690b20b189084f190bcf708e2f0ead33 100644
|
| --- a/components/scheduler/child/webthread_impl_for_worker_scheduler.cc
|
| +++ b/components/scheduler/child/webthread_impl_for_worker_scheduler.cc
|
| @@ -40,13 +40,15 @@ void WebThreadImplForWorkerScheduler::Init() {
|
| }
|
|
|
| WebThreadImplForWorkerScheduler::~WebThreadImplForWorkerScheduler() {
|
| - base::WaitableEvent completion(false, false);
|
| - // 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();
|
| + if (task_runner_delegate_) {
|
| + base::WaitableEvent completion(false, false);
|
| + // 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();
|
| }
|
|
|
| @@ -54,14 +56,9 @@ void WebThreadImplForWorkerScheduler::InitOnThread(
|
| base::WaitableEvent* completion) {
|
| // TODO(alexclarke): Do we need to unify virtual time for workers and the
|
| // main thread?
|
| - task_runner_delegate_ = SchedulerTqmDelegateImpl::Create(
|
| - thread_->message_loop(), make_scoped_ptr(new base::DefaultTickClock()));
|
| - worker_scheduler_ = WorkerScheduler::Create(task_runner_delegate_);
|
| + worker_scheduler_ = CreateWorkerScheduler();
|
| worker_scheduler_->Init();
|
| - if (UseThreadTaskRunnerAsDefault())
|
| - task_runner_ = thread_task_runner_;
|
| - else
|
| - task_runner_ = worker_scheduler_->DefaultTaskRunner();
|
| + task_runner_ = worker_scheduler_->DefaultTaskRunner();
|
| idle_task_runner_ = worker_scheduler_->IdleTaskRunner();
|
| web_scheduler_.reset(new WebSchedulerImpl(
|
| worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(),
|
| @@ -85,8 +82,11 @@ void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() {
|
| worker_scheduler_.reset();
|
| }
|
|
|
| -bool WebThreadImplForWorkerScheduler::UseThreadTaskRunnerAsDefault() const {
|
| - return false;
|
| +scoped_ptr<scheduler::WorkerScheduler>
|
| +WebThreadImplForWorkerScheduler::CreateWorkerScheduler() {
|
| + task_runner_delegate_ = SchedulerTqmDelegateImpl::Create(
|
| + thread_->message_loop(), make_scoped_ptr(new base::DefaultTickClock()));
|
| + return WorkerScheduler::Create(task_runner_delegate_);
|
| }
|
|
|
| blink::PlatformThreadId WebThreadImplForWorkerScheduler::threadId() const {
|
|
|