| // Copyright 2013 The Flutter 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 FLUTTER_RUNTIME_DART_TIMESTAMP_PROVIDER_H_ | 
 | #define FLUTTER_RUNTIME_DART_TIMESTAMP_PROVIDER_H_ | 
 |  | 
 | #include "flutter/fml/time/timestamp_provider.h" | 
 |  | 
 | #include "flutter/fml/macros.h" | 
 | #include "flutter/fml/time/time_point.h" | 
 |  | 
 | namespace flutter { | 
 |  | 
 | fml::TimePoint DartTimelineTicksSinceEpoch(); | 
 |  | 
 | /// TimestampProvider implementation that is backed by Dart_TimelineGetTicks | 
 | class DartTimestampProvider : fml::TimestampProvider { | 
 |  public: | 
 |   static DartTimestampProvider& Instance() { | 
 |     static DartTimestampProvider instance; | 
 |     return instance; | 
 |   } | 
 |  | 
 |   ~DartTimestampProvider() override; | 
 |  | 
 |   fml::TimePoint Now() override; | 
 |  | 
 |  private: | 
 |   static constexpr int64_t kNanosPerSecond = 1000000000; | 
 |  | 
 |   int64_t ConvertToNanos(int64_t ticks, int64_t frequency); | 
 |  | 
 |   DartTimestampProvider(); | 
 |  | 
 |   FML_DISALLOW_COPY_AND_ASSIGN(DartTimestampProvider); | 
 | }; | 
 |  | 
 | }  // namespace flutter | 
 |  | 
 | #endif  // FLUTTER_RUNTIME_DART_TIMESTAMP_PROVIDER_H_ |