blob: 35b46b41268537cb4b4e6d59e1288f2592536646 [file] [log] [blame]
// Copyright 2020 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 CC_METRICS_WEB_VITAL_METRICS_H_
#define CC_METRICS_WEB_VITAL_METRICS_H_
#include <string>
#include "base/time/time.h"
#include "cc/cc_export.h"
namespace cc {
// Web Vital metrics reported from blink to be displayed with cc's HUD display.
struct CC_EXPORT WebVitalMetrics {
bool has_lcp = false;
base::TimeDelta largest_contentful_paint;
bool has_fid = false;
base::TimeDelta first_input_delay;
bool has_cls = false;
double layout_shift = 0.f;
WebVitalMetrics() = default;
WebVitalMetrics(const WebVitalMetrics& other) = default;
bool HasValue() const { return has_lcp || has_fid || has_cls; }
struct MetricsInfo {
double green_threshold;
double yellow_threshold;
enum Unit { kSecond, kMillisecond, kScore };
Unit unit;
std::string UnitToString() const {
switch (unit) {
case Unit::kSecond:
return " s";
case Unit::kMillisecond:
return " ms";
case Unit::kScore:
default:
return "";
}
}
};
static constexpr MetricsInfo lcp_info = {
2.5f, 4.f, WebVitalMetrics::MetricsInfo::Unit::kSecond};
static constexpr MetricsInfo fid_info = {
100, 300, WebVitalMetrics::MetricsInfo::Unit::kMillisecond};
static constexpr MetricsInfo cls_info = {
0.1f, 0.25f, WebVitalMetrics::MetricsInfo::Unit::kScore};
};
} // namespace cc
#endif // CC_METRICS_WEB_VITAL_METRICS_H_