chromium/components/page_load_metrics/browser/page_load_metrics_observer_delegate.h

// Copyright 2019 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_BROWSER_PAGE_LOAD_METRICS_OBSERVER_DELEGATE_H_
#define COMPONENTS_PAGE_LOAD_METRICS_BROWSER_PAGE_LOAD_METRICS_OBSERVER_DELEGATE_H_

#include <optional>

#include "base/time/time.h"
#include "components/page_load_metrics/browser/observers/core/largest_contentful_paint_handler.h"
#include "components/page_load_metrics/browser/resource_tracker.h"
#include "components/page_load_metrics/browser/responsiveness_metrics_normalization.h"
#include "components/page_load_metrics/common/page_end_reason.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "ui/base/scoped_visibility_tracker.h"
#include "url/gurl.h"

namespace content {
class WebContents;
}  // namespace content

namespace page_load_metrics {

namespace mojom {
class FrameMetadata;
}  // namespace mojom

struct UserInitiatedInfo;
struct PageRenderData;
struct NormalizedCLSData;

// Represents the page's visibility at a specific timing.
enum class PageVisibility {};

// Represents the page's state of prerendering.
// If the page is previewed, the state starts with kInPreview, and may be
// transitted to kNoPrerendering after its activation and promotion.
// If the page is prerendereed, the state starts with kInPrerendering, and may
// be transmitted to kActivatedNoActivationStart, and kActivated.
// Otherwise, it sticks on kNoPrerendering.
//
// TODO(crbug.com/40233224): Remove kActivatedNoActivationStart if possible.
enum class PrerenderingState {};

// This class tracks global state for the page load that should be accessible
// from any PageLoadMetricsObserver.
class PageLoadMetricsObserverDelegate {};

}  // namespace page_load_metrics

#endif  // COMPONENTS_PAGE_LOAD_METRICS_BROWSER_PAGE_LOAD_METRICS_OBSERVER_DELEGATE_H_