blob: bb661736a5b6ab7815a7a41f6ddcf2c0773e3a89 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PRELOADING_PREFETCH_CHROME_PREFETCH_MANAGER_H_
#define CHROME_BROWSER_PRELOADING_PREFETCH_CHROME_PREFETCH_MANAGER_H_
#include "content/public/browser/prefetch_handle.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
// TODO(crbug.com/379140429): Create `preloading_utils` and move this to it.
inline constexpr char kCCTMetricsSuffix[] = "ChromeCustomTabs";
// Manages all prefetch triggers from the //chrome.
class ChromePrefetchManager
: public content::WebContentsUserData<ChromePrefetchManager> {
public:
ChromePrefetchManager(const ChromePrefetchManager&) = delete;
ChromePrefetchManager& operator=(const ChromePrefetchManager&) = delete;
~ChromePrefetchManager() override;
#if BUILDFLAG(IS_ANDROID)
void StartPrefetchFromCCT(const GURL& prefetch_url,
bool use_prefetch_proxy,
const std::optional<url::Origin>& referring_origin);
#endif // BUILDFLAG(IS_ANDROID)
private:
explicit ChromePrefetchManager(content::WebContents* web_contents);
friend class content::WebContentsUserData<ChromePrefetchManager>;
std::vector<std::unique_ptr<content::PrefetchHandle>> all_prefetches_;
WEB_CONTENTS_USER_DATA_KEY_DECL();
};
#endif // CHROME_BROWSER_PRELOADING_PREFETCH_CHROME_PREFETCH_MANAGER_H_