chromium/out/Default/gen/components/page_load_metrics/common/page_load_metrics.mojom-shared.h

// components/page_load_metrics/common/page_load_metrics.mojom-shared.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#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;


}  // page_load_metrics::mojom

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 internal
}  // namespace mojo


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) {}
// Interface base classes. They are used for type safety check.
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 {};



}  // page_load_metrics::mojom

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 std

namespace mojo {


namespace internal {

Serializer< ::page_load_metrics::mojom::CacheType, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::UserInteractionType, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::DocumentTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::LcpResourceLoadTimingsDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::LargestContentfulPaintTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::PaintTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::ParseTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::InteractiveTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::CustomUserTimingMarkDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::DomainLookupTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::PageLoadTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::FrameMetadataDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::SubresourceLoadMetricsDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::ServiceWorkerSubresourceLoadMetricsDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::ResourceDataUpdateDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::LayoutShiftDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::FrameRenderDataUpdateDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::CpuTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::InputTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::UserInteractionLatencyDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::BackForwardCacheTimingDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::SoftNavigationMetricsDataView, MaybeConstUserType>;

}  // namespace internal


namespace internal {

Serializer< ::page_load_metrics::mojom::UserInteractionLatenciesDataView, MaybeConstUserType>;

}  // namespace internal

}  // namespace mojo


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 {}


}  // page_load_metrics::mojom

// Declare TraceFormatTraits for enums, which should be defined in ::perfetto
// namespace.

namespace perfetto {

template <>
struct  TraceFormatTraits<::page_load_metrics::mojom::CacheType> {};

} // namespace perfetto

namespace perfetto {

template <>
struct  TraceFormatTraits<::page_load_metrics::mojom::UserInteractionType> {};

} // namespace perfetto

#endif  // COMPONENTS_PAGE_LOAD_METRICS_COMMON_PAGE_LOAD_METRICS_MOJOM_SHARED_H_