1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/predictors/predictors_features.h"
#include "base/metrics/field_trial_params.h"
#include "build/build_config.h"
namespace features {
namespace {
constexpr base::FeatureState kFeatureEnabledOnlyOnAndroid =
BUILDFLAG(IS_ANDROID) ? base::FEATURE_ENABLED_BY_DEFAULT
: base::FEATURE_DISABLED_BY_DEFAULT;
} // namespace
// Whether local predictions should be used to make preconnect predictions.
BASE_FEATURE(kLoadingPredictorUseLocalPredictions,
"LoadingPredictorUseLocalPredictions",
base::FEATURE_ENABLED_BY_DEFAULT);
// Modifies loading predictor so that it only learns about subresources and
// origins that are high priority.
BASE_FEATURE(kLoadingOnlyLearnHighPriorityResources,
"LoadingOnlyLearnHighPriorityResources",
base::FEATURE_ENABLED_BY_DEFAULT);
// Configures the loading predictor table size and other base parameters.
BASE_FEATURE(kLoadingPredictorTableConfig,
"LoadingPredictorTableConfig",
base::FEATURE_DISABLED_BY_DEFAULT);
// Modifies loading predictor so that the predictions also contain origins of
// the redirect target of the navigation.
BASE_FEATURE(kLoadingPreconnectToRedirectTarget,
"LoadingPreconnectToRedirectTarget",
base::FEATURE_DISABLED_BY_DEFAULT);
// Modifies loading predictor so that the value of the |always_access_network|
// attribute is not used when computing the predicting score for an origin.
BASE_FEATURE(kLoadingPredictorDisregardAlwaysAccessesNetwork,
"LoadingPredictorDisregardAlwaysAccessesNetwork",
base::FEATURE_DISABLED_BY_DEFAULT);
// Modifies loading predictor so that it can also use predictions coming from
// the optimization guide.
BASE_FEATURE(kLoadingPredictorUseOptimizationGuide,
"LoadingPredictorUseOptimizationGuide",
base::FEATURE_ENABLED_BY_DEFAULT);
constexpr base::FeatureState kLoadingPredictorPrefetchDefaultFeatureState =
kFeatureEnabledOnlyOnAndroid;
// Modifies loading predictor so that it does prefetches of subresources instead
// of preconnects.
BASE_FEATURE(kLoadingPredictorPrefetch,
"LoadingPredictorPrefetch",
kLoadingPredictorPrefetchDefaultFeatureState);
// Use the kURLLoadOptionReadAndDiscardBody option to URLLoader to avoid
// unnecessarily copying response body data.
BASE_FEATURE(kLoadingPredictorPrefetchUseReadAndDiscardBody,
"LoadingPredictorPrefetchUseReadAndDiscardBody",
base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<PrefetchSubresourceType>::Option
kPrefetchSubresourceTypeParamOptions[] = {
{PrefetchSubresourceType::kAll, "all"},
{PrefetchSubresourceType::kCss, "css"},
{PrefetchSubresourceType::kJsAndCss, "js_css"}};
const base::FeatureParam<PrefetchSubresourceType>
kLoadingPredictorPrefetchSubresourceType{
&kLoadingPredictorPrefetch, "subresource_type",
PrefetchSubresourceType::kAll, &kPrefetchSubresourceTypeParamOptions};
bool ShouldUseLocalPredictions() {
return base::FeatureList::IsEnabled(kLoadingPredictorUseLocalPredictions);
}
bool ShouldUseOptimizationGuidePredictions() {
if (!base::FeatureList::IsEnabled(kLoadingPredictorUseOptimizationGuide))
return false;
return base::GetFieldTrialParamByFeatureAsBool(
kLoadingPredictorUseOptimizationGuide, "use_predictions", true);
}
bool ShouldAlwaysRetrieveOptimizationGuidePredictions() {
return base::GetFieldTrialParamByFeatureAsBool(
kLoadingPredictorUseOptimizationGuide, "always_retrieve_predictions",
false);
}
// If this is enabled, LoadingPredictor restricts the number of preconnects for
// the same destination to one.
BASE_FEATURE(kLoadingPredictorLimitPreconnectSocketCount,
"LoadingPredictorLimitPreconnectSocketCount",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kPrefetchManagerUseNetworkContextPrefetch,
"PrefetchManagerUseNetworkContextPrefetch",
base::FEATURE_DISABLED_BY_DEFAULT);
} // namespace features
|