| // 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 COMPONENTS_CRONET_METRICS_UTIL_H_ |
| #define COMPONENTS_CRONET_METRICS_UTIL_H_ |
| |
| #include <stdint.h> |
| |
| #include "base/time/time.h" |
| |
| namespace cronet { |
| |
| namespace metrics_util { |
| |
| constexpr int64_t kNullTime = -1; |
| |
| // Converts timing metrics stored as TimeTicks into the format expected by the |
| // API layer: ms since Unix epoch, or kNullTime for null (if either |ticks| or |
| // |start_ticks| is null). |
| // |
| // By calculating time values using a base (|start_ticks|, |start_time|) pair, |
| // time values are normalized. This allows time deltas between pairs of events |
| // to be accurately computed, even if the system clock changed between those |
| // events, as long as times for both events were calculated using the same |
| // (|start_ticks|, |start_time|) pair. |
| // |
| // Args: |
| // |
| // ticks: The ticks value corresponding to the time of the event -- the returned |
| // time corresponds to this event. |
| // |
| // start_ticks: The ticks measurement at some base time -- the ticks equivalent |
| // of start_time. Should be smaller than ticks. |
| // |
| // start_time: Time measurement at some base time -- the time equivalent of |
| // start_ticks. Must not be null. |
| int64_t ConvertTime(const base::TimeTicks& ticks, |
| const base::TimeTicks& start_ticks, |
| const base::Time& start_time); |
| |
| } // namespace metrics_util |
| |
| } // namespace cronet |
| |
| #endif // COMPONENTS_CRONET_METRICS_UTIL_H_ |