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

Side by Side Diff: content/child/scheduler/worker_scheduler_impl.cc

Issue 1033643004: Add a WorkerScheduler and a WebThreadImplForWorker (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: InitOnThread needed to call Init() Created 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/renderer/scheduler/null_renderer_scheduler.h" 5 #include "content/child/scheduler/worker_scheduler_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop_proxy.h" 8 #include "base/message_loop/message_loop_proxy.h"
9 #include "content/child/scheduler/null_idle_task_runner.h" 9 #include "base/trace_event/trace_event.h"
10 #include "base/trace_event/trace_event_argument.h"
11 #include "content/child/scheduler/nestable_single_thread_task_runner.h"
10 12
11 namespace content { 13 namespace content {
12 14
13 NullRendererScheduler::NullRendererScheduler() 15 WorkerSchedulerImpl::WorkerSchedulerImpl(
Sami 2015/04/02 10:19:46 I like how how this class doesn't really need to d
rmcilroy 2015/04/02 11:01:26 +1 :)
alex clarke (OOO till 29th) 2015/04/02 15:19:28 Acknowledged.
14 : task_runner_(base::MessageLoopProxy::current()), 16 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner)
15 idle_task_runner_(new NullIdleTaskRunner()) { 17 : helper_(main_task_runner,
18 this,
19 "worker.scheduler",
20 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"),
21 SchedulerHelper::TASK_QUEUE_COUNT) {
22 TRACE_EVENT_OBJECT_CREATED_WITH_ID(
23 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"), "WorkerScheduler", this);
16 } 24 }
17 25
18 NullRendererScheduler::~NullRendererScheduler() { 26 WorkerSchedulerImpl::~WorkerSchedulerImpl() {
27 TRACE_EVENT_OBJECT_DELETED_WITH_ID(
28 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"), "WorkerScheduler", this);
29 }
30
31 void WorkerSchedulerImpl::Init() {
32 helper_.InitiateLongIdlePeriod();
rmcilroy 2015/04/02 11:01:26 Could you add an initialized_ flag to the class wh
alex clarke (OOO till 29th) 2015/04/02 15:19:28 Done.
19 } 33 }
20 34
21 scoped_refptr<base::SingleThreadTaskRunner> 35 scoped_refptr<base::SingleThreadTaskRunner>
22 NullRendererScheduler::DefaultTaskRunner() { 36 WorkerSchedulerImpl::DefaultTaskRunner() {
23 return task_runner_; 37 return helper_.DefaultTaskRunner();
24 }
25
26 scoped_refptr<base::SingleThreadTaskRunner>
27 NullRendererScheduler::CompositorTaskRunner() {
28 return task_runner_;
29 }
30
31 scoped_refptr<base::SingleThreadTaskRunner>
32 NullRendererScheduler::LoadingTaskRunner() {
33 return task_runner_;
34 } 38 }
35 39
36 scoped_refptr<SingleThreadIdleTaskRunner> 40 scoped_refptr<SingleThreadIdleTaskRunner>
37 NullRendererScheduler::IdleTaskRunner() { 41 WorkerSchedulerImpl::IdleTaskRunner() {
38 return idle_task_runner_; 42 return helper_.IdleTaskRunner();
39 } 43 }
40 44
41 void NullRendererScheduler::WillBeginFrame(const cc::BeginFrameArgs& args) { 45 bool WorkerSchedulerImpl::CanExceedIdleDeadlineIfRequired() const {
46 return helper_.CanExceedIdleDeadlineIfRequired();
42 } 47 }
43 48
44 void NullRendererScheduler::BeginFrameNotExpectedSoon() { 49 void WorkerSchedulerImpl::AddTaskObserver(
50 base::MessageLoop::TaskObserver* task_observer) {
51 helper_.AddTaskObserver(task_observer);
45 } 52 }
46 53
47 void NullRendererScheduler::DidCommitFrameToCompositor() { 54 void WorkerSchedulerImpl::RemoveTaskObserver(
55 base::MessageLoop::TaskObserver* task_observer) {
56 helper_.RemoveTaskObserver(task_observer);
48 } 57 }
49 58
50 void NullRendererScheduler::DidReceiveInputEventOnCompositorThread( 59 void WorkerSchedulerImpl::Shutdown() {
51 const blink::WebInputEvent& web_input_event) { 60 helper_.Shutdown();
52 } 61 }
53 62
54 void NullRendererScheduler::DidAnimateForInputOnCompositorThread() { 63 void WorkerSchedulerImpl::SetTimeSourceForTesting(
64 scoped_refptr<cc::TestNowSource> time_source) {
65 helper_.SetTimeSourceForTesting(time_source);
55 } 66 }
56 67
57 bool NullRendererScheduler::IsHighPriorityWorkAnticipated() { 68 void WorkerSchedulerImpl::SetWorkBatchSizeForTesting(size_t work_batch_size) {
58 return false; 69 helper_.SetWorkBatchSizeForTesting(work_batch_size);
59 } 70 }
60 71
61 bool NullRendererScheduler::ShouldYieldForHighPriorityWork() { 72 bool WorkerSchedulerImpl::CanEnterLongIdlePeriod(base::TimeTicks,
62 return false; 73 base::TimeDelta*) {
63 } 74 return true;
64
65 bool NullRendererScheduler::CanExceedIdleDeadlineIfRequired() const {
66 return false;
67 }
68
69 void NullRendererScheduler::AddTaskObserver(
70 base::MessageLoop::TaskObserver* task_observer) {
71 base::MessageLoop::current()->AddTaskObserver(task_observer);
72 }
73
74 void NullRendererScheduler::RemoveTaskObserver(
75 base::MessageLoop::TaskObserver* task_observer) {
76 base::MessageLoop::current()->RemoveTaskObserver(task_observer);
77 }
78
79 void NullRendererScheduler::Shutdown() {
80 } 75 }
81 76
82 } // namespace content 77 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698