diff options
author | alexclarke <alexclarke@chromium.org> | 2015-03-18 06:00:04 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-18 13:00:50 +0000 |
commit | 6d6c0614d0e76559a88e5972e9512189c0f9678b (patch) | |
tree | ac9da38a3325dbdc637abdbf3d9699d2d6fd4446 /content/renderer/scheduler | |
parent | caa8888f9c95ac4b72c73190a23f9d93a83c25b8 (diff) | |
download | chromium_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.cc | 17 | ||||
-rw-r--r-- | content/renderer/scheduler/web_scheduler_impl.h | 4 |
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 |