#ifndef COMPONENTS_PAGE_LOAD_METRICS_RENDERER_METRICS_RENDER_FRAME_OBSERVER_H_
#define COMPONENTS_PAGE_LOAD_METRICS_RENDERER_METRICS_RENDER_FRAME_OBSERVER_H_
#include <memory>
#include <optional>
#include <set>
#include "base/scoped_observation.h"
#include "components/page_load_metrics/common/page_load_timing.h"
#include "components/page_load_metrics/renderer/page_resource_data_use.h"
#include "components/page_load_metrics/renderer/page_timing_metadata_recorder.h"
#include "content/public/renderer/render_frame_observer.h"
#include "third_party/blink/public/common/loader/loading_behavior_flag.h"
#include "third_party/blink/public/common/responsiveness_metrics/user_interaction_latency.h"
#include "third_party/blink/public/common/subresource_load_metrics.h"
#include "third_party/blink/public/mojom/loader/resource_load_info.mojom-shared.h"
#include "third_party/blink/public/web/web_local_frame_observer.h"
class GURL;
namespace base {
class OneShotTimer;
}
namespace blink {
struct JavaScriptFrameworkDetectionResult;
struct SoftNavigationMetrics;
}
namespace page_load_metrics {
namespace internal {
const char kPageLoadInternalSoftNavigationFromStartInvalidTiming[] = …;
enum class SoftNavigationFromStartInvalidTimingReasons { … };
void RecordUmaForkPageLoadInternalSoftNavigationFromStartInvalidTiming(
base::TimeDelta start_time_relative_to_reference,
double nav_start_to_reference);
}
class PageTimingMetricsSender;
class PageTimingSender;
class MetricsRenderFrameObserver : public content::RenderFrameObserver,
public blink::WebLocalFrameObserver { … };
}
#endif