blob: 24bc160dc36d4d2e299c3ce26dc28d2f90143d11 [file] [log] [blame]
Taiyo Mizuhashi92119792023-09-13 07:18:031// Copyright 2023 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_FEATURES_H_
6#define CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_FEATURES_H_
7
8#include "base/feature_list.h"
Hiroki Nakagawa58104f72023-12-07 14:22:049#include "base/metrics/field_trial_params.h"
Taiyo Mizuhashi92119792023-09-13 07:18:0310#include "content/common/content_export.h"
11
Jeremy Romane77bc6c2023-12-08 07:07:3412namespace features {
Taiyo Mizuhashi92119792023-09-13 07:18:0313
Hiroki Nakagawa2de4a562023-11-20 06:48:1914CONTENT_EXPORT BASE_DECLARE_FEATURE(kPrerender2AllowActivationInBackground);
Taiyo Mizuhashi92119792023-09-13 07:18:0315
kenoss53b52ffe2024-05-28 12:16:5616CONTENT_EXPORT BASE_DECLARE_FEATURE(kPrerender2FallbackPrefetchSpecRules);
17
kenoss5cc0bcf72025-03-26 04:04:3318// Controls whether `PrefetchMatchResolver` use timeout for prefetch ahead of
19// prerender. We are going not to use timeout as it makes prerender fail. For
20// more details, see
21// https://docs.google.com/document/d/1ZP7lYrtqZL9jC2xXieNY_UBMJL1sCrfmzTB8K6v4sD4/edit?resourcekey=0-fkbeQhkT3PhBb9FnnPgnZA&tab=t.wphan8fb23kr
22CONTENT_EXPORT extern const base::FeatureParam<bool>
23 kPrerender2FallbackPrefetchUseBlockUntilHeadTimetout;
24
kenoss1eb925f2025-04-04 05:49:5625enum class Prerender2FallbackPrefetchSchedulerPolicy {
26 // Do not use `PrefetchScheduler` code path.
27 kNotUse,
28 // Prioritize prefetch ahead of prerender.
29 kPrioritize,
30 // Burst prefetch ahead of prerender.
31 kBurst,
32};
33CONTENT_EXPORT extern const base::FeatureParam<
34 Prerender2FallbackPrefetchSchedulerPolicy>
35 kPrerender2FallbackPrefetchSchedulerPolicy;
36
Hiroki Nakagawac0f3be532025-03-07 14:27:0437// This feature was used to launch Prerender2 support for No-Vary-Search header.
38// This work has finished and the old implementation was deleted. Now this flag
39// is just for injecting parameters through field trials as an umberella
40// feature.
41CONTENT_EXPORT BASE_DECLARE_FEATURE(kPrerender2NoVarySearch);
42
Takashi Nakayama978f0a152025-06-17 08:26:2543// A set of trial parameters that controls the timeout for waiting on headers
Liviu Tintab8f264f12024-06-06 20:14:1444// during navigation for the prerender URL matched by No-Vary-Search hint before
45// falling back to the default navigation path.
Takashi Nakayama978f0a152025-06-17 08:26:2546
47// This is actually for "immediate"; see https://crbug.com/40287486.
Liviu Tintab8f264f12024-06-06 20:14:1448CONTENT_EXPORT extern const base::FeatureParam<int>
49 kPrerender2NoVarySearchWaitForHeadersTimeoutEagerPrerender;
50CONTENT_EXPORT extern const base::FeatureParam<int>
51 kPrerender2NoVarySearchWaitForHeadersTimeoutModeratePrerender;
52CONTENT_EXPORT extern const base::FeatureParam<int>
53 kPrerender2NoVarySearchWaitForHeadersTimeoutConservativePrerender;
54CONTENT_EXPORT extern const base::FeatureParam<int>
55 kPrerender2NoVarySearchWaitForHeadersTimeoutForEmbedders;
56
Minoru Chikamune0e5cc5832024-07-30 04:05:1057// If enabled, suppresses prerendering on slow network.
58CONTENT_EXPORT BASE_DECLARE_FEATURE(kSuppressesPrerenderingOnSlowNetwork);
59
60CONTENT_EXPORT extern const base::FeatureParam<base::TimeDelta>
61 kSuppressesPrerenderingOnSlowNetworkThreshold;
62
Jessica Chenc473ae0a2025-04-03 02:17:2763CONTENT_EXPORT BASE_DECLARE_FEATURE(kPrerender2DisallowNonTrustworthyHttp);
64
Taiyo Mizuhashiabe1fc52025-06-23 04:00:1965// If enabled, requests the compositor warm-up (crbug.com/41496019) for
66// Immediate/non-Immediate Speculation Rules prerenders.
67CONTENT_EXPORT BASE_DECLARE_FEATURE(kPrerender2WarmUpCompositorForImmediate);
68CONTENT_EXPORT BASE_DECLARE_FEATURE(kPrerender2WarmUpCompositorForNonImmediate);
69
kenossc6492942025-04-10 19:36:3270CONTENT_EXPORT bool UsePrefetchPrerenderIntegration();
71
Jeremy Romane77bc6c2023-12-08 07:07:3472} // namespace features
Taiyo Mizuhashi92119792023-09-13 07:18:0373
74#endif // CONTENT_BROWSER_PRELOADING_PRERENDER_PRERENDER_FEATURES_H_