Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: net/socket/ssl_client_socket_unittest.cc

Issue 845753002: Call EnsureNSSInit in SSLClientSocket::GetMaxSupportedSSLVersion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/socket/ssl_client_socket_openssl_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/socket/ssl_client_socket.h" 5 #include "net/socket/ssl_client_socket.h"
6 6
7 #include "base/callback_helpers.h" 7 #include "base/callback_helpers.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 27 matching lines...) Expand all
38 //----------------------------------------------------------------------------- 38 //-----------------------------------------------------------------------------
39 39
40 using testing::_; 40 using testing::_;
41 using testing::Return; 41 using testing::Return;
42 using testing::Truly; 42 using testing::Truly;
43 43
44 namespace net { 44 namespace net {
45 45
46 namespace { 46 namespace {
47 47
48 const SSLConfig kDefaultSSLConfig;
49
50 // WrappedStreamSocket is a base class that wraps an existing StreamSocket, 48 // WrappedStreamSocket is a base class that wraps an existing StreamSocket,
51 // forwarding the Socket and StreamSocket interfaces to the underlying 49 // forwarding the Socket and StreamSocket interfaces to the underlying
52 // transport. 50 // transport.
53 // This is to provide a common base class for subclasses to override specific 51 // This is to provide a common base class for subclasses to override specific
54 // StreamSocket methods for testing, while still communicating with a 'real' 52 // StreamSocket methods for testing, while still communicating with a 'real'
55 // StreamSocket. 53 // StreamSocket.
56 class WrappedStreamSocket : public StreamSocket { 54 class WrappedStreamSocket : public StreamSocket {
57 public: 55 public:
58 explicit WrappedStreamSocket(scoped_ptr<StreamSocket> transport) 56 explicit WrappedStreamSocket(scoped_ptr<StreamSocket> transport)
59 : transport_(transport.Pass()) {} 57 : transport_(transport.Pass()) {}
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 TestCompletionCallback callback; 782 TestCompletionCallback callback;
785 CapturingNetLog log; 783 CapturingNetLog log;
786 scoped_ptr<StreamSocket> transport( 784 scoped_ptr<StreamSocket> transport(
787 new TCPClientSocket(addr, &log, NetLog::Source())); 785 new TCPClientSocket(addr, &log, NetLog::Source()));
788 int rv = transport->Connect(callback.callback()); 786 int rv = transport->Connect(callback.callback());
789 if (rv == ERR_IO_PENDING) 787 if (rv == ERR_IO_PENDING)
790 rv = callback.WaitForResult(); 788 rv = callback.WaitForResult();
791 EXPECT_EQ(OK, rv); 789 EXPECT_EQ(OK, rv);
792 790
793 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 791 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
794 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 792 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
795 EXPECT_FALSE(sock->IsConnected()); 793 EXPECT_FALSE(sock->IsConnected());
796 794
797 rv = sock->Connect(callback.callback()); 795 rv = sock->Connect(callback.callback());
798 if (rv == ERR_IO_PENDING) 796 if (rv == ERR_IO_PENDING)
799 rv = callback.WaitForResult(); 797 rv = callback.WaitForResult();
800 scoped_refptr<SSLCertRequestInfo> request_info = new SSLCertRequestInfo(); 798 scoped_refptr<SSLCertRequestInfo> request_info = new SSLCertRequestInfo();
801 sock->GetSSLCertRequestInfo(request_info.get()); 799 sock->GetSSLCertRequestInfo(request_info.get());
802 sock->Disconnect(); 800 sock->Disconnect();
803 EXPECT_FALSE(sock->IsConnected()); 801 EXPECT_FALSE(sock->IsConnected());
804 EXPECT_TRUE( 802 EXPECT_TRUE(
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 TestCompletionCallback callback; 1003 TestCompletionCallback callback;
1006 CapturingNetLog log; 1004 CapturingNetLog log;
1007 scoped_ptr<StreamSocket> transport( 1005 scoped_ptr<StreamSocket> transport(
1008 new TCPClientSocket(addr, &log, NetLog::Source())); 1006 new TCPClientSocket(addr, &log, NetLog::Source()));
1009 int rv = transport->Connect(callback.callback()); 1007 int rv = transport->Connect(callback.callback());
1010 if (rv == ERR_IO_PENDING) 1008 if (rv == ERR_IO_PENDING)
1011 rv = callback.WaitForResult(); 1009 rv = callback.WaitForResult();
1012 EXPECT_EQ(OK, rv); 1010 EXPECT_EQ(OK, rv);
1013 1011
1014 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1012 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1015 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1013 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1016 1014
1017 EXPECT_FALSE(sock->IsConnected()); 1015 EXPECT_FALSE(sock->IsConnected());
1018 1016
1019 rv = sock->Connect(callback.callback()); 1017 rv = sock->Connect(callback.callback());
1020 1018
1021 CapturingNetLog::CapturedEntryList entries; 1019 CapturingNetLog::CapturedEntryList entries;
1022 log.GetEntries(&entries); 1020 log.GetEntries(&entries);
1023 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT)); 1021 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT));
1024 if (rv == ERR_IO_PENDING) 1022 if (rv == ERR_IO_PENDING)
1025 rv = callback.WaitForResult(); 1023 rv = callback.WaitForResult();
(...skipping 21 matching lines...) Expand all
1047 TestCompletionCallback callback; 1045 TestCompletionCallback callback;
1048 CapturingNetLog log; 1046 CapturingNetLog log;
1049 scoped_ptr<StreamSocket> transport( 1047 scoped_ptr<StreamSocket> transport(
1050 new TCPClientSocket(addr, &log, NetLog::Source())); 1048 new TCPClientSocket(addr, &log, NetLog::Source()));
1051 int rv = transport->Connect(callback.callback()); 1049 int rv = transport->Connect(callback.callback());
1052 if (rv == ERR_IO_PENDING) 1050 if (rv == ERR_IO_PENDING)
1053 rv = callback.WaitForResult(); 1051 rv = callback.WaitForResult();
1054 EXPECT_EQ(OK, rv); 1052 EXPECT_EQ(OK, rv);
1055 1053
1056 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1054 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1057 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1055 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1058 1056
1059 EXPECT_FALSE(sock->IsConnected()); 1057 EXPECT_FALSE(sock->IsConnected());
1060 1058
1061 rv = sock->Connect(callback.callback()); 1059 rv = sock->Connect(callback.callback());
1062 1060
1063 CapturingNetLog::CapturedEntryList entries; 1061 CapturingNetLog::CapturedEntryList entries;
1064 log.GetEntries(&entries); 1062 log.GetEntries(&entries);
1065 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT)); 1063 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT));
1066 if (rv == ERR_IO_PENDING) 1064 if (rv == ERR_IO_PENDING)
1067 rv = callback.WaitForResult(); 1065 rv = callback.WaitForResult();
(...skipping 23 matching lines...) Expand all
1091 TestCompletionCallback callback; 1089 TestCompletionCallback callback;
1092 CapturingNetLog log; 1090 CapturingNetLog log;
1093 scoped_ptr<StreamSocket> transport( 1091 scoped_ptr<StreamSocket> transport(
1094 new TCPClientSocket(addr, &log, NetLog::Source())); 1092 new TCPClientSocket(addr, &log, NetLog::Source()));
1095 int rv = transport->Connect(callback.callback()); 1093 int rv = transport->Connect(callback.callback());
1096 if (rv == ERR_IO_PENDING) 1094 if (rv == ERR_IO_PENDING)
1097 rv = callback.WaitForResult(); 1095 rv = callback.WaitForResult();
1098 EXPECT_EQ(OK, rv); 1096 EXPECT_EQ(OK, rv);
1099 1097
1100 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1098 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1101 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1099 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1102 1100
1103 EXPECT_FALSE(sock->IsConnected()); 1101 EXPECT_FALSE(sock->IsConnected());
1104 1102
1105 rv = sock->Connect(callback.callback()); 1103 rv = sock->Connect(callback.callback());
1106 1104
1107 CapturingNetLog::CapturedEntryList entries; 1105 CapturingNetLog::CapturedEntryList entries;
1108 log.GetEntries(&entries); 1106 log.GetEntries(&entries);
1109 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT)); 1107 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT));
1110 if (rv == ERR_IO_PENDING) 1108 if (rv == ERR_IO_PENDING)
1111 rv = callback.WaitForResult(); 1109 rv = callback.WaitForResult();
(...skipping 23 matching lines...) Expand all
1135 TestCompletionCallback callback; 1133 TestCompletionCallback callback;
1136 CapturingNetLog log; 1134 CapturingNetLog log;
1137 scoped_ptr<StreamSocket> transport( 1135 scoped_ptr<StreamSocket> transport(
1138 new TCPClientSocket(addr, &log, NetLog::Source())); 1136 new TCPClientSocket(addr, &log, NetLog::Source()));
1139 int rv = transport->Connect(callback.callback()); 1137 int rv = transport->Connect(callback.callback());
1140 if (rv == ERR_IO_PENDING) 1138 if (rv == ERR_IO_PENDING)
1141 rv = callback.WaitForResult(); 1139 rv = callback.WaitForResult();
1142 EXPECT_EQ(OK, rv); 1140 EXPECT_EQ(OK, rv);
1143 1141
1144 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1142 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1145 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1143 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1146 1144
1147 EXPECT_FALSE(sock->IsConnected()); 1145 EXPECT_FALSE(sock->IsConnected());
1148 1146
1149 rv = sock->Connect(callback.callback()); 1147 rv = sock->Connect(callback.callback());
1150 1148
1151 CapturingNetLog::CapturedEntryList entries; 1149 CapturingNetLog::CapturedEntryList entries;
1152 log.GetEntries(&entries); 1150 log.GetEntries(&entries);
1153 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT)); 1151 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT));
1154 if (rv == ERR_IO_PENDING) 1152 if (rv == ERR_IO_PENDING)
1155 rv = callback.WaitForResult(); 1153 rv = callback.WaitForResult();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 1191
1194 TestCompletionCallback callback; 1192 TestCompletionCallback callback;
1195 CapturingNetLog log; 1193 CapturingNetLog log;
1196 scoped_ptr<StreamSocket> transport( 1194 scoped_ptr<StreamSocket> transport(
1197 new TCPClientSocket(addr, &log, NetLog::Source())); 1195 new TCPClientSocket(addr, &log, NetLog::Source()));
1198 int rv = transport->Connect(callback.callback()); 1196 int rv = transport->Connect(callback.callback());
1199 if (rv == ERR_IO_PENDING) 1197 if (rv == ERR_IO_PENDING)
1200 rv = callback.WaitForResult(); 1198 rv = callback.WaitForResult();
1201 EXPECT_EQ(OK, rv); 1199 EXPECT_EQ(OK, rv);
1202 1200
1203 SSLConfig ssl_config = kDefaultSSLConfig; 1201 SSLConfig ssl_config;
1204 ssl_config.send_client_cert = true; 1202 ssl_config.send_client_cert = true;
1205 ssl_config.client_cert = NULL; 1203 ssl_config.client_cert = NULL;
1206 1204
1207 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1205 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1208 transport.Pass(), test_server.host_port_pair(), ssl_config)); 1206 transport.Pass(), test_server.host_port_pair(), ssl_config));
1209 1207
1210 EXPECT_FALSE(sock->IsConnected()); 1208 EXPECT_FALSE(sock->IsConnected());
1211 1209
1212 // Our test server accepts certificate-less connections. 1210 // Our test server accepts certificate-less connections.
1213 // TODO(davidben): Add a test which requires them and verify the error. 1211 // TODO(davidben): Add a test which requires them and verify the error.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1251 1249
1252 TestCompletionCallback callback; 1250 TestCompletionCallback callback;
1253 scoped_ptr<StreamSocket> transport( 1251 scoped_ptr<StreamSocket> transport(
1254 new TCPClientSocket(addr, NULL, NetLog::Source())); 1252 new TCPClientSocket(addr, NULL, NetLog::Source()));
1255 int rv = transport->Connect(callback.callback()); 1253 int rv = transport->Connect(callback.callback());
1256 if (rv == ERR_IO_PENDING) 1254 if (rv == ERR_IO_PENDING)
1257 rv = callback.WaitForResult(); 1255 rv = callback.WaitForResult();
1258 EXPECT_EQ(OK, rv); 1256 EXPECT_EQ(OK, rv);
1259 1257
1260 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1258 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1261 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1259 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1262 1260
1263 rv = sock->Connect(callback.callback()); 1261 rv = sock->Connect(callback.callback());
1264 if (rv == ERR_IO_PENDING) 1262 if (rv == ERR_IO_PENDING)
1265 rv = callback.WaitForResult(); 1263 rv = callback.WaitForResult();
1266 EXPECT_EQ(OK, rv); 1264 EXPECT_EQ(OK, rv);
1267 EXPECT_TRUE(sock->IsConnected()); 1265 EXPECT_TRUE(sock->IsConnected());
1268 1266
1269 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 1267 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
1270 scoped_refptr<IOBuffer> request_buffer( 1268 scoped_refptr<IOBuffer> request_buffer(
1271 new IOBuffer(arraysize(request_text) - 1)); 1269 new IOBuffer(arraysize(request_text) - 1));
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
1536 TestCompletionCallback callback; // Used for everything except Write. 1534 TestCompletionCallback callback; // Used for everything except Write.
1537 1535
1538 scoped_ptr<StreamSocket> transport( 1536 scoped_ptr<StreamSocket> transport(
1539 new TCPClientSocket(addr, NULL, NetLog::Source())); 1537 new TCPClientSocket(addr, NULL, NetLog::Source()));
1540 int rv = transport->Connect(callback.callback()); 1538 int rv = transport->Connect(callback.callback());
1541 if (rv == ERR_IO_PENDING) 1539 if (rv == ERR_IO_PENDING)
1542 rv = callback.WaitForResult(); 1540 rv = callback.WaitForResult();
1543 EXPECT_EQ(OK, rv); 1541 EXPECT_EQ(OK, rv);
1544 1542
1545 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1543 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1546 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1544 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1547 1545
1548 rv = sock->Connect(callback.callback()); 1546 rv = sock->Connect(callback.callback());
1549 if (rv == ERR_IO_PENDING) 1547 if (rv == ERR_IO_PENDING)
1550 rv = callback.WaitForResult(); 1548 rv = callback.WaitForResult();
1551 EXPECT_EQ(OK, rv); 1549 EXPECT_EQ(OK, rv);
1552 EXPECT_TRUE(sock->IsConnected()); 1550 EXPECT_TRUE(sock->IsConnected());
1553 1551
1554 // Issue a "hanging" Read first. 1552 // Issue a "hanging" Read first.
1555 scoped_refptr<IOBuffer> buf(new IOBuffer(4096)); 1553 scoped_refptr<IOBuffer> buf(new IOBuffer(4096));
1556 rv = sock->Read(buf.get(), 4096, callback.callback()); 1554 rv = sock->Read(buf.get(), 4096, callback.callback());
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
1814 1812
1815 TestCompletionCallback callback; 1813 TestCompletionCallback callback;
1816 scoped_ptr<StreamSocket> real_transport( 1814 scoped_ptr<StreamSocket> real_transport(
1817 new TCPClientSocket(addr, NULL, NetLog::Source())); 1815 new TCPClientSocket(addr, NULL, NetLog::Source()));
1818 scoped_ptr<SynchronousErrorStreamSocket> transport( 1816 scoped_ptr<SynchronousErrorStreamSocket> transport(
1819 new SynchronousErrorStreamSocket(real_transport.Pass())); 1817 new SynchronousErrorStreamSocket(real_transport.Pass()));
1820 int rv = callback.GetResult(transport->Connect(callback.callback())); 1818 int rv = callback.GetResult(transport->Connect(callback.callback()));
1821 EXPECT_EQ(OK, rv); 1819 EXPECT_EQ(OK, rv);
1822 1820
1823 SynchronousErrorStreamSocket* raw_transport = transport.get(); 1821 SynchronousErrorStreamSocket* raw_transport = transport.get();
1824 scoped_ptr<SSLClientSocket> sock( 1822 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1825 CreateSSLClientSocket(transport.Pass(), 1823 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1826 test_server.host_port_pair(),
1827 kDefaultSSLConfig));
1828 1824
1829 raw_transport->SetNextReadError(0); 1825 raw_transport->SetNextReadError(0);
1830 1826
1831 rv = callback.GetResult(sock->Connect(callback.callback())); 1827 rv = callback.GetResult(sock->Connect(callback.callback()));
1832 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); 1828 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv);
1833 EXPECT_FALSE(sock->IsConnected()); 1829 EXPECT_FALSE(sock->IsConnected());
1834 } 1830 }
1835 1831
1836 // Tests that SSLClientSocket cleanly returns a Read of size 0 if the 1832 // Tests that SSLClientSocket cleanly returns a Read of size 0 if the
1837 // underlying socket is cleanly closed. 1833 // underlying socket is cleanly closed.
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1932 1928
1933 TestCompletionCallback callback; 1929 TestCompletionCallback callback;
1934 scoped_ptr<StreamSocket> transport( 1930 scoped_ptr<StreamSocket> transport(
1935 new TCPClientSocket(addr, NULL, NetLog::Source())); 1931 new TCPClientSocket(addr, NULL, NetLog::Source()));
1936 int rv = transport->Connect(callback.callback()); 1932 int rv = transport->Connect(callback.callback());
1937 if (rv == ERR_IO_PENDING) 1933 if (rv == ERR_IO_PENDING)
1938 rv = callback.WaitForResult(); 1934 rv = callback.WaitForResult();
1939 EXPECT_EQ(OK, rv); 1935 EXPECT_EQ(OK, rv);
1940 1936
1941 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1937 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1942 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1938 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1943 1939
1944 rv = sock->Connect(callback.callback()); 1940 rv = sock->Connect(callback.callback());
1945 if (rv == ERR_IO_PENDING) 1941 if (rv == ERR_IO_PENDING)
1946 rv = callback.WaitForResult(); 1942 rv = callback.WaitForResult();
1947 EXPECT_EQ(OK, rv); 1943 EXPECT_EQ(OK, rv);
1948 1944
1949 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 1945 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
1950 scoped_refptr<IOBuffer> request_buffer( 1946 scoped_refptr<IOBuffer> request_buffer(
1951 new IOBuffer(arraysize(request_text) - 1)); 1947 new IOBuffer(arraysize(request_text) - 1));
1952 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 1948 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1986 1982
1987 scoped_ptr<StreamSocket> real_transport( 1983 scoped_ptr<StreamSocket> real_transport(
1988 new TCPClientSocket(addr, NULL, NetLog::Source())); 1984 new TCPClientSocket(addr, NULL, NetLog::Source()));
1989 scoped_ptr<ReadBufferingStreamSocket> transport( 1985 scoped_ptr<ReadBufferingStreamSocket> transport(
1990 new ReadBufferingStreamSocket(real_transport.Pass())); 1986 new ReadBufferingStreamSocket(real_transport.Pass()));
1991 ReadBufferingStreamSocket* raw_transport = transport.get(); 1987 ReadBufferingStreamSocket* raw_transport = transport.get();
1992 int rv = callback.GetResult(transport->Connect(callback.callback())); 1988 int rv = callback.GetResult(transport->Connect(callback.callback()));
1993 ASSERT_EQ(OK, rv); 1989 ASSERT_EQ(OK, rv);
1994 1990
1995 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 1991 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
1996 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 1992 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
1997 1993
1998 rv = callback.GetResult(sock->Connect(callback.callback())); 1994 rv = callback.GetResult(sock->Connect(callback.callback()));
1999 ASSERT_EQ(OK, rv); 1995 ASSERT_EQ(OK, rv);
2000 ASSERT_TRUE(sock->IsConnected()); 1996 ASSERT_TRUE(sock->IsConnected());
2001 1997
2002 const char request_text[] = "GET /ssl-many-small-records HTTP/1.0\r\n\r\n"; 1998 const char request_text[] = "GET /ssl-many-small-records HTTP/1.0\r\n\r\n";
2003 scoped_refptr<IOBuffer> request_buffer( 1999 scoped_refptr<IOBuffer> request_buffer(
2004 new IOBuffer(arraysize(request_text) - 1)); 2000 new IOBuffer(arraysize(request_text) - 1));
2005 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 2001 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
2006 2002
(...skipping 29 matching lines...) Expand all
2036 2032
2037 TestCompletionCallback callback; 2033 TestCompletionCallback callback;
2038 scoped_ptr<StreamSocket> transport( 2034 scoped_ptr<StreamSocket> transport(
2039 new TCPClientSocket(addr, NULL, NetLog::Source())); 2035 new TCPClientSocket(addr, NULL, NetLog::Source()));
2040 int rv = transport->Connect(callback.callback()); 2036 int rv = transport->Connect(callback.callback());
2041 if (rv == ERR_IO_PENDING) 2037 if (rv == ERR_IO_PENDING)
2042 rv = callback.WaitForResult(); 2038 rv = callback.WaitForResult();
2043 EXPECT_EQ(OK, rv); 2039 EXPECT_EQ(OK, rv);
2044 2040
2045 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2041 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2046 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 2042 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
2047 2043
2048 rv = sock->Connect(callback.callback()); 2044 rv = sock->Connect(callback.callback());
2049 if (rv == ERR_IO_PENDING) 2045 if (rv == ERR_IO_PENDING)
2050 rv = callback.WaitForResult(); 2046 rv = callback.WaitForResult();
2051 EXPECT_EQ(OK, rv); 2047 EXPECT_EQ(OK, rv);
2052 2048
2053 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 2049 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
2054 scoped_refptr<IOBuffer> request_buffer( 2050 scoped_refptr<IOBuffer> request_buffer(
2055 new IOBuffer(arraysize(request_text) - 1)); 2051 new IOBuffer(arraysize(request_text) - 1));
2056 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1); 2052 memcpy(request_buffer->data(), request_text, arraysize(request_text) - 1);
(...skipping 30 matching lines...) Expand all
2087 CapturingNetLog log; 2083 CapturingNetLog log;
2088 log.SetLogLevel(NetLog::LOG_ALL); 2084 log.SetLogLevel(NetLog::LOG_ALL);
2089 scoped_ptr<StreamSocket> transport( 2085 scoped_ptr<StreamSocket> transport(
2090 new TCPClientSocket(addr, &log, NetLog::Source())); 2086 new TCPClientSocket(addr, &log, NetLog::Source()));
2091 int rv = transport->Connect(callback.callback()); 2087 int rv = transport->Connect(callback.callback());
2092 if (rv == ERR_IO_PENDING) 2088 if (rv == ERR_IO_PENDING)
2093 rv = callback.WaitForResult(); 2089 rv = callback.WaitForResult();
2094 EXPECT_EQ(OK, rv); 2090 EXPECT_EQ(OK, rv);
2095 2091
2096 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2092 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2097 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 2093 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
2098 2094
2099 rv = sock->Connect(callback.callback()); 2095 rv = sock->Connect(callback.callback());
2100 if (rv == ERR_IO_PENDING) 2096 if (rv == ERR_IO_PENDING)
2101 rv = callback.WaitForResult(); 2097 rv = callback.WaitForResult();
2102 EXPECT_EQ(OK, rv); 2098 EXPECT_EQ(OK, rv);
2103 EXPECT_TRUE(sock->IsConnected()); 2099 EXPECT_TRUE(sock->IsConnected());
2104 2100
2105 const char request_text[] = "GET / HTTP/1.0\r\n\r\n"; 2101 const char request_text[] = "GET / HTTP/1.0\r\n\r\n";
2106 scoped_refptr<IOBuffer> request_buffer( 2102 scoped_refptr<IOBuffer> request_buffer(
2107 new IOBuffer(arraysize(request_text) - 1)); 2103 new IOBuffer(arraysize(request_text) - 1));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2173 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 2169 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
2174 2170
2175 scoped_ptr<StreamSocket> transport( 2171 scoped_ptr<StreamSocket> transport(
2176 new MockTCPClientSocket(addr, NULL, &data)); 2172 new MockTCPClientSocket(addr, NULL, &data));
2177 int rv = transport->Connect(callback.callback()); 2173 int rv = transport->Connect(callback.callback());
2178 if (rv == ERR_IO_PENDING) 2174 if (rv == ERR_IO_PENDING)
2179 rv = callback.WaitForResult(); 2175 rv = callback.WaitForResult();
2180 EXPECT_EQ(OK, rv); 2176 EXPECT_EQ(OK, rv);
2181 2177
2182 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2178 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2183 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 2179 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
2184 2180
2185 rv = sock->Connect(callback.callback()); 2181 rv = sock->Connect(callback.callback());
2186 if (rv == ERR_IO_PENDING) 2182 if (rv == ERR_IO_PENDING)
2187 rv = callback.WaitForResult(); 2183 rv = callback.WaitForResult();
2188 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, rv); 2184 EXPECT_EQ(ERR_SSL_PROTOCOL_ERROR, rv);
2189 } 2185 }
2190 2186
2191 TEST_F(SSLClientSocketTest, CipherSuiteDisables) { 2187 TEST_F(SSLClientSocketTest, CipherSuiteDisables) {
2192 // Rather than exhaustively disabling every RC4 ciphersuite defined at 2188 // Rather than exhaustively disabling every RC4 ciphersuite defined at
2193 // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml, 2189 // http://www.iana.org/assignments/tls-parameters/tls-parameters.xml,
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2278 scoped_ptr<StreamSocket> transport( 2274 scoped_ptr<StreamSocket> transport(
2279 new TCPClientSocket(addr, NULL, NetLog::Source())); 2275 new TCPClientSocket(addr, NULL, NetLog::Source()));
2280 int rv = transport->Connect(callback.callback()); 2276 int rv = transport->Connect(callback.callback());
2281 if (rv == ERR_IO_PENDING) 2277 if (rv == ERR_IO_PENDING)
2282 rv = callback.WaitForResult(); 2278 rv = callback.WaitForResult();
2283 EXPECT_EQ(OK, rv); 2279 EXPECT_EQ(OK, rv);
2284 2280
2285 scoped_ptr<ClientSocketHandle> socket_handle(new ClientSocketHandle()); 2281 scoped_ptr<ClientSocketHandle> socket_handle(new ClientSocketHandle());
2286 socket_handle->SetSocket(transport.Pass()); 2282 socket_handle->SetSocket(transport.Pass());
2287 2283
2288 scoped_ptr<SSLClientSocket> sock( 2284 scoped_ptr<SSLClientSocket> sock(socket_factory_->CreateSSLClientSocket(
2289 socket_factory_->CreateSSLClientSocket(socket_handle.Pass(), 2285 socket_handle.Pass(), test_server.host_port_pair(), SSLConfig(),
2290 test_server.host_port_pair(), 2286 context_));
2291 kDefaultSSLConfig,
2292 context_));
2293 2287
2294 EXPECT_FALSE(sock->IsConnected()); 2288 EXPECT_FALSE(sock->IsConnected());
2295 rv = sock->Connect(callback.callback()); 2289 rv = sock->Connect(callback.callback());
2296 if (rv == ERR_IO_PENDING) 2290 if (rv == ERR_IO_PENDING)
2297 rv = callback.WaitForResult(); 2291 rv = callback.WaitForResult();
2298 EXPECT_EQ(OK, rv); 2292 EXPECT_EQ(OK, rv);
2299 } 2293 }
2300 2294
2301 // Verifies that SSLClientSocket::ExportKeyingMaterial return a success 2295 // Verifies that SSLClientSocket::ExportKeyingMaterial return a success
2302 // code and different keying label results in different keying material. 2296 // code and different keying label results in different keying material.
2303 TEST_F(SSLClientSocketTest, ExportKeyingMaterial) { 2297 TEST_F(SSLClientSocketTest, ExportKeyingMaterial) {
2304 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS, 2298 SpawnedTestServer test_server(SpawnedTestServer::TYPE_HTTPS,
2305 SpawnedTestServer::kLocalhost, 2299 SpawnedTestServer::kLocalhost,
2306 base::FilePath()); 2300 base::FilePath());
2307 ASSERT_TRUE(test_server.Start()); 2301 ASSERT_TRUE(test_server.Start());
2308 2302
2309 AddressList addr; 2303 AddressList addr;
2310 ASSERT_TRUE(test_server.GetAddressList(&addr)); 2304 ASSERT_TRUE(test_server.GetAddressList(&addr));
2311 2305
2312 TestCompletionCallback callback; 2306 TestCompletionCallback callback;
2313 2307
2314 scoped_ptr<StreamSocket> transport( 2308 scoped_ptr<StreamSocket> transport(
2315 new TCPClientSocket(addr, NULL, NetLog::Source())); 2309 new TCPClientSocket(addr, NULL, NetLog::Source()));
2316 int rv = transport->Connect(callback.callback()); 2310 int rv = transport->Connect(callback.callback());
2317 if (rv == ERR_IO_PENDING) 2311 if (rv == ERR_IO_PENDING)
2318 rv = callback.WaitForResult(); 2312 rv = callback.WaitForResult();
2319 EXPECT_EQ(OK, rv); 2313 EXPECT_EQ(OK, rv);
2320 2314
2321 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2315 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2322 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 2316 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
2323 2317
2324 rv = sock->Connect(callback.callback()); 2318 rv = sock->Connect(callback.callback());
2325 if (rv == ERR_IO_PENDING) 2319 if (rv == ERR_IO_PENDING)
2326 rv = callback.WaitForResult(); 2320 rv = callback.WaitForResult();
2327 EXPECT_EQ(OK, rv); 2321 EXPECT_EQ(OK, rv);
2328 EXPECT_TRUE(sock->IsConnected()); 2322 EXPECT_TRUE(sock->IsConnected());
2329 2323
2330 const int kKeyingMaterialSize = 32; 2324 const int kKeyingMaterialSize = 32;
2331 const char* kKeyingLabel1 = "client-socket-test-1"; 2325 const char* kKeyingLabel1 = "client-socket-test-1";
2332 const char* kKeyingContext = ""; 2326 const char* kKeyingContext = "";
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2397 ASSERT_TRUE(test_server.GetAddressList(&addr)); 2391 ASSERT_TRUE(test_server.GetAddressList(&addr));
2398 2392
2399 TestCompletionCallback callback; 2393 TestCompletionCallback callback;
2400 scoped_ptr<StreamSocket> transport( 2394 scoped_ptr<StreamSocket> transport(
2401 new TCPClientSocket(addr, NULL, NetLog::Source())); 2395 new TCPClientSocket(addr, NULL, NetLog::Source()));
2402 int rv = transport->Connect(callback.callback()); 2396 int rv = transport->Connect(callback.callback());
2403 rv = callback.GetResult(rv); 2397 rv = callback.GetResult(rv);
2404 EXPECT_EQ(OK, rv); 2398 EXPECT_EQ(OK, rv);
2405 2399
2406 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2400 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2407 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 2401 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
2408 EXPECT_FALSE(sock->IsConnected()); 2402 EXPECT_FALSE(sock->IsConnected());
2409 rv = sock->Connect(callback.callback()); 2403 rv = sock->Connect(callback.callback());
2410 rv = callback.GetResult(rv); 2404 rv = callback.GetResult(rv);
2411 2405
2412 EXPECT_EQ(ERR_CERT_INVALID, rv); 2406 EXPECT_EQ(ERR_CERT_INVALID, rv);
2413 EXPECT_TRUE(sock->IsConnected()); 2407 EXPECT_TRUE(sock->IsConnected());
2414 2408
2415 // When given option CERT_CHAIN_WRONG_ROOT, SpawnedTestServer will present 2409 // When given option CERT_CHAIN_WRONG_ROOT, SpawnedTestServer will present
2416 // certs from redundant-server-chain.pem. 2410 // certs from redundant-server-chain.pem.
2417 CertificateList server_certs = 2411 CertificateList server_certs =
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2504 TestCompletionCallback callback; 2498 TestCompletionCallback callback;
2505 CapturingNetLog log; 2499 CapturingNetLog log;
2506 scoped_ptr<StreamSocket> transport( 2500 scoped_ptr<StreamSocket> transport(
2507 new TCPClientSocket(addr, &log, NetLog::Source())); 2501 new TCPClientSocket(addr, &log, NetLog::Source()));
2508 int rv = transport->Connect(callback.callback()); 2502 int rv = transport->Connect(callback.callback());
2509 if (rv == ERR_IO_PENDING) 2503 if (rv == ERR_IO_PENDING)
2510 rv = callback.WaitForResult(); 2504 rv = callback.WaitForResult();
2511 EXPECT_EQ(OK, rv); 2505 EXPECT_EQ(OK, rv);
2512 2506
2513 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2507 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2514 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 2508 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
2515 EXPECT_FALSE(sock->IsConnected()); 2509 EXPECT_FALSE(sock->IsConnected());
2516 rv = sock->Connect(callback.callback()); 2510 rv = sock->Connect(callback.callback());
2517 2511
2518 CapturingNetLog::CapturedEntryList entries; 2512 CapturingNetLog::CapturedEntryList entries;
2519 log.GetEntries(&entries); 2513 log.GetEntries(&entries);
2520 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT)); 2514 EXPECT_TRUE(LogContainsBeginEvent(entries, 5, NetLog::TYPE_SSL_CONNECT));
2521 if (rv == ERR_IO_PENDING) 2515 if (rv == ERR_IO_PENDING)
2522 rv = callback.WaitForResult(); 2516 rv = callback.WaitForResult();
2523 2517
2524 EXPECT_EQ(OK, rv); 2518 EXPECT_EQ(OK, rv);
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
2752 2746
2753 TestCompletionCallback callback; 2747 TestCompletionCallback callback;
2754 scoped_ptr<StreamSocket> transport( 2748 scoped_ptr<StreamSocket> transport(
2755 new TCPClientSocket(addr, NULL, NetLog::Source())); 2749 new TCPClientSocket(addr, NULL, NetLog::Source()));
2756 int rv = transport->Connect(callback.callback()); 2750 int rv = transport->Connect(callback.callback());
2757 if (rv == ERR_IO_PENDING) 2751 if (rv == ERR_IO_PENDING)
2758 rv = callback.WaitForResult(); 2752 rv = callback.WaitForResult();
2759 EXPECT_EQ(OK, rv); 2753 EXPECT_EQ(OK, rv);
2760 2754
2761 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2755 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2762 transport.Pass(), test_server.host_port_pair(), kDefaultSSLConfig)); 2756 transport.Pass(), test_server.host_port_pair(), SSLConfig()));
2763 2757
2764 rv = sock->Connect(callback.callback()); 2758 rv = sock->Connect(callback.callback());
2765 if (rv == ERR_IO_PENDING) 2759 if (rv == ERR_IO_PENDING)
2766 rv = callback.WaitForResult(); 2760 rv = callback.WaitForResult();
2767 EXPECT_EQ(OK, rv); 2761 EXPECT_EQ(OK, rv);
2768 2762
2769 // The socket was just connected. It should be idle because it is speaking 2763 // The socket was just connected. It should be idle because it is speaking
2770 // HTTP. Although the transport has been used for the handshake, WasEverUsed() 2764 // HTTP. Although the transport has been used for the handshake, WasEverUsed()
2771 // returns false. 2765 // returns false.
2772 EXPECT_TRUE(sock->IsConnected()); 2766 EXPECT_TRUE(sock->IsConnected());
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
2848 2842
2849 scoped_ptr<StreamSocket> transport( 2843 scoped_ptr<StreamSocket> transport(
2850 new TCPClientSocket(addr, NULL, NetLog::Source())); 2844 new TCPClientSocket(addr, NULL, NetLog::Source()));
2851 2845
2852 TestCompletionCallback callback; 2846 TestCompletionCallback callback;
2853 int rv = transport->Connect(callback.callback()); 2847 int rv = transport->Connect(callback.callback());
2854 if (rv == ERR_IO_PENDING) 2848 if (rv == ERR_IO_PENDING)
2855 rv = callback.WaitForResult(); 2849 rv = callback.WaitForResult();
2856 EXPECT_EQ(OK, rv); 2850 EXPECT_EQ(OK, rv);
2857 2851
2858 SSLConfig ssl_config = kDefaultSSLConfig; 2852 SSLConfig ssl_config;
2859 ssl_config.false_start_enabled = false; 2853 ssl_config.false_start_enabled = false;
2860 2854
2861 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2855 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2862 transport.Pass(), test_server.host_port_pair(), ssl_config)); 2856 transport.Pass(), test_server.host_port_pair(), ssl_config));
2863 2857
2864 sock->SetHandshakeCompletionCallback(base::Bind( 2858 sock->SetHandshakeCompletionCallback(base::Bind(
2865 &SSLClientSocketTest::RecordCompletedHandshake, base::Unretained(this))); 2859 &SSLClientSocketTest::RecordCompletedHandshake, base::Unretained(this)));
2866 2860
2867 rv = callback.GetResult(sock->Connect(callback.callback())); 2861 rv = callback.GetResult(sock->Connect(callback.callback()));
2868 2862
(...skipping 16 matching lines...) Expand all
2885 2879
2886 scoped_ptr<StreamSocket> transport( 2880 scoped_ptr<StreamSocket> transport(
2887 new TCPClientSocket(addr, NULL, NetLog::Source())); 2881 new TCPClientSocket(addr, NULL, NetLog::Source()));
2888 2882
2889 TestCompletionCallback callback; 2883 TestCompletionCallback callback;
2890 int rv = transport->Connect(callback.callback()); 2884 int rv = transport->Connect(callback.callback());
2891 if (rv == ERR_IO_PENDING) 2885 if (rv == ERR_IO_PENDING)
2892 rv = callback.WaitForResult(); 2886 rv = callback.WaitForResult();
2893 EXPECT_EQ(OK, rv); 2887 EXPECT_EQ(OK, rv);
2894 2888
2895 SSLConfig ssl_config = kDefaultSSLConfig; 2889 SSLConfig ssl_config;
2896 ssl_config.false_start_enabled = false; 2890 ssl_config.false_start_enabled = false;
2897 2891
2898 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket( 2892 scoped_ptr<SSLClientSocket> sock(CreateSSLClientSocket(
2899 transport.Pass(), test_server.host_port_pair(), ssl_config)); 2893 transport.Pass(), test_server.host_port_pair(), ssl_config));
2900 2894
2901 sock->SetHandshakeCompletionCallback(base::Bind( 2895 sock->SetHandshakeCompletionCallback(base::Bind(
2902 &SSLClientSocketTest::RecordCompletedHandshake, base::Unretained(this))); 2896 &SSLClientSocketTest::RecordCompletedHandshake, base::Unretained(this)));
2903 2897
2904 rv = callback.GetResult(sock->Connect(callback.callback())); 2898 rv = callback.GetResult(sock->Connect(callback.callback()));
2905 2899
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
3045 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type); 3039 EXPECT_EQ(SSLInfo::HANDSHAKE_FULL, ssl_info.handshake_type);
3046 } 3040 }
3047 3041
3048 // Connect to a server using channel id. It should allow the connection. 3042 // Connect to a server using channel id. It should allow the connection.
3049 TEST_F(SSLClientSocketChannelIDTest, SendChannelID) { 3043 TEST_F(SSLClientSocketChannelIDTest, SendChannelID) {
3050 SpawnedTestServer::SSLOptions ssl_options; 3044 SpawnedTestServer::SSLOptions ssl_options;
3051 3045
3052 ASSERT_TRUE(ConnectToTestServer(ssl_options)); 3046 ASSERT_TRUE(ConnectToTestServer(ssl_options));
3053 3047
3054 EnableChannelID(); 3048 EnableChannelID();
3055 SSLConfig ssl_config = kDefaultSSLConfig; 3049 SSLConfig ssl_config;
3056 ssl_config.channel_id_enabled = true; 3050 ssl_config.channel_id_enabled = true;
3057 3051
3058 int rv; 3052 int rv;
3059 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); 3053 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv));
3060 3054
3061 EXPECT_EQ(OK, rv); 3055 EXPECT_EQ(OK, rv);
3062 EXPECT_TRUE(sock_->IsConnected()); 3056 EXPECT_TRUE(sock_->IsConnected());
3063 EXPECT_TRUE(sock_->WasChannelIDSent()); 3057 EXPECT_TRUE(sock_->WasChannelIDSent());
3064 3058
3065 sock_->Disconnect(); 3059 sock_->Disconnect();
3066 EXPECT_FALSE(sock_->IsConnected()); 3060 EXPECT_FALSE(sock_->IsConnected());
3067 } 3061 }
3068 3062
3069 // Connect to a server using Channel ID but failing to look up the Channel 3063 // Connect to a server using Channel ID but failing to look up the Channel
3070 // ID. It should fail. 3064 // ID. It should fail.
3071 TEST_F(SSLClientSocketChannelIDTest, FailingChannelID) { 3065 TEST_F(SSLClientSocketChannelIDTest, FailingChannelID) {
3072 SpawnedTestServer::SSLOptions ssl_options; 3066 SpawnedTestServer::SSLOptions ssl_options;
3073 3067
3074 ASSERT_TRUE(ConnectToTestServer(ssl_options)); 3068 ASSERT_TRUE(ConnectToTestServer(ssl_options));
3075 3069
3076 EnableFailingChannelID(); 3070 EnableFailingChannelID();
3077 SSLConfig ssl_config = kDefaultSSLConfig; 3071 SSLConfig ssl_config;
3078 ssl_config.channel_id_enabled = true; 3072 ssl_config.channel_id_enabled = true;
3079 3073
3080 int rv; 3074 int rv;
3081 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); 3075 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv));
3082 3076
3083 // TODO(haavardm@opera.com): Due to differences in threading, Linux returns 3077 // TODO(haavardm@opera.com): Due to differences in threading, Linux returns
3084 // ERR_UNEXPECTED while Mac and Windows return ERR_PROTOCOL_ERROR. Accept all 3078 // ERR_UNEXPECTED while Mac and Windows return ERR_PROTOCOL_ERROR. Accept all
3085 // error codes for now. 3079 // error codes for now.
3086 // http://crbug.com/373670 3080 // http://crbug.com/373670
3087 EXPECT_NE(OK, rv); 3081 EXPECT_NE(OK, rv);
3088 EXPECT_FALSE(sock_->IsConnected()); 3082 EXPECT_FALSE(sock_->IsConnected());
3089 } 3083 }
3090 3084
3091 // Connect to a server using Channel ID but asynchronously failing to look up 3085 // Connect to a server using Channel ID but asynchronously failing to look up
3092 // the Channel ID. It should fail. 3086 // the Channel ID. It should fail.
3093 TEST_F(SSLClientSocketChannelIDTest, FailingChannelIDAsync) { 3087 TEST_F(SSLClientSocketChannelIDTest, FailingChannelIDAsync) {
3094 SpawnedTestServer::SSLOptions ssl_options; 3088 SpawnedTestServer::SSLOptions ssl_options;
3095 3089
3096 ASSERT_TRUE(ConnectToTestServer(ssl_options)); 3090 ASSERT_TRUE(ConnectToTestServer(ssl_options));
3097 3091
3098 EnableAsyncFailingChannelID(); 3092 EnableAsyncFailingChannelID();
3099 SSLConfig ssl_config = kDefaultSSLConfig; 3093 SSLConfig ssl_config;
3100 ssl_config.channel_id_enabled = true; 3094 ssl_config.channel_id_enabled = true;
3101 3095
3102 int rv; 3096 int rv;
3103 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv)); 3097 ASSERT_TRUE(CreateAndConnectSSLClientSocket(ssl_config, &rv));
3104 3098
3105 EXPECT_EQ(ERR_UNEXPECTED, rv); 3099 EXPECT_EQ(ERR_UNEXPECTED, rv);
3106 EXPECT_FALSE(sock_->IsConnected()); 3100 EXPECT_FALSE(sock_->IsConnected());
3107 } 3101 }
3108 3102
3109 } // namespace net 3103 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_openssl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698