| 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/http/http_stream_factory_impl.h" | 5 #include "net/http/http_stream_factory_impl.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 session_deps.host_resolver.get(), | 443 session_deps.host_resolver.get(), |
| 444 session_deps.cert_verifier.get()); | 444 session_deps.cert_verifier.get()); |
| 445 CapturePreconnectsSSLSocketPool* ssl_conn_pool = | 445 CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| 446 new CapturePreconnectsSSLSocketPool( | 446 new CapturePreconnectsSSLSocketPool( |
| 447 session_deps.host_resolver.get(), | 447 session_deps.host_resolver.get(), |
| 448 session_deps.cert_verifier.get()); | 448 session_deps.cert_verifier.get()); |
| 449 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 449 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| 450 new MockClientSocketPoolManager); | 450 new MockClientSocketPoolManager); |
| 451 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); | 451 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| 452 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); | 452 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); |
| 453 peer.SetClientSocketPoolManager( | 453 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); |
| 454 mock_pool_manager.PassAs<ClientSocketPoolManager>()); | |
| 455 PreconnectHelper(kTests[i], session.get()); | 454 PreconnectHelper(kTests[i], session.get()); |
| 456 if (kTests[i].ssl) | 455 if (kTests[i].ssl) |
| 457 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); | 456 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); |
| 458 else | 457 else |
| 459 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams()); | 458 EXPECT_EQ(kTests[i].num_streams, transport_conn_pool->last_num_streams()); |
| 460 } | 459 } |
| 461 } | 460 } |
| 462 | 461 |
| 463 TEST_P(HttpStreamFactoryTest, PreconnectHttpProxy) { | 462 TEST_P(HttpStreamFactoryTest, PreconnectHttpProxy) { |
| 464 for (size_t i = 0; i < arraysize(kTests); ++i) { | 463 for (size_t i = 0; i < arraysize(kTests); ++i) { |
| 465 SpdySessionDependencies session_deps( | 464 SpdySessionDependencies session_deps( |
| 466 GetParam(), ProxyService::CreateFixed("http_proxy")); | 465 GetParam(), ProxyService::CreateFixed("http_proxy")); |
| 467 scoped_refptr<HttpNetworkSession> session( | 466 scoped_refptr<HttpNetworkSession> session( |
| 468 SpdySessionDependencies::SpdyCreateSession(&session_deps)); | 467 SpdySessionDependencies::SpdyCreateSession(&session_deps)); |
| 469 HttpNetworkSessionPeer peer(session); | 468 HttpNetworkSessionPeer peer(session); |
| 470 HostPortPair proxy_host("http_proxy", 80); | 469 HostPortPair proxy_host("http_proxy", 80); |
| 471 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = | 470 CapturePreconnectsHttpProxySocketPool* http_proxy_pool = |
| 472 new CapturePreconnectsHttpProxySocketPool( | 471 new CapturePreconnectsHttpProxySocketPool( |
| 473 session_deps.host_resolver.get(), | 472 session_deps.host_resolver.get(), |
| 474 session_deps.cert_verifier.get()); | 473 session_deps.cert_verifier.get()); |
| 475 CapturePreconnectsSSLSocketPool* ssl_conn_pool = | 474 CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| 476 new CapturePreconnectsSSLSocketPool( | 475 new CapturePreconnectsSSLSocketPool( |
| 477 session_deps.host_resolver.get(), | 476 session_deps.host_resolver.get(), |
| 478 session_deps.cert_verifier.get()); | 477 session_deps.cert_verifier.get()); |
| 479 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 478 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| 480 new MockClientSocketPoolManager); | 479 new MockClientSocketPoolManager); |
| 481 mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool); | 480 mock_pool_manager->SetSocketPoolForHTTPProxy(proxy_host, http_proxy_pool); |
| 482 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); | 481 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); |
| 483 peer.SetClientSocketPoolManager( | 482 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); |
| 484 mock_pool_manager.PassAs<ClientSocketPoolManager>()); | |
| 485 PreconnectHelper(kTests[i], session.get()); | 483 PreconnectHelper(kTests[i], session.get()); |
| 486 if (kTests[i].ssl) | 484 if (kTests[i].ssl) |
| 487 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); | 485 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); |
| 488 else | 486 else |
| 489 EXPECT_EQ(kTests[i].num_streams, http_proxy_pool->last_num_streams()); | 487 EXPECT_EQ(kTests[i].num_streams, http_proxy_pool->last_num_streams()); |
| 490 } | 488 } |
| 491 } | 489 } |
| 492 | 490 |
| 493 TEST_P(HttpStreamFactoryTest, PreconnectSocksProxy) { | 491 TEST_P(HttpStreamFactoryTest, PreconnectSocksProxy) { |
| 494 for (size_t i = 0; i < arraysize(kTests); ++i) { | 492 for (size_t i = 0; i < arraysize(kTests); ++i) { |
| 495 SpdySessionDependencies session_deps( | 493 SpdySessionDependencies session_deps( |
| 496 GetParam(), ProxyService::CreateFixed("socks4://socks_proxy:1080")); | 494 GetParam(), ProxyService::CreateFixed("socks4://socks_proxy:1080")); |
| 497 scoped_refptr<HttpNetworkSession> session( | 495 scoped_refptr<HttpNetworkSession> session( |
| 498 SpdySessionDependencies::SpdyCreateSession(&session_deps)); | 496 SpdySessionDependencies::SpdyCreateSession(&session_deps)); |
| 499 HttpNetworkSessionPeer peer(session); | 497 HttpNetworkSessionPeer peer(session); |
| 500 HostPortPair proxy_host("socks_proxy", 1080); | 498 HostPortPair proxy_host("socks_proxy", 1080); |
| 501 CapturePreconnectsSOCKSSocketPool* socks_proxy_pool = | 499 CapturePreconnectsSOCKSSocketPool* socks_proxy_pool = |
| 502 new CapturePreconnectsSOCKSSocketPool( | 500 new CapturePreconnectsSOCKSSocketPool( |
| 503 session_deps.host_resolver.get(), | 501 session_deps.host_resolver.get(), |
| 504 session_deps.cert_verifier.get()); | 502 session_deps.cert_verifier.get()); |
| 505 CapturePreconnectsSSLSocketPool* ssl_conn_pool = | 503 CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| 506 new CapturePreconnectsSSLSocketPool( | 504 new CapturePreconnectsSSLSocketPool( |
| 507 session_deps.host_resolver.get(), | 505 session_deps.host_resolver.get(), |
| 508 session_deps.cert_verifier.get()); | 506 session_deps.cert_verifier.get()); |
| 509 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 507 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| 510 new MockClientSocketPoolManager); | 508 new MockClientSocketPoolManager); |
| 511 mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_proxy_pool); | 509 mock_pool_manager->SetSocketPoolForSOCKSProxy(proxy_host, socks_proxy_pool); |
| 512 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); | 510 mock_pool_manager->SetSocketPoolForSSLWithProxy(proxy_host, ssl_conn_pool); |
| 513 peer.SetClientSocketPoolManager( | 511 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); |
| 514 mock_pool_manager.PassAs<ClientSocketPoolManager>()); | |
| 515 PreconnectHelper(kTests[i], session.get()); | 512 PreconnectHelper(kTests[i], session.get()); |
| 516 if (kTests[i].ssl) | 513 if (kTests[i].ssl) |
| 517 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); | 514 EXPECT_EQ(kTests[i].num_streams, ssl_conn_pool->last_num_streams()); |
| 518 else | 515 else |
| 519 EXPECT_EQ(kTests[i].num_streams, socks_proxy_pool->last_num_streams()); | 516 EXPECT_EQ(kTests[i].num_streams, socks_proxy_pool->last_num_streams()); |
| 520 } | 517 } |
| 521 } | 518 } |
| 522 | 519 |
| 523 TEST_P(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) { | 520 TEST_P(HttpStreamFactoryTest, PreconnectDirectWithExistingSpdySession) { |
| 524 for (size_t i = 0; i < arraysize(kTests); ++i) { | 521 for (size_t i = 0; i < arraysize(kTests); ++i) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 539 session_deps.host_resolver.get(), | 536 session_deps.host_resolver.get(), |
| 540 session_deps.cert_verifier.get()); | 537 session_deps.cert_verifier.get()); |
| 541 CapturePreconnectsSSLSocketPool* ssl_conn_pool = | 538 CapturePreconnectsSSLSocketPool* ssl_conn_pool = |
| 542 new CapturePreconnectsSSLSocketPool( | 539 new CapturePreconnectsSSLSocketPool( |
| 543 session_deps.host_resolver.get(), | 540 session_deps.host_resolver.get(), |
| 544 session_deps.cert_verifier.get()); | 541 session_deps.cert_verifier.get()); |
| 545 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 542 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| 546 new MockClientSocketPoolManager); | 543 new MockClientSocketPoolManager); |
| 547 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); | 544 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| 548 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); | 545 mock_pool_manager->SetSSLSocketPool(ssl_conn_pool); |
| 549 peer.SetClientSocketPoolManager( | 546 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); |
| 550 mock_pool_manager.PassAs<ClientSocketPoolManager>()); | |
| 551 PreconnectHelper(kTests[i], session.get()); | 547 PreconnectHelper(kTests[i], session.get()); |
| 552 // We shouldn't be preconnecting if we have an existing session, which is | 548 // We shouldn't be preconnecting if we have an existing session, which is |
| 553 // the case for https://www.google.com. | 549 // the case for https://www.google.com. |
| 554 if (kTests[i].ssl) | 550 if (kTests[i].ssl) |
| 555 EXPECT_EQ(-1, ssl_conn_pool->last_num_streams()); | 551 EXPECT_EQ(-1, ssl_conn_pool->last_num_streams()); |
| 556 else | 552 else |
| 557 EXPECT_EQ(kTests[i].num_streams, | 553 EXPECT_EQ(kTests[i].num_streams, |
| 558 transport_conn_pool->last_num_streams()); | 554 transport_conn_pool->last_num_streams()); |
| 559 } | 555 } |
| 560 } | 556 } |
| 561 | 557 |
| 562 // Verify that preconnects to unsafe ports are cancelled before they reach | 558 // Verify that preconnects to unsafe ports are cancelled before they reach |
| 563 // the SocketPool. | 559 // the SocketPool. |
| 564 TEST_P(HttpStreamFactoryTest, PreconnectUnsafePort) { | 560 TEST_P(HttpStreamFactoryTest, PreconnectUnsafePort) { |
| 565 ASSERT_FALSE(IsPortAllowedByDefault(7)); | 561 ASSERT_FALSE(IsPortAllowedByDefault(7)); |
| 566 ASSERT_FALSE(IsPortAllowedByOverride(7)); | 562 ASSERT_FALSE(IsPortAllowedByOverride(7)); |
| 567 | 563 |
| 568 SpdySessionDependencies session_deps( | 564 SpdySessionDependencies session_deps( |
| 569 GetParam(), ProxyService::CreateDirect()); | 565 GetParam(), ProxyService::CreateDirect()); |
| 570 scoped_refptr<HttpNetworkSession> session( | 566 scoped_refptr<HttpNetworkSession> session( |
| 571 SpdySessionDependencies::SpdyCreateSession(&session_deps)); | 567 SpdySessionDependencies::SpdyCreateSession(&session_deps)); |
| 572 HttpNetworkSessionPeer peer(session); | 568 HttpNetworkSessionPeer peer(session); |
| 573 CapturePreconnectsTransportSocketPool* transport_conn_pool = | 569 CapturePreconnectsTransportSocketPool* transport_conn_pool = |
| 574 new CapturePreconnectsTransportSocketPool( | 570 new CapturePreconnectsTransportSocketPool( |
| 575 session_deps.host_resolver.get(), | 571 session_deps.host_resolver.get(), |
| 576 session_deps.cert_verifier.get()); | 572 session_deps.cert_verifier.get()); |
| 577 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( | 573 scoped_ptr<MockClientSocketPoolManager> mock_pool_manager( |
| 578 new MockClientSocketPoolManager); | 574 new MockClientSocketPoolManager); |
| 579 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); | 575 mock_pool_manager->SetTransportSocketPool(transport_conn_pool); |
| 580 peer.SetClientSocketPoolManager( | 576 peer.SetClientSocketPoolManager(mock_pool_manager.Pass()); |
| 581 mock_pool_manager.PassAs<ClientSocketPoolManager>()); | |
| 582 | 577 |
| 583 PreconnectHelperForURL(1, GURL("http://www.google.com:7"), session.get()); | 578 PreconnectHelperForURL(1, GURL("http://www.google.com:7"), session.get()); |
| 584 | 579 |
| 585 EXPECT_EQ(-1, transport_conn_pool->last_num_streams()); | 580 EXPECT_EQ(-1, transport_conn_pool->last_num_streams()); |
| 586 } | 581 } |
| 587 | 582 |
| 588 TEST_P(HttpStreamFactoryTest, JobNotifiesProxy) { | 583 TEST_P(HttpStreamFactoryTest, JobNotifiesProxy) { |
| 589 const char* kProxyString = "PROXY bad:99; PROXY maybe:80; DIRECT"; | 584 const char* kProxyString = "PROXY bad:99; PROXY maybe:80; DIRECT"; |
| 590 SpdySessionDependencies session_deps( | 585 SpdySessionDependencies session_deps( |
| 591 GetParam(), ProxyService::CreateFixedFromPacResult(kProxyString)); | 586 GetParam(), ProxyService::CreateFixedFromPacResult(kProxyString)); |
| (...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1308 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); | 1303 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); |
| 1309 | 1304 |
| 1310 // Make sure there is no orphaned job. it is already canceled. | 1305 // Make sure there is no orphaned job. it is already canceled. |
| 1311 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( | 1306 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( |
| 1312 session->http_stream_factory_for_websocket())->num_orphaned_jobs()); | 1307 session->http_stream_factory_for_websocket())->num_orphaned_jobs()); |
| 1313 } | 1308 } |
| 1314 | 1309 |
| 1315 } // namespace | 1310 } // namespace |
| 1316 | 1311 |
| 1317 } // namespace net | 1312 } // namespace net |
| OLD | NEW |