// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_PUBLIC_BROWSER_PRELOADING_DATA_H_ #define CONTENT_PUBLIC_BROWSER_PRELOADING_DATA_H_ #include <optional> #include "base/functional/callback.h" #include "content/common/content_export.h" #include "content/public/browser/preloading.h" #include "services/metrics/public/cpp/ukm_source_id.h" #include "url/gurl.h" namespace content { class WebContents; class NavigationHandle; PreloadingURLMatchCallback; PredictorDomainCallback; // PreloadingPrediction and PreloadingAttempt are the preloading logging APIs // which allows us to set various metrics and log the values. // All these metrics are logged into the UKM after the page navigates or when // the WebContents is being destroyed. This API will be used by features both // inside and outside //content. // Both PreloadingPrediction and PreloadingAttempt are owned by PreloadingData // class and that is associated with WebContentsUserData. PreloadingAttempt is // cleared when either // - A WebContents is deleted/ destroyed. // - Primary page of the WebContents changes. // PreloadingAttempt keeps track of every preloading attempt associated with // various preloading features defined in preloading.h (please see the comments // there for more details); whether it is eligible, whether it is triggered or // not, specifies the failure reason on failing and others. class CONTENT_EXPORT PreloadingAttempt { … }; // PreloadingData holds the data associated with all the PreloadingAttempts // and PreloadingPredictions. This class is responsible for notifying all the // PreloadingAttempts and PreloadingPredictions about logging the UKMs and // maintaining its lifetime. // Lifetime of PreloadingData is associated with WebContentsUserData. class CONTENT_EXPORT PreloadingData { … }; } // namespace content #endif // CONTENT_PUBLIC_BROWSER_PRELOADING_DATA_H_