Chromium Code Reviews| Index: chrome/browser/chrome_browser_main.cc |
| diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc |
| index cce078682c0229ab06e2bcdd228ec0f23924427c..875e0db6eeeebedae21c59ad39ab6505b2588898 100644 |
| --- a/chrome/browser/chrome_browser_main.cc |
| +++ b/chrome/browser/chrome_browser_main.cc |
| @@ -592,6 +592,20 @@ void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() { |
| metrics->ForceClientIdCreation(); // Needed below. |
| field_trial_list_.reset(new base::FieldTrialList(metrics->GetClientId())); |
| + // Ensure any field trials specified on the command line are initialized. |
| + // Also stop the metrics service so that we don't pollute UMA. |
|
jar (doing other things)
2012/04/06 01:41:29
I'm not sure on the ordering, but disabling UMA is
MAD
2012/04/11 02:38:08
Done.
|
| +#ifndef NDEBUG |
| + const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| + if (command_line->HasSwitch(switches::kForceFieldTestNameAndValue)) { |
| + std::string persistent = command_line->GetSwitchValueASCII( |
| + switches::kForceFieldTestNameAndValue); |
| + bool ret = base::FieldTrialList::CreateTrialsFromString(persistent); |
| + CHECK(ret) << "Invalid --" << switches::kForceFieldTestNameAndValue << |
| + " list specified."; |
| + metrics->Stop(); |
| + } |
| +#endif // NDEBUG |
| + |
| SetupFieldTrials(metrics->recording_active(), |
| local_state_->IsManagedPreference( |
| prefs::kMaxConnectionsPerProxy)); |
| @@ -613,16 +627,17 @@ void ChromeBrowserMainParts::ConnectionFieldTrial() { |
| const base::FieldTrial::Probability kConnectDivisor = 100; |
| const base::FieldTrial::Probability kConnectProbability = 1; // 1% prob. |
| - // After June 30, 2011 builds, it will always be in default group. |
| - scoped_refptr<base::FieldTrial> connect_trial( |
| - new base::FieldTrial( |
| - "ConnCountImpact", kConnectDivisor, "conn_count_6", 2011, 6, 30)); |
| - |
| // This (6) is the current default value. Having this group declared here |
| // makes it straightforward to modify |kConnectProbability| such that the same |
| // probability value will be assigned to all the other groups, while |
| // preserving the remainder of the of probability space to the default value. |
| - const int connect_6 = connect_trial->kDefaultGroupNumber; |
| + int connect_6 = -1; |
| + |
| + // After June 30, 2011 builds, it will always be in default group. |
| + scoped_refptr<base::FieldTrial> connect_trial( |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "ConnCountImpact", kConnectDivisor, "conn_count_6", &connect_6, |
| + 2011, 6, 30)); |
| const int connect_5 = connect_trial->AppendGroup("conn_count_5", |
| kConnectProbability); |
| @@ -667,10 +682,11 @@ void ChromeBrowserMainParts::SocketTimeoutFieldTrial() { |
| const base::FieldTrial::Probability kSocketTimeoutProbability = 1; |
| // After June 30, 2011 builds, it will always be in default group. |
| + int socket_timeout_10 = -1; |
| scoped_refptr<base::FieldTrial> socket_timeout_trial( |
| - new base::FieldTrial("IdleSktToImpact", kIdleSocketTimeoutDivisor, |
| - "idle_timeout_10", 2011, 6, 30)); |
| - const int socket_timeout_10 = socket_timeout_trial->kDefaultGroupNumber; |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "IdleSktToImpact", kIdleSocketTimeoutDivisor, "idle_timeout_10", |
| + &socket_timeout_10, 2011, 6, 30)); |
| const int socket_timeout_5 = |
| socket_timeout_trial->AppendGroup("idle_timeout_5", |
| @@ -700,16 +716,17 @@ void ChromeBrowserMainParts::ProxyConnectionsFieldTrial() { |
| // 25% probability |
| const base::FieldTrial::Probability kProxyConnectionProbability = 1; |
| - // After June 30, 2011 builds, it will always be in default group. |
| - scoped_refptr<base::FieldTrial> proxy_connection_trial( |
| - new base::FieldTrial("ProxyConnectionImpact", kProxyConnectionsDivisor, |
| - "proxy_connections_32", 2011, 6, 30)); |
| - |
| // This (32 connections per proxy server) is the current default value. |
| // Declaring it here allows us to easily re-assign the probability space while |
| // maintaining that the default group always has the remainder of the "share", |
| // which allows for cleaner and quicker changes down the line if needed. |
| - const int proxy_connections_32 = proxy_connection_trial->kDefaultGroupNumber; |
| + int proxy_connections_32 = -1; |
| + |
| + // After June 30, 2011 builds, it will always be in default group. |
| + scoped_refptr<base::FieldTrial> proxy_connection_trial( |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "ProxyConnectionImpact", kProxyConnectionsDivisor, |
| + "proxy_connections_32", &proxy_connections_32, 2011, 6, 30)); |
| // The number of max sockets per group cannot be greater than the max number |
| // of sockets per proxy server. We tried using 8, and it can easily |
| @@ -767,13 +784,14 @@ void ChromeBrowserMainParts::SpdyFieldTrial() { |
| base::FieldTrial::Probability flow_control_probability = 5; |
| base::FieldTrial::Probability spdy3_probability = 0; |
| + // NPN with spdy support is the default. |
| + int npn_spdy_grp = -1; |
| + |
| // After June 30, 2013 builds, it will always be in default group. |
| scoped_refptr<base::FieldTrial> trial( |
| - new base::FieldTrial( |
| - "SpdyImpact", kSpdyDivisor, "npn_with_spdy", 2013, 6, 30)); |
| - |
| - // NPN with spdy support is the default. |
| - int npn_spdy_grp = trial->kDefaultGroupNumber; |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "SpdyImpact", kSpdyDivisor, "npn_with_spdy", &npn_spdy_grp, |
| + 2013, 6, 30)); |
| // NPN with only http support, no spdy. |
| int npn_http_grp = trial->AppendGroup("npn_with_http", npnhttp_probability); |
| @@ -817,8 +835,8 @@ void ChromeBrowserMainParts::SpdyFieldTrial() { |
| // After June 30, 2013 builds, it will always be in default group |
| // (cwndDynamic). |
| scoped_refptr<base::FieldTrial> trial( |
| - new base::FieldTrial( |
| - "SpdyCwnd", kSpdyCwndDivisor, "cwndDynamic", 2013, 6, 30)); |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "SpdyCwnd", kSpdyCwndDivisor, "cwndDynamic", NULL, 2013, 6, 30)); |
| trial->AppendGroup("cwnd10", kSpdyCwnd10); |
| trial->AppendGroup("cwnd16", kSpdyCwnd16); |
| @@ -854,14 +872,15 @@ void ChromeBrowserMainParts::WarmConnectionFieldTrial() { |
| const base::FieldTrial::Probability kWarmSocketDivisor = 100; |
| const base::FieldTrial::Probability kWarmSocketProbability = 33; |
| + // Default value is USE_LAST_ACCESSED_SOCKET. |
| + int last_accessed_socket = -1; |
| + |
| // After January 30, 2013 builds, it will always be in default group. |
| scoped_refptr<base::FieldTrial> warmest_socket_trial( |
| - new base::FieldTrial( |
| + base::FieldTrialList::GetFieldTrialInstance( |
| "WarmSocketImpact", kWarmSocketDivisor, "last_accessed_socket", |
| - 2013, 1, 30)); |
| + &last_accessed_socket, 2013, 1, 30)); |
| - // Default value is USE_LAST_ACCESSED_SOCKET. |
| - const int last_accessed_socket = warmest_socket_trial->kDefaultGroupNumber; |
| const int warmest_socket = warmest_socket_trial->AppendGroup( |
| "warmest_socket", kWarmSocketProbability); |
| const int warm_socket = warmest_socket_trial->AppendGroup( |
| @@ -891,11 +910,11 @@ void ChromeBrowserMainParts::ConnectBackupJobsFieldTrial() { |
| // 1% probability. |
| const base::FieldTrial::Probability kConnectBackupJobsProbability = 1; |
| // After June 30, 2011 builds, it will always be in default group. |
| + int connect_backup_jobs_enabled = -1; |
| scoped_refptr<base::FieldTrial> trial( |
| - new base::FieldTrial("ConnnectBackupJobs", |
| - kConnectBackupJobsDivisor, "ConnectBackupJobsEnabled", 2011, 6, |
| - 30)); |
| - const int connect_backup_jobs_enabled = trial->kDefaultGroupNumber; |
| + base::FieldTrialList::GetFieldTrialInstance("ConnnectBackupJobs", |
| + kConnectBackupJobsDivisor, "ConnectBackupJobsEnabled", |
| + &connect_backup_jobs_enabled, 2011, 6, 30)); |
| trial->AppendGroup("ConnectBackupJobsDisabled", |
| kConnectBackupJobsProbability); |
| const int trial_group = trial->group(); |
| @@ -913,8 +932,9 @@ void ChromeBrowserMainParts::PredictorFieldTrial() { |
| // After June 30, 2011 builds, it will always be in default group |
| // (default_enabled_prefetch). |
| scoped_refptr<base::FieldTrial> trial( |
| - new base::FieldTrial("DnsImpact", kDivisor, |
| - "default_enabled_prefetch", 2011, 10, 30)); |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "DnsImpact", kDivisor, "default_enabled_prefetch", NULL, |
| + 2011, 10, 30)); |
| // First option is to disable prefetching completely. |
| int disabled_prefetch = trial->AppendGroup("disabled_prefetch", |
| @@ -1021,8 +1041,8 @@ void ChromeBrowserMainParts::ComodoDNSExperimentFieldTrial() { |
| // After April 15, 2012 builds, it will always be in default group. |
| scoped_refptr<base::FieldTrial> trial( |
| - new base::FieldTrial("ComodoDNSExperiment", kDivisor, |
| - "inactive", 2012, 4, 15)); |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "ComodoDNSExperiment", kDivisor, "inactive", NULL, 2012, 4, 15)); |
| const int active = trial->AppendGroup("active", kProbability); |
| @@ -1668,10 +1688,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { |
| base::FieldTrial::Probability kSDCH_DIVISOR = 1000; |
| base::FieldTrial::Probability kSDCH_DISABLE_PROBABILITY = 1; // 0.1% prob. |
| // After March 31, 2012 builds, it will always be in default group. |
| + int sdch_enabled_group = -1; |
| scoped_refptr<base::FieldTrial> sdch_trial( |
| - new base::FieldTrial("GlobalSdch", kSDCH_DIVISOR, "global_enable_sdch", |
| - 2012, 3, 31)); |
| - int sdch_enabled_group = sdch_trial->kDefaultGroupNumber; |
| + base::FieldTrialList::GetFieldTrialInstance( |
| + "GlobalSdch", kSDCH_DIVISOR, "global_enable_sdch", |
| + &sdch_enabled_group, 2012, 3, 31)); |
| sdch_trial->AppendGroup("global_disable_sdch", |
| kSDCH_DISABLE_PROBABILITY); |