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

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: Make WebThreadImplForWorkerSchedulerTest::TestTaskObserver less verbose 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/child/scheduler/worker_scheduler_impl.h"
6
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop_proxy.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"
12
13 namespace content {
14
15 WorkerSchedulerImpl::WorkerSchedulerImpl(
16 scoped_refptr<NestableSingleThreadTaskRunner> main_task_runner)
17 : helper_(main_task_runner,
18 this,
19 "worker.scheduler",
20 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"),
21 SchedulerHelper::TASK_QUEUE_COUNT),
22 initalized_(false) {
23 TRACE_EVENT_OBJECT_CREATED_WITH_ID(
24 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"), "WorkerScheduler", this);
25 }
26
27 WorkerSchedulerImpl::~WorkerSchedulerImpl() {
28 TRACE_EVENT_OBJECT_DELETED_WITH_ID(
29 TRACE_DISABLED_BY_DEFAULT("worker.scheduler"), "WorkerScheduler", this);
30 }
31
32 void WorkerSchedulerImpl::Init() {
33 initalized_ = true;
34 helper_.InitiateLongIdlePeriod();
35 }
36
37 scoped_refptr<base::SingleThreadTaskRunner>
38 WorkerSchedulerImpl::DefaultTaskRunner() {
39 DCHECK(initalized_);
40 return helper_.DefaultTaskRunner();
41 }
42
43 scoped_refptr<SingleThreadIdleTaskRunner>
44 WorkerSchedulerImpl::IdleTaskRunner() {
45 DCHECK(initalized_);
46 return helper_.IdleTaskRunner();
47 }
48
49 bool WorkerSchedulerImpl::CanExceedIdleDeadlineIfRequired() const {
50 DCHECK(initalized_);
51 return helper_.CanExceedIdleDeadlineIfRequired();
52 }
53
54 void WorkerSchedulerImpl::AddTaskObserver(
55 base::MessageLoop::TaskObserver* task_observer) {
56 DCHECK(initalized_);
57 helper_.AddTaskObserver(task_observer);
58 }
59
60 void WorkerSchedulerImpl::RemoveTaskObserver(
61 base::MessageLoop::TaskObserver* task_observer) {
62 DCHECK(initalized_);
63 helper_.RemoveTaskObserver(task_observer);
64 }
65
66 void WorkerSchedulerImpl::Shutdown() {
67 DCHECK(initalized_);
68 helper_.Shutdown();
69 }
70
71 void WorkerSchedulerImpl::SetTimeSourceForTesting(
72 scoped_refptr<cc::TestNowSource> time_source) {
73 helper_.SetTimeSourceForTesting(time_source);
74 }
75
76 void WorkerSchedulerImpl::SetWorkBatchSizeForTesting(size_t work_batch_size) {
77 helper_.SetWorkBatchSizeForTesting(work_batch_size);
78 }
79
80 bool WorkerSchedulerImpl::CanEnterLongIdlePeriod(base::TimeTicks,
81 base::TimeDelta*) {
82 return true;
83 }
84
85 base::TimeTicks WorkerSchedulerImpl::CurrentIdleTaskDeadlineForTesting() const {
86 base::TimeTicks deadline;
87 helper_.CurrentIdleTaskDeadlineCallback(&deadline);
88 return deadline;
89 }
90
91 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698