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

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

Issue 1308183005: Introduce WebTaskRunner Patch 2/5 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Final tweaks Created 5 years, 3 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 "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 "components/scheduler/child/scheduler_task_runner_delegate_impl.h" 11 #include "components/scheduler/child/scheduler_task_runner_delegate_impl.h"
12 #include "components/scheduler/child/task_queue.h" 12 #include "components/scheduler/child/task_queue.h"
13 #include "components/scheduler/child/web_scheduler_impl.h" 13 #include "components/scheduler/child/web_scheduler_impl.h"
14 #include "components/scheduler/child/web_task_runner_impl.h"
14 #include "components/scheduler/child/worker_scheduler_impl.h" 15 #include "components/scheduler/child/worker_scheduler_impl.h"
15 #include "third_party/WebKit/public/platform/WebTraceLocation.h" 16 #include "third_party/WebKit/public/platform/WebTraceLocation.h"
16 17
17 namespace scheduler { 18 namespace scheduler {
18 19
19 WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler( 20 WebThreadImplForWorkerScheduler::WebThreadImplForWorkerScheduler(
20 const char* name) 21 const char* name)
21 : thread_(new base::Thread(name)) { 22 : thread_(new base::Thread(name)) {
22 thread_->Start(); 23 thread_->Start();
23 thread_task_runner_ = thread_->task_runner(); 24 thread_task_runner_ = thread_->task_runner();
(...skipping 22 matching lines...) Expand all
46 SchedulerTaskRunnerDelegateImpl::Create(thread_->message_loop()); 47 SchedulerTaskRunnerDelegateImpl::Create(thread_->message_loop());
47 worker_scheduler_ = WorkerScheduler::Create(task_runner_delegate_); 48 worker_scheduler_ = WorkerScheduler::Create(task_runner_delegate_);
48 worker_scheduler_->Init(); 49 worker_scheduler_->Init();
49 task_runner_ = worker_scheduler_->DefaultTaskRunner(); 50 task_runner_ = worker_scheduler_->DefaultTaskRunner();
50 idle_task_runner_ = worker_scheduler_->IdleTaskRunner(); 51 idle_task_runner_ = worker_scheduler_->IdleTaskRunner();
51 web_scheduler_.reset(new WebSchedulerImpl( 52 web_scheduler_.reset(new WebSchedulerImpl(
52 worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(), 53 worker_scheduler_.get(), worker_scheduler_->IdleTaskRunner(),
53 worker_scheduler_->DefaultTaskRunner(), 54 worker_scheduler_->DefaultTaskRunner(),
54 worker_scheduler_->DefaultTaskRunner())); 55 worker_scheduler_->DefaultTaskRunner()));
55 base::MessageLoop::current()->AddDestructionObserver(this); 56 base::MessageLoop::current()->AddDestructionObserver(this);
57 web_task_runner_ = make_scoped_ptr(new WebTaskRunnerImpl(task_runner_));
56 completion->Signal(); 58 completion->Signal();
57 } 59 }
58 60
59 void WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread( 61 void WebThreadImplForWorkerScheduler::RestoreTaskRunnerOnThread(
60 base::WaitableEvent* completion) { 62 base::WaitableEvent* completion) {
61 task_runner_delegate_->RestoreDefaultTaskRunner(); 63 task_runner_delegate_->RestoreDefaultTaskRunner();
62 completion->Signal(); 64 completion->Signal();
63 } 65 }
64 66
65 void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() { 67 void WebThreadImplForWorkerScheduler::WillDestroyCurrentMessageLoop() {
(...skipping 14 matching lines...) Expand all
80 base::SingleThreadTaskRunner* WebThreadImplForWorkerScheduler::TaskRunner() 82 base::SingleThreadTaskRunner* WebThreadImplForWorkerScheduler::TaskRunner()
81 const { 83 const {
82 return task_runner_.get(); 84 return task_runner_.get();
83 } 85 }
84 86
85 SingleThreadIdleTaskRunner* WebThreadImplForWorkerScheduler::IdleTaskRunner() 87 SingleThreadIdleTaskRunner* WebThreadImplForWorkerScheduler::IdleTaskRunner()
86 const { 88 const {
87 return idle_task_runner_.get(); 89 return idle_task_runner_.get();
88 } 90 }
89 91
92 blink::WebTaskRunner* WebThreadImplForWorkerScheduler::taskRunner() {
93 return web_task_runner_.get();
94 }
95
90 void WebThreadImplForWorkerScheduler::AddTaskObserverInternal( 96 void WebThreadImplForWorkerScheduler::AddTaskObserverInternal(
91 base::MessageLoop::TaskObserver* observer) { 97 base::MessageLoop::TaskObserver* observer) {
92 worker_scheduler_->AddTaskObserver(observer); 98 worker_scheduler_->AddTaskObserver(observer);
93 } 99 }
94 100
95 void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal( 101 void WebThreadImplForWorkerScheduler::RemoveTaskObserverInternal(
96 base::MessageLoop::TaskObserver* observer) { 102 base::MessageLoop::TaskObserver* observer) {
97 worker_scheduler_->RemoveTaskObserver(observer); 103 worker_scheduler_->RemoveTaskObserver(observer);
98 } 104 }
99 105
100 } // namespace scheduler 106 } // namespace scheduler
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698