| Index: chrome/browser/browser_main.cc
|
| diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc
|
| index a9063cf2e1e89871779bf08d86392be96d9ae597..be43c54debf27b8983164582fbd1e55b54699995 100644
|
| --- a/chrome/browser/browser_main.cc
|
| +++ b/chrome/browser/browser_main.cc
|
| @@ -55,7 +55,7 @@
|
| #include "chrome/browser/net/chrome_dns_cert_provenance_checker.h"
|
| #include "chrome/browser/net/chrome_dns_cert_provenance_checker_factory.h"
|
| #include "chrome/browser/net/chrome_net_log.h"
|
| -#include "chrome/browser/net/predictor.h"
|
| +#include "chrome/browser/net/predictor_api.h"
|
| #include "chrome/browser/net/sdch_dictionary_fetcher.h"
|
| #include "chrome/browser/plugin_prefs.h"
|
| #include "chrome/browser/policy/browser_policy_connector.h"
|
| @@ -1172,88 +1172,6 @@ void BrowserMainParts::ConnectBackupJobsFieldTrial() {
|
| }
|
| }
|
|
|
| -void BrowserMainParts::PredictorFieldTrial() {
|
| - const base::FieldTrial::Probability kDivisor = 1000;
|
| - // For each option (i.e., non-default), we have a fixed probability.
|
| - // 0.1% probability.
|
| - const base::FieldTrial::Probability kProbabilityPerGroup = 1;
|
| -
|
| - // 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));
|
| -
|
| - // First option is to disable prefetching completely.
|
| - int disabled_prefetch = trial->AppendGroup("disabled_prefetch",
|
| - kProbabilityPerGroup);
|
| -
|
| - // We're running two experiments at the same time. The first set of trials
|
| - // modulates the delay-time until we declare a congestion event (and purge
|
| - // our queue). The second modulates the number of concurrent resolutions
|
| - // we do at any time. Users are in exactly one trial (or the default) during
|
| - // any one run, and hence only one experiment at a time.
|
| - // Experiment 1:
|
| - // Set congestion detection at 250, 500, or 750ms, rather than the 1 second
|
| - // default.
|
| - int max_250ms_prefetch = trial->AppendGroup("max_250ms_queue_prefetch",
|
| - kProbabilityPerGroup);
|
| - int max_500ms_prefetch = trial->AppendGroup("max_500ms_queue_prefetch",
|
| - kProbabilityPerGroup);
|
| - int max_750ms_prefetch = trial->AppendGroup("max_750ms_queue_prefetch",
|
| - kProbabilityPerGroup);
|
| - // Set congestion detection at 2 seconds instead of the 1 second default.
|
| - int max_2s_prefetch = trial->AppendGroup("max_2s_queue_prefetch",
|
| - kProbabilityPerGroup);
|
| - // Experiment 2:
|
| - // Set max simultaneous resoultions to 2, 4, or 6, and scale the congestion
|
| - // limit proportionally (so we don't impact average probability of asserting
|
| - // congesion very much).
|
| - int max_2_concurrent_prefetch = trial->AppendGroup(
|
| - "max_2 concurrent_prefetch", kProbabilityPerGroup);
|
| - int max_4_concurrent_prefetch = trial->AppendGroup(
|
| - "max_4 concurrent_prefetch", kProbabilityPerGroup);
|
| - int max_6_concurrent_prefetch = trial->AppendGroup(
|
| - "max_6 concurrent_prefetch", kProbabilityPerGroup);
|
| -
|
| - if (trial->group() != disabled_prefetch) {
|
| - // Initialize the DNS prefetch system.
|
| - size_t max_parallel_resolves =
|
| - chrome_browser_net::Predictor::kMaxSpeculativeParallelResolves;
|
| - int max_queueing_delay_ms =
|
| - chrome_browser_net::Predictor::kMaxSpeculativeResolveQueueDelayMs;
|
| -
|
| - if (trial->group() == max_2_concurrent_prefetch)
|
| - max_parallel_resolves = 2;
|
| - else if (trial->group() == max_4_concurrent_prefetch)
|
| - max_parallel_resolves = 4;
|
| - else if (trial->group() == max_6_concurrent_prefetch)
|
| - max_parallel_resolves = 6;
|
| - chrome_browser_net::Predictor::set_max_parallel_resolves(
|
| - max_parallel_resolves);
|
| -
|
| - if (trial->group() == max_250ms_prefetch) {
|
| - max_queueing_delay_ms =
|
| - (250 * chrome_browser_net::Predictor::kTypicalSpeculativeGroupSize) /
|
| - max_parallel_resolves;
|
| - } else if (trial->group() == max_500ms_prefetch) {
|
| - max_queueing_delay_ms =
|
| - (500 * chrome_browser_net::Predictor::kTypicalSpeculativeGroupSize) /
|
| - max_parallel_resolves;
|
| - } else if (trial->group() == max_750ms_prefetch) {
|
| - max_queueing_delay_ms =
|
| - (750 * chrome_browser_net::Predictor::kTypicalSpeculativeGroupSize) /
|
| - max_parallel_resolves;
|
| - } else if (trial->group() == max_2s_prefetch) {
|
| - max_queueing_delay_ms =
|
| - (2000 * chrome_browser_net::Predictor::kTypicalSpeculativeGroupSize) /
|
| - max_parallel_resolves;
|
| - }
|
| - chrome_browser_net::Predictor::set_max_queueing_delay(
|
| - max_queueing_delay_ms);
|
| - }
|
| -}
|
| -
|
| // Test the impact on subsequent Google searches of getting suggestions from
|
| // www.google.TLD instead of clients1.google.TLD.
|
| void BrowserMainParts::SuggestPrefixFieldTrial() {
|
| @@ -1354,7 +1272,6 @@ void BrowserMainParts::SetupFieldTrials(bool metrics_recording_enabled,
|
| ConnectBackupJobsFieldTrial();
|
| SuggestPrefixFieldTrial();
|
| WarmConnectionFieldTrial();
|
| - PredictorFieldTrial();
|
| }
|
|
|
| // -----------------------------------------------------------------------------
|
| @@ -1927,6 +1844,20 @@ int BrowserMain(const MainFunctionParams& parameters) {
|
| RegisterApplicationRestart(parsed_command_line);
|
| #endif // OS_WIN
|
|
|
| + // Initialize and maintain network predictor module, which handles DNS
|
| + // pre-resolution, as well as TCP/IP connection pre-warming.
|
| + // This also registers an observer to discard data when closing incognito
|
| + // mode.
|
| + bool preconnect_enabled = true; // Default status (easy to change!).
|
| + if (parsed_command_line.HasSwitch(switches::kDisablePreconnect))
|
| + preconnect_enabled = false;
|
| + else if (parsed_command_line.HasSwitch(switches::kEnablePreconnect))
|
| + preconnect_enabled = true;
|
| + chrome_browser_net::PredictorInit dns_prefetch(
|
| + user_prefs,
|
| + local_state,
|
| + preconnect_enabled);
|
| +
|
| #if defined(OS_WIN)
|
| base::win::ScopedCOMInitializer com_initializer;
|
|
|
|
|