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

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 284423002: Remove HttpStreamFactory's NPN/SPDY globals, except for spdy_enabled. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix merge Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 } 258 }
259 259
260 virtual void TearDown() { 260 virtual void TearDown() {
261 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 261 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
262 base::MessageLoop::current()->RunUntilIdle(); 262 base::MessageLoop::current()->RunUntilIdle();
263 // Empty the current queue. 263 // Empty the current queue.
264 base::MessageLoop::current()->RunUntilIdle(); 264 base::MessageLoop::current()->RunUntilIdle();
265 PlatformTest::TearDown(); 265 PlatformTest::TearDown();
266 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); 266 NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests();
267 base::MessageLoop::current()->RunUntilIdle(); 267 base::MessageLoop::current()->RunUntilIdle();
268 HttpStreamFactory::set_use_alternate_protocols(false);
269 HttpStreamFactory::SetNextProtos(std::vector<NextProto>());
270 } 268 }
271 269
272 // This is the expected return from a current server advertising SPDY. 270 // This is the expected return from a current server advertising SPDY.
273 std::string GetAlternateProtocolHttpHeader() { 271 std::string GetAlternateProtocolHttpHeader() {
274 return 272 return
275 std::string("Alternate-Protocol: 443:") + 273 std::string("Alternate-Protocol: 443:") +
276 AlternateProtocolToString(AlternateProtocolFromNextProto(GetParam())) + 274 AlternateProtocolToString(AlternateProtocolFromNextProto(GetParam())) +
277 "\r\n\r\n"; 275 "\r\n\r\n";
278 } 276 }
279 277
(...skipping 1101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1381 data2_reads.push_back(MockRead(ASYNC, kHttpData, strlen(kHttpData), 2)); 1379 data2_reads.push_back(MockRead(ASYNC, kHttpData, strlen(kHttpData), 2));
1382 data2_reads.push_back(MockRead(ASYNC, OK, 3)); 1380 data2_reads.push_back(MockRead(ASYNC, OK, 3));
1383 } 1381 }
1384 OrderedSocketData data2(&data2_reads[0], data2_reads.size(), 1382 OrderedSocketData data2(&data2_reads[0], data2_reads.size(),
1385 &data2_writes[0], data2_writes.size()); 1383 &data2_writes[0], data2_writes.size());
1386 session_deps_.socket_factory->AddSocketDataProvider(&data2); 1384 session_deps_.socket_factory->AddSocketDataProvider(&data2);
1387 1385
1388 // Preconnect a socket. 1386 // Preconnect a socket.
1389 net::SSLConfig ssl_config; 1387 net::SSLConfig ssl_config;
1390 session->ssl_config_service()->GetSSLConfig(&ssl_config); 1388 session->ssl_config_service()->GetSSLConfig(&ssl_config);
1391 if (session->http_stream_factory()->has_next_protos()) 1389 session->GetNextProtos(&ssl_config.next_protos);
1392 ssl_config.next_protos = session->http_stream_factory()->next_protos();
1393 session->http_stream_factory()->PreconnectStreams( 1390 session->http_stream_factory()->PreconnectStreams(
1394 1, request, DEFAULT_PRIORITY, ssl_config, ssl_config); 1391 1, request, DEFAULT_PRIORITY, ssl_config, ssl_config);
1395 // Wait for the preconnect to complete. 1392 // Wait for the preconnect to complete.
1396 // TODO(davidben): Some way to wait for an idle socket count might be handy. 1393 // TODO(davidben): Some way to wait for an idle socket count might be handy.
1397 base::RunLoop().RunUntilIdle(); 1394 base::RunLoop().RunUntilIdle();
1398 EXPECT_EQ(1, GetIdleSocketCountInSSLSocketPool(session.get())); 1395 EXPECT_EQ(1, GetIdleSocketCountInSSLSocketPool(session.get()));
1399 1396
1400 // Make the request. 1397 // Make the request.
1401 TestCompletionCallback callback; 1398 TestCompletionCallback callback;
1402 1399
(...skipping 6069 matching lines...) Expand 10 before | Expand all | Expand 10 after
7472 true, 7469 true,
7473 }, 7470 },
7474 { 7471 {
7475 "", // unused 7472 "", // unused
7476 "http://host.with.alternate/direct", 7473 "http://host.with.alternate/direct",
7477 "ssl/host.with.alternate:443", 7474 "ssl/host.with.alternate:443",
7478 true, 7475 true,
7479 }, 7476 },
7480 }; 7477 };
7481 7478
7482 HttpStreamFactory::set_use_alternate_protocols(true); 7479 session_deps_.use_alternate_protocols = true;
7483 7480
7484 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 7481 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
7485 session_deps_.proxy_service.reset( 7482 session_deps_.proxy_service.reset(
7486 ProxyService::CreateFixed(tests[i].proxy_server)); 7483 ProxyService::CreateFixed(tests[i].proxy_server));
7487 scoped_refptr<HttpNetworkSession> session( 7484 scoped_refptr<HttpNetworkSession> session(
7488 SetupSessionForGroupNameTests(GetParam(), &session_deps_)); 7485 SetupSessionForGroupNameTests(GetParam(), &session_deps_));
7489 7486
7490 HttpNetworkSessionPeer peer(session); 7487 HttpNetworkSessionPeer peer(session);
7491 CaptureGroupNameTransportSocketPool* transport_conn_pool = 7488 CaptureGroupNameTransportSocketPool* transport_conn_pool =
7492 new CaptureGroupNameTransportSocketPool(NULL, NULL); 7489 new CaptureGroupNameTransportSocketPool(NULL, NULL);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
7536 }, 7533 },
7537 7534
7538 { 7535 {
7539 "http_proxy", 7536 "http_proxy",
7540 "ftp://ftp.google.com/http_proxy_normal", 7537 "ftp://ftp.google.com/http_proxy_normal",
7541 "ftp/ftp.google.com:21", 7538 "ftp/ftp.google.com:21",
7542 false, 7539 false,
7543 }, 7540 },
7544 }; 7541 };
7545 7542
7546 HttpStreamFactory::set_use_alternate_protocols(true); 7543 session_deps_.use_alternate_protocols = true;
7547 7544
7548 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 7545 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
7549 session_deps_.proxy_service.reset( 7546 session_deps_.proxy_service.reset(
7550 ProxyService::CreateFixed(tests[i].proxy_server)); 7547 ProxyService::CreateFixed(tests[i].proxy_server));
7551 scoped_refptr<HttpNetworkSession> session( 7548 scoped_refptr<HttpNetworkSession> session(
7552 SetupSessionForGroupNameTests(GetParam(), &session_deps_)); 7549 SetupSessionForGroupNameTests(GetParam(), &session_deps_));
7553 7550
7554 HttpNetworkSessionPeer peer(session); 7551 HttpNetworkSessionPeer peer(session);
7555 7552
7556 HostPortPair proxy_host("http_proxy", 80); 7553 HostPortPair proxy_host("http_proxy", 80);
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
7607 }, 7604 },
7608 7605
7609 { 7606 {
7610 "socks4://socks_proxy:1080", 7607 "socks4://socks_proxy:1080",
7611 "http://host.with.alternate/direct", 7608 "http://host.with.alternate/direct",
7612 "socks4/ssl/host.with.alternate:443", 7609 "socks4/ssl/host.with.alternate:443",
7613 true, 7610 true,
7614 }, 7611 },
7615 }; 7612 };
7616 7613
7617 HttpStreamFactory::set_use_alternate_protocols(true); 7614 session_deps_.use_alternate_protocols = true;
7618 7615
7619 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 7616 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
7620 session_deps_.proxy_service.reset( 7617 session_deps_.proxy_service.reset(
7621 ProxyService::CreateFixed(tests[i].proxy_server)); 7618 ProxyService::CreateFixed(tests[i].proxy_server));
7622 scoped_refptr<HttpNetworkSession> session( 7619 scoped_refptr<HttpNetworkSession> session(
7623 SetupSessionForGroupNameTests(GetParam(), &session_deps_)); 7620 SetupSessionForGroupNameTests(GetParam(), &session_deps_));
7624 7621
7625 HttpNetworkSessionPeer peer(session); 7622 HttpNetworkSessionPeer peer(session);
7626 7623
7627 HostPortPair proxy_host("socks_proxy", 1080); 7624 HostPortPair proxy_host("socks_proxy", 1080);
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
8273 AuthCredentials(kFirst, kBar), callback4.callback()); 8270 AuthCredentials(kFirst, kBar), callback4.callback());
8274 EXPECT_EQ(ERR_IO_PENDING, rv); 8271 EXPECT_EQ(ERR_IO_PENDING, rv);
8275 rv = callback4.WaitForResult(); 8272 rv = callback4.WaitForResult();
8276 EXPECT_EQ(OK, rv); 8273 EXPECT_EQ(OK, rv);
8277 response = trans->GetResponseInfo(); 8274 response = trans->GetResponseInfo();
8278 ASSERT_TRUE(response != NULL); 8275 ASSERT_TRUE(response != NULL);
8279 EXPECT_TRUE(response->auth_challenge.get() == NULL); 8276 EXPECT_TRUE(response->auth_challenge.get() == NULL);
8280 } 8277 }
8281 8278
8282 TEST_P(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { 8279 TEST_P(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) {
8283 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 8280 session_deps_.next_protos = SpdyNextProtos();
8284 HttpStreamFactory::set_use_alternate_protocols(true); 8281 session_deps_.use_alternate_protocols = true;
8285 8282
8286 std::string alternate_protocol_http_header = 8283 std::string alternate_protocol_http_header =
8287 GetAlternateProtocolHttpHeader(); 8284 GetAlternateProtocolHttpHeader();
8288 8285
8289 MockRead data_reads[] = { 8286 MockRead data_reads[] = {
8290 MockRead("HTTP/1.1 200 OK\r\n"), 8287 MockRead("HTTP/1.1 200 OK\r\n"),
8291 MockRead(alternate_protocol_http_header.c_str()), 8288 MockRead(alternate_protocol_http_header.c_str()),
8292 MockRead("hello world"), 8289 MockRead("hello world"),
8293 MockRead(SYNCHRONOUS, OK), 8290 MockRead(SYNCHRONOUS, OK),
8294 }; 8291 };
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
8334 const PortAlternateProtocolPair alternate = 8331 const PortAlternateProtocolPair alternate =
8335 http_server_properties.GetAlternateProtocol(http_host_port_pair); 8332 http_server_properties.GetAlternateProtocol(http_host_port_pair);
8336 PortAlternateProtocolPair expected_alternate; 8333 PortAlternateProtocolPair expected_alternate;
8337 expected_alternate.port = 443; 8334 expected_alternate.port = 443;
8338 expected_alternate.protocol = AlternateProtocolFromNextProto(GetParam()); 8335 expected_alternate.protocol = AlternateProtocolFromNextProto(GetParam());
8339 EXPECT_TRUE(expected_alternate.Equals(alternate)); 8336 EXPECT_TRUE(expected_alternate.Equals(alternate));
8340 } 8337 }
8341 8338
8342 TEST_P(HttpNetworkTransactionTest, 8339 TEST_P(HttpNetworkTransactionTest,
8343 MarkBrokenAlternateProtocolAndFallback) { 8340 MarkBrokenAlternateProtocolAndFallback) {
8344 HttpStreamFactory::set_use_alternate_protocols(true); 8341 session_deps_.use_alternate_protocols = true;
8345 8342
8346 HttpRequestInfo request; 8343 HttpRequestInfo request;
8347 request.method = "GET"; 8344 request.method = "GET";
8348 request.url = GURL("http://www.google.com/"); 8345 request.url = GURL("http://www.google.com/");
8349 request.load_flags = 0; 8346 request.load_flags = 0;
8350 8347
8351 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 8348 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
8352 StaticSocketDataProvider first_data; 8349 StaticSocketDataProvider first_data;
8353 first_data.set_connect_data(mock_connect); 8350 first_data.set_connect_data(mock_connect);
8354 session_deps_.socket_factory->AddSocketDataProvider(&first_data); 8351 session_deps_.socket_factory->AddSocketDataProvider(&first_data);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
8397 HostPortPair::FromURL(request.url)); 8394 HostPortPair::FromURL(request.url));
8398 EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol); 8395 EXPECT_EQ(ALTERNATE_PROTOCOL_BROKEN, alternate.protocol);
8399 } 8396 }
8400 8397
8401 TEST_P(HttpNetworkTransactionTest, 8398 TEST_P(HttpNetworkTransactionTest,
8402 AlternateProtocolPortRestrictedBlocked) { 8399 AlternateProtocolPortRestrictedBlocked) {
8403 // Ensure that we're not allowed to redirect traffic via an alternate 8400 // Ensure that we're not allowed to redirect traffic via an alternate
8404 // protocol to an unrestricted (port >= 1024) when the original traffic was 8401 // protocol to an unrestricted (port >= 1024) when the original traffic was
8405 // on a restricted port (port < 1024). Ensure that we can redirect in all 8402 // on a restricted port (port < 1024). Ensure that we can redirect in all
8406 // other cases. 8403 // other cases.
8407 HttpStreamFactory::set_use_alternate_protocols(true); 8404 session_deps_.use_alternate_protocols = true;
8408 8405
8409 HttpRequestInfo restricted_port_request; 8406 HttpRequestInfo restricted_port_request;
8410 restricted_port_request.method = "GET"; 8407 restricted_port_request.method = "GET";
8411 restricted_port_request.url = GURL("http://www.google.com:1023/"); 8408 restricted_port_request.url = GURL("http://www.google.com:1023/");
8412 restricted_port_request.load_flags = 0; 8409 restricted_port_request.load_flags = 0;
8413 8410
8414 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 8411 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
8415 StaticSocketDataProvider first_data; 8412 StaticSocketDataProvider first_data;
8416 first_data.set_connect_data(mock_connect); 8413 first_data.set_connect_data(mock_connect);
8417 session_deps_.socket_factory->AddSocketDataProvider(&first_data); 8414 session_deps_.socket_factory->AddSocketDataProvider(&first_data);
(...skipping 29 matching lines...) Expand all
8447 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.WaitForResult()); 8444 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.WaitForResult());
8448 } 8445 }
8449 8446
8450 TEST_P(HttpNetworkTransactionTest, 8447 TEST_P(HttpNetworkTransactionTest,
8451 AlternateProtocolPortRestrictedPermitted) { 8448 AlternateProtocolPortRestrictedPermitted) {
8452 // Ensure that we're allowed to redirect traffic via an alternate 8449 // Ensure that we're allowed to redirect traffic via an alternate
8453 // protocol to an unrestricted (port >= 1024) when the original traffic was 8450 // protocol to an unrestricted (port >= 1024) when the original traffic was
8454 // on a restricted port (port < 1024) if we set 8451 // on a restricted port (port < 1024) if we set
8455 // enable_user_alternate_protocol_ports. 8452 // enable_user_alternate_protocol_ports.
8456 8453
8457 HttpStreamFactory::set_use_alternate_protocols(true); 8454 session_deps_.use_alternate_protocols = true;
8458 session_deps_.enable_user_alternate_protocol_ports = true; 8455 session_deps_.enable_user_alternate_protocol_ports = true;
8459 8456
8460 HttpRequestInfo restricted_port_request; 8457 HttpRequestInfo restricted_port_request;
8461 restricted_port_request.method = "GET"; 8458 restricted_port_request.method = "GET";
8462 restricted_port_request.url = GURL("http://www.google.com:1023/"); 8459 restricted_port_request.url = GURL("http://www.google.com:1023/");
8463 restricted_port_request.load_flags = 0; 8460 restricted_port_request.load_flags = 0;
8464 8461
8465 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 8462 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
8466 StaticSocketDataProvider first_data; 8463 StaticSocketDataProvider first_data;
8467 first_data.set_connect_data(mock_connect); 8464 first_data.set_connect_data(mock_connect);
(...skipping 28 matching lines...) Expand all
8496 // Change to unrestricted port should succeed. 8493 // Change to unrestricted port should succeed.
8497 EXPECT_EQ(OK, callback.WaitForResult()); 8494 EXPECT_EQ(OK, callback.WaitForResult());
8498 } 8495 }
8499 8496
8500 TEST_P(HttpNetworkTransactionTest, 8497 TEST_P(HttpNetworkTransactionTest,
8501 AlternateProtocolPortRestrictedAllowed) { 8498 AlternateProtocolPortRestrictedAllowed) {
8502 // Ensure that we're not allowed to redirect traffic via an alternate 8499 // Ensure that we're not allowed to redirect traffic via an alternate
8503 // protocol to an unrestricted (port >= 1024) when the original traffic was 8500 // protocol to an unrestricted (port >= 1024) when the original traffic was
8504 // on a restricted port (port < 1024). Ensure that we can redirect in all 8501 // on a restricted port (port < 1024). Ensure that we can redirect in all
8505 // other cases. 8502 // other cases.
8506 HttpStreamFactory::set_use_alternate_protocols(true); 8503 session_deps_.use_alternate_protocols = true;
8507 8504
8508 HttpRequestInfo restricted_port_request; 8505 HttpRequestInfo restricted_port_request;
8509 restricted_port_request.method = "GET"; 8506 restricted_port_request.method = "GET";
8510 restricted_port_request.url = GURL("http://www.google.com:1023/"); 8507 restricted_port_request.url = GURL("http://www.google.com:1023/");
8511 restricted_port_request.load_flags = 0; 8508 restricted_port_request.load_flags = 0;
8512 8509
8513 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 8510 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
8514 StaticSocketDataProvider first_data; 8511 StaticSocketDataProvider first_data;
8515 first_data.set_connect_data(mock_connect); 8512 first_data.set_connect_data(mock_connect);
8516 session_deps_.socket_factory->AddSocketDataProvider(&first_data); 8513 session_deps_.socket_factory->AddSocketDataProvider(&first_data);
(...skipping 28 matching lines...) Expand all
8545 // Valid change to restricted port should pass. 8542 // Valid change to restricted port should pass.
8546 EXPECT_EQ(OK, callback.WaitForResult()); 8543 EXPECT_EQ(OK, callback.WaitForResult());
8547 } 8544 }
8548 8545
8549 TEST_P(HttpNetworkTransactionTest, 8546 TEST_P(HttpNetworkTransactionTest,
8550 AlternateProtocolPortUnrestrictedAllowed1) { 8547 AlternateProtocolPortUnrestrictedAllowed1) {
8551 // Ensure that we're not allowed to redirect traffic via an alternate 8548 // Ensure that we're not allowed to redirect traffic via an alternate
8552 // protocol to an unrestricted (port >= 1024) when the original traffic was 8549 // protocol to an unrestricted (port >= 1024) when the original traffic was
8553 // on a restricted port (port < 1024). Ensure that we can redirect in all 8550 // on a restricted port (port < 1024). Ensure that we can redirect in all
8554 // other cases. 8551 // other cases.
8555 HttpStreamFactory::set_use_alternate_protocols(true); 8552 session_deps_.use_alternate_protocols = true;
8556 8553
8557 HttpRequestInfo unrestricted_port_request; 8554 HttpRequestInfo unrestricted_port_request;
8558 unrestricted_port_request.method = "GET"; 8555 unrestricted_port_request.method = "GET";
8559 unrestricted_port_request.url = GURL("http://www.google.com:1024/"); 8556 unrestricted_port_request.url = GURL("http://www.google.com:1024/");
8560 unrestricted_port_request.load_flags = 0; 8557 unrestricted_port_request.load_flags = 0;
8561 8558
8562 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 8559 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
8563 StaticSocketDataProvider first_data; 8560 StaticSocketDataProvider first_data;
8564 first_data.set_connect_data(mock_connect); 8561 first_data.set_connect_data(mock_connect);
8565 session_deps_.socket_factory->AddSocketDataProvider(&first_data); 8562 session_deps_.socket_factory->AddSocketDataProvider(&first_data);
(...skipping 27 matching lines...) Expand all
8593 // Valid change to restricted port should pass. 8590 // Valid change to restricted port should pass.
8594 EXPECT_EQ(OK, callback.WaitForResult()); 8591 EXPECT_EQ(OK, callback.WaitForResult());
8595 } 8592 }
8596 8593
8597 TEST_P(HttpNetworkTransactionTest, 8594 TEST_P(HttpNetworkTransactionTest,
8598 AlternateProtocolPortUnrestrictedAllowed2) { 8595 AlternateProtocolPortUnrestrictedAllowed2) {
8599 // Ensure that we're not allowed to redirect traffic via an alternate 8596 // Ensure that we're not allowed to redirect traffic via an alternate
8600 // protocol to an unrestricted (port >= 1024) when the original traffic was 8597 // protocol to an unrestricted (port >= 1024) when the original traffic was
8601 // on a restricted port (port < 1024). Ensure that we can redirect in all 8598 // on a restricted port (port < 1024). Ensure that we can redirect in all
8602 // other cases. 8599 // other cases.
8603 HttpStreamFactory::set_use_alternate_protocols(true); 8600 session_deps_.use_alternate_protocols = true;
8604 8601
8605 HttpRequestInfo unrestricted_port_request; 8602 HttpRequestInfo unrestricted_port_request;
8606 unrestricted_port_request.method = "GET"; 8603 unrestricted_port_request.method = "GET";
8607 unrestricted_port_request.url = GURL("http://www.google.com:1024/"); 8604 unrestricted_port_request.url = GURL("http://www.google.com:1024/");
8608 unrestricted_port_request.load_flags = 0; 8605 unrestricted_port_request.load_flags = 0;
8609 8606
8610 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 8607 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
8611 StaticSocketDataProvider first_data; 8608 StaticSocketDataProvider first_data;
8612 first_data.set_connect_data(mock_connect); 8609 first_data.set_connect_data(mock_connect);
8613 session_deps_.socket_factory->AddSocketDataProvider(&first_data); 8610 session_deps_.socket_factory->AddSocketDataProvider(&first_data);
(...skipping 21 matching lines...) Expand all
8635 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 8632 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
8636 TestCompletionCallback callback; 8633 TestCompletionCallback callback;
8637 8634
8638 int rv = trans->Start( 8635 int rv = trans->Start(
8639 &unrestricted_port_request, callback.callback(), BoundNetLog()); 8636 &unrestricted_port_request, callback.callback(), BoundNetLog());
8640 EXPECT_EQ(ERR_IO_PENDING, rv); 8637 EXPECT_EQ(ERR_IO_PENDING, rv);
8641 // Valid change to an unrestricted port should pass. 8638 // Valid change to an unrestricted port should pass.
8642 EXPECT_EQ(OK, callback.WaitForResult()); 8639 EXPECT_EQ(OK, callback.WaitForResult());
8643 } 8640 }
8644 8641
8645 TEST_P(HttpNetworkTransactionTest, 8642 TEST_P(HttpNetworkTransactionTest, AlternateProtocolUnsafeBlocked) {
8646 AlternateProtocolUnsafeBlocked) {
8647 // Ensure that we're not allowed to redirect traffic via an alternate 8643 // Ensure that we're not allowed to redirect traffic via an alternate
8648 // protocol to an unsafe port, and that we resume the second 8644 // protocol to an unsafe port, and that we resume the second
8649 // HttpStreamFactoryImpl::Job once the alternate protocol request fails. 8645 // HttpStreamFactoryImpl::Job once the alternate protocol request fails.
8650 HttpStreamFactory::set_use_alternate_protocols(true); 8646 session_deps_.use_alternate_protocols = true;
8651 8647
8652 HttpRequestInfo request; 8648 HttpRequestInfo request;
8653 request.method = "GET"; 8649 request.method = "GET";
8654 request.url = GURL("http://www.google.com/"); 8650 request.url = GURL("http://www.google.com/");
8655 request.load_flags = 0; 8651 request.load_flags = 0;
8656 8652
8657 // The alternate protocol request will error out before we attempt to connect, 8653 // The alternate protocol request will error out before we attempt to connect,
8658 // so only the standard HTTP request will try to connect. 8654 // so only the standard HTTP request will try to connect.
8659 MockRead data_reads[] = { 8655 MockRead data_reads[] = {
8660 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 8656 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
(...skipping 17 matching lines...) Expand all
8678 scoped_ptr<HttpTransaction> trans( 8674 scoped_ptr<HttpTransaction> trans(
8679 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 8675 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
8680 TestCompletionCallback callback; 8676 TestCompletionCallback callback;
8681 8677
8682 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 8678 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
8683 EXPECT_EQ(ERR_IO_PENDING, rv); 8679 EXPECT_EQ(ERR_IO_PENDING, rv);
8684 // The HTTP request should succeed. 8680 // The HTTP request should succeed.
8685 EXPECT_EQ(OK, callback.WaitForResult()); 8681 EXPECT_EQ(OK, callback.WaitForResult());
8686 8682
8687 // Disable alternate protocol before the asserts. 8683 // Disable alternate protocol before the asserts.
8688 HttpStreamFactory::set_use_alternate_protocols(false); 8684 // HttpStreamFactory::set_use_alternate_protocols(false);
8689 8685
8690 const HttpResponseInfo* response = trans->GetResponseInfo(); 8686 const HttpResponseInfo* response = trans->GetResponseInfo();
8691 ASSERT_TRUE(response != NULL); 8687 ASSERT_TRUE(response != NULL);
8692 ASSERT_TRUE(response->headers.get() != NULL); 8688 ASSERT_TRUE(response->headers.get() != NULL);
8693 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 8689 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
8694 8690
8695 std::string response_data; 8691 std::string response_data;
8696 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 8692 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
8697 EXPECT_EQ("hello world", response_data); 8693 EXPECT_EQ("hello world", response_data);
8698 } 8694 }
8699 8695
8700 TEST_P(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) { 8696 TEST_P(HttpNetworkTransactionTest, UseAlternateProtocolForNpnSpdy) {
8701 HttpStreamFactory::set_use_alternate_protocols(true); 8697 session_deps_.use_alternate_protocols = true;
8702 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 8698 session_deps_.next_protos = SpdyNextProtos();
8703 8699
8704 HttpRequestInfo request; 8700 HttpRequestInfo request;
8705 request.method = "GET"; 8701 request.method = "GET";
8706 request.url = GURL("http://www.google.com/"); 8702 request.url = GURL("http://www.google.com/");
8707 request.load_flags = 0; 8703 request.load_flags = 0;
8708 8704
8709 std::string alternate_protocol_http_header = 8705 std::string alternate_protocol_http_header =
8710 GetAlternateProtocolHttpHeader(); 8706 GetAlternateProtocolHttpHeader();
8711 8707
8712 MockRead data_reads[] = { 8708 MockRead data_reads[] = {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
8781 ASSERT_TRUE(response->headers.get() != NULL); 8777 ASSERT_TRUE(response->headers.get() != NULL);
8782 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 8778 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
8783 EXPECT_TRUE(response->was_fetched_via_spdy); 8779 EXPECT_TRUE(response->was_fetched_via_spdy);
8784 EXPECT_TRUE(response->was_npn_negotiated); 8780 EXPECT_TRUE(response->was_npn_negotiated);
8785 8781
8786 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); 8782 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data));
8787 EXPECT_EQ("hello!", response_data); 8783 EXPECT_EQ("hello!", response_data);
8788 } 8784 }
8789 8785
8790 TEST_P(HttpNetworkTransactionTest, AlternateProtocolWithSpdyLateBinding) { 8786 TEST_P(HttpNetworkTransactionTest, AlternateProtocolWithSpdyLateBinding) {
8791 HttpStreamFactory::set_use_alternate_protocols(true); 8787 session_deps_.use_alternate_protocols = true;
8792 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 8788 session_deps_.next_protos = SpdyNextProtos();
8793 8789
8794 HttpRequestInfo request; 8790 HttpRequestInfo request;
8795 request.method = "GET"; 8791 request.method = "GET";
8796 request.url = GURL("http://www.google.com/"); 8792 request.url = GURL("http://www.google.com/");
8797 request.load_flags = 0; 8793 request.load_flags = 0;
8798 8794
8799 std::string alternate_protocol_http_header = 8795 std::string alternate_protocol_http_header =
8800 GetAlternateProtocolHttpHeader(); 8796 GetAlternateProtocolHttpHeader();
8801 8797
8802 MockRead data_reads[] = { 8798 MockRead data_reads[] = {
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
8898 ASSERT_TRUE(response != NULL); 8894 ASSERT_TRUE(response != NULL);
8899 ASSERT_TRUE(response->headers.get() != NULL); 8895 ASSERT_TRUE(response->headers.get() != NULL);
8900 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 8896 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
8901 EXPECT_TRUE(response->was_fetched_via_spdy); 8897 EXPECT_TRUE(response->was_fetched_via_spdy);
8902 EXPECT_TRUE(response->was_npn_negotiated); 8898 EXPECT_TRUE(response->was_npn_negotiated);
8903 ASSERT_EQ(OK, ReadTransaction(&trans3, &response_data)); 8899 ASSERT_EQ(OK, ReadTransaction(&trans3, &response_data));
8904 EXPECT_EQ("hello!", response_data); 8900 EXPECT_EQ("hello!", response_data);
8905 } 8901 }
8906 8902
8907 TEST_P(HttpNetworkTransactionTest, StallAlternateProtocolForNpnSpdy) { 8903 TEST_P(HttpNetworkTransactionTest, StallAlternateProtocolForNpnSpdy) {
8908 HttpStreamFactory::set_use_alternate_protocols(true); 8904 session_deps_.use_alternate_protocols = true;
8909 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 8905 session_deps_.next_protos = SpdyNextProtos();
8910 8906
8911 HttpRequestInfo request; 8907 HttpRequestInfo request;
8912 request.method = "GET"; 8908 request.method = "GET";
8913 request.url = GURL("http://www.google.com/"); 8909 request.url = GURL("http://www.google.com/");
8914 request.load_flags = 0; 8910 request.load_flags = 0;
8915 8911
8916 std::string alternate_protocol_http_header = 8912 std::string alternate_protocol_http_header =
8917 GetAlternateProtocolHttpHeader(); 8913 GetAlternateProtocolHttpHeader();
8918 8914
8919 MockRead data_reads[] = { 8915 MockRead data_reads[] = {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
9017 const std::vector<GURL>& resolved() const { return resolved_; } 9013 const std::vector<GURL>& resolved() const { return resolved_; }
9018 9014
9019 private: 9015 private:
9020 std::vector<GURL> resolved_; 9016 std::vector<GURL> resolved_;
9021 9017
9022 DISALLOW_COPY_AND_ASSIGN(CapturingProxyResolver); 9018 DISALLOW_COPY_AND_ASSIGN(CapturingProxyResolver);
9023 }; 9019 };
9024 9020
9025 TEST_P(HttpNetworkTransactionTest, 9021 TEST_P(HttpNetworkTransactionTest,
9026 UseAlternateProtocolForTunneledNpnSpdy) { 9022 UseAlternateProtocolForTunneledNpnSpdy) {
9027 HttpStreamFactory::set_use_alternate_protocols(true); 9023 session_deps_.use_alternate_protocols = true;
9028 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 9024 session_deps_.next_protos = SpdyNextProtos();
9029 9025
9030 ProxyConfig proxy_config; 9026 ProxyConfig proxy_config;
9031 proxy_config.set_auto_detect(true); 9027 proxy_config.set_auto_detect(true);
9032 proxy_config.set_pac_url(GURL("http://fooproxyurl")); 9028 proxy_config.set_pac_url(GURL("http://fooproxyurl"));
9033 9029
9034 CapturingProxyResolver* capturing_proxy_resolver = 9030 CapturingProxyResolver* capturing_proxy_resolver =
9035 new CapturingProxyResolver(); 9031 new CapturingProxyResolver();
9036 session_deps_.proxy_service.reset(new ProxyService( 9032 session_deps_.proxy_service.reset(new ProxyService(
9037 new ProxyConfigServiceFixed(proxy_config), capturing_proxy_resolver, 9033 new ProxyConfigServiceFixed(proxy_config), capturing_proxy_resolver,
9038 NULL)); 9034 NULL));
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
9139 capturing_proxy_resolver->resolved()[1].spec()); 9135 capturing_proxy_resolver->resolved()[1].spec());
9140 9136
9141 LoadTimingInfo load_timing_info; 9137 LoadTimingInfo load_timing_info;
9142 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); 9138 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
9143 TestLoadTimingNotReusedWithPac(load_timing_info, 9139 TestLoadTimingNotReusedWithPac(load_timing_info,
9144 CONNECT_TIMING_HAS_SSL_TIMES); 9140 CONNECT_TIMING_HAS_SSL_TIMES);
9145 } 9141 }
9146 9142
9147 TEST_P(HttpNetworkTransactionTest, 9143 TEST_P(HttpNetworkTransactionTest,
9148 UseAlternateProtocolForNpnSpdyWithExistingSpdySession) { 9144 UseAlternateProtocolForNpnSpdyWithExistingSpdySession) {
9149 HttpStreamFactory::set_use_alternate_protocols(true); 9145 session_deps_.use_alternate_protocols = true;
9150 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 9146 session_deps_.next_protos = SpdyNextProtos();
9151 9147
9152 HttpRequestInfo request; 9148 HttpRequestInfo request;
9153 request.method = "GET"; 9149 request.method = "GET";
9154 request.url = GURL("http://www.google.com/"); 9150 request.url = GURL("http://www.google.com/");
9155 request.load_flags = 0; 9151 request.load_flags = 0;
9156 9152
9157 std::string alternate_protocol_http_header = 9153 std::string alternate_protocol_http_header =
9158 GetAlternateProtocolHttpHeader(); 9154 GetAlternateProtocolHttpHeader();
9159 9155
9160 MockRead data_reads[] = { 9156 MockRead data_reads[] = {
(...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after
9830 rv = trans_compete->Read(io_buf.get(), io_buf->size(), callback.callback()); 9826 rv = trans_compete->Read(io_buf.get(), io_buf->size(), callback.callback());
9831 EXPECT_EQ(0, rv); 9827 EXPECT_EQ(0, rv);
9832 9828
9833 // Finally, the socket is released to the group. 9829 // Finally, the socket is released to the group.
9834 EXPECT_EQ(1, transport_pool->IdleSocketCountInGroup(kSocketGroup)); 9830 EXPECT_EQ(1, transport_pool->IdleSocketCountInGroup(kSocketGroup));
9835 } 9831 }
9836 9832
9837 // This tests the case that a request is issued via http instead of spdy after 9833 // This tests the case that a request is issued via http instead of spdy after
9838 // npn is negotiated. 9834 // npn is negotiated.
9839 TEST_P(HttpNetworkTransactionTest, NpnWithHttpOverSSL) { 9835 TEST_P(HttpNetworkTransactionTest, NpnWithHttpOverSSL) {
9840 HttpStreamFactory::set_use_alternate_protocols(true); 9836 session_deps_.use_alternate_protocols = true;
9841 std::vector<NextProto> next_protos; 9837 NextProtoVector next_protos;
9842 next_protos.push_back(kProtoHTTP11); 9838 next_protos.push_back(kProtoHTTP11);
9843 HttpStreamFactory::SetNextProtos(next_protos); 9839 session_deps_.next_protos = next_protos;
9840
9844 HttpRequestInfo request; 9841 HttpRequestInfo request;
9845 request.method = "GET"; 9842 request.method = "GET";
9846 request.url = GURL("https://www.google.com/"); 9843 request.url = GURL("https://www.google.com/");
9847 request.load_flags = 0; 9844 request.load_flags = 0;
9848 9845
9849 MockWrite data_writes[] = { 9846 MockWrite data_writes[] = {
9850 MockWrite("GET / HTTP/1.1\r\n" 9847 MockWrite("GET / HTTP/1.1\r\n"
9851 "Host: www.google.com\r\n" 9848 "Host: www.google.com\r\n"
9852 "Connection: keep-alive\r\n\r\n"), 9849 "Connection: keep-alive\r\n\r\n"),
9853 }; 9850 };
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
9894 EXPECT_EQ("hello world", response_data); 9891 EXPECT_EQ("hello world", response_data);
9895 9892
9896 EXPECT_FALSE(response->was_fetched_via_spdy); 9893 EXPECT_FALSE(response->was_fetched_via_spdy);
9897 EXPECT_TRUE(response->was_npn_negotiated); 9894 EXPECT_TRUE(response->was_npn_negotiated);
9898 } 9895 }
9899 9896
9900 TEST_P(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) { 9897 TEST_P(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) {
9901 // Simulate the SSL handshake completing with an NPN negotiation 9898 // Simulate the SSL handshake completing with an NPN negotiation
9902 // followed by an immediate server closing of the socket. 9899 // followed by an immediate server closing of the socket.
9903 // Fix crash: http://crbug.com/46369 9900 // Fix crash: http://crbug.com/46369
9904 HttpStreamFactory::set_use_alternate_protocols(true); 9901 session_deps_.use_alternate_protocols = true;
9905 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 9902 session_deps_.next_protos = SpdyNextProtos();
9906 9903
9907 HttpRequestInfo request; 9904 HttpRequestInfo request;
9908 request.method = "GET"; 9905 request.method = "GET";
9909 request.url = GURL("https://www.google.com/"); 9906 request.url = GURL("https://www.google.com/");
9910 request.load_flags = 0; 9907 request.load_flags = 0;
9911 9908
9912 SSLSocketDataProvider ssl(ASYNC, OK); 9909 SSLSocketDataProvider ssl(ASYNC, OK);
9913 ssl.SetNextProto(GetParam()); 9910 ssl.SetNextProto(GetParam());
9914 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 9911 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
9915 9912
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
9957 credentials, request, callback, auth_token); 9954 credentials, request, callback, auth_token);
9958 } 9955 }
9959 9956
9960 private: 9957 private:
9961 GURL* url_; 9958 GURL* url_;
9962 }; 9959 };
9963 9960
9964 TEST_P(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) { 9961 TEST_P(HttpNetworkTransactionTest, SpdyAlternateProtocolThroughProxy) {
9965 // This test ensures that the URL passed into the proxy is upgraded 9962 // This test ensures that the URL passed into the proxy is upgraded
9966 // to https when doing an Alternate Protocol upgrade. 9963 // to https when doing an Alternate Protocol upgrade.
9967 HttpStreamFactory::set_use_alternate_protocols(true); 9964 session_deps_.use_alternate_protocols = true;
9968 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 9965 session_deps_.next_protos = SpdyNextProtos();
9969 9966
9970 session_deps_.proxy_service.reset( 9967 session_deps_.proxy_service.reset(
9971 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 9968 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"));
9972 CapturingNetLog net_log; 9969 CapturingNetLog net_log;
9973 session_deps_.net_log = &net_log; 9970 session_deps_.net_log = &net_log;
9974 GURL request_url; 9971 GURL request_url;
9975 { 9972 {
9976 HttpAuthHandlerMock::Factory* auth_factory = 9973 HttpAuthHandlerMock::Factory* auth_factory =
9977 new HttpAuthHandlerMock::Factory(); 9974 new HttpAuthHandlerMock::Factory();
9978 UrlRecordingHttpAuthHandlerMock* auth_handler = 9975 UrlRecordingHttpAuthHandlerMock* auth_handler =
(...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after
10827 #define WRAPPED_TEST_P(test_case_name, test_name) \ 10824 #define WRAPPED_TEST_P(test_case_name, test_name) \
10828 TEST_P(test_case_name, test_name) 10825 TEST_P(test_case_name, test_name)
10829 10826
10830 // Times out on Win7 dbg(2) bot. http://crbug.com/124776 10827 // Times out on Win7 dbg(2) bot. http://crbug.com/124776
10831 #if defined(OS_WIN) 10828 #if defined(OS_WIN)
10832 #define MAYBE_UseIPConnectionPooling DISABLED_UseIPConnectionPooling 10829 #define MAYBE_UseIPConnectionPooling DISABLED_UseIPConnectionPooling
10833 #else 10830 #else
10834 #define MAYBE_UseIPConnectionPooling UseIPConnectionPooling 10831 #define MAYBE_UseIPConnectionPooling UseIPConnectionPooling
10835 #endif 10832 #endif
10836 WRAPPED_TEST_P(HttpNetworkTransactionTest, MAYBE_UseIPConnectionPooling) { 10833 WRAPPED_TEST_P(HttpNetworkTransactionTest, MAYBE_UseIPConnectionPooling) {
10837 HttpStreamFactory::set_use_alternate_protocols(true); 10834 session_deps_.use_alternate_protocols = true;
10838 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 10835 session_deps_.next_protos = SpdyNextProtos();
10839 10836
10840 // Set up a special HttpNetworkSession with a MockCachingHostResolver. 10837 // Set up a special HttpNetworkSession with a MockCachingHostResolver.
10841 session_deps_.host_resolver.reset(new MockCachingHostResolver()); 10838 session_deps_.host_resolver.reset(new MockCachingHostResolver());
10842 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10839 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10843 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 10840 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
10844 pool_peer.DisableDomainAuthenticationVerification(); 10841 pool_peer.DisableDomainAuthenticationVerification();
10845 10842
10846 SSLSocketDataProvider ssl(ASYNC, OK); 10843 SSLSocketDataProvider ssl(ASYNC, OK);
10847 ssl.SetNextProto(GetParam()); 10844 ssl.SetNextProto(GetParam());
10848 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10845 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
10930 ASSERT_TRUE(response->headers.get() != NULL); 10927 ASSERT_TRUE(response->headers.get() != NULL);
10931 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 10928 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
10932 EXPECT_TRUE(response->was_fetched_via_spdy); 10929 EXPECT_TRUE(response->was_fetched_via_spdy);
10933 EXPECT_TRUE(response->was_npn_negotiated); 10930 EXPECT_TRUE(response->was_npn_negotiated);
10934 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 10931 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
10935 EXPECT_EQ("hello!", response_data); 10932 EXPECT_EQ("hello!", response_data);
10936 } 10933 }
10937 #undef MAYBE_UseIPConnectionPooling 10934 #undef MAYBE_UseIPConnectionPooling
10938 10935
10939 TEST_P(HttpNetworkTransactionTest, UseIPConnectionPoolingAfterResolution) { 10936 TEST_P(HttpNetworkTransactionTest, UseIPConnectionPoolingAfterResolution) {
10940 HttpStreamFactory::set_use_alternate_protocols(true); 10937 session_deps_.use_alternate_protocols = true;
10941 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 10938 session_deps_.next_protos = SpdyNextProtos();
10942 10939
10943 // Set up a special HttpNetworkSession with a MockCachingHostResolver. 10940 // Set up a special HttpNetworkSession with a MockCachingHostResolver.
10944 session_deps_.host_resolver.reset(new MockCachingHostResolver()); 10941 session_deps_.host_resolver.reset(new MockCachingHostResolver());
10945 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10942 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10946 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 10943 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
10947 pool_peer.DisableDomainAuthenticationVerification(); 10944 pool_peer.DisableDomainAuthenticationVerification();
10948 10945
10949 SSLSocketDataProvider ssl(ASYNC, OK); 10946 SSLSocketDataProvider ssl(ASYNC, OK);
10950 ssl.SetNextProto(GetParam()); 10947 ssl.SetNextProto(GetParam());
10951 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10948 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
11073 #define MAYBE_UseIPConnectionPoolingWithHostCacheExpiration \ 11070 #define MAYBE_UseIPConnectionPoolingWithHostCacheExpiration \
11074 UseIPConnectionPoolingWithHostCacheExpiration 11071 UseIPConnectionPoolingWithHostCacheExpiration
11075 #endif 11072 #endif
11076 WRAPPED_TEST_P(HttpNetworkTransactionTest, 11073 WRAPPED_TEST_P(HttpNetworkTransactionTest,
11077 MAYBE_UseIPConnectionPoolingWithHostCacheExpiration) { 11074 MAYBE_UseIPConnectionPoolingWithHostCacheExpiration) {
11078 // Times out on Win7 dbg(2) bot. http://crbug.com/124776 . (MAYBE_ 11075 // Times out on Win7 dbg(2) bot. http://crbug.com/124776 . (MAYBE_
11079 // prefix doesn't work with parametrized tests). 11076 // prefix doesn't work with parametrized tests).
11080 #if defined(OS_WIN) 11077 #if defined(OS_WIN)
11081 return; 11078 return;
11082 #else 11079 #else
11083 HttpStreamFactory::set_use_alternate_protocols(true); 11080 session_deps_.use_alternate_protocols = true;
11084 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 11081 session_deps_.next_protos = SpdyNextProtos();
11085 11082
11086 // Set up a special HttpNetworkSession with a OneTimeCachingHostResolver. 11083 // Set up a special HttpNetworkSession with a OneTimeCachingHostResolver.
11087 OneTimeCachingHostResolver host_resolver(HostPortPair("www.gmail.com", 443)); 11084 OneTimeCachingHostResolver host_resolver(HostPortPair("www.gmail.com", 443));
11088 HttpNetworkSession::Params params = 11085 HttpNetworkSession::Params params =
11089 SpdySessionDependencies::CreateSessionParams(&session_deps_); 11086 SpdySessionDependencies::CreateSessionParams(&session_deps_);
11090 params.host_resolver = &host_resolver; 11087 params.host_resolver = &host_resolver;
11091 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11088 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11092 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 11089 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
11093 pool_peer.DisableDomainAuthenticationVerification(); 11090 pool_peer.DisableDomainAuthenticationVerification();
11094 11091
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
11421 LoadTimingInfo load_timing_info2; 11418 LoadTimingInfo load_timing_info2;
11422 EXPECT_TRUE(trans2.GetLoadTimingInfo(&load_timing_info2)); 11419 EXPECT_TRUE(trans2.GetLoadTimingInfo(&load_timing_info2));
11423 // The established SPDY sessions is considered reused by the HTTP request. 11420 // The established SPDY sessions is considered reused by the HTTP request.
11424 TestLoadTimingReusedWithPac(load_timing_info2); 11421 TestLoadTimingReusedWithPac(load_timing_info2);
11425 // HTTP requests over a SPDY session should have a different connection 11422 // HTTP requests over a SPDY session should have a different connection
11426 // socket_log_id than requests over a tunnel. 11423 // socket_log_id than requests over a tunnel.
11427 EXPECT_NE(load_timing_info1.socket_log_id, load_timing_info2.socket_log_id); 11424 EXPECT_NE(load_timing_info1.socket_log_id, load_timing_info2.socket_log_id);
11428 } 11425 }
11429 11426
11430 TEST_P(HttpNetworkTransactionTest, UseSpdySessionForHttpWhenForced) { 11427 TEST_P(HttpNetworkTransactionTest, UseSpdySessionForHttpWhenForced) {
11431 HttpStreamFactory::set_force_spdy_always(true); 11428 session_deps_.force_spdy_always = true;
11432 const std::string https_url = "https://www.google.com/"; 11429 const std::string https_url = "https://www.google.com/";
11433 const std::string http_url = "http://www.google.com:443/"; 11430 const std::string http_url = "http://www.google.com:443/";
11434 11431
11435 // SPDY GET for HTTPS URL 11432 // SPDY GET for HTTPS URL
11436 scoped_ptr<SpdyFrame> req1( 11433 scoped_ptr<SpdyFrame> req1(
11437 spdy_util_.ConstructSpdyGet(https_url.c_str(), false, 1, LOWEST)); 11434 spdy_util_.ConstructSpdyGet(https_url.c_str(), false, 1, LOWEST));
11438 // SPDY GET for the HTTP URL 11435 // SPDY GET for the HTTP URL
11439 scoped_ptr<SpdyFrame> req2( 11436 scoped_ptr<SpdyFrame> req2(
11440 spdy_util_.ConstructSpdyGet(http_url.c_str(), false, 3, MEDIUM)); 11437 spdy_util_.ConstructSpdyGet(http_url.c_str(), false, 3, MEDIUM));
11441 11438
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
11696 trans2.Start(&request2, callback2.callback(), BoundNetLog())); 11693 trans2.Start(&request2, callback2.callback(), BoundNetLog()));
11697 base::MessageLoop::current()->RunUntilIdle(); 11694 base::MessageLoop::current()->RunUntilIdle();
11698 data2->RunFor(3); 11695 data2->RunFor(3);
11699 11696
11700 ASSERT_TRUE(callback2.have_result()); 11697 ASSERT_TRUE(callback2.have_result());
11701 EXPECT_EQ(OK, callback2.WaitForResult()); 11698 EXPECT_EQ(OK, callback2.WaitForResult());
11702 EXPECT_TRUE(trans2.GetResponseInfo()->was_fetched_via_spdy); 11699 EXPECT_TRUE(trans2.GetResponseInfo()->was_fetched_via_spdy);
11703 } 11700 }
11704 11701
11705 TEST_P(HttpNetworkTransactionTest, CloseIdleSpdySessionToOpenNewOne) { 11702 TEST_P(HttpNetworkTransactionTest, CloseIdleSpdySessionToOpenNewOne) {
11706 HttpStreamFactory::SetNextProtos(SpdyNextProtos()); 11703 session_deps_.next_protos = SpdyNextProtos();
11707 ClientSocketPoolManager::set_max_sockets_per_group( 11704 ClientSocketPoolManager::set_max_sockets_per_group(
11708 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); 11705 HttpNetworkSession::NORMAL_SOCKET_POOL, 1);
11709 ClientSocketPoolManager::set_max_sockets_per_pool( 11706 ClientSocketPoolManager::set_max_sockets_per_pool(
11710 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); 11707 HttpNetworkSession::NORMAL_SOCKET_POOL, 1);
11711 11708
11712 // Use two different hosts with different IPs so they don't get pooled. 11709 // Use two different hosts with different IPs so they don't get pooled.
11713 session_deps_.host_resolver->rules()->AddRule("www.a.com", "10.0.0.1"); 11710 session_deps_.host_resolver->rules()->AddRule("www.a.com", "10.0.0.1");
11714 session_deps_.host_resolver->rules()->AddRule("www.b.com", "10.0.0.2"); 11711 session_deps_.host_resolver->rules()->AddRule("www.b.com", "10.0.0.2");
11715 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11712 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11716 11713
(...skipping 1419 matching lines...) Expand 10 before | Expand all | Expand 10 after
13136 EXPECT_EQ(ERR_IO_PENDING, rv); 13133 EXPECT_EQ(ERR_IO_PENDING, rv);
13137 13134
13138 rv = callback.WaitForResult(); 13135 rv = callback.WaitForResult();
13139 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 13136 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
13140 13137
13141 const HttpResponseInfo* response = trans->GetResponseInfo(); 13138 const HttpResponseInfo* response = trans->GetResponseInfo();
13142 EXPECT_TRUE(response == NULL); 13139 EXPECT_TRUE(response == NULL);
13143 } 13140 }
13144 13141
13145 } // namespace net 13142 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698