Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Side by Side Diff: third_party/WebKit/Source/platform/scheduler/child/webthread_impl_for_worker_scheduler.cc

Issue 2806623004: Worker: Introduce per-global-scope task scheduler (Closed)
Patch Set: remove unnecessary comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "platform/scheduler/child/webthread_impl_for_worker_scheduler.h" 5 #include "platform/scheduler/child/webthread_impl_for_worker_scheduler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 base::Unretained(this), &completion)); 55 base::Unretained(this), &completion));
56 completion.Wait(); 56 completion.Wait();
57 } 57 }
58 thread_->Stop(); 58 thread_->Stop();
59 } 59 }
60 60
61 void WebThreadImplForWorkerScheduler::InitOnThread( 61 void WebThreadImplForWorkerScheduler::InitOnThread(
62 base::WaitableEvent* completion) { 62 base::WaitableEvent* completion) {
63 // TODO(alexclarke): Do we need to unify virtual time for workers and the 63 // TODO(alexclarke): Do we need to unify virtual time for workers and the
64 // main thread? 64 // main thread?
65 task_runner_delegate_ = SchedulerTqmDelegateImpl::Create(
66 thread_->message_loop(), base::MakeUnique<base::DefaultTickClock>());
65 worker_scheduler_ = CreateWorkerScheduler(); 67 worker_scheduler_ = CreateWorkerScheduler();
66 worker_scheduler_->Init(); 68 worker_scheduler_->Init();
67 task_runner_ = worker_scheduler_->DefaultTaskRunner(); 69 task_runner_ = worker_scheduler_->DefaultTaskRunner();
68 idle_task_runner_ = worker_scheduler_->IdleTaskRunner(); 70 idle_task_runner_ = worker_scheduler_->IdleTaskRunner();
69 web_scheduler_.reset(new WebSchedulerImpl( 71 web_scheduler_.reset(new WebSchedulerImpl(
70 worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(), 72 worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(),
71 worker_scheduler_->DefaultTaskRunner(), 73 worker_scheduler_->DefaultTaskRunner(),
72 worker_scheduler_->DefaultTaskRunner())); 74 worker_scheduler_->DefaultTaskRunner()));
73 base::MessageLoop::current()->AddDestructionObserver(this); 75 base::MessageLoop::current()->AddDestructionObserver(this);
74 web_task_runner_ = WebTaskRunnerImpl::Create(task_runner_); 76 web_task_runner_ = WebTaskRunnerImpl::Create(task_runner_);
75 completion->Signal(); 77 completion->Signal();
76 } 78 }
77 79
78 void WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread( 80 void WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread(
79 base::WaitableEvent* completion) { 81 base::WaitableEvent* completion) {
80 task_runner_delegate_->RestoreDefaultTaskRunner(); 82 task_runner_delegate_->RestoreDefaultTaskRunner();
81 completion->Signal(); 83 completion->Signal();
82 } 84 }
83 85
84 void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() { 86 void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() {
85 task_runner_ = nullptr; 87 task_runner_ = nullptr;
86 idle_task_runner_ = nullptr; 88 idle_task_runner_ = nullptr;
87 web_scheduler_.reset(); 89 web_scheduler_.reset();
88 worker_scheduler_.reset(); 90 worker_scheduler_.reset();
89 web_task_runner_.Reset(); 91 web_task_runner_.Reset();
90 } 92 }
91 93
92 std::unique_ptr<scheduler::WorkerScheduler> 94 std::unique_ptr<scheduler::WorkerScheduler>
93 WebThreadImplForWorkerScheduler::CreateWorkerScheduler() { 95 WebThreadImplForWorkerScheduler::CreateWorkerScheduler() {
94 task_runner_delegate_ = SchedulerTqmDelegateImpl::Create(
95 thread_->message_loop(), base::MakeUnique<base::DefaultTickClock>());
96 return WorkerScheduler::Create(task_runner_delegate_); 96 return WorkerScheduler::Create(task_runner_delegate_);
97 } 97 }
98 98
99 blink::PlatformThreadId WebThreadImplForWorkerScheduler::ThreadId() const { 99 blink::PlatformThreadId WebThreadImplForWorkerScheduler::ThreadId() const {
100 return thread_->GetThreadId(); 100 return thread_->GetThreadId();
101 } 101 }
102 102
103 blink::WebScheduler* WebThreadImplForWorkerScheduler::Scheduler() const { 103 blink::WebScheduler* WebThreadImplForWorkerScheduler::Scheduler() const {
104 return web_scheduler_.get(); 104 return web_scheduler_.get();
105 } 105 }
(...skipping 17 matching lines...) Expand all
123 worker_scheduler_->AddTaskObserver(observer); 123 worker_scheduler_->AddTaskObserver(observer);
124 } 124 }
125 125
126 void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal( 126 void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal(
127 base::MessageLoop::TaskObserver* observer) { 127 base::MessageLoop::TaskObserver* observer) {
128 worker_scheduler_->RemoveTaskObserver(observer); 128 worker_scheduler_->RemoveTaskObserver(observer);
129 } 129 }
130 130
131 } // namespace scheduler 131 } // namespace scheduler
132 } // namespace blink 132 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698