#ifndef COMPONENTS_PAGE_LOAD_METRICS_BROWSER_PAGE_LOAD_TRACKER_H_
#define COMPONENTS_PAGE_LOAD_METRICS_BROWSER_PAGE_LOAD_TRACKER_H_
#include <memory>
#include <optional>
#include <vector>
#include "base/containers/flat_map.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "components/page_load_metrics/browser/observers/core/largest_contentful_paint_handler.h"
#include "components/page_load_metrics/browser/page_load_metrics_observer.h"
#include "components/page_load_metrics/browser/page_load_metrics_observer_delegate.h"
#include "components/page_load_metrics/browser/page_load_metrics_update_dispatcher.h"
#include "components/page_load_metrics/browser/resource_tracker.h"
#include "components/page_load_metrics/common/page_end_reason.h"
#include "components/page_load_metrics/common/page_load_metrics.mojom.h"
#include "components/page_load_metrics/common/page_load_timing.h"
#include "content/public/browser/global_request_id.h"
#include "content/public/browser/web_contents_observer.h"
#include "net/cookies/canonical_cookie.h"
#include "services/metrics/public/cpp/ukm_source.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "third_party/blink/public/common/performance/performance_timeline_constants.h"
#include "ui/base/scoped_visibility_tracker.h"
#include "ui/gfx/geometry/size.h"
class GURL;
namespace blink {
class WebInputEvent;
}
namespace content {
class NavigationHandle;
class WebContents;
}
namespace page_load_metrics {
struct MemoryUpdate;
class PageLoadMetricsEmbedderInterface;
namespace internal {
enum class PageLoadPrerenderEvent { … };
enum class PageLoadTrackerPageType { … };
extern const char kErrorEvents[];
extern const char kPageLoadPrerender2Event[];
extern const char kPageLoadPrerender2VisibilityAtActivation[];
extern const char kPageLoadTrackerPageType[];
enum class VisibilityAtActivation { … };
}
enum InternalErrorLoadEvent { … };
void RecordInternalError(InternalErrorLoadEvent event);
PageEndReason EndReasonForPageTransition(ui::PageTransition transition);
bool IsNavigationUserInitiated(content::NavigationHandle* handle);
class PageLoadTracker : public PageLoadMetricsUpdateDispatcher::Client,
public PageLoadMetricsObserverDelegate { … };
}
#endif