| Index: third_party/WebKit/Source/wtf/Time.h
|
| diff --git a/third_party/WebKit/Source/wtf/Time.h b/third_party/WebKit/Source/wtf/Time.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3bc5ae8c821e69001416ab360655be998ccc36fd
|
| --- /dev/null
|
| +++ b/third_party/WebKit/Source/wtf/Time.h
|
| @@ -0,0 +1,94 @@
|
| +// Copyright 2016 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 WTF_Time_h
|
| +#define WTF_Time_h
|
| +
|
| +#include "base/time/time.h"
|
| +#include "wtf/CurrentTime.h"
|
| +
|
| +namespace WTF {
|
| +// Provides thin wrappers around the following basic time types from
|
| +// base/time package:
|
| +//
|
| +// - WTF::TimeDelta is an alias for base::TimeDelta and represents a duration
|
| +// of time.
|
| +// - WTF::TimeTicks wraps base::TimeTicks and represents a monotonic time
|
| +// value.
|
| +// - WTF::Time wraps base::Time and represents a wall time value.
|
| +//
|
| +// For usage guideline please see the documentation in base/time/time.h
|
| +
|
| +using TimeDelta = base::TimeDelta;
|
| +
|
| +namespace internal {
|
| +
|
| +template <class WrappedTimeType>
|
| +class TimeWrapper {
|
| + public:
|
| + TimeWrapper() {}
|
| +
|
| + bool isNull() const { return m_value.is_null(); }
|
| +
|
| + static TimeWrapper Now() {
|
| + if (WTF::getTimeFunctionForTesting()) {
|
| + double seconds = (WTF::getTimeFunctionForTesting())();
|
| + return TimeWrapper() + TimeDelta::FromSecondsD(seconds);
|
| + }
|
| + return TimeWrapper(WrappedTimeType::Now());
|
| + }
|
| +
|
| + int64_t ToInternalValueForTesting() const {
|
| + return m_value.ToInternalValue();
|
| + }
|
| +
|
| + TimeWrapper& operator=(TimeWrapper other) {
|
| + m_value = other.m_value;
|
| + return *this;
|
| + }
|
| +
|
| + TimeDelta operator-(TimeWrapper other) const {
|
| + return m_value - other.m_value;
|
| + }
|
| +
|
| + TimeWrapper operator+(TimeDelta delta) const {
|
| + return TimeWrapper(m_value + delta);
|
| + }
|
| + TimeWrapper operator-(TimeDelta delta) const {
|
| + return TimeWrapper(m_value - delta);
|
| + }
|
| +
|
| + TimeWrapper& operator+=(TimeDelta delta) {
|
| + m_value += delta;
|
| + return *this;
|
| + }
|
| + TimeWrapper& operator-=(TimeDelta delta) {
|
| + m_value -= delta;
|
| + return *this;
|
| + }
|
| +
|
| + bool operator==(TimeWrapper other) const { return m_value == other.m_value; }
|
| + bool operator!=(TimeWrapper other) const { return m_value != other.m_value; }
|
| + bool operator<(TimeWrapper other) const { return m_value < other.m_value; }
|
| + bool operator<=(TimeWrapper other) const { return m_value <= other.m_value; }
|
| + bool operator>(TimeWrapper other) const { return m_value > other.m_value; }
|
| + bool operator>=(TimeWrapper other) const { return m_value >= other.m_value; }
|
| +
|
| + private:
|
| + WrappedTimeType m_value;
|
| + TimeWrapper(WrappedTimeType value) : m_value(value) {}
|
| +};
|
| +
|
| +} // namespace internal
|
| +
|
| +using Time = internal::TimeWrapper<base::Time>;
|
| +using TimeTicks = internal::TimeWrapper<base::TimeTicks>;
|
| +
|
| +} // namespace WTF
|
| +
|
| +using WTF::Time;
|
| +using WTF::TimeDelta;
|
| +using WTF::TimeTicks;
|
| +
|
| +#endif // Time_h
|
|
|