| // Copyright 2014 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. |
| |
| #ifndef CC_TEST_TEST_NOW_SOURCE_H_ |
| #define CC_TEST_TEST_NOW_SOURCE_H_ |
| |
| #include <string> |
| |
| #include "base/basictypes.h" |
| #include "base/logging.h" |
| #include "base/trace_event/trace_event.h" |
| #include "base/trace_event/trace_event_argument.h" |
| |
| namespace cc { |
| |
| class TestNowSource : public base::RefCounted<TestNowSource> { |
| public: |
| static scoped_refptr<TestNowSource> Create(); |
| static scoped_refptr<TestNowSource> Create(int64_t initial); |
| static scoped_refptr<TestNowSource> Create(base::TimeTicks initial); |
| |
| virtual void Reset(); |
| virtual base::TimeTicks Now() const; |
| virtual void SetNow(base::TimeTicks time); |
| virtual void AdvanceNow(base::TimeDelta period); |
| |
| // Convenience functions to make it the now source easier to use in unit |
| // tests. |
| void AdvanceNowMicroseconds(int64_t period_in_microseconds); |
| void SetNowMicroseconds(int64_t time_in_microseconds); |
| |
| static const base::TimeTicks kAbsoluteMaxNow; |
| |
| // Tracing functions |
| scoped_refptr<base::trace_event::ConvertableToTraceFormat> AsValue() const; |
| void AsValueInto(base::trace_event::TracedValue* state) const; |
| std::string ToString() const; |
| |
| int NumNowCalls() const { return num_now_calls_; } |
| |
| protected: |
| TestNowSource(); |
| explicit TestNowSource(int64_t initial); |
| explicit TestNowSource(base::TimeTicks initial); |
| |
| base::TimeTicks initial_; |
| base::TimeTicks now_; |
| mutable int num_now_calls_; |
| |
| private: |
| friend class base::RefCounted<TestNowSource>; |
| virtual ~TestNowSource(); |
| }; |
| |
| // gtest pretty printing functions |
| void PrintTo(const scoped_refptr<TestNowSource>& src, ::std::ostream* os); |
| ::std::ostream& operator<<(::std::ostream& os, |
| const scoped_refptr<TestNowSource>& src); |
| |
| } // namespace cc |
| |
| #endif // CC_TEST_TEST_NOW_SOURCE_H_ |