1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file.
4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "config.h"
6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "public/platform/WebSchedulerProxy.h"
8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
9c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "platform/TraceLocation.h"
10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/scheduler/Scheduler.h"
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)#include "public/platform/WebTraceLocation.h"
12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/Assertions.h"
13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "wtf/PassOwnPtr.h"
14197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
15197021e6b966cfb06891637935ef33fff06433d1Ben Murdochnamespace blink {
16197021e6b966cfb06891637935ef33fff06433d1Ben Murdochnamespace {
17197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
18197021e6b966cfb06891637935ef33fff06433d1Ben Murdochvoid runTask(PassOwnPtr<WebThread::Task> task)
19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
20197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    task->run();
21197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
23197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} // namespace
24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
25197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebSchedulerProxy WebSchedulerProxy::create()
26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    return WebSchedulerProxy();
28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
30197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebSchedulerProxy::WebSchedulerProxy()
31e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    : m_scheduler(Scheduler::shared())
32197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    ASSERT(m_scheduler);
34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
36197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebSchedulerProxy::~WebSchedulerProxy()
37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
40c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)void WebSchedulerProxy::postInputTask(const WebTraceLocation& webLocation, WebThread::Task* task)
41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
42c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    TraceLocation location(webLocation.functionName(), webLocation.fileName());
43c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    m_scheduler->postInputTask(location, bind(&runTask, adoptPtr(task)));
44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
45197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
46c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)void WebSchedulerProxy::postCompositorTask(const WebTraceLocation& webLocation, WebThread::Task* task)
47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{
48c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    TraceLocation location(webLocation.functionName(), webLocation.fileName());
49c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    m_scheduler->postCompositorTask(location, bind(&runTask, adoptPtr(task)));
50197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch}
51197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid WebSchedulerProxy::postIpcTask(const WebTraceLocation& webLocation, WebThread::Task* task)
537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
547242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    TraceLocation location(webLocation.functionName(), webLocation.fileName());
557242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    m_scheduler->postIpcTask(location, bind(&runTask, adoptPtr(task)));
567242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
587242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccivoid WebSchedulerProxy::didReceiveInputEvent()
597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci{
607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    m_scheduler->didReceiveInputEvent();
617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci}
627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
63197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} // namespace blink
64