summaryrefslogtreecommitdiffstats
path: root/content/renderer/scheduler
diff options
context:
space:
mode:
authoralexclarke <alexclarke@chromium.org>2015-03-18 06:00:04 -0700
committerCommit bot <commit-bot@chromium.org>2015-03-18 13:00:50 +0000
commit6d6c0614d0e76559a88e5972e9512189c0f9678b (patch)
treeac9da38a3325dbdc637abdbf3d9699d2d6fd4446 /content/renderer/scheduler
parentcaa8888f9c95ac4b72c73190a23f9d93a83c25b8 (diff)
downloadchromium_src-6d6c0614d0e76559a88e5972e9512189c0f9678b.zip
chromium_src-6d6c0614d0e76559a88e5972e9512189c0f9678b.tar.gz
chromium_src-6d6c0614d0e76559a88e5972e9512189c0f9678b.tar.bz2
Chromium side of adding postTimerTask to blink::WebScheduler
Initially postTimerTask will post onto the DefaultTaskRunner. In a follow up patch a TIMER_TASK_QUEUE will be added to the scheduler and the implementations of postTimerTask altered to post to that. BUG=463143 Review URL: https://codereview.chromium.org/1008743004 Cr-Commit-Position: refs/heads/master@{#321112}
Diffstat (limited to 'content/renderer/scheduler')
-rw-r--r--content/renderer/scheduler/web_scheduler_impl.cc17
-rw-r--r--content/renderer/scheduler/web_scheduler_impl.h4
2 files changed, 20 insertions, 1 deletions
diff --git a/content/renderer/scheduler/web_scheduler_impl.cc b/content/renderer/scheduler/web_scheduler_impl.cc
index 45bb156..550be3b 100644
--- a/content/renderer/scheduler/web_scheduler_impl.cc
+++ b/content/renderer/scheduler/web_scheduler_impl.cc
@@ -14,7 +14,8 @@ namespace content {
WebSchedulerImpl::WebSchedulerImpl(RendererScheduler* renderer_scheduler)
: renderer_scheduler_(renderer_scheduler),
idle_task_runner_(renderer_scheduler_->IdleTaskRunner()),
- loading_task_runner_(renderer_scheduler_->LoadingTaskRunner()) {
+ loading_task_runner_(renderer_scheduler_->LoadingTaskRunner()),
+ timer_task_runner_(renderer_scheduler_->DefaultTaskRunner()) {
}
WebSchedulerImpl::~WebSchedulerImpl() {
@@ -84,6 +85,20 @@ void WebSchedulerImpl::postLoadingTask(
base::Bind(&WebSchedulerImpl::runTask, base::Passed(&scoped_task)));
}
+void WebSchedulerImpl::postTimerTask(
+ const blink::WebTraceLocation& web_location,
+ blink::WebThread::Task* task,
+ long long delayMs) {
+ DCHECK(timer_task_runner_);
+ scoped_ptr<blink::WebThread::Task> scoped_task(task);
+ tracked_objects::Location location(web_location.functionName(),
+ web_location.fileName(), -1, nullptr);
+ timer_task_runner_->PostDelayedTask(
+ location,
+ base::Bind(&WebSchedulerImpl::runTask, base::Passed(&scoped_task)),
+ base::TimeDelta::FromMilliseconds(delayMs));
+}
+
void WebSchedulerImpl::shutdown() {
// TODO(rmcilroy): Delete this method once the blink side is removed.
}
diff --git a/content/renderer/scheduler/web_scheduler_impl.h b/content/renderer/scheduler/web_scheduler_impl.h
index eeb70cf..8136b2f 100644
--- a/content/renderer/scheduler/web_scheduler_impl.h
+++ b/content/renderer/scheduler/web_scheduler_impl.h
@@ -36,6 +36,9 @@ class CONTENT_EXPORT WebSchedulerImpl : public blink::WebScheduler {
blink::WebScheduler::IdleTask* task);
virtual void postLoadingTask(const blink::WebTraceLocation& location,
blink::WebThread::Task* task);
+ virtual void postTimerTask(const blink::WebTraceLocation& location,
+ blink::WebThread::Task* task,
+ long long delayMs);
virtual void shutdown();
private:
@@ -46,6 +49,7 @@ class CONTENT_EXPORT WebSchedulerImpl : public blink::WebScheduler {
RendererScheduler* renderer_scheduler_;
scoped_refptr<SingleThreadIdleTaskRunner> idle_task_runner_;
scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner_;
+ scoped_refptr<base::SingleThreadTaskRunner> timer_task_runner_;
};
} // namespace content