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

Side by Side Diff: components/scheduler/child/webthread_impl_for_worker_scheduler.cc

Issue 1424053002: Adds a flag to support "Virtual Time" to the blink scheduler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 1 month 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 "components/scheduler/child/webthread_impl_for_worker_scheduler.h" 5 #include "components/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/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/synchronization/waitable_event.h" 10 #include "base/synchronization/waitable_event.h"
11 #include "base/time/default_tick_clock.h"
11 #include "components/scheduler/base/task_queue.h" 12 #include "components/scheduler/base/task_queue.h"
12 #include "components/scheduler/child/scheduler_task_runner_delegate_impl.h" 13 #include "components/scheduler/child/scheduler_tqm_delegate_impl.h"
13 #include "components/scheduler/child/web_scheduler_impl.h" 14 #include "components/scheduler/child/web_scheduler_impl.h"
14 #include "components/scheduler/child/web_task_runner_impl.h" 15 #include "components/scheduler/child/web_task_runner_impl.h"
15 #include "components/scheduler/child/worker_scheduler_impl.h" 16 #include "components/scheduler/child/worker_scheduler_impl.h"
16 #include "third_party/WebKit/public/platform/WebTraceLocation.h" 17 #include "third_party/WebKit/public/platform/WebTraceLocation.h"
17 18
18 namespace scheduler { 19 namespace scheduler {
19 20
20 WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler( 21 WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(
21 const char* name) 22 const char* name)
22 : thread_(new base::Thread(name)) { 23 : thread_(new base::Thread(name)) {
(...skipping 13 matching lines...) Expand all
36 thread_task_runner_->PostTask( 37 thread_task_runner_->PostTask(
37 FROM_HERE, 38 FROM_HERE,
38 base::Bind(&WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread, 39 base::Bind(&WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread,
39 base::Unretained(this), &completion)); 40 base::Unretained(this), &completion));
40 completion.Wait(); 41 completion.Wait();
41 thread_->Stop(); 42 thread_->Stop();
42 } 43 }
43 44
44 void WebThreadImplForWorkerScheduler::InitOnThread( 45 void WebThreadImplForWorkerScheduler::InitOnThread(
45 base::WaitableEvent* completion) { 46 base::WaitableEvent* completion) {
46 task_runner_delegate_ = 47 // TODO(alexclarke): Do we need to unify virtual time for workers and the
47 SchedulerTaskRunnerDelegateImpl::Create(thread_->message_loop()); 48 // main thread?
49 task_runner_delegate_ = SchedulerTqmDelegateImpl::Create(
50 thread_->message_loop(), make_scoped_ptr(new base::DefaultTickClock()));
48 worker_scheduler_ = WorkerScheduler::Create(task_runner_delegate_); 51 worker_scheduler_ = WorkerScheduler::Create(task_runner_delegate_);
49 worker_scheduler_->Init(); 52 worker_scheduler_->Init();
50 task_runner_ = worker_scheduler_->DefaultTaskRunner(); 53 task_runner_ = worker_scheduler_->DefaultTaskRunner();
51 idle_task_runner_ = worker_scheduler_->IdleTaskRunner(); 54 idle_task_runner_ = worker_scheduler_->IdleTaskRunner();
52 web_scheduler_.reset(new WebSchedulerImpl( 55 web_scheduler_.reset(new WebSchedulerImpl(
53 worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(), 56 worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(),
54 worker_scheduler_->DefaultTaskRunner(), 57 worker_scheduler_->DefaultTaskRunner(),
55 worker_scheduler_->DefaultTaskRunner())); 58 worker_scheduler_->DefaultTaskRunner()));
56 base::MessageLoop::current()->AddDestructionObserver(this); 59 base::MessageLoop::current()->AddDestructionObserver(this);
57 web_task_runner_ = make_scoped_ptr(new WebTaskRunnerImpl(task_runner_)); 60 web_task_runner_ = make_scoped_ptr(new WebTaskRunnerImpl(task_runner_));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 base::MessageLoop::TaskObserver* observer) { 100 base::MessageLoop::TaskObserver* observer) {
98 worker_scheduler_->AddTaskObserver(observer); 101 worker_scheduler_->AddTaskObserver(observer);
99 } 102 }
100 103
101 void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal( 104 void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal(
102 base::MessageLoop::TaskObserver* observer) { 105 base::MessageLoop::TaskObserver* observer) {
103 worker_scheduler_->RemoveTaskObserver(observer); 106 worker_scheduler_->RemoveTaskObserver(observer);
104 } 107 }
105 108
106 } // namespace scheduler 109 } // namespace scheduler
OLDNEW
« no previous file with comments | « components/scheduler/child/webthread_impl_for_worker_scheduler.h ('k') | components/scheduler/child/worker_scheduler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698