// Copyright 2013 Google Inc. All Rights Reserved. // // Clock - A fake clock just for running tests. #include "clock.h" #include #include "test_sleep.h" namespace wvcdm { namespace { // A fake clock that only advances when TestSleep::Sleep is called. class FakeClock : public wvcdm::TestSleep::CallBack { public: FakeClock() { auto now = std::chrono::steady_clock().now(); now_ = now.time_since_epoch() / std::chrono::milliseconds(1); TestSleep::set_callback(this); } ~FakeClock() { TestSleep::set_callback(nullptr); } void ElapseTime(int64_t milliseconds) { now_ += milliseconds; } int64_t now() const { return now_; } private: int64_t now_; }; FakeClock* g_fake_clock = nullptr; } // namespace // On devices running a fake OEMCrypto, we can use a fake sleep and fake time. int64_t Clock::GetCurrentTime() { if (g_fake_clock == nullptr) g_fake_clock = new FakeClock(); return g_fake_clock->now() / 1000; } } // namespace wvcdm