1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/prefetch/search_prefetch/field_trial_settings.h"
6
7 #include <string>
8
9 #include "base/command_line.h"
10
11 // Enables the feature completely with a few skipped checks to make local
12 // testing easier.
13 constexpr char kSearchPrefetchServiceCommandLineFlag[] =
14 "enable-search-prefetch-service";
15
16 const base::Feature kSearchPrefetchService{"SearchPrefetchService",
17 base::FEATURE_DISABLED_BY_DEFAULT};
18
19 const base::Feature kSearchPrefetchServicePrefetching{
20 "SearchPrefetchServicePrefetching", base::FEATURE_DISABLED_BY_DEFAULT};
21
SearchPrefetchServiceIsEnabled()22 bool SearchPrefetchServiceIsEnabled() {
23 return base::CommandLine::ForCurrentProcess()->HasSwitch(
24 kSearchPrefetchServiceCommandLineFlag) ||
25 base::FeatureList::IsEnabled(kSearchPrefetchService);
26 }
27
SearchPrefetchServicePrefetchingIsEnabled()28 bool SearchPrefetchServicePrefetchingIsEnabled() {
29 return base::CommandLine::ForCurrentProcess()->HasSwitch(
30 kSearchPrefetchServiceCommandLineFlag) ||
31 base::FeatureList::IsEnabled(kSearchPrefetchServicePrefetching);
32 }
33
SearchPrefetchCachingLimit()34 base::TimeDelta SearchPrefetchCachingLimit() {
35 return base::TimeDelta::FromMilliseconds(
36 base::GetFieldTrialParamByFeatureAsInt(kSearchPrefetchServicePrefetching,
37 "prefetch_caching_limit_ms",
38 60000));
39 }
40
SearchPrefetchMaxAttemptsPerCachingDuration()41 size_t SearchPrefetchMaxAttemptsPerCachingDuration() {
42 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
43 kSearchPrefetchServiceCommandLineFlag)) {
44 return 100;
45 }
46 return base::GetFieldTrialParamByFeatureAsInt(
47 kSearchPrefetchServicePrefetching, "max_attempts_per_caching_duration",
48 2);
49 }
50
SearchPrefetchErrorBackoffDuration()51 base::TimeDelta SearchPrefetchErrorBackoffDuration() {
52 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
53 kSearchPrefetchServiceCommandLineFlag)) {
54 return base::TimeDelta::FromSeconds(1);
55 }
56 return base::TimeDelta::FromMilliseconds(
57 base::GetFieldTrialParamByFeatureAsInt(kSearchPrefetchServicePrefetching,
58 "error_backoff_duration_ms",
59 60000));
60 }
61
SearchPrefetchOnlyFetchDefaultMatch()62 bool SearchPrefetchOnlyFetchDefaultMatch() {
63 return base::GetFieldTrialParamByFeatureAsBool(
64 kSearchPrefetchServicePrefetching, "only_prefetch_default_match", false);
65 }
66
SearchPrefetchShouldCancelUneededInflightRequests()67 bool SearchPrefetchShouldCancelUneededInflightRequests() {
68 return base::GetFieldTrialParamByFeatureAsBool(
69 kSearchPrefetchServicePrefetching, "cancel_inflight_unneeded", true);
70 }
71