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/socket/socket_test_util.h" | 5 #include "net/socket/socket_test_util.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 | 272 |
273 SSLSocketDataProvider::SSLSocketDataProvider(IoMode mode, int result) | 273 SSLSocketDataProvider::SSLSocketDataProvider(IoMode mode, int result) |
274 : connect(mode, result), | 274 : connect(mode, result), |
275 next_proto_status(SSLClientSocket::kNextProtoUnsupported), | 275 next_proto_status(SSLClientSocket::kNextProtoUnsupported), |
276 was_npn_negotiated(false), | 276 was_npn_negotiated(false), |
277 protocol_negotiated(kProtoUnknown), | 277 protocol_negotiated(kProtoUnknown), |
278 client_cert_sent(false), | 278 client_cert_sent(false), |
279 cert_request_info(NULL), | 279 cert_request_info(NULL), |
280 channel_id_sent(false), | 280 channel_id_sent(false), |
281 connection_status(0), | 281 connection_status(0), |
282 should_block_on_connect(false), | 282 should_pause_on_connect(false), |
283 is_in_session_cache(false) { | 283 is_in_session_cache(false) { |
284 SSLConnectionStatusSetVersion(SSL_CONNECTION_VERSION_TLS1_2, | 284 SSLConnectionStatusSetVersion(SSL_CONNECTION_VERSION_TLS1_2, |
285 &connection_status); | 285 &connection_status); |
286 // Set to TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 | 286 // Set to TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 |
287 SSLConnectionStatusSetCipherSuite(0xcc14, &connection_status); | 287 SSLConnectionStatusSetCipherSuite(0xcc14, &connection_status); |
288 } | 288 } |
289 | 289 |
290 SSLSocketDataProvider::~SSLSocketDataProvider() { | 290 SSLSocketDataProvider::~SSLSocketDataProvider() { |
291 } | 291 } |
292 | 292 |
(...skipping 1049 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1342 const CompletionCallback& callback) { | 1342 const CompletionCallback& callback) { |
1343 return transport_->socket()->Read(buf, buf_len, callback); | 1343 return transport_->socket()->Read(buf, buf_len, callback); |
1344 } | 1344 } |
1345 | 1345 |
1346 int MockSSLClientSocket::Write(IOBuffer* buf, int buf_len, | 1346 int MockSSLClientSocket::Write(IOBuffer* buf, int buf_len, |
1347 const CompletionCallback& callback) { | 1347 const CompletionCallback& callback) { |
1348 return transport_->socket()->Write(buf, buf_len, callback); | 1348 return transport_->socket()->Write(buf, buf_len, callback); |
1349 } | 1349 } |
1350 | 1350 |
1351 int MockSSLClientSocket::Connect(const CompletionCallback& callback) { | 1351 int MockSSLClientSocket::Connect(const CompletionCallback& callback) { |
1352 next_connect_state_ = STATE_TRANSPORT_CONNECT; | 1352 next_connect_state_ = STATE_SSL_CONNECT; |
1353 reached_connect_ = true; | 1353 reached_connect_ = true; |
1354 int rv = DoConnectLoop(OK); | 1354 int rv = DoConnectLoop(OK); |
1355 if (rv == ERR_IO_PENDING) | 1355 if (rv == ERR_IO_PENDING) |
1356 connect_callback_ = callback; | 1356 connect_callback_ = callback; |
1357 return rv; | 1357 return rv; |
1358 } | 1358 } |
1359 | 1359 |
1360 void MockSSLClientSocket::Disconnect() { | 1360 void MockSSLClientSocket::Disconnect() { |
1361 weak_factory_.InvalidateWeakPtrs(); | 1361 weak_factory_.InvalidateWeakPtrs(); |
1362 MockClientSocket::Disconnect(); | 1362 MockClientSocket::Disconnect(); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1453 | 1453 |
1454 void MockSSLClientSocket::OnReadComplete(const MockRead& data) { | 1454 void MockSSLClientSocket::OnReadComplete(const MockRead& data) { |
1455 NOTIMPLEMENTED(); | 1455 NOTIMPLEMENTED(); |
1456 } | 1456 } |
1457 | 1457 |
1458 void MockSSLClientSocket::OnConnectComplete(const MockConnect& data) { | 1458 void MockSSLClientSocket::OnConnectComplete(const MockConnect& data) { |
1459 NOTIMPLEMENTED(); | 1459 NOTIMPLEMENTED(); |
1460 } | 1460 } |
1461 | 1461 |
1462 void MockSSLClientSocket::RestartPausedConnect() { | 1462 void MockSSLClientSocket::RestartPausedConnect() { |
1463 DCHECK(data_->should_block_on_connect); | 1463 DCHECK(data_->should_pause_on_connect); |
1464 DCHECK_EQ(next_connect_state_, STATE_SSL_CONNECT_COMPLETE); | 1464 DCHECK_EQ(next_connect_state_, STATE_SSL_CONNECT_COMPLETE); |
1465 OnIOComplete(data_->connect.result); | 1465 OnIOComplete(data_->connect.result); |
1466 } | 1466 } |
1467 | 1467 |
1468 void MockSSLClientSocket::OnIOComplete(int result) { | 1468 void MockSSLClientSocket::OnIOComplete(int result) { |
1469 int rv = DoConnectLoop(result); | 1469 int rv = DoConnectLoop(result); |
1470 if (rv != ERR_IO_PENDING) | 1470 if (rv != ERR_IO_PENDING) |
1471 base::ResetAndReturn(&connect_callback_).Run(rv); | 1471 base::ResetAndReturn(&connect_callback_).Run(rv); |
1472 } | 1472 } |
1473 | 1473 |
1474 int MockSSLClientSocket::DoConnectLoop(int result) { | 1474 int MockSSLClientSocket::DoConnectLoop(int result) { |
1475 DCHECK_NE(next_connect_state_, STATE_NONE); | 1475 DCHECK_NE(next_connect_state_, STATE_NONE); |
1476 | 1476 |
1477 int rv = result; | 1477 int rv = result; |
1478 do { | 1478 do { |
1479 ConnectState state = next_connect_state_; | 1479 ConnectState state = next_connect_state_; |
1480 next_connect_state_ = STATE_NONE; | 1480 next_connect_state_ = STATE_NONE; |
1481 switch (state) { | 1481 switch (state) { |
1482 case STATE_TRANSPORT_CONNECT: | |
1483 rv = DoTransportConnect(); | |
1484 break; | |
1485 case STATE_TRANSPORT_CONNECT_COMPLETE: | |
1486 rv = DoTransportConnectComplete(rv); | |
1487 break; | |
1488 case STATE_SSL_CONNECT: | 1482 case STATE_SSL_CONNECT: |
1489 rv = DoSSLConnect(); | 1483 rv = DoSSLConnect(); |
1490 break; | 1484 break; |
1491 case STATE_SSL_CONNECT_COMPLETE: | 1485 case STATE_SSL_CONNECT_COMPLETE: |
1492 rv = DoSSLConnectComplete(rv); | 1486 rv = DoSSLConnectComplete(rv); |
1493 break; | 1487 break; |
1494 default: | 1488 default: |
1495 NOTREACHED() << "bad state"; | 1489 NOTREACHED() << "bad state"; |
1496 rv = ERR_UNEXPECTED; | 1490 rv = ERR_UNEXPECTED; |
1497 break; | 1491 break; |
1498 } | 1492 } |
1499 } while (rv != ERR_IO_PENDING && next_connect_state_ != STATE_NONE); | 1493 } while (rv != ERR_IO_PENDING && next_connect_state_ != STATE_NONE); |
1500 | 1494 |
1501 return rv; | 1495 return rv; |
1502 } | 1496 } |
1503 | 1497 |
1504 int MockSSLClientSocket::DoTransportConnect() { | |
1505 next_connect_state_ = STATE_TRANSPORT_CONNECT_COMPLETE; | |
1506 return transport_->socket()->Connect( | |
1507 base::Bind(&MockSSLClientSocket::OnIOComplete, base::Unretained(this))); | |
1508 } | |
1509 | |
1510 int MockSSLClientSocket::DoTransportConnectComplete(int result) { | |
1511 if (result == OK) | |
1512 next_connect_state_ = STATE_SSL_CONNECT; | |
1513 return result; | |
1514 } | |
1515 | |
1516 int MockSSLClientSocket::DoSSLConnect() { | 1498 int MockSSLClientSocket::DoSSLConnect() { |
1517 next_connect_state_ = STATE_SSL_CONNECT_COMPLETE; | 1499 next_connect_state_ = STATE_SSL_CONNECT_COMPLETE; |
1518 | 1500 |
1519 if (data_->should_block_on_connect) | 1501 if (data_->should_pause_on_connect) |
1520 return ERR_IO_PENDING; | 1502 return ERR_IO_PENDING; |
1521 | 1503 |
1522 if (data_->connect.mode == ASYNC) { | 1504 if (data_->connect.mode == ASYNC) { |
1523 base::MessageLoop::current()->PostTask( | 1505 base::MessageLoop::current()->PostTask( |
1524 FROM_HERE, | 1506 FROM_HERE, |
1525 base::Bind(&MockSSLClientSocket::OnIOComplete, | 1507 base::Bind(&MockSSLClientSocket::OnIOComplete, |
1526 weak_factory_.GetWeakPtr(), | 1508 weak_factory_.GetWeakPtr(), |
1527 data_->connect.result)); | 1509 data_->connect.result)); |
1528 return ERR_IO_PENDING; | 1510 return ERR_IO_PENDING; |
1529 } | 1511 } |
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1997 | 1979 |
1998 const char kSOCKS5OkRequest[] = | 1980 const char kSOCKS5OkRequest[] = |
1999 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; | 1981 { 0x05, 0x01, 0x00, 0x03, 0x04, 'h', 'o', 's', 't', 0x00, 0x50 }; |
2000 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); | 1982 const int kSOCKS5OkRequestLength = arraysize(kSOCKS5OkRequest); |
2001 | 1983 |
2002 const char kSOCKS5OkResponse[] = | 1984 const char kSOCKS5OkResponse[] = |
2003 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; | 1985 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; |
2004 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); | 1986 const int kSOCKS5OkResponseLength = arraysize(kSOCKS5OkResponse); |
2005 | 1987 |
2006 } // namespace net | 1988 } // namespace net |
OLD | NEW |