#ifndef CC_METRICS_EVENT_LATENCY_TRACKER_H_
#define CC_METRICS_EVENT_LATENCY_TRACKER_H_
#include <variant>
#include <vector>
#include "base/time/time.h"
#include "cc/cc_export.h"
#include "cc/metrics/event_metrics.h"
namespace viz {
struct BeginFrameArgs;
}
namespace cc {
class CC_EXPORT EventLatencyTracker {
public:
struct CC_EXPORT LatencyData {
LatencyData(EventMetrics::EventType event_type,
base::TimeDelta total_latency);
~LatencyData();
LatencyData(const LatencyData&) = delete;
LatencyData& operator=(const LatencyData&) = delete;
LatencyData(LatencyData&&);
LatencyData& operator=(LatencyData&&);
EventMetrics::EventType event_type;
base::TimeDelta total_latency;
std::variant<std::monostate,
ScrollEventMetrics::ScrollType,
PinchEventMetrics::PinchType>
input_type;
};
EventLatencyTracker();
virtual ~EventLatencyTracker();
EventLatencyTracker(const EventLatencyTracker&) = delete;
EventLatencyTracker& operator=(const EventLatencyTracker&) = delete;
virtual void ReportEventLatency(const viz::BeginFrameArgs& args,
std::vector<LatencyData> latencies) = 0;
};
}
#endif