#include "chrome/browser/optimization_guide/optimization_guide_web_contents_observer.h"
#include "base/task/single_thread_task_runner.h"
#include "chrome/browser/optimization_guide/chrome_hints_manager.h"
#include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h"
#include "chrome/browser/optimization_guide/optimization_guide_keyed_service_factory.h"
#include "chrome/browser/preloading/prefetch/no_state_prefetch/no_state_prefetch_manager_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "components/google/core/common/google_util.h"
#include "components/no_state_prefetch/browser/no_state_prefetch_manager.h"
#include "components/optimization_guide/core/hints_fetcher.h"
#include "components/optimization_guide/core/hints_processing_util.h"
#include "components/optimization_guide/core/optimization_guide_enums.h"
#include "components/optimization_guide/core/optimization_guide_features.h"
#include "components/optimization_guide/proto/hints.pb.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/web_contents.h"
namespace {
bool IsValidOptimizationGuideNavigation(
content::NavigationHandle* navigation_handle) { … }
}
OptimizationGuideWebContentsObserver::OptimizationGuideWebContentsObserver(
content::WebContents* web_contents)
: … { … }
OptimizationGuideWebContentsObserver::~OptimizationGuideWebContentsObserver() =
default;
OptimizationGuideNavigationData* OptimizationGuideWebContentsObserver::
GetOrCreateOptimizationGuideNavigationData(
content::NavigationHandle* navigation_handle) { … }
void OptimizationGuideWebContentsObserver::DidStartNavigation(
content::NavigationHandle* navigation_handle) { … }
void OptimizationGuideWebContentsObserver::DidRedirectNavigation(
content::NavigationHandle* navigation_handle) { … }
void OptimizationGuideWebContentsObserver::DidFinishNavigation(
content::NavigationHandle* navigation_handle) { … }
void OptimizationGuideWebContentsObserver::WebContentsDestroyed() { … }
void OptimizationGuideWebContentsObserver::
DocumentOnLoadCompletedInPrimaryMainFrame() { … }
void OptimizationGuideWebContentsObserver::FetchHintsUsingManager(
optimization_guide::ChromeHintsManager* hints_manager,
base::WeakPtr<content::Page> page) { … }
void OptimizationGuideWebContentsObserver::NotifyNavigationFinish(
std::unique_ptr<OptimizationGuideNavigationData> navigation_data,
const std::vector<GURL>& navigation_redirect_chain) { … }
void OptimizationGuideWebContentsObserver::FlushLastNavigationData() { … }
void OptimizationGuideWebContentsObserver::AddURLsToBatchFetchBasedOnPrediction(
std::vector<GURL> urls,
content::WebContents* web_contents) { … }
OptimizationGuideWebContentsObserver::PageData&
OptimizationGuideWebContentsObserver::GetPageData(content::Page& page) { … }
OptimizationGuideWebContentsObserver::PageData::PageData(content::Page& page)
: … { … }
OptimizationGuideWebContentsObserver::PageData::~PageData() = default;
void OptimizationGuideWebContentsObserver::PageData::InsertHintTargetUrls(
const std::vector<GURL>& urls) { … }
std::vector<GURL>
OptimizationGuideWebContentsObserver::PageData::GetHintsTargetUrls() { … }
OptimizationGuideWebContentsObserver::NavigationHandleData::
NavigationHandleData(content::NavigationHandle&) { … }
OptimizationGuideWebContentsObserver::NavigationHandleData::
~NavigationHandleData() = default;
PAGE_USER_DATA_KEY_IMPL(OptimizationGuideWebContentsObserver::PageData);
NAVIGATION_HANDLE_USER_DATA_KEY_IMPL(
OptimizationGuideWebContentsObserver::NavigationHandleData);
WEB_CONTENTS_USER_DATA_KEY_IMPL(OptimizationGuideWebContentsObserver);