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

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: Correct Diffbase 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(
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 for (size_t i = 0; i < SchedulerHelper::TASK_QUEUE_COUNT; i++) {
23 helper_.SchedulerTaskQueueManager()->SetQueueName(
24 i, SchedulerHelper::TaskQueueIdToString(
25 static_cast<SchedulerHelper::QueueId>(i)));
26 }
27
28 helper_.InitiateLongIdlePeriodAfterWakeup();
rmcilroy 2015/03/30 18:00:54 Is it useful to do this afterwakeup rather than ju
alex clarke (OOO till 29th) 2015/03/31 17:03:49 The main reason for this is some of the unit tests
29
30 TRACE_EVENT_OBJECT_CREATED_WITH_ID(
31 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"), "WorkerScheduler", this);
16 } 32 }
17 33
18 NullRendererScheduler::~NullRendererScheduler() { 34 WorkerSchedulerImpl::~WorkerSchedulerImpl() {
35 TRACE_EVENT_OBJECT_DELETED_WITH_ID(
36 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"), "WorkerScheduler", this);
19 } 37 }
20 38
21 scoped_refptr<base::SingleThreadTaskRunner> 39 scoped_refptr<base::SingleThreadTaskRunner>
22 NullRendererScheduler::DefaultTaskRunner() { 40 WorkerSchedulerImpl::DefaultTaskRunner() {
23 return task_runner_; 41 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 } 42 }
35 43
36 scoped_refptr<SingleThreadIdleTaskRunner> 44 scoped_refptr<SingleThreadIdleTaskRunner>
37 NullRendererScheduler::IdleTaskRunner() { 45 WorkerSchedulerImpl::IdleTaskRunner() {
38 return idle_task_runner_; 46 return helper_.IdleTaskRunner();
39 } 47 }
40 48
41 void NullRendererScheduler::WillBeginFrame(const cc::BeginFrameArgs& args) { 49 bool WorkerSchedulerImpl::CanExceedIdleDeadlineIfRequired() const {
50 return helper_.CanExceedIdleDeadlineIfRequired();
42 } 51 }
43 52
44 void NullRendererScheduler::BeginFrameNotExpectedSoon() { 53 void WorkerSchedulerImpl::AddTaskObserver(
54 base::MessageLoop::TaskObserver* task_observer) {
55 helper_.AddTaskObserver(task_observer);
45 } 56 }
46 57
47 void NullRendererScheduler::DidCommitFrameToCompositor() { 58 void WorkerSchedulerImpl::RemoveTaskObserver(
59 base::MessageLoop::TaskObserver* task_observer) {
60 helper_.RemoveTaskObserver(task_observer);
48 } 61 }
49 62
50 void NullRendererScheduler::DidReceiveInputEventOnCompositorThread( 63 void WorkerSchedulerImpl::Shutdown() {
51 const blink::WebInputEvent& web_input_event) { 64 helper_.Shutdown();
52 } 65 }
53 66
54 void NullRendererScheduler::DidAnimateForInputOnCompositorThread() { 67 void WorkerSchedulerImpl::SetTimeSourceForTesting(
68 scoped_refptr<cc::TestNowSource> time_source) {
69 helper_.SetTimeSourceForTesting(time_source);
55 } 70 }
56 71
57 bool NullRendererScheduler::IsHighPriorityWorkAnticipated() { 72 void WorkerSchedulerImpl::SetWorkBatchSizeForTesting(size_t work_batch_size) {
58 return false; 73 helper_.SetWorkBatchSizeForTesting(work_batch_size);
59 } 74 }
60 75
61 bool NullRendererScheduler::ShouldYieldForHighPriorityWork() { 76 bool WorkerSchedulerImpl::CanEnterLongIdlePeriod(base::TimeTicks,
62 return false; 77 base::TimeDelta*) {
63 } 78 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 } 79 }
81 80
82 } // namespace content 81 } // namespace content
OLDNEW
« no previous file with comments | « content/child/scheduler/worker_scheduler_impl.h ('k') | content/child/scheduler/worker_scheduler_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698