| Index: base/time/time.cc
|
| diff --git a/base/time/time.cc b/base/time/time.cc
|
| index a9e4b1cf90aa61c031feaa05f52a01111090f431..9f3c53d6695b1e8b4960dc4911c761dff3b7aa56 100644
|
| --- a/base/time/time.cc
|
| +++ b/base/time/time.cc
|
| @@ -8,6 +8,7 @@
|
| #include <ostream>
|
|
|
| #include "base/float_util.h"
|
| +#include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| #include "base/third_party/nspr/prtime.h"
|
| #include "base/third_party/nspr/prtypes.h"
|
| @@ -189,6 +190,29 @@ bool Time::FromStringInternal(const char* time_string,
|
| return true;
|
| }
|
|
|
| +// Local helper class to hold the conversion from Time to TickTime at the
|
| +// time of the Unix epoch.
|
| +class UnixEpochSingleton {
|
| + public:
|
| + UnixEpochSingleton()
|
| + : unix_epoch_(TimeTicks::Now() - (Time::Now() - Time::UnixEpoch())) {}
|
| +
|
| + TimeTicks unix_epoch() const { return unix_epoch_; }
|
| +
|
| + private:
|
| + const TimeTicks unix_epoch_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(UnixEpochSingleton);
|
| +};
|
| +
|
| +static LazyInstance<UnixEpochSingleton>::Leaky
|
| + leaky_unix_epoch_singleton_instance = LAZY_INSTANCE_INITIALIZER;
|
| +
|
| +// Static
|
| +TimeTicks TimeTicks::UnixEpoch() {
|
| + return leaky_unix_epoch_singleton_instance.Get().unix_epoch();
|
| +}
|
| +
|
| // Time::Exploded -------------------------------------------------------------
|
|
|
| inline bool is_in_range(int value, int lo, int hi) {
|
|
|