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