[net] Use scoped_ptr<> consistently in ClientSocketFactory and related code
This will make it easier to modify ClientSocketFactory et al. to support
reprioritization. This also fixes a few latent memory leaks in tests.
Make SocketStream use a ClientSocketHandle instead of
just a StreamSocket.
Rename {set,release}_socket() to {Set,Pass}Socket().
BUG=166689
[email protected], [email protected], [email protected]
Review URL: https://codereview.chromium.org/22995002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217707 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/socket/client_socket_factory.cc b/net/socket/client_socket_factory.cc
index 6d93034..a86688e3 100644
--- a/net/socket/client_socket_factory.cc
+++ b/net/socket/client_socket_factory.cc
@@ -67,23 +67,25 @@
ClearSSLSessionCache();
}
- virtual DatagramClientSocket* CreateDatagramClientSocket(
+ virtual scoped_ptr<DatagramClientSocket> CreateDatagramClientSocket(
DatagramSocket::BindType bind_type,
const RandIntCallback& rand_int_cb,
NetLog* net_log,
const NetLog::Source& source) OVERRIDE {
- return new UDPClientSocket(bind_type, rand_int_cb, net_log, source);
+ return scoped_ptr<DatagramClientSocket>(
+ new UDPClientSocket(bind_type, rand_int_cb, net_log, source));
}
- virtual StreamSocket* CreateTransportClientSocket(
+ virtual scoped_ptr<StreamSocket> CreateTransportClientSocket(
const AddressList& addresses,
NetLog* net_log,
const NetLog::Source& source) OVERRIDE {
- return new TCPClientSocket(addresses, net_log, source);
+ return scoped_ptr<StreamSocket>(
+ new TCPClientSocket(addresses, net_log, source));
}
- virtual SSLClientSocket* CreateSSLClientSocket(
- ClientSocketHandle* transport_socket,
+ virtual scoped_ptr<SSLClientSocket> CreateSSLClientSocket(
+ scoped_ptr<ClientSocketHandle> transport_socket,
const HostPortPair& host_and_port,
const SSLConfig& ssl_config,
const SSLClientSocketContext& context) OVERRIDE {
@@ -102,17 +104,19 @@
nss_task_runner = base::ThreadTaskRunnerHandle::Get();
#if defined(USE_OPENSSL)
- return new SSLClientSocketOpenSSL(transport_socket, host_and_port,
- ssl_config, context);
+ return scoped_ptr<SSLClientSocket>(
+ new SSLClientSocketOpenSSL(transport_socket.Pass(), host_and_port,
+ ssl_config, context));
#elif defined(USE_NSS) || defined(OS_MACOSX) || defined(OS_WIN)
- return new SSLClientSocketNSS(nss_task_runner.get(),
- transport_socket,
- host_and_port,
- ssl_config,
- context);
+ return scoped_ptr<SSLClientSocket>(
+ new SSLClientSocketNSS(nss_task_runner.get(),
+ transport_socket.Pass(),
+ host_and_port,
+ ssl_config,
+ context));
#else
NOTIMPLEMENTED();
- return NULL;
+ return scoped_ptr<SSLClientSocket>();
#endif
}