1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CC_TEST_TEST_NOW_SOURCE_H_ 6#define CC_TEST_TEST_NOW_SOURCE_H_ 7 8#include <string> 9 10#include "base/basictypes.h" 11#include "base/debug/trace_event.h" 12#include "base/debug/trace_event_argument.h" 13#include "base/logging.h" 14 15namespace cc { 16 17class TestNowSource : public base::RefCounted<TestNowSource> { 18 public: 19 static scoped_refptr<TestNowSource> Create(); 20 static scoped_refptr<TestNowSource> Create(int64_t initial); 21 static scoped_refptr<TestNowSource> Create(base::TimeTicks initial); 22 23 virtual void Reset(); 24 virtual base::TimeTicks Now() const; 25 virtual void SetNow(base::TimeTicks time); 26 virtual void AdvanceNow(base::TimeDelta period); 27 28 // Convenience functions to make it the now source easier to use in unit 29 // tests. 30 void AdvanceNowMicroseconds(int64_t period_in_microseconds); 31 void SetNowMicroseconds(int64_t time_in_microseconds); 32 33 static const base::TimeTicks kAbsoluteMaxNow; 34 35 // Tracing functions 36 scoped_refptr<base::debug::ConvertableToTraceFormat> AsValue() const; 37 void AsValueInto(base::debug::TracedValue* state) const; 38 std::string ToString() const; 39 40 protected: 41 TestNowSource(); 42 explicit TestNowSource(int64_t initial); 43 explicit TestNowSource(base::TimeTicks initial); 44 45 base::TimeTicks initial_; 46 base::TimeTicks now_; 47 48 private: 49 friend class base::RefCounted<TestNowSource>; 50 virtual ~TestNowSource(); 51}; 52 53// gtest pretty printing functions 54void PrintTo(const scoped_refptr<TestNowSource>& src, ::std::ostream* os); 55::std::ostream& operator<<(::std::ostream& os, 56 const scoped_refptr<TestNowSource>& src); 57 58} // namespace cc 59 60#endif // CC_TEST_TEST_NOW_SOURCE_H_ 61