Index: net/quic/quic_stream_factory.cc |
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc |
index d3bf9de857fb7449ab46be24987c93778e4938a2..0acd26ed2bb5ef0b978a5d1b8015c294db6f6d4f 100644 |
--- a/net/quic/quic_stream_factory.cc |
+++ b/net/quic/quic_stream_factory.cc |
@@ -19,6 +19,8 @@ |
#include "base/thread_task_runner_handle.h" |
#include "base/values.h" |
#include "net/base/net_errors.h" |
+#include "net/base/socket_performance_watcher.h" |
+#include "net/base/socket_performance_watcher_factory.h" |
#include "net/cert/cert_verifier.h" |
#include "net/dns/host_resolver.h" |
#include "net/dns/single_request_host_resolver.h" |
@@ -558,6 +560,7 @@ QuicStreamFactory::QuicStreamFactory( |
CertPolicyEnforcer* cert_policy_enforcer, |
ChannelIDService* channel_id_service, |
TransportSecurityState* transport_security_state, |
+ const SocketPerformanceWatcherFactory* socket_performance_watcher_factory, |
QuicCryptoClientStreamFactory* quic_crypto_client_stream_factory, |
QuicRandom* random_generator, |
QuicClock* clock, |
@@ -589,6 +592,7 @@ QuicStreamFactory::QuicStreamFactory( |
random_generator_(random_generator), |
clock_(clock), |
max_packet_length_(max_packet_length), |
+ socket_performance_watcher_factory_(socket_performance_watcher_factory), |
config_(InitializeQuicConfig(connection_options)), |
supported_versions_(supported_versions), |
enable_port_selection_(enable_port_selection), |
@@ -1225,6 +1229,14 @@ int QuicStreamFactory::CreateSession(const QuicServerId& server_id, |
clock_.get(), random_generator_)); |
} |
+ // Use the factory to create a new socket performance watcher, and pass the |
+ // ownership to the QUIC connection. |
+ scoped_ptr<SocketPerformanceWatcher> socket_performance_watcher; |
+ if (socket_performance_watcher_factory_) { |
+ socket_performance_watcher = socket_performance_watcher_factory_ |
+ ->CreateUDPSocketPerformanceWatcher(); |
+ } |
+ |
QuicConnection* connection = new QuicConnection( |
connection_id, addr, helper_.get(), packet_writer_factory, |
true /* owns_writer */, Perspective::IS_CLIENT, server_id.is_https(), |
@@ -1257,7 +1269,8 @@ int QuicStreamFactory::CreateSession(const QuicServerId& server_id, |
transport_security_state_, server_info.Pass(), server_id, |
cert_verify_flags, config, &crypto_config_, |
network_connection_.GetDescription(), dns_resolution_end_time, |
- base::ThreadTaskRunnerHandle::Get().get(), net_log.net_log()); |
+ base::ThreadTaskRunnerHandle::Get().get(), net_log.net_log(), |
+ socket_performance_watcher.Pass()); |
all_sessions_[*session] = server_id; // owning pointer |