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 |