OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/quic/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/cpu.h" | 9 #include "base/cpu.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 SingleRequestHostResolver host_resolver_; | 204 SingleRequestHostResolver host_resolver_; |
205 QuicServerId server_id_; | 205 QuicServerId server_id_; |
206 bool is_post_; | 206 bool is_post_; |
207 bool was_alternate_protocol_recently_broken_; | 207 bool was_alternate_protocol_recently_broken_; |
208 scoped_ptr<QuicServerInfo> server_info_; | 208 scoped_ptr<QuicServerInfo> server_info_; |
209 const BoundNetLog net_log_; | 209 const BoundNetLog net_log_; |
210 QuicClientSession* session_; | 210 QuicClientSession* session_; |
211 CompletionCallback callback_; | 211 CompletionCallback callback_; |
212 AddressList address_list_; | 212 AddressList address_list_; |
213 base::TimeTicks disk_cache_load_start_time_; | 213 base::TimeTicks disk_cache_load_start_time_; |
| 214 base::TimeTicks dns_resolution_start_time_; |
214 base::WeakPtrFactory<Job> weak_factory_; | 215 base::WeakPtrFactory<Job> weak_factory_; |
215 DISALLOW_COPY_AND_ASSIGN(Job); | 216 DISALLOW_COPY_AND_ASSIGN(Job); |
216 }; | 217 }; |
217 | 218 |
218 QuicStreamFactory::Job::Job(QuicStreamFactory* factory, | 219 QuicStreamFactory::Job::Job(QuicStreamFactory* factory, |
219 HostResolver* host_resolver, | 220 HostResolver* host_resolver, |
220 const HostPortPair& host_port_pair, | 221 const HostPortPair& host_port_pair, |
221 bool is_https, | 222 bool is_https, |
222 bool was_alternate_protocol_recently_broken, | 223 bool was_alternate_protocol_recently_broken, |
223 PrivacyMode privacy_mode, | 224 PrivacyMode privacy_mode, |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 } | 309 } |
309 | 310 |
310 int QuicStreamFactory::Job::DoResolveHost() { | 311 int QuicStreamFactory::Job::DoResolveHost() { |
311 // Start loading the data now, and wait for it after we resolve the host. | 312 // Start loading the data now, and wait for it after we resolve the host. |
312 if (server_info_) { | 313 if (server_info_) { |
313 disk_cache_load_start_time_ = base::TimeTicks::Now(); | 314 disk_cache_load_start_time_ = base::TimeTicks::Now(); |
314 server_info_->Start(); | 315 server_info_->Start(); |
315 } | 316 } |
316 | 317 |
317 io_state_ = STATE_RESOLVE_HOST_COMPLETE; | 318 io_state_ = STATE_RESOLVE_HOST_COMPLETE; |
| 319 dns_resolution_start_time_ = base::TimeTicks::Now(); |
318 return host_resolver_.Resolve( | 320 return host_resolver_.Resolve( |
319 HostResolver::RequestInfo(server_id_.host_port_pair()), | 321 HostResolver::RequestInfo(server_id_.host_port_pair()), |
320 DEFAULT_PRIORITY, | 322 DEFAULT_PRIORITY, |
321 &address_list_, | 323 &address_list_, |
322 base::Bind(&QuicStreamFactory::Job::OnIOComplete, | 324 base::Bind(&QuicStreamFactory::Job::OnIOComplete, |
323 weak_factory_.GetWeakPtr()), | 325 weak_factory_.GetWeakPtr()), |
324 net_log_); | 326 net_log_); |
325 } | 327 } |
326 | 328 |
327 int QuicStreamFactory::Job::DoResolveHostComplete(int rv) { | 329 int QuicStreamFactory::Job::DoResolveHostComplete(int rv) { |
| 330 UMA_HISTOGRAM_TIMES("Net.QuicSession.HostResolutionTime", |
| 331 base::TimeTicks::Now() - dns_resolution_start_time_); |
328 if (rv != OK) | 332 if (rv != OK) |
329 return rv; | 333 return rv; |
330 | 334 |
331 DCHECK(!factory_->HasActiveSession(server_id_)); | 335 DCHECK(!factory_->HasActiveSession(server_id_)); |
332 | 336 |
333 // Inform the factory of this resolution, which will set up | 337 // Inform the factory of this resolution, which will set up |
334 // a session alias, if possible. | 338 // a session alias, if possible. |
335 if (factory_->OnResolution(server_id_, address_list_)) { | 339 if (factory_->OnResolution(server_id_, address_list_)) { |
336 return OK; | 340 return OK; |
337 } | 341 } |
(...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 http_server_properties_->ClearAlternateProtocol(server); | 980 http_server_properties_->ClearAlternateProtocol(server); |
977 http_server_properties_->SetAlternateProtocol( | 981 http_server_properties_->SetAlternateProtocol( |
978 server, alternate.port, alternate.protocol, 1); | 982 server, alternate.port, alternate.protocol, 1); |
979 DCHECK_EQ(QUIC, | 983 DCHECK_EQ(QUIC, |
980 http_server_properties_->GetAlternateProtocol(server).protocol); | 984 http_server_properties_->GetAlternateProtocol(server).protocol); |
981 DCHECK(http_server_properties_->WasAlternateProtocolRecentlyBroken( | 985 DCHECK(http_server_properties_->WasAlternateProtocolRecentlyBroken( |
982 server)); | 986 server)); |
983 } | 987 } |
984 | 988 |
985 } // namespace net | 989 } // namespace net |
OLD | NEW |