Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Unified Diff: chrome/browser/prerender/prerender_field_trial.cc

Issue 1048723003: [Cleanup] Remove the obsolete Prerender field trial. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove obsolete browser tests Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/prerender/prerender_browsertest.cc ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/prerender/prerender_field_trial.cc
diff --git a/chrome/browser/prerender/prerender_field_trial.cc b/chrome/browser/prerender/prerender_field_trial.cc
index 6e3dea425c5594e9f2d8d0b4197a2987df9ec37b..54d3c3801cec1c567d686fc035122ee450a3bc5c 100644
--- a/chrome/browser/prerender/prerender_field_trial.cc
+++ b/chrome/browser/prerender/prerender_field_trial.cc
@@ -6,11 +6,6 @@
#include "base/command_line.h"
#include "base/logging.h"
-#include "base/metrics/field_trial.h"
-#include "base/metrics/histogram.h"
-#include "base/prefs/pref_service.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_split.h"
#include "chrome/browser/net/prediction_options.h"
#include "chrome/browser/predictors/autocomplete_action_predictor.h"
#include "chrome/browser/prerender/prerender_manager.h"
@@ -18,224 +13,43 @@
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/browser/sync/profile_sync_service_factory.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/chrome_version_info.h"
-#include "components/metrics/metrics_service.h"
-#include "components/variations/variations_associated_data.h"
-using base::FieldTrial;
-using base::FieldTrialList;
-using base::StringToInt;
using std::string;
-using std::vector;
namespace prerender {
namespace {
-const char kDisabledGroup[] = "Disabled";
-const char kEnabledGroup[] = "Enabled";
-
-const char kLocalPredictorSpecTrialName[] = "PrerenderLocalPredictorSpec";
-const char kLocalPredictorKeyName[] = "LocalPredictor";
-const char kLocalPredictorUnencryptedSyncOnlyKeyName[] =
- "LocalPredictorUnencryptedSyncOnly";
-const char kLocalPredictorNetworkPredictionEnabledOnly[] =
- "LocalPredictorNetworkPredictionEnabledOnly";
-const char kLocalPredictorOnCellularOnly[] = "LocalPredictorOnCellularOnly";
-const char kSideEffectFreeWhitelistKeyName[] = "SideEffectFreeWhitelist";
-const char kPrerenderLaunchKeyName[] = "PrerenderLaunch";
-const char kPrerenderAlwaysControlKeyName[] = "PrerenderAlwaysControl";
-const char kPrerenderPrefetchKeyName[] = "PrerenderPrefetch";
-const char kPrerenderQueryPrerenderServiceKeyName[] =
- "PrerenderQueryPrerenderService";
-const char kPrerenderQueryPrerenderServiceCurrentURLKeyName[] =
- "PrerenderQueryPrerenderServiceCurrentURL";
-const char kPrerenderQueryPrerenderServiceCandidateURLsKeyName[] =
- "PrerenderQueryPrerenderServiceCandidateURLs";
-const char kPrerenderServiceBehaviorIDKeyName[] = "PrerenderServiceBehaviorID";
-const char kPrerenderServiceFetchTimeoutKeyName[] =
- "PrerenderServiceFetchTimeoutMs";
-const char kPrefetchListTimeoutKeyName[] = "PrefetchListTimeoutSeconds";
-const char kPrerenderTTLKeyName[] = "PrerenderTTLSeconds";
-const char kPrerenderPriorityHalfLifeTimeKeyName[] =
- "PrerenderPriorityHalfLifeTimeSeconds";
-const char kMaxConcurrentPrerenderKeyName[] = "MaxConcurrentPrerenders";
-const char kMaxLaunchPrerenderKeyName[] = "MaxLaunchPrerenders";
-const char kSkipFragment[] = "SkipFragment";
-const char kSkipHTTPS[] = "SkipHTTPS";
-const char kSkipWhitelist[] = "SkipWhitelist";
-const char kSkipServiceWhitelist[] = "SkipServiceWhitelist";
-const char kSkipLoggedIn[] = "SkipLoggedIn";
-const char kSkipDefaultNoPrerender[] = "SkipDefaultNoPrerender";
-const char kPrerenderServiceURLPrefixParameterName[] =
- "PrerenderServiceURLPrefix";
const char kDefaultPrerenderServiceURLPrefix[] =
"https://clients4.google.com/prerenderservice/?q=";
-const int kMinPrerenderServiceTimeoutMs = 1;
-const int kMaxPrerenderServiceTimeoutMs = 10000;
const int kDefaultPrerenderServiceTimeoutMs = 1000;
-const int kMinPrefetchListTimeoutSeconds = 1;
-const int kMaxPrefetchListTimeoutSeconds = 1800;
const int kDefaultPrefetchListTimeoutSeconds = 300;
-const char kSkipPrerenderLocalCanadidates[] = "SkipPrerenderLocalCandidates";
-const char kSkipPrerenderServiceCanadidates[] =
- "SkipPrerenderServiceCandidates";
-
-void SetupPrerenderFieldTrial() {
- const FieldTrial::Probability divisor = 1000;
-
- FieldTrial::Probability control_probability;
- FieldTrial::Probability experiment_multi_prerender_probability;
- FieldTrial::Probability experiment_15min_ttl_probability;
- FieldTrial::Probability experiment_no_use_probability;
- FieldTrial::Probability experiment_match_complete_probability;
-
- chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
- if (channel == chrome::VersionInfo::CHANNEL_STABLE ||
- channel == chrome::VersionInfo::CHANNEL_BETA) {
- // Use very conservatives and stable settings in beta and stable.
- const FieldTrial::Probability release_prerender_enabled_probability = 970;
- const FieldTrial::Probability release_control_probability = 10;
- const FieldTrial::Probability
- release_experiment_multi_prerender_probability = 0;
- const FieldTrial::Probability release_experiment_15min_ttl_probability = 10;
- const FieldTrial::Probability release_experiment_no_use_probability = 0;
- const FieldTrial::Probability
- release_experiment_match_complete_probability = 10;
- static_assert(
- release_prerender_enabled_probability +
- release_control_probability +
- release_experiment_multi_prerender_probability +
- release_experiment_15min_ttl_probability +
- release_experiment_no_use_probability +
- release_experiment_match_complete_probability == divisor,
- "release experiment probabilities must equal divisor");
-
- control_probability = release_control_probability;
- experiment_multi_prerender_probability =
- release_experiment_multi_prerender_probability;
- experiment_15min_ttl_probability = release_experiment_15min_ttl_probability;
- experiment_no_use_probability = release_experiment_no_use_probability;
- experiment_match_complete_probability =
- release_experiment_match_complete_probability;
- } else {
- // In testing channels, use more experiments and a larger control group to
- // improve quality of data.
- const FieldTrial::Probability dev_prerender_enabled_probability = 200;
- const FieldTrial::Probability dev_control_probability = 200;
- const FieldTrial::Probability
- dev_experiment_multi_prerender_probability = 200;
- const FieldTrial::Probability dev_experiment_15min_ttl_probability = 100;
- const FieldTrial::Probability dev_experiment_no_use_probability = 100;
- const FieldTrial::Probability
- dev_experiment_match_complete_probability = 200;
- static_assert(dev_prerender_enabled_probability +
- dev_control_probability +
- dev_experiment_multi_prerender_probability +
- dev_experiment_15min_ttl_probability +
- dev_experiment_no_use_probability +
- dev_experiment_match_complete_probability == divisor,
- "dev experiment probabilities must equal divisor");
-
- control_probability = dev_control_probability;
- experiment_multi_prerender_probability =
- dev_experiment_multi_prerender_probability;
- experiment_15min_ttl_probability = dev_experiment_15min_ttl_probability;
- experiment_no_use_probability = dev_experiment_no_use_probability;
- experiment_match_complete_probability =
- dev_experiment_match_complete_probability;
- }
-
- int prerender_enabled_group = -1;
- scoped_refptr<FieldTrial> trial(
- FieldTrialList::FactoryGetFieldTrial(
- "Prerender", divisor, "PrerenderEnabled",
- 2014, 12, 31, FieldTrial::SESSION_RANDOMIZED,
- &prerender_enabled_group));
- const int control_group =
- trial->AppendGroup("PrerenderControl",
- control_probability);
- const int experiment_multi_prerender_group =
- trial->AppendGroup("PrerenderMulti",
- experiment_multi_prerender_probability);
- const int experiment_15_min_TTL_group =
- trial->AppendGroup("Prerender15minTTL",
- experiment_15min_ttl_probability);
- const int experiment_no_use_group =
- trial->AppendGroup("PrerenderNoUse",
- experiment_no_use_probability);
- const int experiment_match_complete_group =
- trial->AppendGroup("MatchComplete",
- experiment_match_complete_probability);
-
- const int trial_group = trial->group();
- if (trial_group == prerender_enabled_group) {
- PrerenderManager::SetMode(
- PrerenderManager::PRERENDER_MODE_EXPERIMENT_PRERENDER_GROUP);
- } else if (trial_group == control_group) {
- PrerenderManager::SetMode(
- PrerenderManager::PRERENDER_MODE_EXPERIMENT_CONTROL_GROUP);
- } else if (trial_group == experiment_multi_prerender_group) {
- PrerenderManager::SetMode(
- PrerenderManager::PRERENDER_MODE_EXPERIMENT_MULTI_PRERENDER_GROUP);
- } else if (trial_group == experiment_15_min_TTL_group) {
- PrerenderManager::SetMode(
- PrerenderManager::PRERENDER_MODE_EXPERIMENT_15MIN_TTL_GROUP);
- } else if (trial_group == experiment_no_use_group) {
- PrerenderManager::SetMode(
- PrerenderManager::PRERENDER_MODE_EXPERIMENT_NO_USE_GROUP);
- } else if (trial_group == experiment_match_complete_group) {
- PrerenderManager::SetMode(
- PrerenderManager::PRERENDER_MODE_EXPERIMENT_MATCH_COMPLETE_GROUP);
- } else {
- NOTREACHED();
- }
-}
} // end namespace
void ConfigurePrerender(const base::CommandLine& command_line) {
- enum PrerenderOption {
- PRERENDER_OPTION_AUTO,
- PRERENDER_OPTION_DISABLED,
- PRERENDER_OPTION_ENABLED,
- };
-
- PrerenderOption prerender_option = PRERENDER_OPTION_AUTO;
+ PrerenderManager::PrerenderManagerMode mode =
+ PrerenderManager::PRERENDER_MODE_ENABLED;
if (command_line.HasSwitch(switches::kPrerenderMode)) {
const string switch_value =
command_line.GetSwitchValueASCII(switches::kPrerenderMode);
- if (switch_value == switches::kPrerenderModeSwitchValueAuto) {
- prerender_option = PRERENDER_OPTION_AUTO;
- } else if (switch_value == switches::kPrerenderModeSwitchValueDisabled) {
- prerender_option = PRERENDER_OPTION_DISABLED;
+ if (switch_value == switches::kPrerenderModeSwitchValueDisabled) {
+ mode = PrerenderManager::PRERENDER_MODE_DISABLED;
} else if (switch_value.empty() ||
switch_value == switches::kPrerenderModeSwitchValueEnabled) {
// The empty string means the option was provided with no value, and that
// means enable.
- prerender_option = PRERENDER_OPTION_ENABLED;
+ mode = PrerenderManager::PRERENDER_MODE_ENABLED;
} else {
- prerender_option = PRERENDER_OPTION_DISABLED;
+ mode = PrerenderManager::PRERENDER_MODE_DISABLED;
LOG(ERROR) << "Invalid --prerender option received on command line: "
<< switch_value;
LOG(ERROR) << "Disabling prerendering!";
}
}
- switch (prerender_option) {
- case PRERENDER_OPTION_AUTO:
- SetupPrerenderFieldTrial();
- break;
- case PRERENDER_OPTION_DISABLED:
- PrerenderManager::SetMode(PrerenderManager::PRERENDER_MODE_DISABLED);
- break;
- case PRERENDER_OPTION_ENABLED:
- PrerenderManager::SetMode(PrerenderManager::PRERENDER_MODE_ENABLED);
- break;
- default:
- NOTREACHED();
- }
+ PrerenderManager::SetMode(mode);
}
bool IsOmniboxEnabled(Profile* profile) {
@@ -261,31 +75,10 @@ bool IsOmniboxEnabled(Profile* profile) {
DCHECK_EQ(switches::kPrerenderFromOmniboxSwitchValueAuto, switch_value);
}
- return (FieldTrialList::FindFullName("PrerenderFromOmnibox") !=
+ return (base::FieldTrialList::FindFullName("PrerenderFromOmnibox") !=
"OmniboxPrerenderDisabled");
}
-/*
-PrerenderLocalPredictorSpec is a field trial, and its value must have the
-following format:
-key1=value1:key2=value2:key3=value3
-eg "LocalPredictor=Enabled:SideEffectFreeWhitelist=Enabled"
-The function below extracts the value corresponding to a key provided from the
-LocalPredictorSpec.
-*/
-string GetLocalPredictorSpecValue(string spec_key) {
- vector<string> elements;
- base::SplitString(FieldTrialList::FindFullName(kLocalPredictorSpecTrialName),
- ':', &elements);
- for (int i = 0; i < static_cast<int>(elements.size()); i++) {
- vector<string> key_value;
- base::SplitString(elements[i], '=', &key_value);
- if (key_value.size() == 2 && key_value[0] == spec_key)
- return key_value[1];
- }
- return string();
-}
-
bool IsUnencryptedSyncEnabled(Profile* profile) {
ProfileSyncService* service = ProfileSyncServiceFactory::GetInstance()->
GetForProfile(profile);
@@ -296,44 +89,15 @@ bool IsUnencryptedSyncEnabled(Profile* profile) {
// Indicates whether the Local Predictor is enabled based on field trial
// selection.
bool IsLocalPredictorEnabled() {
-#if defined(OS_ANDROID) || defined(OS_IOS)
return false;
-#endif
- return !base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kDisablePrerenderLocalPredictor) &&
- GetLocalPredictorSpecValue(kLocalPredictorKeyName) == kEnabledGroup;
}
bool ShouldDisableLocalPredictorBasedOnSyncAndConfiguration(Profile* profile) {
- return
- GetLocalPredictorSpecValue(kLocalPredictorUnencryptedSyncOnlyKeyName) ==
- kEnabledGroup &&
- !IsUnencryptedSyncEnabled(profile);
+ return false;
}
bool ShouldDisableLocalPredictorDueToPreferencesAndNetwork(Profile* profile) {
- bool on_cellular =
- net::NetworkChangeNotifier::IsConnectionCellular(
- net::NetworkChangeNotifier::GetConnectionType());
- // If the user is not on a cellular connection, but we require a cellular
- // connection, we must temporarily disable our local predictions.
- if (!on_cellular &&
- GetLocalPredictorSpecValue(kLocalPredictorOnCellularOnly) ==
- kEnabledGroup) {
- return true;
- }
-
- // If we don't care whether or not network prediction will actually be
- // exercised, we do not need to temporarily disable our predictions.
- if (GetLocalPredictorSpecValue(kLocalPredictorNetworkPredictionEnabledOnly) !=
- kEnabledGroup) {
- return false;
- }
-
- // We should temporarily disable iff the predictive network action would
- // not be exercised.
-
- return !chrome_browser_net::CanPrefetchAndPrerenderUI(profile->GetPrefs());
+ return false;
}
bool IsLoggedInPredictorEnabled() {
@@ -341,140 +105,98 @@ bool IsLoggedInPredictorEnabled() {
}
bool IsSideEffectFreeWhitelistEnabled() {
- return IsLocalPredictorEnabled() &&
- GetLocalPredictorSpecValue(kSideEffectFreeWhitelistKeyName) !=
- kDisabledGroup;
+ return IsLocalPredictorEnabled();
}
bool IsLocalPredictorPrerenderLaunchEnabled() {
- return GetLocalPredictorSpecValue(kPrerenderLaunchKeyName) != kDisabledGroup;
+ return true;
}
bool IsLocalPredictorPrerenderAlwaysControlEnabled() {
// If we prefetch rather than prerender, we automatically also prerender
// as a control group only.
- return (GetLocalPredictorSpecValue(kPrerenderAlwaysControlKeyName) ==
- kEnabledGroup) || IsLocalPredictorPrerenderPrefetchEnabled();
+ return IsLocalPredictorPrerenderPrefetchEnabled();
}
bool IsLocalPredictorPrerenderPrefetchEnabled() {
- return GetLocalPredictorSpecValue(kPrerenderPrefetchKeyName) ==
- kEnabledGroup;
+ return false;
}
bool ShouldQueryPrerenderService(Profile* profile) {
- return IsUnencryptedSyncEnabled(profile) &&
- GetLocalPredictorSpecValue(kPrerenderQueryPrerenderServiceKeyName) ==
- kEnabledGroup;
+ return false;
}
bool ShouldQueryPrerenderServiceForCurrentURL() {
- return GetLocalPredictorSpecValue(
- kPrerenderQueryPrerenderServiceCurrentURLKeyName) != kDisabledGroup;
+ return true;
}
bool ShouldQueryPrerenderServiceForCandidateURLs() {
- return GetLocalPredictorSpecValue(
- kPrerenderQueryPrerenderServiceCandidateURLsKeyName) != kDisabledGroup;
+ return true;
}
string GetPrerenderServiceURLPrefix() {
- string prefix = variations::GetVariationParamValue(
- kLocalPredictorSpecTrialName,
- kPrerenderServiceURLPrefixParameterName);
- return prefix.empty() ? kDefaultPrerenderServiceURLPrefix : prefix;
+ return kDefaultPrerenderServiceURLPrefix;
}
int GetPrerenderServiceBehaviorID() {
- int id;
- StringToInt(GetLocalPredictorSpecValue(kPrerenderServiceBehaviorIDKeyName),
- &id);
- // The behavior ID must be non-negative.
- return std::max(id, 0);
+ return 0;
}
int GetPrerenderServiceFetchTimeoutMs() {
- int result;
- StringToInt(GetLocalPredictorSpecValue(kPrerenderServiceFetchTimeoutKeyName),
- &result);
- // If the value is outside the valid range, use the default value.
- return (result < kMinPrerenderServiceTimeoutMs ||
- result > kMaxPrerenderServiceTimeoutMs) ?
- kDefaultPrerenderServiceTimeoutMs : result;
+ return kDefaultPrerenderServiceTimeoutMs;
}
int GetPrerenderPrefetchListTimeoutSeconds() {
- int result;
- StringToInt(GetLocalPredictorSpecValue(kPrefetchListTimeoutKeyName), &result);
- // If the value is outside the valid range, use the default value.
- return (result < kMinPrefetchListTimeoutSeconds ||
- result > kMaxPrefetchListTimeoutSeconds) ?
- kDefaultPrefetchListTimeoutSeconds : result;
+ return kDefaultPrefetchListTimeoutSeconds;
}
int GetLocalPredictorTTLSeconds() {
- int ttl;
- StringToInt(GetLocalPredictorSpecValue(kPrerenderTTLKeyName), &ttl);
- // If the value is outside of 10s or 600s, use a default value of 180s.
- return (ttl < 10 || ttl > 600) ? 180 : ttl;
+ // Use a default value of 180s.
+ return 180;
}
int GetLocalPredictorPrerenderPriorityHalfLifeTimeSeconds() {
- int half_life_time;
- StringToInt(GetLocalPredictorSpecValue(kPrerenderPriorityHalfLifeTimeKeyName),
- &half_life_time);
- // Sanity check: Ensure the half life time is non-negative.
- return std::max(half_life_time, 0);
+ return 0;
}
int GetLocalPredictorMaxConcurrentPrerenders() {
- int num_prerenders;
- StringToInt(GetLocalPredictorSpecValue(kMaxConcurrentPrerenderKeyName),
- &num_prerenders);
- // Sanity check: Ensure the number of prerenders is between 1 and 10.
- return std::min(std::max(num_prerenders, 1), 10);
+ return 1;
}
int GetLocalPredictorMaxLaunchPrerenders() {
- int num_prerenders;
- StringToInt(GetLocalPredictorSpecValue(kMaxLaunchPrerenderKeyName),
- &num_prerenders);
- // Sanity check: Ensure the number of prerenders is between 1 and 10.
- return std::min(std::max(num_prerenders, 1), 10);
+ return 1;
}
bool SkipLocalPredictorFragment() {
- return GetLocalPredictorSpecValue(kSkipFragment) == kEnabledGroup;
+ return false;
}
bool SkipLocalPredictorHTTPS() {
- return GetLocalPredictorSpecValue(kSkipHTTPS) == kEnabledGroup;
+ return false;
}
bool SkipLocalPredictorWhitelist() {
- return GetLocalPredictorSpecValue(kSkipWhitelist) == kEnabledGroup;
+ return false;
}
bool SkipLocalPredictorServiceWhitelist() {
- return GetLocalPredictorSpecValue(kSkipServiceWhitelist) == kEnabledGroup;
+ return false;
}
bool SkipLocalPredictorLoggedIn() {
- return GetLocalPredictorSpecValue(kSkipLoggedIn) == kEnabledGroup;
+ return false;
}
bool SkipLocalPredictorDefaultNoPrerender() {
- return GetLocalPredictorSpecValue(kSkipDefaultNoPrerender) == kEnabledGroup;
+ return false;
}
bool SkipLocalPredictorLocalCandidates() {
- return GetLocalPredictorSpecValue(kSkipPrerenderLocalCanadidates) ==
- kEnabledGroup;
+ return false;
}
bool SkipLocalPredictorServiceCandidates() {
- return GetLocalPredictorSpecValue(kSkipPrerenderServiceCanadidates) ==
- kEnabledGroup;
+ return false;
}
} // namespace prerender
« no previous file with comments | « chrome/browser/prerender/prerender_browsertest.cc ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698