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

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

Issue 1088053003: Patch 1/3 to get WebScheduler via WebThread (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix compile 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 2015 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_web_scheduler_impl.h"
6
7 #include "base/bind.h"
8 #include "base/single_thread_task_runner.h"
9 #include "content/child/scheduler/worker_scheduler.h"
10 #include "third_party/WebKit/public/platform/WebTraceLocation.h"
11
12 namespace content {
13
14 WorkerWebSchedulerImpl::WorkerWebSchedulerImpl(
rmcilroy 2015/04/15 12:27:28 Do we need a separate one of these for Worker and
alex clarke (OOO till 29th) 2015/04/15 14:25:46 There are enough common bits to do that, and I thi
rmcilroy 2015/04/15 17:58:15 This wasn't actually what I meant. I meant that we
alex clarke (OOO till 29th) 2015/04/16 09:11:55 I suspect we'd end up with diamond inheritance pro
Sami 2015/04/16 10:44:01 My view is that the WebScheduler adapters should b
rmcilroy 2015/04/16 11:21:05 CL adds the common base scheduler (which I've name
15 WorkerScheduler* worker_scheduler)
16 : worker_scheduler_(worker_scheduler),
17 idle_task_runner_(worker_scheduler_->IdleTaskRunner()),
18 task_runner_(worker_scheduler_->DefaultTaskRunner()) {
19 }
20
21 WorkerWebSchedulerImpl::~WorkerWebSchedulerImpl() {
22 }
23
24 bool WorkerWebSchedulerImpl::shouldYieldForHighPriorityWork() {
25 return false;
26 }
27
28 bool WorkerWebSchedulerImpl::canExceedIdleDeadlineIfRequired() {
29 return worker_scheduler_->CanExceedIdleDeadlineIfRequired();
30 }
31
32 void WorkerWebSchedulerImpl::runIdleTask(
33 scoped_ptr<blink::WebThread::IdleTask> task,
34 base::TimeTicks deadline) {
35 task->run((deadline - base::TimeTicks()).InSecondsF());
36 }
37
38 void WorkerWebSchedulerImpl::runTask(scoped_ptr<blink::WebThread::Task> task) {
39 task->run();
40 }
41
42 void WorkerWebSchedulerImpl::postIdleTask(
43 const blink::WebTraceLocation& web_location,
44 blink::WebThread::IdleTask* task) {
45 DCHECK(idle_task_runner_);
46 scoped_ptr<blink::WebThread::IdleTask> scoped_task(task);
47 tracked_objects::Location location(web_location.functionName(),
Sami 2015/04/15 12:37:13 Is it worth writing a (possibly templated) helper
alex clarke (OOO till 29th) 2015/04/15 14:25:46 I was unable to get one template that can do it al
Sami 2015/04/16 10:44:01 Okay, thanks for giving it a try anyway!
48 web_location.fileName(), -1, nullptr);
49 idle_task_runner_->PostIdleTask(
50 location, base::Bind(&WorkerWebSchedulerImpl::runIdleTask,
51 base::Passed(&scoped_task)));
52 }
53
54 void WorkerWebSchedulerImpl::postNonNestableIdleTask(
55 const blink::WebTraceLocation& web_location,
56 blink::WebThread::IdleTask* task) {
57 DCHECK(idle_task_runner_);
58 scoped_ptr<blink::WebThread::IdleTask> scoped_task(task);
59 tracked_objects::Location location(web_location.functionName(),
60 web_location.fileName(), -1, nullptr);
61 idle_task_runner_->PostNonNestableIdleTask(
62 location, base::Bind(&WorkerWebSchedulerImpl::runIdleTask,
63 base::Passed(&scoped_task)));
64 }
65
66 void WorkerWebSchedulerImpl::postIdleTaskAfterWakeup(
67 const blink::WebTraceLocation& web_location,
68 blink::WebThread::IdleTask* task) {
69 DCHECK(idle_task_runner_);
70 scoped_ptr<blink::WebThread::IdleTask> scoped_task(task);
71 tracked_objects::Location location(web_location.functionName(),
72 web_location.fileName(), -1, nullptr);
73 idle_task_runner_->PostIdleTaskAfterWakeup(
74 location, base::Bind(&WorkerWebSchedulerImpl::runIdleTask,
75 base::Passed(&scoped_task)));
76 }
77
78 void WorkerWebSchedulerImpl::postLoadingTask(
79 const blink::WebTraceLocation& web_location,
80 blink::WebThread::Task* task) {
81 DCHECK(task_runner_);
82 scoped_ptr<blink::WebThread::Task> scoped_task(task);
83 tracked_objects::Location location(web_location.functionName(),
84 web_location.fileName(), -1, nullptr);
85 task_runner_->PostTask(location, base::Bind(&WorkerWebSchedulerImpl::runTask,
86 base::Passed(&scoped_task)));
87 }
88
89 void WorkerWebSchedulerImpl::postTimerTask(
90 const blink::WebTraceLocation& web_location,
91 blink::WebThread::Task* task,
92 long long delayMs) {
93 DCHECK(task_runner_);
94 scoped_ptr<blink::WebThread::Task> scoped_task(task);
95 tracked_objects::Location location(web_location.functionName(),
96 web_location.fileName(), -1, nullptr);
97 task_runner_->PostDelayedTask(
98 location,
99 base::Bind(&WorkerWebSchedulerImpl::runTask, base::Passed(&scoped_task)),
100 base::TimeDelta::FromMilliseconds(delayMs));
101 }
102
103 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698