scheduler_test_common.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CC_TEST_SCHEDULER_TEST_COMMON_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CC_TEST_SCHEDULER_TEST_COMMON_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/time.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/base/thread.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/scheduler/delay_based_time_source.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/scheduler/frame_rate_controller.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FakeTimeSourceClient : public cc::TimeSourceClient { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) FakeTimeSourceClient() { Reset(); } 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Reset() { tick_called_ = false; } 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool TickCalled() const { return tick_called_; } 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TimeSourceClient implementation. 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void OnTimerTick() OVERRIDE; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool tick_called_; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FakeDelayBasedTimeSource : public cc::DelayBasedTimeSource { 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static scoped_refptr<FakeDelayBasedTimeSource> Create( 347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::TimeDelta interval, base::SingleThreadTaskRunner* task_runner) { 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return make_scoped_refptr(new FakeDelayBasedTimeSource(interval, 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) task_runner)); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetNow(base::TimeTicks time) { now_ = time; } 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual base::TimeTicks Now() const OVERRIDE; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) FakeDelayBasedTimeSource(base::TimeDelta interval, 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) base::SingleThreadTaskRunner* task_runner) 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : DelayBasedTimeSource(interval, task_runner) {} 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~FakeDelayBasedTimeSource() {} 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::TimeTicks now_; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FakeFrameRateController : public cc::FrameRateController { 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) explicit FakeFrameRateController(scoped_refptr<cc::TimeSource> timer) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : cc::FrameRateController(timer) {} 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int NumFramesPending() const { return num_frames_pending_; } 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace cc 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CC_TEST_SCHEDULER_TEST_COMMON_H_ 62