Chromium Code Reviews| Index: Source/platform/WebScheduler.cpp |
| diff --git a/Source/platform/WebScheduler.cpp b/Source/platform/WebScheduler.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5ee7c81ef04da1d9f1d41e27479f15bde41a7eee |
| --- /dev/null |
| +++ b/Source/platform/WebScheduler.cpp |
| @@ -0,0 +1,87 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "config.h" |
| +#include "public/platform/WebScheduler.h" |
| + |
| +#include "public/platform/WebTraceLocation.h" |
| +#include "wtf/Assertions.h" |
| +#include "wtf/OwnPtr.h" |
| + |
| +#if OS(WIN) |
|
Sami
2015/04/16 14:02:05
Drop this too?
alex clarke (OOO till 29th)
2015/04/16 14:17:43
Done.
|
| +#include <windows.h> |
| +#elif OS(POSIX) |
| +#include <unistd.h> |
| +#endif |
| + |
| +namespace blink { |
| + |
| +namespace { |
| +class TaskRunner : public WebThread::Task { |
| + WTF_MAKE_NONCOPYABLE(TaskRunner); |
| + |
| +public: |
| + explicit TaskRunner(PassOwnPtr<WebScheduler::Task> task) |
| + : m_task(task) |
| + { |
| + } |
| + |
| + ~TaskRunner() override |
| + { |
| + } |
| + |
| + // WebThread::Task implementation. |
| + void run() override |
| + { |
| + (*m_task)(); |
| + } |
| +private: |
| + OwnPtr<WebScheduler::Task> m_task; |
| +}; |
| + |
| +class IdleTaskRunner : public WebThread::IdleTask { |
| + WTF_MAKE_NONCOPYABLE(IdleTaskRunner); |
| + |
| +public: |
| + explicit IdleTaskRunner(PassOwnPtr<WebScheduler::IdleTask> task) |
| + : m_task(task) |
| + { |
| + } |
| + |
| + ~IdleTaskRunner() override |
| + { |
| + } |
| + |
| + // WebThread::IdleTask implementation. |
| + void run(double deadlineSeconds) override |
| + { |
| + (*m_task)(deadlineSeconds); |
| + } |
| +private: |
| + OwnPtr<WebScheduler::IdleTask> m_task; |
| +}; |
| + |
| +} // namespace |
| + |
| +void WebScheduler::postIdleTask(const WebTraceLocation& location, PassOwnPtr<IdleTask> idleTask) |
| +{ |
| + postIdleTask(location, new IdleTaskRunner(idleTask)); |
| +} |
| + |
| +void WebScheduler::postNonNestableIdleTask(const WebTraceLocation& location, PassOwnPtr<IdleTask> idleTask) |
| +{ |
| + postNonNestableIdleTask(location, new IdleTaskRunner(idleTask)); |
| +} |
| + |
| +void WebScheduler::postIdleTaskAfterWakeup(const WebTraceLocation& location, PassOwnPtr<IdleTask> idleTask) |
| +{ |
| + postIdleTaskAfterWakeup(location, new IdleTaskRunner(idleTask)); |
| +} |
| + |
| +void WebScheduler::postLoadingTask(const WebTraceLocation& location, PassOwnPtr<Task> task) |
| +{ |
| + postLoadingTask(location, new TaskRunner(task)); |
| +} |
| + |
| +} // namespace blink |