Chromium Code Reviews| Index: net/socket/ssl_client_socket_unittest.cc |
| diff --git a/net/socket/ssl_client_socket_unittest.cc b/net/socket/ssl_client_socket_unittest.cc |
| index 02dd8f042e8066a6a94d5aa99b8aad4d54062ac9..a1ba16c78342539bbdaf927e946e138f306ac6f9 100644 |
| --- a/net/socket/ssl_client_socket_unittest.cc |
| +++ b/net/socket/ssl_client_socket_unittest.cc |
| @@ -14,6 +14,7 @@ |
| #include "net/base/ssl_config_service.h" |
| #include "net/base/test_completion_callback.h" |
| #include "net/socket/client_socket_factory.h" |
| +#include "net/socket/client_socket_handle.h" |
| #include "net/socket/socket_test_util.h" |
| #include "net/socket/tcp_client_socket.h" |
| #include "net/test/test_server.h" |
| @@ -705,3 +706,38 @@ TEST_F(SSLClientSocketTest, CipherSuiteDisables) { |
| EXPECT_TRUE(LogContainsSSLConnectEndEvent(entries, -1) || |
| LogContainsSSLConnectEndEvent(entries, -2)); |
| } |
| + |
| +// When creating an SSLClientSocket, it is allowed to pass in a |
| +// ClientSocketHandle that is not obtained from a client socket pool. |
| +// Here we verify that such a simple ClientSocketHandle, not associated with any |
| +// client socket pool, can be destroyed safely. |
| +TEST_F(SSLClientSocketTest, ClientSocketHandleNotFromPool) { |
| + net::TestServer test_server(net::TestServer::TYPE_HTTPS, FilePath()); |
| + ASSERT_TRUE(test_server.Start()); |
| + |
| + net::AddressList addr; |
| + ASSERT_TRUE(test_server.GetAddressList(&addr)); |
| + |
| + TestCompletionCallback callback; |
| + net::StreamSocket* transport = new net::TCPClientSocket( |
| + addr, NULL, net::NetLog::Source()); |
| + int rv = transport->Connect(&callback); |
| + if (rv == net::ERR_IO_PENDING) |
| + rv = callback.WaitForResult(); |
| + EXPECT_EQ(net::OK, rv); |
| + |
| + net::ClientSocketHandle* socket_handle = new net::ClientSocketHandle(); |
| + socket_handle->set_socket(transport); |
| + |
| + net::SSLClientSocketContext context; |
| + context.cert_verifier = cert_verifier_.get(); |
| + scoped_ptr<net::SSLClientSocket> ssl_socket( |
| + socket_factory_->CreateSSLClientSocket( |
| + socket_handle, test_server.host_port_pair(), kDefaultSSLConfig, |
| + NULL, context)); |
| + |
| + EXPECT_FALSE(ssl_socket->IsConnected()); |
| + rv = ssl_socket->Connect(&callback); |
| + if (rv == net::ERR_IO_PENDING) |
| + rv = callback.WaitForResult(); |
| +} |
|
wtc
2011/08/15 23:58:11
Add
EXPECT_EQ(net::OK, rv);
|