Chromium Code Reviews| Index: chrome/browser/predictors/resource_prefetch_common.cc |
| diff --git a/chrome/browser/predictors/resource_prefetch_common.cc b/chrome/browser/predictors/resource_prefetch_common.cc |
| index 174848d8e9f14fe856155a06a3093347ae4e4cb6..777ade3f5b55c84aea8367bfe4d35bfffc7762ed 100644 |
| --- a/chrome/browser/predictors/resource_prefetch_common.cc |
| +++ b/chrome/browser/predictors/resource_prefetch_common.cc |
| @@ -8,18 +8,31 @@ |
| #include <tuple> |
| #include "base/command_line.h" |
| +#include "base/metrics/field_trial.h" |
| #include "chrome/browser/net/prediction_options.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/sessions/session_tab_helper.h" |
| #include "chrome/common/chrome_switches.h" |
| #include "components/prefs/pref_service.h" |
| +#include "components/variations/variations_associated_data.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/web_contents.h" |
| namespace predictors { |
| +const char kSpeculativeResourcePrefetchingFeatureName[] = |
| + "SpeculativeResourcePrefetching"; |
| +const char kModeParamName[] = "mode"; |
| +const char kLearningMode[] = "learning"; |
| +const char kExternalPrefetchingMode[] = "external-prefetching"; |
| +const char kPrefetchingMode[] = "prefetching"; |
| + |
| namespace { |
| +const base::Feature kSpeculativeResourcePrefetchingFeature{ |
| + kSpeculativeResourcePrefetchingFeatureName, |
| + base::FEATURE_DISABLED_BY_DEFAULT}; |
| + |
| bool IsPrefetchingEnabledInternal(Profile* profile, int mode, int mask) { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| if ((mode & mask) == 0) |
| @@ -41,38 +54,29 @@ bool IsSpeculativeResourcePrefetchingEnabled( |
| ResourcePrefetchPredictorConfig* config) { |
| DCHECK(config); |
| - // Off the record - disabled. |
| + // Disabled for of-the-record. Policy choice, not a technical limitation. |
| if (!profile || profile->IsOffTheRecord()) |
| return false; |
| - // Enabled by command line switch. The config has the default params already |
| - // set. The command line with just enable them with the default params. |
| - if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| - switches::kSpeculativeResourcePrefetching)) { |
| - const std::string value = |
| - base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| - switches::kSpeculativeResourcePrefetching); |
| - |
| - if (value == switches::kSpeculativeResourcePrefetchingDisabled) { |
| - return false; |
| - } else if (value == switches::kSpeculativeResourcePrefetchingLearning) { |
| - config->mode |= ResourcePrefetchPredictorConfig::LEARNING; |
| - return true; |
| - } else if (value == |
| - switches::kSpeculativeResourcePrefetchingEnabledExternal) { |
| - config->mode |= ResourcePrefetchPredictorConfig::LEARNING | |
| - ResourcePrefetchPredictorConfig::PREFETCHING_FOR_EXTERNAL; |
| - return true; |
| - } else if (value == switches::kSpeculativeResourcePrefetchingEnabled) { |
| - config->mode |= |
| - ResourcePrefetchPredictorConfig::LEARNING | |
| - ResourcePrefetchPredictorConfig::PREFETCHING_FOR_NAVIGATION | |
| - ResourcePrefetchPredictorConfig::PREFETCHING_FOR_EXTERNAL; |
| - return true; |
| - } |
| + if (!base::FeatureList::IsEnabled(kSpeculativeResourcePrefetchingFeature)) |
| + return false; |
| + |
| + std::string mode_value = variations::GetVariationParamValueByFeature( |
| + kSpeculativeResourcePrefetchingFeature, kModeParamName); |
| + if (mode_value == kLearningMode) { |
| + config->mode |= ResourcePrefetchPredictorConfig::LEARNING; |
| + } else if (mode_value == kExternalPrefetchingMode) { |
| + config->mode |= ResourcePrefetchPredictorConfig::LEARNING | |
| + ResourcePrefetchPredictorConfig::PREFETCHING_FOR_EXTERNAL; |
| + } else if (mode_value == kPrefetchingMode) { |
| + config->mode |= ResourcePrefetchPredictorConfig::LEARNING | |
| + ResourcePrefetchPredictorConfig::PREFETCHING_FOR_EXTERNAL | |
| + ResourcePrefetchPredictorConfig::PREFETCHING_FOR_NAVIGATION; |
| + } else { |
| + return false; |
|
droger
2017/01/25 17:27:11
Nit:
For readability it may be better to have a re
Benoit L
2017/01/26 09:58:15
Done.
|
| } |
| - return false; |
| + return true; |
| } |
| NavigationID::NavigationID() : tab_id(-1) {} |