#ifndef COMPONENTS_PAGE_LOAD_METRICS_COMMON_PAGE_LOAD_METRICS_MOJOM_SHARED_H_
#define COMPONENTS_PAGE_LOAD_METRICS_COMMON_PAGE_LOAD_METRICS_MOJOM_SHARED_H_
#include <stdint.h>
#include <functional>
#include <iosfwd>
#include <type_traits>
#include <utility>
#include "mojo/public/cpp/bindings/array_data_view.h"
#include "mojo/public/cpp/bindings/enum_traits.h"
#include "mojo/public/cpp/bindings/interface_data_view.h"
#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
#include "mojo/public/cpp/bindings/lib/serialization.h"
#include "mojo/public/cpp/bindings/map_data_view.h"
#include "mojo/public/cpp/bindings/string_data_view.h"
#include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h"
#include "components/page_load_metrics/common/page_load_metrics.mojom-shared-internal.h"
#include "ui/gfx/geometry/mojom/geometry.mojom-shared.h"
#include "mojo/public/mojom/base/shared_memory.mojom-shared.h"
#include "mojo/public/mojom/base/time.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/javascript_framework_detection.mojom-shared.h"
#include "services/network/public/mojom/request_priority.mojom-shared.h"
#include "third_party/blink/public/mojom/use_counter/use_counter_feature.mojom-shared.h"
#include "mojo/public/cpp/bindings/lib/interface_serialization.h"
#include "mojo/public/cpp/system/data_pipe.h"
namespace page_load_metrics::mojom {
class DocumentTimingDataView;
class LcpResourceLoadTimingsDataView;
class LargestContentfulPaintTimingDataView;
class PaintTimingDataView;
class ParseTimingDataView;
class InteractiveTimingDataView;
class CustomUserTimingMarkDataView;
class DomainLookupTimingDataView;
class PageLoadTimingDataView;
class FrameMetadataDataView;
class SubresourceLoadMetricsDataView;
class ServiceWorkerSubresourceLoadMetricsDataView;
class ResourceDataUpdateDataView;
class LayoutShiftDataView;
class FrameRenderDataUpdateDataView;
class CpuTimingDataView;
class InputTimingDataView;
class UserInteractionLatencyDataView;
class BackForwardCacheTimingDataView;
class SoftNavigationMetricsDataView;
class UserInteractionLatenciesDataView;
}
namespace mojo {
namespace internal {
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::DocumentTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::LcpResourceLoadTimingsDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::LargestContentfulPaintTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::PaintTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::ParseTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::InteractiveTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::CustomUserTimingMarkDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::DomainLookupTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::PageLoadTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::FrameMetadataDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::SubresourceLoadMetricsDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::ServiceWorkerSubresourceLoadMetricsDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::ResourceDataUpdateDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::LayoutShiftDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::FrameRenderDataUpdateDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::CpuTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::InputTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::UserInteractionLatencyDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::BackForwardCacheTimingDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::SoftNavigationMetricsDataView> { … };
template <>
struct MojomTypeTraits<::page_load_metrics::mojom::UserInteractionLatenciesDataView> { … };
}
}
namespace page_load_metrics::mojom {
enum class CacheType : int32_t { … };
std::ostream& operator<<(std::ostream& os, CacheType value);
inline bool IsKnownEnumValue(CacheType value) { … }
enum class UserInteractionType : int32_t { … };
std::ostream& operator<<(std::ostream& os, UserInteractionType value);
inline bool IsKnownEnumValue(UserInteractionType value) { … }
class PageLoadMetricsInterfaceBase { … };
PageLoadMetricsPtrDataView;
PageLoadMetricsRequestDataView;
PageLoadMetricsAssociatedPtrInfoDataView;
PageLoadMetricsAssociatedRequestDataView;
class DocumentTimingDataView { … };
class LcpResourceLoadTimingsDataView { … };
class LargestContentfulPaintTimingDataView { … };
class PaintTimingDataView { … };
class ParseTimingDataView { … };
class InteractiveTimingDataView { … };
class CustomUserTimingMarkDataView { … };
class DomainLookupTimingDataView { … };
class PageLoadTimingDataView { … };
class FrameMetadataDataView { … };
class SubresourceLoadMetricsDataView { … };
class ServiceWorkerSubresourceLoadMetricsDataView { … };
class ResourceDataUpdateDataView { … };
class LayoutShiftDataView { … };
class FrameRenderDataUpdateDataView { … };
class CpuTimingDataView { … };
class InputTimingDataView { … };
class UserInteractionLatencyDataView { … };
class BackForwardCacheTimingDataView { … };
class SoftNavigationMetricsDataView { … };
class UserInteractionLatenciesDataView { … };
}
namespace std {
template <>
struct hash<::page_load_metrics::mojom::CacheType>
: public mojo::internal::EnumHashImpl<::page_load_metrics::mojom::CacheType> { … };
template <>
struct hash<::page_load_metrics::mojom::UserInteractionType>
: public mojo::internal::EnumHashImpl<::page_load_metrics::mojom::UserInteractionType> { … };
}
namespace mojo {
namespace internal {
Serializer< ::page_load_metrics::mojom::CacheType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::UserInteractionType, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::DocumentTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::LcpResourceLoadTimingsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::LargestContentfulPaintTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::PaintTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::ParseTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::InteractiveTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::CustomUserTimingMarkDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::DomainLookupTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::PageLoadTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::FrameMetadataDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::SubresourceLoadMetricsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::ServiceWorkerSubresourceLoadMetricsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::ResourceDataUpdateDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::LayoutShiftDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::FrameRenderDataUpdateDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::CpuTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::InputTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::UserInteractionLatencyDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::BackForwardCacheTimingDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::SoftNavigationMetricsDataView, MaybeConstUserType>;
}
namespace internal {
Serializer< ::page_load_metrics::mojom::UserInteractionLatenciesDataView, MaybeConstUserType>;
}
}
namespace page_load_metrics::mojom {
inline void DocumentTimingDataView::GetDomContentLoadedEventStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void DocumentTimingDataView::GetLoadEventStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void LcpResourceLoadTimingsDataView::GetDiscoveryTimeDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void LcpResourceLoadTimingsDataView::GetLoadStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void LcpResourceLoadTimingsDataView::GetLoadEndDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void LargestContentfulPaintTimingDataView::GetLargestImagePaintDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void LargestContentfulPaintTimingDataView::GetLargestTextPaintDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void LargestContentfulPaintTimingDataView::GetResourceLoadTimingsDataView(
LcpResourceLoadTimingsDataView* output) { … }
inline void PaintTimingDataView::GetFirstPaintDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PaintTimingDataView::GetFirstImagePaintDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PaintTimingDataView::GetFirstContentfulPaintDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PaintTimingDataView::GetFirstMeaningfulPaintDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PaintTimingDataView::GetLargestContentfulPaintDataView(
LargestContentfulPaintTimingDataView* output) { … }
inline void PaintTimingDataView::GetExperimentalLargestContentfulPaintDataView(
LargestContentfulPaintTimingDataView* output) { … }
inline void PaintTimingDataView::GetFirstEligibleToPaintDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PaintTimingDataView::GetFirstInputOrScrollNotifiedTimestampDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void ParseTimingDataView::GetParseStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void ParseTimingDataView::GetParseStopDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void ParseTimingDataView::GetParseBlockedOnScriptLoadDurationDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void ParseTimingDataView::GetParseBlockedOnScriptLoadFromDocumentWriteDurationDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void ParseTimingDataView::GetParseBlockedOnScriptExecutionDurationDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void ParseTimingDataView::GetParseBlockedOnScriptExecutionFromDocumentWriteDurationDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void InteractiveTimingDataView::GetFirstInputDelayDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void InteractiveTimingDataView::GetFirstInputTimestampDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void InteractiveTimingDataView::GetFirstScrollDelayDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void InteractiveTimingDataView::GetFirstScrollTimestampDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void CustomUserTimingMarkDataView::GetMarkNameDataView(
mojo::StringDataView* output) { … }
inline void CustomUserTimingMarkDataView::GetStartTimeDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void DomainLookupTimingDataView::GetDomainLookupStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void DomainLookupTimingDataView::GetDomainLookupEndDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PageLoadTimingDataView::GetNavigationStartDataView(
::mojo_base::mojom::TimeDataView* output) { … }
inline void PageLoadTimingDataView::GetConnectStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PageLoadTimingDataView::GetResponseStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PageLoadTimingDataView::GetDocumentTimingDataView(
DocumentTimingDataView* output) { … }
inline void PageLoadTimingDataView::GetInteractiveTimingDataView(
InteractiveTimingDataView* output) { … }
inline void PageLoadTimingDataView::GetPaintTimingDataView(
PaintTimingDataView* output) { … }
inline void PageLoadTimingDataView::GetParseTimingDataView(
ParseTimingDataView* output) { … }
inline void PageLoadTimingDataView::GetDomainLookupTimingDataView(
DomainLookupTimingDataView* output) { … }
inline void PageLoadTimingDataView::GetBackForwardCacheTimingsDataView(
mojo::ArrayDataView<BackForwardCacheTimingDataView>* output) { … }
inline void PageLoadTimingDataView::GetActivationStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PageLoadTimingDataView::GetInputToNavigationStartDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PageLoadTimingDataView::GetUserTimingMarkFullyLoadedDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PageLoadTimingDataView::GetUserTimingMarkFullyVisibleDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void PageLoadTimingDataView::GetUserTimingMarkInteractiveDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void FrameMetadataDataView::GetMainFrameIntersectionRectDataView(
::gfx::mojom::RectDataView* output) { … }
inline void FrameMetadataDataView::GetMainFrameViewportRectDataView(
::gfx::mojom::RectDataView* output) { … }
inline void FrameMetadataDataView::GetMainFrameImageAdRectsDataView(
mojo::MapDataView<int32_t, ::gfx::mojom::RectDataView>* output) { … }
inline void FrameMetadataDataView::GetFrameworkDetectionResultDataView(
::blink::mojom::JavaScriptFrameworkDetectionResultDataView* output) { … }
inline void SubresourceLoadMetricsDataView::GetServiceWorkerSubresourceLoadMetricsDataView(
ServiceWorkerSubresourceLoadMetricsDataView* output) { … }
inline void ServiceWorkerSubresourceLoadMetricsDataView::GetTotalRouterEvaluationTimeForSubresourcesDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void ResourceDataUpdateDataView::GetMimeTypeDataView(
mojo::StringDataView* output) { … }
inline void LayoutShiftDataView::GetLayoutShiftTimeDataView(
::mojo_base::mojom::TimeTicksDataView* output) { … }
inline void FrameRenderDataUpdateDataView::GetNewLayoutShiftsDataView(
mojo::ArrayDataView<LayoutShiftDataView>* output) { … }
inline void CpuTimingDataView::GetTaskTimeDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void InputTimingDataView::GetMaxEventDurationsDataView(
UserInteractionLatenciesDataView* output) { … }
inline void UserInteractionLatencyDataView::GetInteractionLatencyDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void UserInteractionLatencyDataView::GetInteractionTimeDataView(
::mojo_base::mojom::TimeTicksDataView* output) { … }
inline void BackForwardCacheTimingDataView::GetFirstPaintAfterBackForwardCacheRestoreDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void BackForwardCacheTimingDataView::GetRequestAnimationFramesAfterBackForwardCacheRestoreDataView(
mojo::ArrayDataView<::mojo_base::mojom::TimeDeltaDataView>* output) { … }
inline void BackForwardCacheTimingDataView::GetFirstInputDelayAfterBackForwardCacheRestoreDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void SoftNavigationMetricsDataView::GetStartTimeDataView(
::mojo_base::mojom::TimeDeltaDataView* output) { … }
inline void SoftNavigationMetricsDataView::GetNavigationIdDataView(
mojo::StringDataView* output) { … }
inline void SoftNavigationMetricsDataView::GetLargestContentfulPaintDataView(
LargestContentfulPaintTimingDataView* output) { … }
inline void UserInteractionLatenciesDataView::GetUserInteractionLatenciesDataView(
mojo::ArrayDataView<UserInteractionLatencyDataView>* output) const { … }
inline void UserInteractionLatenciesDataView::GetWorstInteractionLatencyDataView(
::mojo_base::mojom::TimeDeltaDataView* output) const { … }
}
namespace perfetto {
template <>
struct TraceFormatTraits<::page_load_metrics::mojom::CacheType> { … };
}
namespace perfetto {
template <>
struct TraceFormatTraits<::page_load_metrics::mojom::UserInteractionType> { … };
}
#endif