Chromium Code Reviews| Index: chrome/browser/io_thread.cc |
| diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc |
| index b8b3c9000033954a6e31e17ec8dee9cba1930b1b..7f6c42a5ada5e5322d8edddc88e45ef9af1cf5f4 100644 |
| --- a/chrome/browser/io_thread.cc |
| +++ b/chrome/browser/io_thread.cc |
| @@ -116,12 +116,14 @@ class SystemURLRequestContext : public URLRequestContextWithUserAgent { |
| } |
| }; |
| -net::HostResolver* CreateGlobalHostResolver(net::NetLog* net_log) { |
| +scoped_ptr<net::HostResolver> CreateGlobalHostResolver(net::NetLog* net_log) { |
| const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| bool allow_async_dns_field_trial = true; |
| - size_t parallelism = net::HostResolver::kDefaultParallelism; |
| + net::HostResolver::Options options; |
| + options.enable_caching = true; |
| + options.max_concurrent_resolves = net::HostResolver::kDefaultParallelism; |
|
darin (slow to review)
2012/10/22 17:27:17
nit: Shouldn't the Options struct have a construct
szym
2012/10/22 17:48:43
It already does have a default constructor which d
|
| // Use the concurrency override from the command-line, if any. |
| if (command_line.HasSwitch(switches::kHostResolverParallelism)) { |
| @@ -132,13 +134,13 @@ net::HostResolver* CreateGlobalHostResolver(net::NetLog* net_log) { |
| // Parse the switch (it should be a positive integer formatted as decimal). |
| int n; |
| if (base::StringToInt(s, &n) && n > 0) { |
| - parallelism = static_cast<size_t>(n); |
| + options.max_concurrent_resolves = static_cast<size_t>(n); |
| } else { |
| LOG(ERROR) << "Invalid switch for host resolver parallelism: " << s; |
| } |
| } |
| - size_t retry_attempts = net::HostResolver::kDefaultRetryAttempts; |
| + options.max_retry_attempts = net::HostResolver::kDefaultRetryAttempts; |
|
darin (slow to review)
2012/10/22 17:27:17
ditto. seems like Options constructor should init
|
| // Use the retry attempts override from the command-line, if any. |
| if (command_line.HasSwitch(switches::kHostResolverRetryAttempts)) { |
| @@ -148,32 +150,26 @@ net::HostResolver* CreateGlobalHostResolver(net::NetLog* net_log) { |
| // Parse the switch (it should be a non-negative integer). |
| int n; |
| if (base::StringToInt(s, &n) && n >= 0) { |
| - retry_attempts = static_cast<size_t>(n); |
| + options.max_retry_attempts = static_cast<size_t>(n); |
| } else { |
| LOG(ERROR) << "Invalid switch for host resolver retry attempts: " << s; |
| } |
| } |
| - net::HostResolver* global_host_resolver = NULL; |
| - bool use_async = false; |
| + options.enable_async = false; |
| if (command_line.HasSwitch(switches::kEnableAsyncDns)) { |
| allow_async_dns_field_trial = false; |
| - use_async = true; |
| + options.enable_async = true; |
| } else if (command_line.HasSwitch(switches::kDisableAsyncDns)) { |
| allow_async_dns_field_trial = false; |
| - use_async = false; |
| + options.enable_async = false; |
| } |
| if (allow_async_dns_field_trial) |
| - use_async = chrome_browser_net::ConfigureAsyncDnsFieldTrial(); |
| - |
| - if (use_async) { |
| - global_host_resolver = |
| - net::CreateAsyncHostResolver(parallelism, retry_attempts, net_log); |
| - } else { |
| - global_host_resolver = |
| - net::CreateSystemHostResolver(parallelism, retry_attempts, net_log); |
| - } |
| + options.enable_async = chrome_browser_net::ConfigureAsyncDnsFieldTrial(); |
| + |
| + scoped_ptr<net::HostResolver> global_host_resolver( |
| + net::HostResolver::CreateSystemResolver(options, net_log)); |
| // Determine if we should disable IPv6 support. |
| if (!command_line.HasSwitch(switches::kEnableIPv6)) { |
| @@ -188,13 +184,13 @@ net::HostResolver* CreateGlobalHostResolver(net::NetLog* net_log) { |
| // rules on top of the real host resolver. This allows forwarding all requests |
| // through a designated test server. |
| if (!command_line.HasSwitch(switches::kHostResolverRules)) |
| - return global_host_resolver; |
| + return global_host_resolver.PassAs<net::HostResolver>(); |
| - net::MappedHostResolver* remapped_resolver = |
| - new net::MappedHostResolver(global_host_resolver); |
| + scoped_ptr<net::MappedHostResolver> remapped_resolver( |
| + new net::MappedHostResolver(global_host_resolver.Pass())); |
| remapped_resolver->SetRulesFromString( |
| command_line.GetSwitchValueASCII(switches::kHostResolverRules)); |
| - return remapped_resolver; |
| + return remapped_resolver.PassAs<net::HostResolver>(); |
| } |
| // TODO(willchan): Remove proxy script fetcher context since it's not necessary |
| @@ -446,8 +442,7 @@ void IOThread::Init() { |
| if (command_line.HasSwitch(switches::kDisableExtensionsHttpThrottling)) |
| network_delegate->NeverThrottleRequests(); |
| globals_->system_network_delegate.reset(network_delegate); |
| - globals_->host_resolver.reset( |
| - CreateGlobalHostResolver(net_log_)); |
| + globals_->host_resolver = CreateGlobalHostResolver(net_log_); |
| globals_->cert_verifier.reset(net::CertVerifier::CreateDefault()); |
| globals_->transport_security_state.reset(new net::TransportSecurityState()); |
| globals_->ssl_config_service = GetSSLConfigService(); |