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

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

Issue 2156643002: Move ~1000 SpdySerializedFrame instances from heap to stack in tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
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 <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 1393 matching lines...) Expand 10 before | Expand all | Expand 10 after
1404 SSLSocketDataProvider ssl1(ASYNC, OK); 1404 SSLSocketDataProvider ssl1(ASYNC, OK);
1405 SSLSocketDataProvider ssl2(ASYNC, OK); 1405 SSLSocketDataProvider ssl2(ASYNC, OK);
1406 if (use_spdy) { 1406 if (use_spdy) {
1407 ssl1.SetNextProto(kProtoHTTP2); 1407 ssl1.SetNextProto(kProtoHTTP2);
1408 ssl2.SetNextProto(kProtoHTTP2); 1408 ssl2.SetNextProto(kProtoHTTP2);
1409 } 1409 }
1410 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); 1410 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1);
1411 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); 1411 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2);
1412 1412
1413 // SPDY versions of the request and response. 1413 // SPDY versions of the request and response.
1414 std::unique_ptr<SpdySerializedFrame> spdy_request(spdy_util_.ConstructSpdyGet( 1414 SpdySerializedFrame spdy_request(spdy_util_.ConstructSpdyGet(
1415 request.url.spec().c_str(), 1, DEFAULT_PRIORITY)); 1415 request.url.spec().c_str(), 1, DEFAULT_PRIORITY));
1416 std::unique_ptr<SpdySerializedFrame> spdy_response( 1416 SpdySerializedFrame spdy_response(
1417 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 1417 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
1418 std::unique_ptr<SpdySerializedFrame> spdy_data( 1418 SpdySerializedFrame spdy_data(
1419 spdy_util_.ConstructSpdyBodyFrame(1, "hello", 5, true)); 1419 spdy_util_.ConstructSpdyDataFrame(1, "hello", 5, true));
1420 1420
1421 // HTTP/1.1 versions of the request and response. 1421 // HTTP/1.1 versions of the request and response.
1422 const char kHttpRequest[] = "GET / HTTP/1.1\r\n" 1422 const char kHttpRequest[] = "GET / HTTP/1.1\r\n"
1423 "Host: www.foo.com\r\n" 1423 "Host: www.foo.com\r\n"
1424 "Connection: keep-alive\r\n\r\n"; 1424 "Connection: keep-alive\r\n\r\n";
1425 const char kHttpResponse[] = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"; 1425 const char kHttpResponse[] = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n";
1426 const char kHttpData[] = "hello"; 1426 const char kHttpData[] = "hello";
1427 1427
1428 std::vector<MockRead> data1_reads; 1428 std::vector<MockRead> data1_reads;
1429 std::vector<MockWrite> data1_writes; 1429 std::vector<MockWrite> data1_writes;
1430 if (write_failure) { 1430 if (write_failure) {
1431 ASSERT_FALSE(read_failure); 1431 ASSERT_FALSE(read_failure);
1432 data1_writes.push_back(*write_failure); 1432 data1_writes.push_back(*write_failure);
1433 data1_reads.push_back(MockRead(ASYNC, OK)); 1433 data1_reads.push_back(MockRead(ASYNC, OK));
1434 } else { 1434 } else {
1435 ASSERT_TRUE(read_failure); 1435 ASSERT_TRUE(read_failure);
1436 if (use_spdy) { 1436 if (use_spdy) {
1437 data1_writes.push_back(CreateMockWrite(*spdy_request)); 1437 data1_writes.push_back(CreateMockWrite(spdy_request));
1438 } else { 1438 } else {
1439 data1_writes.push_back(MockWrite(kHttpRequest)); 1439 data1_writes.push_back(MockWrite(kHttpRequest));
1440 } 1440 }
1441 data1_reads.push_back(*read_failure); 1441 data1_reads.push_back(*read_failure);
1442 } 1442 }
1443 1443
1444 StaticSocketDataProvider data1(&data1_reads[0], data1_reads.size(), 1444 StaticSocketDataProvider data1(&data1_reads[0], data1_reads.size(),
1445 &data1_writes[0], data1_writes.size()); 1445 &data1_writes[0], data1_writes.size());
1446 session_deps_.socket_factory->AddSocketDataProvider(&data1); 1446 session_deps_.socket_factory->AddSocketDataProvider(&data1);
1447 1447
1448 std::vector<MockRead> data2_reads; 1448 std::vector<MockRead> data2_reads;
1449 std::vector<MockWrite> data2_writes; 1449 std::vector<MockWrite> data2_writes;
1450 1450
1451 if (use_spdy) { 1451 if (use_spdy) {
1452 data2_writes.push_back(CreateMockWrite(*spdy_request, 0, ASYNC)); 1452 data2_writes.push_back(CreateMockWrite(spdy_request, 0, ASYNC));
1453 1453
1454 data2_reads.push_back(CreateMockRead(*spdy_response, 1, ASYNC)); 1454 data2_reads.push_back(CreateMockRead(spdy_response, 1, ASYNC));
1455 data2_reads.push_back(CreateMockRead(*spdy_data, 2, ASYNC)); 1455 data2_reads.push_back(CreateMockRead(spdy_data, 2, ASYNC));
1456 data2_reads.push_back(MockRead(ASYNC, OK, 3)); 1456 data2_reads.push_back(MockRead(ASYNC, OK, 3));
1457 } else { 1457 } else {
1458 data2_writes.push_back( 1458 data2_writes.push_back(
1459 MockWrite(ASYNC, kHttpRequest, strlen(kHttpRequest), 0)); 1459 MockWrite(ASYNC, kHttpRequest, strlen(kHttpRequest), 0));
1460 1460
1461 data2_reads.push_back( 1461 data2_reads.push_back(
1462 MockRead(ASYNC, kHttpResponse, strlen(kHttpResponse), 1)); 1462 MockRead(ASYNC, kHttpResponse, strlen(kHttpResponse), 1));
1463 data2_reads.push_back(MockRead(ASYNC, kHttpData, strlen(kHttpData), 2)); 1463 data2_reads.push_back(MockRead(ASYNC, kHttpData, strlen(kHttpData), 2));
1464 data2_reads.push_back(MockRead(ASYNC, OK, 3)); 1464 data2_reads.push_back(MockRead(ASYNC, OK, 3));
1465 } 1465 }
(...skipping 2914 matching lines...) Expand 10 before | Expand all | Expand 10 after
4380 request.url = GURL("http://www.example.org/"); 4380 request.url = GURL("http://www.example.org/");
4381 request.load_flags = 0; 4381 request.load_flags = 0;
4382 4382
4383 // Configure against https proxy server "proxy:70". 4383 // Configure against https proxy server "proxy:70".
4384 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4384 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4385 BoundTestNetLog log; 4385 BoundTestNetLog log;
4386 session_deps_.net_log = log.bound().net_log(); 4386 session_deps_.net_log = log.bound().net_log();
4387 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4387 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4388 4388
4389 // fetch http://www.example.org/ via SPDY 4389 // fetch http://www.example.org/ via SPDY
4390 std::unique_ptr<SpdySerializedFrame> req( 4390 SpdySerializedFrame req(
4391 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 4391 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
4392 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 4392 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
4393 4393
4394 std::unique_ptr<SpdySerializedFrame> resp( 4394 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
4395 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 4395 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
4396 std::unique_ptr<SpdySerializedFrame> data(
4397 spdy_util_.ConstructSpdyBodyFrame(1, true));
4398 MockRead spdy_reads[] = { 4396 MockRead spdy_reads[] = {
4399 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 4397 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
4400 }; 4398 };
4401 4399
4402 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4400 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4403 arraysize(spdy_writes)); 4401 arraysize(spdy_writes));
4404 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4402 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4405 4403
4406 SSLSocketDataProvider ssl(ASYNC, OK); 4404 SSLSocketDataProvider ssl(ASYNC, OK);
4407 ssl.SetNextProto(kProtoHTTP2); 4405 ssl.SetNextProto(kProtoHTTP2);
4408 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 4406 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
4409 4407
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
4442 request.url = GURL("http://www.example.org/"); 4440 request.url = GURL("http://www.example.org/");
4443 request.load_flags = 0; 4441 request.load_flags = 0;
4444 4442
4445 // Configure SPDY proxy server "proxy:70". 4443 // Configure SPDY proxy server "proxy:70".
4446 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4444 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4447 BoundTestNetLog log; 4445 BoundTestNetLog log;
4448 session_deps_.net_log = log.bound().net_log(); 4446 session_deps_.net_log = log.bound().net_log();
4449 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4447 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4450 4448
4451 // Fetch http://www.example.org/ through the SPDY proxy. 4449 // Fetch http://www.example.org/ through the SPDY proxy.
4452 std::unique_ptr<SpdySerializedFrame> req( 4450 SpdySerializedFrame req(
4453 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 4451 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
4454 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 4452 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
4455 4453
4456 std::unique_ptr<SpdySerializedFrame> resp( 4454 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4457 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4455 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
4458 std::unique_ptr<SpdySerializedFrame> data(
4459 spdy_util_.ConstructSpdyBodyFrame(1, true));
4460 MockRead spdy_reads[] = { 4456 MockRead spdy_reads[] = {
4461 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 4457 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
4462 }; 4458 };
4463 4459
4464 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4460 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4465 arraysize(spdy_writes)); 4461 arraysize(spdy_writes));
4466 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4462 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4467 4463
4468 SSLSocketDataProvider ssl(ASYNC, OK); 4464 SSLSocketDataProvider ssl(ASYNC, OK);
4469 ssl.SetNextProto(kProtoHTTP2); 4465 ssl.SetNextProto(kProtoHTTP2);
4470 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 4466 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
4471 4467
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
4515 4511
4516 // Configure against https proxy server "myproxy:70". 4512 // Configure against https proxy server "myproxy:70".
4517 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70"); 4513 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70");
4518 BoundTestNetLog log; 4514 BoundTestNetLog log;
4519 session_deps_.net_log = log.bound().net_log(); 4515 session_deps_.net_log = log.bound().net_log();
4520 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4516 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4521 4517
4522 // The first request will be a bare GET, the second request will be a 4518 // The first request will be a bare GET, the second request will be a
4523 // GET with a Proxy-Authorization header. 4519 // GET with a Proxy-Authorization header.
4524 spdy_util_.set_default_url(request.url); 4520 spdy_util_.set_default_url(request.url);
4525 std::unique_ptr<SpdySerializedFrame> req_get( 4521 SpdySerializedFrame req_get(
4526 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false)); 4522 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false));
4527 spdy_util_.UpdateWithStreamDestruction(1); 4523 spdy_util_.UpdateWithStreamDestruction(1);
4528 const char* const kExtraAuthorizationHeaders[] = { 4524 const char* const kExtraAuthorizationHeaders[] = {
4529 "proxy-authorization", "Basic Zm9vOmJhcg==" 4525 "proxy-authorization", "Basic Zm9vOmJhcg=="
4530 }; 4526 };
4531 std::unique_ptr<SpdySerializedFrame> req_get_authorization( 4527 SpdySerializedFrame req_get_authorization(spdy_util_.ConstructSpdyGet(
4532 spdy_util_.ConstructSpdyGet(kExtraAuthorizationHeaders, 4528 kExtraAuthorizationHeaders, arraysize(kExtraAuthorizationHeaders) / 2, 3,
4533 arraysize(kExtraAuthorizationHeaders) / 2, 3, 4529 LOWEST, false));
4534 LOWEST, false));
4535 MockWrite spdy_writes[] = { 4530 MockWrite spdy_writes[] = {
4536 CreateMockWrite(*req_get, 0), CreateMockWrite(*req_get_authorization, 3), 4531 CreateMockWrite(req_get, 0), CreateMockWrite(req_get_authorization, 3),
4537 }; 4532 };
4538 4533
4539 // The first response is a 407 proxy authentication challenge, and the second 4534 // The first response is a 407 proxy authentication challenge, and the second
4540 // response will be a 200 response since the second request includes a valid 4535 // response will be a 200 response since the second request includes a valid
4541 // Authorization header. 4536 // Authorization header.
4542 const char* const kExtraAuthenticationHeaders[] = { 4537 const char* const kExtraAuthenticationHeaders[] = {
4543 "proxy-authenticate", "Basic realm=\"MyRealm1\"" 4538 "proxy-authenticate", "Basic realm=\"MyRealm1\""
4544 }; 4539 };
4545 std::unique_ptr<SpdySerializedFrame> resp_authentication( 4540 SpdySerializedFrame resp_authentication(spdy_util_.ConstructSpdySynReplyError(
4546 spdy_util_.ConstructSpdySynReplyError( 4541 "407 Proxy Authentication Required", kExtraAuthenticationHeaders,
4547 "407 Proxy Authentication Required", kExtraAuthenticationHeaders, 4542 arraysize(kExtraAuthenticationHeaders) / 2, 1));
4548 arraysize(kExtraAuthenticationHeaders) / 2, 1)); 4543 SpdySerializedFrame body_authentication(
4549 std::unique_ptr<SpdySerializedFrame> body_authentication( 4544 spdy_util_.ConstructSpdyDataFrame(1, true));
4550 spdy_util_.ConstructSpdyBodyFrame(1, true)); 4545 SpdySerializedFrame resp_data(
4551 std::unique_ptr<SpdySerializedFrame> resp_data(
4552 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 4546 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
4553 std::unique_ptr<SpdySerializedFrame> body_data( 4547 SpdySerializedFrame body_data(spdy_util_.ConstructSpdyDataFrame(3, true));
4554 spdy_util_.ConstructSpdyBodyFrame(3, true));
4555 MockRead spdy_reads[] = { 4548 MockRead spdy_reads[] = {
4556 CreateMockRead(*resp_authentication, 1), 4549 CreateMockRead(resp_authentication, 1),
4557 CreateMockRead(*body_authentication, 2), 4550 CreateMockRead(body_authentication, 2),
4558 CreateMockRead(*resp_data, 4), 4551 CreateMockRead(resp_data, 4),
4559 CreateMockRead(*body_data, 5), 4552 CreateMockRead(body_data, 5),
4560 MockRead(ASYNC, 0, 6), 4553 MockRead(ASYNC, 0, 6),
4561 }; 4554 };
4562 4555
4563 SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4556 SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4564 arraysize(spdy_writes)); 4557 arraysize(spdy_writes));
4565 session_deps_.socket_factory->AddSocketDataProvider(&data); 4558 session_deps_.socket_factory->AddSocketDataProvider(&data);
4566 4559
4567 SSLSocketDataProvider ssl(ASYNC, OK); 4560 SSLSocketDataProvider ssl(ASYNC, OK);
4568 ssl.SetNextProto(kProtoHTTP2); 4561 ssl.SetNextProto(kProtoHTTP2);
4569 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 4562 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
4615 // Configure against https proxy server "proxy:70". 4608 // Configure against https proxy server "proxy:70".
4616 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4609 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4617 BoundTestNetLog log; 4610 BoundTestNetLog log;
4618 session_deps_.net_log = log.bound().net_log(); 4611 session_deps_.net_log = log.bound().net_log();
4619 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4612 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4620 4613
4621 std::unique_ptr<HttpTransaction> trans( 4614 std::unique_ptr<HttpTransaction> trans(
4622 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4615 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4623 4616
4624 // CONNECT to www.example.org:443 via SPDY 4617 // CONNECT to www.example.org:443 via SPDY
4625 std::unique_ptr<SpdySerializedFrame> connect(spdy_util_.ConstructSpdyConnect( 4618 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect(
4626 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4619 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4627 // fetch https://www.example.org/ via HTTP 4620 // fetch https://www.example.org/ via HTTP
4628 4621
4629 const char get[] = 4622 const char get[] =
4630 "GET / HTTP/1.1\r\n" 4623 "GET / HTTP/1.1\r\n"
4631 "Host: www.example.org\r\n" 4624 "Host: www.example.org\r\n"
4632 "Connection: keep-alive\r\n\r\n"; 4625 "Connection: keep-alive\r\n\r\n";
4633 std::unique_ptr<SpdySerializedFrame> wrapped_get( 4626 SpdySerializedFrame wrapped_get(
4634 spdy_util_.ConstructSpdyBodyFrame(1, get, strlen(get), false)); 4627 spdy_util_.ConstructSpdyDataFrame(1, get, strlen(get), false));
4635 std::unique_ptr<SpdySerializedFrame> conn_resp( 4628 SpdySerializedFrame conn_resp(
4636 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4629 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4637 const char resp[] = "HTTP/1.1 200 OK\r\n" 4630 const char resp[] = "HTTP/1.1 200 OK\r\n"
4638 "Content-Length: 10\r\n\r\n"; 4631 "Content-Length: 10\r\n\r\n";
4639 std::unique_ptr<SpdySerializedFrame> wrapped_get_resp( 4632 SpdySerializedFrame wrapped_get_resp(
4640 spdy_util_.ConstructSpdyBodyFrame(1, resp, strlen(resp), false)); 4633 spdy_util_.ConstructSpdyDataFrame(1, resp, strlen(resp), false));
4641 std::unique_ptr<SpdySerializedFrame> wrapped_body( 4634 SpdySerializedFrame wrapped_body(
4642 spdy_util_.ConstructSpdyBodyFrame(1, "1234567890", 10, false)); 4635 spdy_util_.ConstructSpdyDataFrame(1, "1234567890", 10, false));
4643 std::unique_ptr<SpdySerializedFrame> window_update( 4636 SpdySerializedFrame window_update(
4644 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size())); 4637 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp.size()));
4645 4638
4646 MockWrite spdy_writes[] = { 4639 MockWrite spdy_writes[] = {
4647 CreateMockWrite(*connect, 0), 4640 CreateMockWrite(connect, 0), CreateMockWrite(wrapped_get, 2),
4648 CreateMockWrite(*wrapped_get, 2), 4641 CreateMockWrite(window_update, 6),
4649 CreateMockWrite(*window_update, 6),
4650 }; 4642 };
4651 4643
4652 MockRead spdy_reads[] = { 4644 MockRead spdy_reads[] = {
4653 CreateMockRead(*conn_resp, 1, ASYNC), 4645 CreateMockRead(conn_resp, 1, ASYNC),
4654 CreateMockRead(*wrapped_get_resp, 3, ASYNC), 4646 CreateMockRead(wrapped_get_resp, 3, ASYNC),
4655 CreateMockRead(*wrapped_body, 4, ASYNC), 4647 CreateMockRead(wrapped_body, 4, ASYNC),
4656 CreateMockRead(*wrapped_body, 5, ASYNC), 4648 CreateMockRead(wrapped_body, 5, ASYNC),
4657 MockRead(ASYNC, 0, 7), 4649 MockRead(ASYNC, 0, 7),
4658 }; 4650 };
4659 4651
4660 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4652 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4661 arraysize(spdy_writes)); 4653 arraysize(spdy_writes));
4662 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4654 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4663 4655
4664 SSLSocketDataProvider ssl(ASYNC, OK); 4656 SSLSocketDataProvider ssl(ASYNC, OK);
4665 ssl.SetNextProto(kProtoHTTP2); 4657 ssl.SetNextProto(kProtoHTTP2);
4666 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 4658 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
4701 // Configure against https proxy server "proxy:70". 4693 // Configure against https proxy server "proxy:70".
4702 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4694 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4703 BoundTestNetLog log; 4695 BoundTestNetLog log;
4704 session_deps_.net_log = log.bound().net_log(); 4696 session_deps_.net_log = log.bound().net_log();
4705 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4697 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4706 4698
4707 std::unique_ptr<HttpTransaction> trans( 4699 std::unique_ptr<HttpTransaction> trans(
4708 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4700 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4709 4701
4710 // CONNECT to www.example.org:443 via SPDY 4702 // CONNECT to www.example.org:443 via SPDY
4711 std::unique_ptr<SpdySerializedFrame> connect(spdy_util_.ConstructSpdyConnect( 4703 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect(
4712 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4704 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4713 // fetch https://www.example.org/ via SPDY 4705 // fetch https://www.example.org/ via SPDY
4714 const char kMyUrl[] = "https://www.example.org/"; 4706 const char kMyUrl[] = "https://www.example.org/";
4715 std::unique_ptr<SpdySerializedFrame> get( 4707 SpdySerializedFrame get(
4716 spdy_util_wrapped.ConstructSpdyGet(kMyUrl, 1, LOWEST)); 4708 spdy_util_wrapped.ConstructSpdyGet(kMyUrl, 1, LOWEST));
4717 std::unique_ptr<SpdySerializedFrame> wrapped_get( 4709 SpdySerializedFrame wrapped_get(spdy_util_.ConstructWrappedSpdyFrame(get, 1));
4718 spdy_util_.ConstructWrappedSpdyFrame(get, 1)); 4710 SpdySerializedFrame conn_resp(
4719 std::unique_ptr<SpdySerializedFrame> conn_resp(
4720 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4711 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4721 std::unique_ptr<SpdySerializedFrame> get_resp( 4712 SpdySerializedFrame get_resp(
4722 spdy_util_wrapped.ConstructSpdyGetSynReply(NULL, 0, 1)); 4713 spdy_util_wrapped.ConstructSpdyGetSynReply(NULL, 0, 1));
4723 std::unique_ptr<SpdySerializedFrame> wrapped_get_resp( 4714 SpdySerializedFrame wrapped_get_resp(
4724 spdy_util_.ConstructWrappedSpdyFrame(get_resp, 1)); 4715 spdy_util_.ConstructWrappedSpdyFrame(get_resp, 1));
4725 std::unique_ptr<SpdySerializedFrame> body( 4716 SpdySerializedFrame body(spdy_util_wrapped.ConstructSpdyDataFrame(1, true));
4726 spdy_util_wrapped.ConstructSpdyBodyFrame(1, true)); 4717 SpdySerializedFrame wrapped_body(
4727 std::unique_ptr<SpdySerializedFrame> wrapped_body(
4728 spdy_util_.ConstructWrappedSpdyFrame(body, 1)); 4718 spdy_util_.ConstructWrappedSpdyFrame(body, 1));
4729 std::unique_ptr<SpdySerializedFrame> window_update_get_resp( 4719 SpdySerializedFrame window_update_get_resp(
4730 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size())); 4720 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp.size()));
4731 std::unique_ptr<SpdySerializedFrame> window_update_body( 4721 SpdySerializedFrame window_update_body(
4732 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_body->size())); 4722 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_body.size()));
4733 4723
4734 MockWrite spdy_writes[] = { 4724 MockWrite spdy_writes[] = {
4735 CreateMockWrite(*connect, 0), 4725 CreateMockWrite(connect, 0), CreateMockWrite(wrapped_get, 2),
4736 CreateMockWrite(*wrapped_get, 2), 4726 CreateMockWrite(window_update_get_resp, 6),
4737 CreateMockWrite(*window_update_get_resp, 6), 4727 CreateMockWrite(window_update_body, 7),
4738 CreateMockWrite(*window_update_body, 7),
4739 }; 4728 };
4740 4729
4741 MockRead spdy_reads[] = { 4730 MockRead spdy_reads[] = {
4742 CreateMockRead(*conn_resp, 1, ASYNC), 4731 CreateMockRead(conn_resp, 1, ASYNC),
4743 MockRead(ASYNC, ERR_IO_PENDING, 3), 4732 MockRead(ASYNC, ERR_IO_PENDING, 3),
4744 CreateMockRead(*wrapped_get_resp, 4, ASYNC), 4733 CreateMockRead(wrapped_get_resp, 4, ASYNC),
4745 CreateMockRead(*wrapped_body, 5, ASYNC), 4734 CreateMockRead(wrapped_body, 5, ASYNC),
4746 MockRead(ASYNC, 0, 8), 4735 MockRead(ASYNC, 0, 8),
4747 }; 4736 };
4748 4737
4749 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4738 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4750 arraysize(spdy_writes)); 4739 arraysize(spdy_writes));
4751 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4740 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4752 4741
4753 SSLSocketDataProvider ssl(ASYNC, OK); 4742 SSLSocketDataProvider ssl(ASYNC, OK);
4754 ssl.SetNextProto(kProtoHTTP2); 4743 ssl.SetNextProto(kProtoHTTP2);
4755 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 4744 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4793 // Configure against https proxy server "proxy:70". 4782 // Configure against https proxy server "proxy:70".
4794 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4783 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4795 BoundTestNetLog log; 4784 BoundTestNetLog log;
4796 session_deps_.net_log = log.bound().net_log(); 4785 session_deps_.net_log = log.bound().net_log();
4797 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4786 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4798 4787
4799 std::unique_ptr<HttpTransaction> trans( 4788 std::unique_ptr<HttpTransaction> trans(
4800 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4789 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4801 4790
4802 // CONNECT to www.example.org:443 via SPDY 4791 // CONNECT to www.example.org:443 via SPDY
4803 std::unique_ptr<SpdySerializedFrame> connect(spdy_util_.ConstructSpdyConnect( 4792 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect(
4804 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4793 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4805 std::unique_ptr<SpdySerializedFrame> get( 4794 SpdySerializedFrame get(
4806 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 4795 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
4807 4796
4808 MockWrite spdy_writes[] = { 4797 MockWrite spdy_writes[] = {
4809 CreateMockWrite(*connect, 0), CreateMockWrite(*get, 2), 4798 CreateMockWrite(connect, 0), CreateMockWrite(get, 2),
4810 }; 4799 };
4811 4800
4812 std::unique_ptr<SpdySerializedFrame> resp( 4801 SpdySerializedFrame resp(spdy_util_.ConstructSpdySynReplyError(1));
4813 spdy_util_.ConstructSpdySynReplyError(1)); 4802 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
4814 std::unique_ptr<SpdySerializedFrame> data(
4815 spdy_util_.ConstructSpdyBodyFrame(1, true));
4816 MockRead spdy_reads[] = { 4803 MockRead spdy_reads[] = {
4817 CreateMockRead(*resp, 1, ASYNC), MockRead(ASYNC, 0, 3), 4804 CreateMockRead(resp, 1, ASYNC), MockRead(ASYNC, 0, 3),
4818 }; 4805 };
4819 4806
4820 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4807 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4821 arraysize(spdy_writes)); 4808 arraysize(spdy_writes));
4822 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4809 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4823 4810
4824 SSLSocketDataProvider ssl(ASYNC, OK); 4811 SSLSocketDataProvider ssl(ASYNC, OK);
4825 ssl.SetNextProto(kProtoHTTP2); 4812 ssl.SetNextProto(kProtoHTTP2);
4826 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 4813 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
4827 SSLSocketDataProvider ssl2(ASYNC, OK); 4814 SSLSocketDataProvider ssl2(ASYNC, OK);
(...skipping 26 matching lines...) Expand all
4854 request1.method = "GET"; 4841 request1.method = "GET";
4855 request1.url = GURL("https://www.example.org/"); 4842 request1.url = GURL("https://www.example.org/");
4856 request1.load_flags = 0; 4843 request1.load_flags = 0;
4857 4844
4858 HttpRequestInfo request2; 4845 HttpRequestInfo request2;
4859 request2.method = "GET"; 4846 request2.method = "GET";
4860 request2.url = GURL("https://mail.example.org/"); 4847 request2.url = GURL("https://mail.example.org/");
4861 request2.load_flags = 0; 4848 request2.load_flags = 0;
4862 4849
4863 // CONNECT to www.example.org:443 via SPDY. 4850 // CONNECT to www.example.org:443 via SPDY.
4864 std::unique_ptr<SpdySerializedFrame> connect1(spdy_util_.ConstructSpdyConnect( 4851 SpdySerializedFrame connect1(spdy_util_.ConstructSpdyConnect(
4865 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4852 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4866 std::unique_ptr<SpdySerializedFrame> conn_resp1( 4853 SpdySerializedFrame conn_resp1(
4867 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4854 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4868 4855
4869 // Fetch https://www.example.org/ via HTTP. 4856 // Fetch https://www.example.org/ via HTTP.
4870 const char get1[] = 4857 const char get1[] =
4871 "GET / HTTP/1.1\r\n" 4858 "GET / HTTP/1.1\r\n"
4872 "Host: www.example.org\r\n" 4859 "Host: www.example.org\r\n"
4873 "Connection: keep-alive\r\n\r\n"; 4860 "Connection: keep-alive\r\n\r\n";
4874 std::unique_ptr<SpdySerializedFrame> wrapped_get1( 4861 SpdySerializedFrame wrapped_get1(
4875 spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); 4862 spdy_util_.ConstructSpdyDataFrame(1, get1, strlen(get1), false));
4876 const char resp1[] = "HTTP/1.1 200 OK\r\n" 4863 const char resp1[] = "HTTP/1.1 200 OK\r\n"
4877 "Content-Length: 1\r\n\r\n"; 4864 "Content-Length: 1\r\n\r\n";
4878 std::unique_ptr<SpdySerializedFrame> wrapped_get_resp1( 4865 SpdySerializedFrame wrapped_get_resp1(
4879 spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); 4866 spdy_util_.ConstructSpdyDataFrame(1, resp1, strlen(resp1), false));
4880 std::unique_ptr<SpdySerializedFrame> wrapped_body1( 4867 SpdySerializedFrame wrapped_body1(
4881 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false)); 4868 spdy_util_.ConstructSpdyDataFrame(1, "1", 1, false));
4882 std::unique_ptr<SpdySerializedFrame> window_update( 4869 SpdySerializedFrame window_update(
4883 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size())); 4870 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1.size()));
4884 4871
4885 // CONNECT to mail.example.org:443 via SPDY. 4872 // CONNECT to mail.example.org:443 via SPDY.
4886 SpdyHeaderBlock connect2_block; 4873 SpdyHeaderBlock connect2_block;
4887 connect2_block[spdy_util_.GetMethodKey()] = "CONNECT"; 4874 connect2_block[spdy_util_.GetMethodKey()] = "CONNECT";
4888 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org:443"; 4875 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org:443";
4889 std::unique_ptr<SpdySerializedFrame> connect2( 4876 SpdySerializedFrame connect2(
4890 spdy_util_.ConstructSpdySyn(3, std::move(connect2_block), LOWEST, false)); 4877 spdy_util_.ConstructSpdySyn(3, std::move(connect2_block), LOWEST, false));
4891 4878
4892 std::unique_ptr<SpdySerializedFrame> conn_resp2( 4879 SpdySerializedFrame conn_resp2(
4893 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 4880 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
4894 4881
4895 // Fetch https://mail.example.org/ via HTTP. 4882 // Fetch https://mail.example.org/ via HTTP.
4896 const char get2[] = 4883 const char get2[] =
4897 "GET / HTTP/1.1\r\n" 4884 "GET / HTTP/1.1\r\n"
4898 "Host: mail.example.org\r\n" 4885 "Host: mail.example.org\r\n"
4899 "Connection: keep-alive\r\n\r\n"; 4886 "Connection: keep-alive\r\n\r\n";
4900 std::unique_ptr<SpdySerializedFrame> wrapped_get2( 4887 SpdySerializedFrame wrapped_get2(
4901 spdy_util_.ConstructSpdyBodyFrame(3, get2, strlen(get2), false)); 4888 spdy_util_.ConstructSpdyDataFrame(3, get2, strlen(get2), false));
4902 const char resp2[] = "HTTP/1.1 200 OK\r\n" 4889 const char resp2[] = "HTTP/1.1 200 OK\r\n"
4903 "Content-Length: 2\r\n\r\n"; 4890 "Content-Length: 2\r\n\r\n";
4904 std::unique_ptr<SpdySerializedFrame> wrapped_get_resp2( 4891 SpdySerializedFrame wrapped_get_resp2(
4905 spdy_util_.ConstructSpdyBodyFrame(3, resp2, strlen(resp2), false)); 4892 spdy_util_.ConstructSpdyDataFrame(3, resp2, strlen(resp2), false));
4906 std::unique_ptr<SpdySerializedFrame> wrapped_body2( 4893 SpdySerializedFrame wrapped_body2(
4907 spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, false)); 4894 spdy_util_.ConstructSpdyDataFrame(3, "22", 2, false));
4908 4895
4909 MockWrite spdy_writes[] = { 4896 MockWrite spdy_writes[] = {
4910 CreateMockWrite(*connect1, 0), 4897 CreateMockWrite(connect1, 0), CreateMockWrite(wrapped_get1, 2),
4911 CreateMockWrite(*wrapped_get1, 2), 4898 CreateMockWrite(connect2, 5), CreateMockWrite(wrapped_get2, 7),
4912 CreateMockWrite(*connect2, 5),
4913 CreateMockWrite(*wrapped_get2, 7),
4914 }; 4899 };
4915 4900
4916 MockRead spdy_reads[] = { 4901 MockRead spdy_reads[] = {
4917 CreateMockRead(*conn_resp1, 1, ASYNC), 4902 CreateMockRead(conn_resp1, 1, ASYNC),
4918 CreateMockRead(*wrapped_get_resp1, 3, ASYNC), 4903 CreateMockRead(wrapped_get_resp1, 3, ASYNC),
4919 CreateMockRead(*wrapped_body1, 4, ASYNC), 4904 CreateMockRead(wrapped_body1, 4, ASYNC),
4920 CreateMockRead(*conn_resp2, 6, ASYNC), 4905 CreateMockRead(conn_resp2, 6, ASYNC),
4921 CreateMockRead(*wrapped_get_resp2, 8, ASYNC), 4906 CreateMockRead(wrapped_get_resp2, 8, ASYNC),
4922 CreateMockRead(*wrapped_body2, 9, ASYNC), 4907 CreateMockRead(wrapped_body2, 9, ASYNC),
4923 MockRead(ASYNC, 0, 10), 4908 MockRead(ASYNC, 0, 10),
4924 }; 4909 };
4925 4910
4926 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4911 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4927 arraysize(spdy_writes)); 4912 arraysize(spdy_writes));
4928 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4913 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4929 4914
4930 SSLSocketDataProvider ssl(ASYNC, OK); 4915 SSLSocketDataProvider ssl(ASYNC, OK);
4931 ssl.SetNextProto(kProtoHTTP2); 4916 ssl.SetNextProto(kProtoHTTP2);
4932 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 4917 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
4933 SSLSocketDataProvider ssl2(ASYNC, OK); 4918 SSLSocketDataProvider ssl2(ASYNC, OK);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
4990 request1.method = "GET"; 4975 request1.method = "GET";
4991 request1.url = GURL("https://www.example.org/"); 4976 request1.url = GURL("https://www.example.org/");
4992 request1.load_flags = 0; 4977 request1.load_flags = 0;
4993 4978
4994 HttpRequestInfo request2; 4979 HttpRequestInfo request2;
4995 request2.method = "GET"; 4980 request2.method = "GET";
4996 request2.url = GURL("https://www.example.org/2"); 4981 request2.url = GURL("https://www.example.org/2");
4997 request2.load_flags = 0; 4982 request2.load_flags = 0;
4998 4983
4999 // CONNECT to www.example.org:443 via SPDY. 4984 // CONNECT to www.example.org:443 via SPDY.
5000 std::unique_ptr<SpdySerializedFrame> connect1(spdy_util_.ConstructSpdyConnect( 4985 SpdySerializedFrame connect1(spdy_util_.ConstructSpdyConnect(
5001 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4986 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
5002 std::unique_ptr<SpdySerializedFrame> conn_resp1( 4987 SpdySerializedFrame conn_resp1(
5003 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4988 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
5004 4989
5005 // Fetch https://www.example.org/ via HTTP. 4990 // Fetch https://www.example.org/ via HTTP.
5006 const char get1[] = 4991 const char get1[] =
5007 "GET / HTTP/1.1\r\n" 4992 "GET / HTTP/1.1\r\n"
5008 "Host: www.example.org\r\n" 4993 "Host: www.example.org\r\n"
5009 "Connection: keep-alive\r\n\r\n"; 4994 "Connection: keep-alive\r\n\r\n";
5010 std::unique_ptr<SpdySerializedFrame> wrapped_get1( 4995 SpdySerializedFrame wrapped_get1(
5011 spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); 4996 spdy_util_.ConstructSpdyDataFrame(1, get1, strlen(get1), false));
5012 const char resp1[] = "HTTP/1.1 200 OK\r\n" 4997 const char resp1[] = "HTTP/1.1 200 OK\r\n"
5013 "Content-Length: 1\r\n\r\n"; 4998 "Content-Length: 1\r\n\r\n";
5014 std::unique_ptr<SpdySerializedFrame> wrapped_get_resp1( 4999 SpdySerializedFrame wrapped_get_resp1(
5015 spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); 5000 spdy_util_.ConstructSpdyDataFrame(1, resp1, strlen(resp1), false));
5016 std::unique_ptr<SpdySerializedFrame> wrapped_body1( 5001 SpdySerializedFrame wrapped_body1(
5017 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false)); 5002 spdy_util_.ConstructSpdyDataFrame(1, "1", 1, false));
5018 std::unique_ptr<SpdySerializedFrame> window_update( 5003 SpdySerializedFrame window_update(
5019 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size())); 5004 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1.size()));
5020 5005
5021 // Fetch https://www.example.org/2 via HTTP. 5006 // Fetch https://www.example.org/2 via HTTP.
5022 const char get2[] = 5007 const char get2[] =
5023 "GET /2 HTTP/1.1\r\n" 5008 "GET /2 HTTP/1.1\r\n"
5024 "Host: www.example.org\r\n" 5009 "Host: www.example.org\r\n"
5025 "Connection: keep-alive\r\n\r\n"; 5010 "Connection: keep-alive\r\n\r\n";
5026 std::unique_ptr<SpdySerializedFrame> wrapped_get2( 5011 SpdySerializedFrame wrapped_get2(
5027 spdy_util_.ConstructSpdyBodyFrame(1, get2, strlen(get2), false)); 5012 spdy_util_.ConstructSpdyDataFrame(1, get2, strlen(get2), false));
5028 const char resp2[] = "HTTP/1.1 200 OK\r\n" 5013 const char resp2[] = "HTTP/1.1 200 OK\r\n"
5029 "Content-Length: 2\r\n\r\n"; 5014 "Content-Length: 2\r\n\r\n";
5030 std::unique_ptr<SpdySerializedFrame> wrapped_get_resp2( 5015 SpdySerializedFrame wrapped_get_resp2(
5031 spdy_util_.ConstructSpdyBodyFrame(1, resp2, strlen(resp2), false)); 5016 spdy_util_.ConstructSpdyDataFrame(1, resp2, strlen(resp2), false));
5032 std::unique_ptr<SpdySerializedFrame> wrapped_body2( 5017 SpdySerializedFrame wrapped_body2(
5033 spdy_util_.ConstructSpdyBodyFrame(1, "22", 2, false)); 5018 spdy_util_.ConstructSpdyDataFrame(1, "22", 2, false));
5034 5019
5035 MockWrite spdy_writes[] = { 5020 MockWrite spdy_writes[] = {
5036 CreateMockWrite(*connect1, 0), 5021 CreateMockWrite(connect1, 0), CreateMockWrite(wrapped_get1, 2),
5037 CreateMockWrite(*wrapped_get1, 2), 5022 CreateMockWrite(wrapped_get2, 5),
5038 CreateMockWrite(*wrapped_get2, 5),
5039 }; 5023 };
5040 5024
5041 MockRead spdy_reads[] = { 5025 MockRead spdy_reads[] = {
5042 CreateMockRead(*conn_resp1, 1, ASYNC), 5026 CreateMockRead(conn_resp1, 1, ASYNC),
5043 CreateMockRead(*wrapped_get_resp1, 3, ASYNC), 5027 CreateMockRead(wrapped_get_resp1, 3, ASYNC),
5044 CreateMockRead(*wrapped_body1, 4, ASYNC), 5028 CreateMockRead(wrapped_body1, 4, ASYNC),
5045 CreateMockRead(*wrapped_get_resp2, 6, ASYNC), 5029 CreateMockRead(wrapped_get_resp2, 6, ASYNC),
5046 CreateMockRead(*wrapped_body2, 7, ASYNC), 5030 CreateMockRead(wrapped_body2, 7, ASYNC),
5047 MockRead(ASYNC, 0, 8), 5031 MockRead(ASYNC, 0, 8),
5048 }; 5032 };
5049 5033
5050 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 5034 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
5051 arraysize(spdy_writes)); 5035 arraysize(spdy_writes));
5052 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 5036 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
5053 5037
5054 SSLSocketDataProvider ssl(ASYNC, OK); 5038 SSLSocketDataProvider ssl(ASYNC, OK);
5055 ssl.SetNextProto(kProtoHTTP2); 5039 ssl.SetNextProto(kProtoHTTP2);
5056 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 5040 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
5057 SSLSocketDataProvider ssl2(ASYNC, OK); 5041 SSLSocketDataProvider ssl2(ASYNC, OK);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
5115 request1.load_flags = 0; 5099 request1.load_flags = 0;
5116 5100
5117 HttpRequestInfo request2; 5101 HttpRequestInfo request2;
5118 request2.method = "GET"; 5102 request2.method = "GET";
5119 request2.url = GURL("http://mail.example.org/"); 5103 request2.url = GURL("http://mail.example.org/");
5120 request2.load_flags = 0; 5104 request2.load_flags = 0;
5121 5105
5122 // http://www.example.org/ 5106 // http://www.example.org/
5123 SpdyHeaderBlock headers( 5107 SpdyHeaderBlock headers(
5124 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/")); 5108 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/"));
5125 std::unique_ptr<SpdySerializedFrame> get1( 5109 SpdySerializedFrame get1(
5126 spdy_util_.ConstructSpdySyn(1, std::move(headers), LOWEST, true)); 5110 spdy_util_.ConstructSpdySyn(1, std::move(headers), LOWEST, true));
5127 std::unique_ptr<SpdySerializedFrame> get_resp1( 5111 SpdySerializedFrame get_resp1(
5128 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 5112 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
5129 std::unique_ptr<SpdySerializedFrame> body1( 5113 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, "1", 1, true));
5130 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, true));
5131 spdy_util_.UpdateWithStreamDestruction(1); 5114 spdy_util_.UpdateWithStreamDestruction(1);
5132 5115
5133 // http://mail.example.org/ 5116 // http://mail.example.org/
5134 SpdyHeaderBlock headers2( 5117 SpdyHeaderBlock headers2(
5135 spdy_util_.ConstructGetHeaderBlockForProxy("http://mail.example.org/")); 5118 spdy_util_.ConstructGetHeaderBlockForProxy("http://mail.example.org/"));
5136 std::unique_ptr<SpdySerializedFrame> get2( 5119 SpdySerializedFrame get2(
5137 spdy_util_.ConstructSpdySyn(3, std::move(headers2), LOWEST, true)); 5120 spdy_util_.ConstructSpdySyn(3, std::move(headers2), LOWEST, true));
5138 std::unique_ptr<SpdySerializedFrame> get_resp2( 5121 SpdySerializedFrame get_resp2(
5139 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 5122 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
5140 std::unique_ptr<SpdySerializedFrame> body2( 5123 SpdySerializedFrame body2(
5141 spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, true)); 5124 spdy_util_.ConstructSpdyDataFrame(3, "22", 2, true));
5142 5125
5143 MockWrite spdy_writes[] = { 5126 MockWrite spdy_writes[] = {
5144 CreateMockWrite(*get1, 0), 5127 CreateMockWrite(get1, 0), CreateMockWrite(get2, 3),
5145 CreateMockWrite(*get2, 3),
5146 }; 5128 };
5147 5129
5148 MockRead spdy_reads[] = { 5130 MockRead spdy_reads[] = {
5149 CreateMockRead(*get_resp1, 1, ASYNC), 5131 CreateMockRead(get_resp1, 1, ASYNC),
5150 CreateMockRead(*body1, 2, ASYNC), 5132 CreateMockRead(body1, 2, ASYNC),
5151 CreateMockRead(*get_resp2, 4, ASYNC), 5133 CreateMockRead(get_resp2, 4, ASYNC),
5152 CreateMockRead(*body2, 5, ASYNC), 5134 CreateMockRead(body2, 5, ASYNC),
5153 MockRead(ASYNC, 0, 6), 5135 MockRead(ASYNC, 0, 6),
5154 }; 5136 };
5155 5137
5156 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 5138 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
5157 arraysize(spdy_writes)); 5139 arraysize(spdy_writes));
5158 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 5140 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
5159 5141
5160 SSLSocketDataProvider ssl(ASYNC, OK); 5142 SSLSocketDataProvider ssl(ASYNC, OK);
5161 ssl.SetNextProto(kProtoHTTP2); 5143 ssl.SetNextProto(kProtoHTTP2);
5162 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 5144 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
5163 5145
(...skipping 2533 matching lines...) Expand 10 before | Expand all | Expand 10 after
7697 7679
7698 // Test an HTTPS (SPDY) Proxy's ability to redirect a CONNECT request 7680 // Test an HTTPS (SPDY) Proxy's ability to redirect a CONNECT request
7699 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) { 7681 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) {
7700 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 7682 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
7701 7683
7702 HttpRequestInfo request; 7684 HttpRequestInfo request;
7703 request.method = "GET"; 7685 request.method = "GET";
7704 request.url = GURL("https://www.example.org/"); 7686 request.url = GURL("https://www.example.org/");
7705 request.load_flags = 0; 7687 request.load_flags = 0;
7706 7688
7707 std::unique_ptr<SpdySerializedFrame> conn(spdy_util_.ConstructSpdyConnect( 7689 SpdySerializedFrame conn(spdy_util_.ConstructSpdyConnect(
7708 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 7690 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
7709 std::unique_ptr<SpdySerializedFrame> goaway( 7691 SpdySerializedFrame goaway(
7710 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7692 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7711 MockWrite data_writes[] = { 7693 MockWrite data_writes[] = {
7712 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS), 7694 CreateMockWrite(conn, 0, SYNCHRONOUS),
7713 CreateMockWrite(*goaway.get(), 2, SYNCHRONOUS), 7695 CreateMockWrite(goaway, 2, SYNCHRONOUS),
7714 }; 7696 };
7715 7697
7716 static const char* const kExtraHeaders[] = { 7698 static const char* const kExtraHeaders[] = {
7717 "location", 7699 "location",
7718 "http://login.example.com/", 7700 "http://login.example.com/",
7719 }; 7701 };
7720 std::unique_ptr<SpdySerializedFrame> resp( 7702 SpdySerializedFrame resp(spdy_util_.ConstructSpdySynReplyError(
7721 spdy_util_.ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, 7703 "302 Redirect", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1));
7722 arraysize(kExtraHeaders) / 2, 1));
7723 MockRead data_reads[] = { 7704 MockRead data_reads[] = {
7724 CreateMockRead(*resp.get(), 1), MockRead(ASYNC, 0, 3), // EOF 7705 CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3), // EOF
7725 }; 7706 };
7726 7707
7727 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes, 7708 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes,
7728 arraysize(data_writes)); 7709 arraysize(data_writes));
7729 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy 7710 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
7730 proxy_ssl.SetNextProto(kProtoHTTP2); 7711 proxy_ssl.SetNextProto(kProtoHTTP2);
7731 7712
7732 session_deps_.socket_factory->AddSocketDataProvider(&data); 7713 session_deps_.socket_factory->AddSocketDataProvider(&data);
7733 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy_ssl); 7714 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy_ssl);
7734 7715
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
7801 // Test that a SPDY proxy's response to a CONNECT request is filtered. 7782 // Test that a SPDY proxy's response to a CONNECT request is filtered.
7802 TEST_P(HttpNetworkTransactionTest, 7783 TEST_P(HttpNetworkTransactionTest,
7803 ErrorResponseToHttpsConnectViaSpdyProxy) { 7784 ErrorResponseToHttpsConnectViaSpdyProxy) {
7804 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 7785 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
7805 7786
7806 HttpRequestInfo request; 7787 HttpRequestInfo request;
7807 request.method = "GET"; 7788 request.method = "GET";
7808 request.url = GURL("https://www.example.org/"); 7789 request.url = GURL("https://www.example.org/");
7809 request.load_flags = 0; 7790 request.load_flags = 0;
7810 7791
7811 std::unique_ptr<SpdySerializedFrame> conn(spdy_util_.ConstructSpdyConnect( 7792 SpdySerializedFrame conn(spdy_util_.ConstructSpdyConnect(
7812 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 7793 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
7813 std::unique_ptr<SpdySerializedFrame> rst( 7794 SpdySerializedFrame rst(
7814 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7795 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7815 MockWrite data_writes[] = { 7796 MockWrite data_writes[] = {
7816 CreateMockWrite(*conn.get(), 0), CreateMockWrite(*rst.get(), 3), 7797 CreateMockWrite(conn, 0), CreateMockWrite(rst, 3),
7817 }; 7798 };
7818 7799
7819 static const char* const kExtraHeaders[] = { 7800 static const char* const kExtraHeaders[] = {
7820 "location", 7801 "location",
7821 "http://login.example.com/", 7802 "http://login.example.com/",
7822 }; 7803 };
7823 std::unique_ptr<SpdySerializedFrame> resp( 7804 SpdySerializedFrame resp(spdy_util_.ConstructSpdySynReplyError(
7824 spdy_util_.ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, 7805 "404 Not Found", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1));
7825 arraysize(kExtraHeaders) / 2, 1)); 7806 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(
7826 std::unique_ptr<SpdySerializedFrame> body(spdy_util_.ConstructSpdyBodyFrame(
7827 1, "The host does not exist", 23, true)); 7807 1, "The host does not exist", 23, true));
7828 MockRead data_reads[] = { 7808 MockRead data_reads[] = {
7829 CreateMockRead(*resp.get(), 1), 7809 CreateMockRead(resp, 1), CreateMockRead(body, 2),
7830 CreateMockRead(*body.get(), 2),
7831 MockRead(ASYNC, 0, 4), // EOF 7810 MockRead(ASYNC, 0, 4), // EOF
7832 }; 7811 };
7833 7812
7834 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes, 7813 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes,
7835 arraysize(data_writes)); 7814 arraysize(data_writes));
7836 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy 7815 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
7837 proxy_ssl.SetNextProto(kProtoHTTP2); 7816 proxy_ssl.SetNextProto(kProtoHTTP2);
7838 7817
7839 session_deps_.socket_factory->AddSocketDataProvider(&data); 7818 session_deps_.socket_factory->AddSocketDataProvider(&data);
7840 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy_ssl); 7819 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy_ssl);
(...skipping 23 matching lines...) Expand all
7864 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 7843 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
7865 7844
7866 // Configure against https proxy server "myproxy:70". 7845 // Configure against https proxy server "myproxy:70".
7867 session_deps_.proxy_service = 7846 session_deps_.proxy_service =
7868 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70"); 7847 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70");
7869 BoundTestNetLog log; 7848 BoundTestNetLog log;
7870 session_deps_.net_log = log.bound().net_log(); 7849 session_deps_.net_log = log.bound().net_log();
7871 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7850 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7872 7851
7873 // Since we have proxy, should try to establish tunnel. 7852 // Since we have proxy, should try to establish tunnel.
7874 std::unique_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyConnect( 7853 SpdySerializedFrame req(spdy_util_.ConstructSpdyConnect(
7875 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 7854 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
7876 std::unique_ptr<SpdySerializedFrame> rst( 7855 SpdySerializedFrame rst(
7877 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7856 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7878 spdy_util_.UpdateWithStreamDestruction(1); 7857 spdy_util_.UpdateWithStreamDestruction(1);
7879 7858
7880 // After calling trans->RestartWithAuth(), this is the request we should 7859 // After calling trans->RestartWithAuth(), this is the request we should
7881 // be issuing -- the final header line contains the credentials. 7860 // be issuing -- the final header line contains the credentials.
7882 const char* const kAuthCredentials[] = { 7861 const char* const kAuthCredentials[] = {
7883 "proxy-authorization", "Basic Zm9vOmJhcg==", 7862 "proxy-authorization", "Basic Zm9vOmJhcg==",
7884 }; 7863 };
7885 std::unique_ptr<SpdySerializedFrame> connect2(spdy_util_.ConstructSpdyConnect( 7864 SpdySerializedFrame connect2(spdy_util_.ConstructSpdyConnect(
7886 kAuthCredentials, arraysize(kAuthCredentials) / 2, 3, LOWEST, 7865 kAuthCredentials, arraysize(kAuthCredentials) / 2, 3, LOWEST,
7887 HostPortPair("www.example.org", 443))); 7866 HostPortPair("www.example.org", 443)));
7888 // fetch https://www.example.org/ via HTTP 7867 // fetch https://www.example.org/ via HTTP
7889 const char get[] = 7868 const char get[] =
7890 "GET / HTTP/1.1\r\n" 7869 "GET / HTTP/1.1\r\n"
7891 "Host: www.example.org\r\n" 7870 "Host: www.example.org\r\n"
7892 "Connection: keep-alive\r\n\r\n"; 7871 "Connection: keep-alive\r\n\r\n";
7893 std::unique_ptr<SpdySerializedFrame> wrapped_get( 7872 SpdySerializedFrame wrapped_get(
7894 spdy_util_.ConstructSpdyBodyFrame(3, get, strlen(get), false)); 7873 spdy_util_.ConstructSpdyDataFrame(3, get, strlen(get), false));
7895 7874
7896 MockWrite spdy_writes[] = { 7875 MockWrite spdy_writes[] = {
7897 CreateMockWrite(*req, 0, ASYNC), 7876 CreateMockWrite(req, 0, ASYNC), CreateMockWrite(rst, 2, ASYNC),
7898 CreateMockWrite(*rst, 2, ASYNC), 7877 CreateMockWrite(connect2, 3), CreateMockWrite(wrapped_get, 5),
7899 CreateMockWrite(*connect2, 3),
7900 CreateMockWrite(*wrapped_get, 5),
7901 }; 7878 };
7902 7879
7903 // The proxy responds to the connect with a 407, using a persistent 7880 // The proxy responds to the connect with a 407, using a persistent
7904 // connection. 7881 // connection.
7905 const char kAuthStatus[] = "407"; 7882 const char kAuthStatus[] = "407";
7906 const char* const kAuthChallenge[] = { 7883 const char* const kAuthChallenge[] = {
7907 "proxy-authenticate", "Basic realm=\"MyRealm1\"", 7884 "proxy-authenticate", "Basic realm=\"MyRealm1\"",
7908 }; 7885 };
7909 std::unique_ptr<SpdySerializedFrame> conn_auth_resp( 7886 SpdySerializedFrame conn_auth_resp(spdy_util_.ConstructSpdySynReplyError(
7910 spdy_util_.ConstructSpdySynReplyError(kAuthStatus, kAuthChallenge, 7887 kAuthStatus, kAuthChallenge, arraysize(kAuthChallenge) / 2, 1));
7911 arraysize(kAuthChallenge) / 2, 1));
7912 7888
7913 std::unique_ptr<SpdySerializedFrame> conn_resp( 7889 SpdySerializedFrame conn_resp(
7914 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 7890 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
7915 const char resp[] = "HTTP/1.1 200 OK\r\n" 7891 const char resp[] = "HTTP/1.1 200 OK\r\n"
7916 "Content-Length: 5\r\n\r\n"; 7892 "Content-Length: 5\r\n\r\n";
7917 7893
7918 std::unique_ptr<SpdySerializedFrame> wrapped_get_resp( 7894 SpdySerializedFrame wrapped_get_resp(
7919 spdy_util_.ConstructSpdyBodyFrame(3, resp, strlen(resp), false)); 7895 spdy_util_.ConstructSpdyDataFrame(3, resp, strlen(resp), false));
7920 std::unique_ptr<SpdySerializedFrame> wrapped_body( 7896 SpdySerializedFrame wrapped_body(
7921 spdy_util_.ConstructSpdyBodyFrame(3, "hello", 5, false)); 7897 spdy_util_.ConstructSpdyDataFrame(3, "hello", 5, false));
7922 MockRead spdy_reads[] = { 7898 MockRead spdy_reads[] = {
7923 CreateMockRead(*conn_auth_resp, 1, ASYNC), 7899 CreateMockRead(conn_auth_resp, 1, ASYNC),
7924 CreateMockRead(*conn_resp, 4, ASYNC), 7900 CreateMockRead(conn_resp, 4, ASYNC),
7925 CreateMockRead(*wrapped_get_resp, 6, ASYNC), 7901 CreateMockRead(wrapped_get_resp, 6, ASYNC),
7926 CreateMockRead(*wrapped_body, 7, ASYNC), 7902 CreateMockRead(wrapped_body, 7, ASYNC),
7927 MockRead(ASYNC, OK, 8), // EOF. May or may not be read. 7903 MockRead(ASYNC, OK, 8), // EOF. May or may not be read.
7928 }; 7904 };
7929 7905
7930 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 7906 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
7931 arraysize(spdy_writes)); 7907 arraysize(spdy_writes));
7932 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 7908 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
7933 // Negotiate SPDY to the proxy 7909 // Negotiate SPDY to the proxy
7934 SSLSocketDataProvider proxy(ASYNC, OK); 7910 SSLSocketDataProvider proxy(ASYNC, OK);
7935 proxy.SetNextProto(kProtoHTTP2); 7911 proxy.SetNextProto(kProtoHTTP2);
7936 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); 7912 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
8013 // Configure against https proxy server "myproxy:443". 7989 // Configure against https proxy server "myproxy:443".
8014 session_deps_.proxy_service = 7990 session_deps_.proxy_service =
8015 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:443"); 7991 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:443");
8016 BoundTestNetLog log; 7992 BoundTestNetLog log;
8017 session_deps_.net_log = log.bound().net_log(); 7993 session_deps_.net_log = log.bound().net_log();
8018 7994
8019 session_deps_.proxy_delegate.reset(proxy_delegate.release()); 7995 session_deps_.proxy_delegate.reset(proxy_delegate.release());
8020 7996
8021 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7997 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
8022 7998
8023 std::unique_ptr<SpdySerializedFrame> stream1_syn( 7999 SpdySerializedFrame stream1_syn(
8024 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 8000 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
8025 8001
8026 MockWrite spdy_writes[] = { 8002 MockWrite spdy_writes[] = {
8027 CreateMockWrite(*stream1_syn, 0, ASYNC), 8003 CreateMockWrite(stream1_syn, 0, ASYNC),
8028 }; 8004 };
8029 8005
8030 std::unique_ptr<SpdySerializedFrame> stream1_reply( 8006 SpdySerializedFrame stream1_reply(
8031 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 8007 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
8032 8008
8033 std::unique_ptr<SpdySerializedFrame> stream1_body( 8009 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
8034 spdy_util_.ConstructSpdyBodyFrame(1, true));
8035 8010
8036 std::unique_ptr<SpdySerializedFrame> stream2_syn(spdy_util_.ConstructSpdyPush( 8011 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
8037 NULL, 0, 2, 1, "http://www.another-origin.com/foo.dat")); 8012 NULL, 0, 2, 1, "http://www.another-origin.com/foo.dat"));
8038 const char kPushedData[] = "pushed"; 8013 const char kPushedData[] = "pushed";
8039 std::unique_ptr<SpdySerializedFrame> stream2_body( 8014 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(
8040 spdy_util_.ConstructSpdyBodyFrame(2, kPushedData, strlen(kPushedData), 8015 2, kPushedData, strlen(kPushedData), true));
8041 true));
8042 8016
8043 MockRead spdy_reads[] = { 8017 MockRead spdy_reads[] = {
8044 CreateMockRead(*stream1_reply, 1, ASYNC), 8018 CreateMockRead(stream1_reply, 1, ASYNC),
8045 CreateMockRead(*stream2_syn, 2, ASYNC), 8019 CreateMockRead(stream2_syn, 2, ASYNC),
8046 CreateMockRead(*stream1_body, 3, ASYNC), 8020 CreateMockRead(stream1_body, 3, ASYNC),
8047 CreateMockRead(*stream2_body, 4, ASYNC), 8021 CreateMockRead(stream2_body, 4, ASYNC),
8048 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang 8022 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang
8049 }; 8023 };
8050 8024
8051 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 8025 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
8052 arraysize(spdy_writes)); 8026 arraysize(spdy_writes));
8053 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 8027 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
8054 // Negotiate SPDY to the proxy 8028 // Negotiate SPDY to the proxy
8055 SSLSocketDataProvider proxy(ASYNC, OK); 8029 SSLSocketDataProvider proxy(ASYNC, OK);
8056 proxy.SetNextProto(kProtoHTTP2); 8030 proxy.SetNextProto(kProtoHTTP2);
8057 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); 8031 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
8126 session_deps_.proxy_service = 8100 session_deps_.proxy_service =
8127 ProxyService::CreateFixed("https://myproxy:443"); 8101 ProxyService::CreateFixed("https://myproxy:443");
8128 BoundTestNetLog log; 8102 BoundTestNetLog log;
8129 session_deps_.net_log = log.bound().net_log(); 8103 session_deps_.net_log = log.bound().net_log();
8130 8104
8131 // Enable cross-origin push. 8105 // Enable cross-origin push.
8132 session_deps_.proxy_delegate.reset(proxy_delegate.release()); 8106 session_deps_.proxy_delegate.reset(proxy_delegate.release());
8133 8107
8134 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 8108 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
8135 8109
8136 std::unique_ptr<SpdySerializedFrame> stream1_syn( 8110 SpdySerializedFrame stream1_syn(
8137 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 8111 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
8138 8112
8139 std::unique_ptr<SpdySerializedFrame> push_rst( 8113 SpdySerializedFrame push_rst(
8140 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 8114 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
8141 8115
8142 MockWrite spdy_writes[] = { 8116 MockWrite spdy_writes[] = {
8143 CreateMockWrite(*stream1_syn, 0, ASYNC), CreateMockWrite(*push_rst, 3), 8117 CreateMockWrite(stream1_syn, 0, ASYNC), CreateMockWrite(push_rst, 3),
8144 }; 8118 };
8145 8119
8146 std::unique_ptr<SpdySerializedFrame> stream1_reply( 8120 SpdySerializedFrame stream1_reply(
8147 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 8121 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
8148 8122
8149 std::unique_ptr<SpdySerializedFrame> stream1_body( 8123 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
8150 spdy_util_.ConstructSpdyBodyFrame(1, true));
8151 8124
8152 std::unique_ptr<SpdySerializedFrame> stream2_syn(spdy_util_.ConstructSpdyPush( 8125 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
8153 NULL, 0, 2, 1, "https://www.another-origin.com/foo.dat")); 8126 NULL, 0, 2, 1, "https://www.another-origin.com/foo.dat"));
8154 8127
8155 MockRead spdy_reads[] = { 8128 MockRead spdy_reads[] = {
8156 CreateMockRead(*stream1_reply, 1, ASYNC), 8129 CreateMockRead(stream1_reply, 1, ASYNC),
8157 CreateMockRead(*stream2_syn, 2, ASYNC), 8130 CreateMockRead(stream2_syn, 2, ASYNC),
8158 CreateMockRead(*stream1_body, 4, ASYNC), 8131 CreateMockRead(stream1_body, 4, ASYNC),
8159 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang 8132 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang
8160 }; 8133 };
8161 8134
8162 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 8135 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
8163 arraysize(spdy_writes)); 8136 arraysize(spdy_writes));
8164 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 8137 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
8165 // Negotiate SPDY to the proxy 8138 // Negotiate SPDY to the proxy
8166 SSLSocketDataProvider proxy(ASYNC, OK); 8139 SSLSocketDataProvider proxy(ASYNC, OK);
8167 proxy.SetNextProto(kProtoHTTP2); 8140 proxy.SetNextProto(kProtoHTTP2);
8168 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); 8141 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
8208 // Configure against https proxy server "myproxy:70". 8181 // Configure against https proxy server "myproxy:70".
8209 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70"); 8182 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70");
8210 BoundTestNetLog log; 8183 BoundTestNetLog log;
8211 session_deps_.net_log = log.bound().net_log(); 8184 session_deps_.net_log = log.bound().net_log();
8212 8185
8213 // Enable cross-origin push. 8186 // Enable cross-origin push.
8214 session_deps_.proxy_delegate.reset(proxy_delegate.release()); 8187 session_deps_.proxy_delegate.reset(proxy_delegate.release());
8215 8188
8216 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 8189 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
8217 8190
8218 std::unique_ptr<SpdySerializedFrame> stream1_syn( 8191 SpdySerializedFrame stream1_syn(
8219 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 8192 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
8220 8193
8221 MockWrite spdy_writes[] = { 8194 MockWrite spdy_writes[] = {
8222 CreateMockWrite(*stream1_syn, 0, ASYNC), 8195 CreateMockWrite(stream1_syn, 0, ASYNC),
8223 }; 8196 };
8224 8197
8225 std::unique_ptr<SpdySerializedFrame> stream1_reply( 8198 SpdySerializedFrame stream1_reply(
8226 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 8199 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
8227 8200
8228 std::unique_ptr<SpdySerializedFrame> stream2_syn(spdy_util_.ConstructSpdyPush( 8201 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
8229 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat")); 8202 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat"));
8230 8203
8231 std::unique_ptr<SpdySerializedFrame> stream1_body( 8204 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
8232 spdy_util_.ConstructSpdyBodyFrame(1, true));
8233 8205
8234 std::unique_ptr<SpdySerializedFrame> stream2_reply( 8206 SpdySerializedFrame stream2_reply(
8235 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 8207 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
8236 8208
8237 std::unique_ptr<SpdySerializedFrame> stream2_body( 8209 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(1, true));
8238 spdy_util_.ConstructSpdyBodyFrame(1, true));
8239 8210
8240 MockRead spdy_reads[] = { 8211 MockRead spdy_reads[] = {
8241 CreateMockRead(*stream1_reply, 1, ASYNC), 8212 CreateMockRead(stream1_reply, 1, ASYNC),
8242 CreateMockRead(*stream2_syn, 2, ASYNC), 8213 CreateMockRead(stream2_syn, 2, ASYNC),
8243 CreateMockRead(*stream1_body, 3, ASYNC), 8214 CreateMockRead(stream1_body, 3, ASYNC),
8244 CreateMockRead(*stream2_body, 4, ASYNC), 8215 CreateMockRead(stream2_body, 4, ASYNC),
8245 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang 8216 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang
8246 }; 8217 };
8247 8218
8248 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 8219 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
8249 arraysize(spdy_writes)); 8220 arraysize(spdy_writes));
8250 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 8221 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
8251 // Negotiate SPDY to the proxy 8222 // Negotiate SPDY to the proxy
8252 SSLSocketDataProvider proxy(ASYNC, OK); 8223 SSLSocketDataProvider proxy(ASYNC, OK);
8253 proxy.SetNextProto(kProtoHTTP2); 8224 proxy.SetNextProto(kProtoHTTP2);
8254 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); 8225 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy);
(...skipping 2540 matching lines...) Expand 10 before | Expand all | Expand 10 after
10795 ssl_http11.SetNextProto(kProtoHTTP11); 10766 ssl_http11.SetNextProto(kProtoHTTP11);
10796 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 10767 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
10797 10768
10798 SSLSocketDataProvider ssl_http2(ASYNC, OK); 10769 SSLSocketDataProvider ssl_http2(ASYNC, OK);
10799 ssl_http2.SetNextProto(kProtoHTTP2); 10770 ssl_http2.SetNextProto(kProtoHTTP2);
10800 ssl_http2.cert = 10771 ssl_http2.cert =
10801 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 10772 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
10802 ASSERT_TRUE(ssl_http2.cert.get()); 10773 ASSERT_TRUE(ssl_http2.cert.get());
10803 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2); 10774 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2);
10804 10775
10805 std::unique_ptr<SpdySerializedFrame> req( 10776 SpdySerializedFrame req(
10806 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST)); 10777 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST));
10807 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 10778 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
10808 10779
10809 std::unique_ptr<SpdySerializedFrame> resp( 10780 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
10810 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 10781 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
10811 std::unique_ptr<SpdySerializedFrame> data(
10812 spdy_util_.ConstructSpdyBodyFrame(1, true));
10813 MockRead spdy_reads[] = { 10782 MockRead spdy_reads[] = {
10814 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 10783 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
10815 }; 10784 };
10816 10785
10817 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 10786 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
10818 arraysize(spdy_writes)); 10787 arraysize(spdy_writes));
10819 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 10788 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
10820 10789
10821 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 10790 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
10822 StaticSocketDataProvider hanging_non_alternate_protocol_socket( 10791 StaticSocketDataProvider hanging_non_alternate_protocol_socket(
10823 NULL, 0, NULL, 0); 10792 NULL, 0, NULL, 0);
10824 hanging_non_alternate_protocol_socket.set_connect_data( 10793 hanging_non_alternate_protocol_socket.set_connect_data(
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
10892 hanging_socket1.set_connect_data(never_finishing_connect); 10861 hanging_socket1.set_connect_data(never_finishing_connect);
10893 session_deps_.socket_factory->AddSocketDataProvider(&hanging_socket1); 10862 session_deps_.socket_factory->AddSocketDataProvider(&hanging_socket1);
10894 10863
10895 StaticSocketDataProvider hanging_socket2(NULL, 0, NULL, 0); 10864 StaticSocketDataProvider hanging_socket2(NULL, 0, NULL, 0);
10896 hanging_socket2.set_connect_data(never_finishing_connect); 10865 hanging_socket2.set_connect_data(never_finishing_connect);
10897 session_deps_.socket_factory->AddSocketDataProvider(&hanging_socket2); 10866 session_deps_.socket_factory->AddSocketDataProvider(&hanging_socket2);
10898 10867
10899 // Third transaction starts an alternative and a non-alternative job. 10868 // Third transaction starts an alternative and a non-alternative job.
10900 // The non-alternative job hangs, but the alternative one succeeds. 10869 // The non-alternative job hangs, but the alternative one succeeds.
10901 // The second transaction, still pending, binds to this socket. 10870 // The second transaction, still pending, binds to this socket.
10902 std::unique_ptr<SpdySerializedFrame> req1( 10871 SpdySerializedFrame req1(
10903 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST)); 10872 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST));
10904 std::unique_ptr<SpdySerializedFrame> req2( 10873 SpdySerializedFrame req2(
10905 spdy_util_.ConstructSpdyGet("https://www.example.org/", 3, LOWEST)); 10874 spdy_util_.ConstructSpdyGet("https://www.example.org/", 3, LOWEST));
10906 MockWrite spdy_writes[] = { 10875 MockWrite spdy_writes[] = {
10907 CreateMockWrite(*req1, 0), CreateMockWrite(*req2, 1), 10876 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1),
10908 }; 10877 };
10909 std::unique_ptr<SpdySerializedFrame> resp1( 10878 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
10910 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 10879 SpdySerializedFrame data1(spdy_util_.ConstructSpdyDataFrame(1, true));
10911 std::unique_ptr<SpdySerializedFrame> data1( 10880 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
10912 spdy_util_.ConstructSpdyBodyFrame(1, true)); 10881 SpdySerializedFrame data2(spdy_util_.ConstructSpdyDataFrame(3, true));
10913 std::unique_ptr<SpdySerializedFrame> resp2(
10914 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
10915 std::unique_ptr<SpdySerializedFrame> data2(
10916 spdy_util_.ConstructSpdyBodyFrame(3, true));
10917 MockRead spdy_reads[] = { 10882 MockRead spdy_reads[] = {
10918 CreateMockRead(*resp1, 2), 10883 CreateMockRead(resp1, 2), CreateMockRead(data1, 3),
10919 CreateMockRead(*data1, 3), 10884 CreateMockRead(resp2, 4), CreateMockRead(data2, 5),
10920 CreateMockRead(*resp2, 4),
10921 CreateMockRead(*data2, 5),
10922 MockRead(ASYNC, 0, 6), 10885 MockRead(ASYNC, 0, 6),
10923 }; 10886 };
10924 10887
10925 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 10888 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
10926 arraysize(spdy_writes)); 10889 arraysize(spdy_writes));
10927 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 10890 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
10928 10891
10929 SSLSocketDataProvider ssl_http2(ASYNC, OK); 10892 SSLSocketDataProvider ssl_http2(ASYNC, OK);
10930 ssl_http2.SetNextProto(kProtoHTTP2); 10893 ssl_http2.SetNextProto(kProtoHTTP2);
10931 ssl_http2.cert = 10894 ssl_http2.cert =
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
11143 ssl_http11.SetNextProto(kProtoHTTP11); 11106 ssl_http11.SetNextProto(kProtoHTTP11);
11144 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 11107 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
11145 11108
11146 SSLSocketDataProvider ssl_http2(ASYNC, OK); 11109 SSLSocketDataProvider ssl_http2(ASYNC, OK);
11147 ssl_http2.SetNextProto(kProtoHTTP2); 11110 ssl_http2.SetNextProto(kProtoHTTP2);
11148 ssl_http2.cert = 11111 ssl_http2.cert =
11149 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 11112 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
11150 ASSERT_TRUE(ssl_http2.cert); 11113 ASSERT_TRUE(ssl_http2.cert);
11151 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2); 11114 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2);
11152 11115
11153 std::unique_ptr<SpdySerializedFrame> req( 11116 SpdySerializedFrame req(
11154 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST)); 11117 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST));
11155 MockWrite spdy_writes[] = { 11118 MockWrite spdy_writes[] = {
11156 MockWrite(ASYNC, 0, 11119 MockWrite(ASYNC, 0,
11157 "CONNECT www.example.org:443 HTTP/1.1\r\n" 11120 "CONNECT www.example.org:443 HTTP/1.1\r\n"
11158 "Host: www.example.org:443\r\n" 11121 "Host: www.example.org:443\r\n"
11159 "Proxy-Connection: keep-alive\r\n\r\n"), 11122 "Proxy-Connection: keep-alive\r\n\r\n"),
11160 CreateMockWrite(*req, 2), 11123 CreateMockWrite(req, 2),
11161 }; 11124 };
11162 11125
11163 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; 11126 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n";
11164 11127
11165 std::unique_ptr<SpdySerializedFrame> resp( 11128 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
11166 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 11129 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
11167 std::unique_ptr<SpdySerializedFrame> data(
11168 spdy_util_.ConstructSpdyBodyFrame(1, true));
11169 MockRead spdy_reads[] = { 11130 MockRead spdy_reads[] = {
11170 MockRead(ASYNC, 1, kCONNECTResponse), CreateMockRead(*resp.get(), 3), 11131 MockRead(ASYNC, 1, kCONNECTResponse), CreateMockRead(resp, 3),
11171 CreateMockRead(*data.get(), 4), MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), 11132 CreateMockRead(data, 4), MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),
11172 }; 11133 };
11173 11134
11174 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11135 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
11175 arraysize(spdy_writes)); 11136 arraysize(spdy_writes));
11176 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11137 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
11177 11138
11178 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 11139 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
11179 StaticSocketDataProvider hanging_non_alternate_protocol_socket( 11140 StaticSocketDataProvider hanging_non_alternate_protocol_socket(
11180 NULL, 0, NULL, 0); 11141 NULL, 0, NULL, 0);
11181 hanging_non_alternate_protocol_socket.set_connect_data( 11142 hanging_non_alternate_protocol_socket.set_connect_data(
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
11243 ssl_http11.SetNextProto(kProtoHTTP11); 11204 ssl_http11.SetNextProto(kProtoHTTP11);
11244 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 11205 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
11245 11206
11246 SSLSocketDataProvider ssl_http2(ASYNC, OK); 11207 SSLSocketDataProvider ssl_http2(ASYNC, OK);
11247 ssl_http2.SetNextProto(kProtoHTTP2); 11208 ssl_http2.SetNextProto(kProtoHTTP2);
11248 ssl_http2.cert = 11209 ssl_http2.cert =
11249 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 11210 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
11250 ASSERT_TRUE(ssl_http2.cert); 11211 ASSERT_TRUE(ssl_http2.cert);
11251 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2); 11212 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2);
11252 11213
11253 std::unique_ptr<SpdySerializedFrame> req( 11214 SpdySerializedFrame req(
11254 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST)); 11215 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST));
11255 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 11216 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
11256 11217
11257 std::unique_ptr<SpdySerializedFrame> resp( 11218 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
11258 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 11219 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
11259 std::unique_ptr<SpdySerializedFrame> data(
11260 spdy_util_.ConstructSpdyBodyFrame(1, true));
11261 MockRead spdy_reads[] = { 11220 MockRead spdy_reads[] = {
11262 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 11221 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
11263 }; 11222 };
11264 11223
11265 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11224 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
11266 arraysize(spdy_writes)); 11225 arraysize(spdy_writes));
11267 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11226 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
11268 11227
11269 TestCompletionCallback callback; 11228 TestCompletionCallback callback;
11270 11229
11271 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11230 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11272 11231
(...skipping 710 matching lines...) Expand 10 before | Expand all | Expand 10 after
11983 TEST_P(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) { 11942 TEST_P(HttpNetworkTransactionTest, SpdyPostNPNServerHangup) {
11984 HttpRequestInfo request; 11943 HttpRequestInfo request;
11985 request.method = "GET"; 11944 request.method = "GET";
11986 request.url = GURL("https://www.example.org/"); 11945 request.url = GURL("https://www.example.org/");
11987 request.load_flags = 0; 11946 request.load_flags = 0;
11988 11947
11989 SSLSocketDataProvider ssl(ASYNC, OK); 11948 SSLSocketDataProvider ssl(ASYNC, OK);
11990 ssl.SetNextProto(kProtoHTTP2); 11949 ssl.SetNextProto(kProtoHTTP2);
11991 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 11950 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
11992 11951
11993 std::unique_ptr<SpdySerializedFrame> req( 11952 SpdySerializedFrame req(
11994 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 11953 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
11995 MockWrite spdy_writes[] = {CreateMockWrite(*req, 1)}; 11954 MockWrite spdy_writes[] = {CreateMockWrite(req, 1)};
11996 11955
11997 MockRead spdy_reads[] = { 11956 MockRead spdy_reads[] = {
11998 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately. 11957 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately.
11999 }; 11958 };
12000 11959
12001 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11960 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
12002 arraysize(spdy_writes)); 11961 arraysize(spdy_writes));
12003 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11962 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
12004 11963
12005 TestCompletionCallback callback; 11964 TestCompletionCallback callback;
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
12398 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, 12357 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS,
12399 NetLog::PHASE_NONE); 12358 NetLog::PHASE_NONE);
12400 ExpectLogContainsSomewhere( 12359 ExpectLogContainsSomewhere(
12401 entries, pos, 12360 entries, pos,
12402 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, 12361 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS,
12403 NetLog::PHASE_NONE); 12362 NetLog::PHASE_NONE);
12404 } 12363 }
12405 12364
12406 // Test for crbug.com/55424. 12365 // Test for crbug.com/55424.
12407 TEST_P(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) { 12366 TEST_P(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) {
12408 std::unique_ptr<SpdySerializedFrame> req( 12367 SpdySerializedFrame req(
12409 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12368 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12410 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 12369 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
12411 12370
12412 std::unique_ptr<SpdySerializedFrame> resp( 12371 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12413 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 12372 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
12414 std::unique_ptr<SpdySerializedFrame> data(
12415 spdy_util_.ConstructSpdyBodyFrame(1, true));
12416 MockRead spdy_reads[] = { 12373 MockRead spdy_reads[] = {
12417 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 12374 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
12418 }; 12375 };
12419 12376
12420 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 12377 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
12421 arraysize(spdy_writes)); 12378 arraysize(spdy_writes));
12422 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 12379 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
12423 12380
12424 SSLSocketDataProvider ssl(ASYNC, OK); 12381 SSLSocketDataProvider ssl(ASYNC, OK);
12425 ssl.SetNextProto(kProtoHTTP2); 12382 ssl.SetNextProto(kProtoHTTP2);
12426 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12383 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12427 12384
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
12820 // Set up a special HttpNetworkSession with a MockCachingHostResolver. 12777 // Set up a special HttpNetworkSession with a MockCachingHostResolver.
12821 session_deps_.host_resolver.reset(new MockCachingHostResolver()); 12778 session_deps_.host_resolver.reset(new MockCachingHostResolver());
12822 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 12779 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
12823 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 12780 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
12824 pool_peer.DisableDomainAuthenticationVerification(); 12781 pool_peer.DisableDomainAuthenticationVerification();
12825 12782
12826 SSLSocketDataProvider ssl(ASYNC, OK); 12783 SSLSocketDataProvider ssl(ASYNC, OK);
12827 ssl.SetNextProto(kProtoHTTP2); 12784 ssl.SetNextProto(kProtoHTTP2);
12828 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12785 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12829 12786
12830 std::unique_ptr<SpdySerializedFrame> host1_req( 12787 SpdySerializedFrame host1_req(
12831 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12788 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12832 spdy_util_.UpdateWithStreamDestruction(1); 12789 spdy_util_.UpdateWithStreamDestruction(1);
12833 std::unique_ptr<SpdySerializedFrame> host2_req( 12790 SpdySerializedFrame host2_req(
12834 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 12791 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
12835 MockWrite spdy_writes[] = { 12792 MockWrite spdy_writes[] = {
12836 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3), 12793 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3),
12837 }; 12794 };
12838 std::unique_ptr<SpdySerializedFrame> host1_resp( 12795 SpdySerializedFrame host1_resp(
12839 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 12796 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12840 std::unique_ptr<SpdySerializedFrame> host1_resp_body( 12797 SpdySerializedFrame host1_resp_body(
12841 spdy_util_.ConstructSpdyBodyFrame(1, true)); 12798 spdy_util_.ConstructSpdyDataFrame(1, true));
12842 std::unique_ptr<SpdySerializedFrame> host2_resp( 12799 SpdySerializedFrame host2_resp(
12843 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 12800 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
12844 std::unique_ptr<SpdySerializedFrame> host2_resp_body( 12801 SpdySerializedFrame host2_resp_body(
12845 spdy_util_.ConstructSpdyBodyFrame(3, true)); 12802 spdy_util_.ConstructSpdyDataFrame(3, true));
12846 MockRead spdy_reads[] = { 12803 MockRead spdy_reads[] = {
12847 CreateMockRead(*host1_resp, 1), 12804 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
12848 CreateMockRead(*host1_resp_body, 2), 12805 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5),
12849 CreateMockRead(*host2_resp, 4),
12850 CreateMockRead(*host2_resp_body, 5),
12851 MockRead(ASYNC, 0, 6), 12806 MockRead(ASYNC, 0, 6),
12852 }; 12807 };
12853 12808
12854 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 12809 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
12855 MockConnect connect(ASYNC, OK, peer_addr); 12810 MockConnect connect(ASYNC, OK, peer_addr);
12856 SequencedSocketData spdy_data(connect, spdy_reads, arraysize(spdy_reads), 12811 SequencedSocketData spdy_data(connect, spdy_reads, arraysize(spdy_reads),
12857 spdy_writes, arraysize(spdy_writes)); 12812 spdy_writes, arraysize(spdy_writes));
12858 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 12813 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
12859 12814
12860 TestCompletionCallback callback; 12815 TestCompletionCallback callback;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
12915 // Set up a special HttpNetworkSession with a MockCachingHostResolver. 12870 // Set up a special HttpNetworkSession with a MockCachingHostResolver.
12916 session_deps_.host_resolver.reset(new MockCachingHostResolver()); 12871 session_deps_.host_resolver.reset(new MockCachingHostResolver());
12917 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 12872 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
12918 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 12873 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
12919 pool_peer.DisableDomainAuthenticationVerification(); 12874 pool_peer.DisableDomainAuthenticationVerification();
12920 12875
12921 SSLSocketDataProvider ssl(ASYNC, OK); 12876 SSLSocketDataProvider ssl(ASYNC, OK);
12922 ssl.SetNextProto(kProtoHTTP2); 12877 ssl.SetNextProto(kProtoHTTP2);
12923 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12878 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12924 12879
12925 std::unique_ptr<SpdySerializedFrame> host1_req( 12880 SpdySerializedFrame host1_req(
12926 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12881 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12927 spdy_util_.UpdateWithStreamDestruction(1); 12882 spdy_util_.UpdateWithStreamDestruction(1);
12928 std::unique_ptr<SpdySerializedFrame> host2_req( 12883 SpdySerializedFrame host2_req(
12929 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 12884 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
12930 MockWrite spdy_writes[] = { 12885 MockWrite spdy_writes[] = {
12931 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3), 12886 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3),
12932 }; 12887 };
12933 std::unique_ptr<SpdySerializedFrame> host1_resp( 12888 SpdySerializedFrame host1_resp(
12934 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 12889 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12935 std::unique_ptr<SpdySerializedFrame> host1_resp_body( 12890 SpdySerializedFrame host1_resp_body(
12936 spdy_util_.ConstructSpdyBodyFrame(1, true)); 12891 spdy_util_.ConstructSpdyDataFrame(1, true));
12937 std::unique_ptr<SpdySerializedFrame> host2_resp( 12892 SpdySerializedFrame host2_resp(
12938 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 12893 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
12939 std::unique_ptr<SpdySerializedFrame> host2_resp_body( 12894 SpdySerializedFrame host2_resp_body(
12940 spdy_util_.ConstructSpdyBodyFrame(3, true)); 12895 spdy_util_.ConstructSpdyDataFrame(3, true));
12941 MockRead spdy_reads[] = { 12896 MockRead spdy_reads[] = {
12942 CreateMockRead(*host1_resp, 1), 12897 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
12943 CreateMockRead(*host1_resp_body, 2), 12898 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5),
12944 CreateMockRead(*host2_resp, 4),
12945 CreateMockRead(*host2_resp_body, 5),
12946 MockRead(ASYNC, 0, 6), 12899 MockRead(ASYNC, 0, 6),
12947 }; 12900 };
12948 12901
12949 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 12902 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
12950 MockConnect connect(ASYNC, OK, peer_addr); 12903 MockConnect connect(ASYNC, OK, peer_addr);
12951 SequencedSocketData spdy_data(connect, spdy_reads, arraysize(spdy_reads), 12904 SequencedSocketData spdy_data(connect, spdy_reads, arraysize(spdy_reads),
12952 spdy_writes, arraysize(spdy_writes)); 12905 spdy_writes, arraysize(spdy_writes));
12953 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 12906 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
12954 12907
12955 TestCompletionCallback callback; 12908 TestCompletionCallback callback;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
13041 SpdySessionDependencies::CreateSessionParams(&session_deps_); 12994 SpdySessionDependencies::CreateSessionParams(&session_deps_);
13042 params.host_resolver = &host_resolver; 12995 params.host_resolver = &host_resolver;
13043 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 12996 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13044 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 12997 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
13045 pool_peer.DisableDomainAuthenticationVerification(); 12998 pool_peer.DisableDomainAuthenticationVerification();
13046 12999
13047 SSLSocketDataProvider ssl(ASYNC, OK); 13000 SSLSocketDataProvider ssl(ASYNC, OK);
13048 ssl.SetNextProto(kProtoHTTP2); 13001 ssl.SetNextProto(kProtoHTTP2);
13049 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 13002 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
13050 13003
13051 std::unique_ptr<SpdySerializedFrame> host1_req( 13004 SpdySerializedFrame host1_req(
13052 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 13005 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
13053 spdy_util_.UpdateWithStreamDestruction(1); 13006 spdy_util_.UpdateWithStreamDestruction(1);
13054 std::unique_ptr<SpdySerializedFrame> host2_req( 13007 SpdySerializedFrame host2_req(
13055 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 13008 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
13056 MockWrite spdy_writes[] = { 13009 MockWrite spdy_writes[] = {
13057 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3), 13010 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3),
13058 }; 13011 };
13059 std::unique_ptr<SpdySerializedFrame> host1_resp( 13012 SpdySerializedFrame host1_resp(
13060 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13013 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13061 std::unique_ptr<SpdySerializedFrame> host1_resp_body( 13014 SpdySerializedFrame host1_resp_body(
13062 spdy_util_.ConstructSpdyBodyFrame(1, true)); 13015 spdy_util_.ConstructSpdyDataFrame(1, true));
13063 std::unique_ptr<SpdySerializedFrame> host2_resp( 13016 SpdySerializedFrame host2_resp(
13064 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 13017 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
13065 std::unique_ptr<SpdySerializedFrame> host2_resp_body( 13018 SpdySerializedFrame host2_resp_body(
13066 spdy_util_.ConstructSpdyBodyFrame(3, true)); 13019 spdy_util_.ConstructSpdyDataFrame(3, true));
13067 MockRead spdy_reads[] = { 13020 MockRead spdy_reads[] = {
13068 CreateMockRead(*host1_resp, 1), 13021 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
13069 CreateMockRead(*host1_resp_body, 2), 13022 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5),
13070 CreateMockRead(*host2_resp, 4),
13071 CreateMockRead(*host2_resp_body, 5),
13072 MockRead(ASYNC, 0, 6), 13023 MockRead(ASYNC, 0, 6),
13073 }; 13024 };
13074 13025
13075 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 13026 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
13076 MockConnect connect(ASYNC, OK, peer_addr); 13027 MockConnect connect(ASYNC, OK, peer_addr);
13077 SequencedSocketData spdy_data(connect, spdy_reads, arraysize(spdy_reads), 13028 SequencedSocketData spdy_data(connect, spdy_reads, arraysize(spdy_reads),
13078 spdy_writes, arraysize(spdy_writes)); 13029 spdy_writes, arraysize(spdy_writes));
13079 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 13030 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
13080 13031
13081 TestCompletionCallback callback; 13032 TestCompletionCallback callback;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
13129 EXPECT_TRUE(response->was_npn_negotiated); 13080 EXPECT_TRUE(response->was_npn_negotiated);
13130 ASSERT_THAT(ReadTransaction(&trans2, &response_data), IsOk()); 13081 ASSERT_THAT(ReadTransaction(&trans2, &response_data), IsOk());
13131 EXPECT_EQ("hello!", response_data); 13082 EXPECT_EQ("hello!", response_data);
13132 } 13083 }
13133 13084
13134 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { 13085 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) {
13135 const std::string https_url = "https://www.example.org:8080/"; 13086 const std::string https_url = "https://www.example.org:8080/";
13136 const std::string http_url = "http://www.example.org:8080/"; 13087 const std::string http_url = "http://www.example.org:8080/";
13137 13088
13138 // SPDY GET for HTTPS URL 13089 // SPDY GET for HTTPS URL
13139 std::unique_ptr<SpdySerializedFrame> req1( 13090 SpdySerializedFrame req1(
13140 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, LOWEST)); 13091 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, LOWEST));
13141 13092
13142 MockWrite writes1[] = { 13093 MockWrite writes1[] = {
13143 CreateMockWrite(*req1, 0), 13094 CreateMockWrite(req1, 0),
13144 }; 13095 };
13145 13096
13146 std::unique_ptr<SpdySerializedFrame> resp1( 13097 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13147 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13098 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true));
13148 std::unique_ptr<SpdySerializedFrame> body1( 13099 MockRead reads1[] = {CreateMockRead(resp1, 1), CreateMockRead(body1, 2),
13149 spdy_util_.ConstructSpdyBodyFrame(1, true));
13150 MockRead reads1[] = {CreateMockRead(*resp1, 1), CreateMockRead(*body1, 2),
13151 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3)}; 13100 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3)};
13152 13101
13153 SequencedSocketData data1(reads1, arraysize(reads1), writes1, 13102 SequencedSocketData data1(reads1, arraysize(reads1), writes1,
13154 arraysize(writes1)); 13103 arraysize(writes1));
13155 MockConnect connect_data1(ASYNC, OK); 13104 MockConnect connect_data1(ASYNC, OK);
13156 data1.set_connect_data(connect_data1); 13105 data1.set_connect_data(connect_data1);
13157 13106
13158 // HTTP GET for the HTTP URL 13107 // HTTP GET for the HTTP URL
13159 MockWrite writes2[] = { 13108 MockWrite writes2[] = {
13160 MockWrite(ASYNC, 0, 13109 MockWrite(ASYNC, 0,
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
13482 13431
13483 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttpOverTunnel) { 13432 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttpOverTunnel) {
13484 const std::string https_url = "https://www.example.org:8080/"; 13433 const std::string https_url = "https://www.example.org:8080/";
13485 const std::string http_url = "http://www.example.org:8080/"; 13434 const std::string http_url = "http://www.example.org:8080/";
13486 13435
13487 // Separate SPDY util instance for naked and wrapped requests. 13436 // Separate SPDY util instance for naked and wrapped requests.
13488 SpdyTestUtil spdy_util_wrapped(GetDependenciesFromPriority()); 13437 SpdyTestUtil spdy_util_wrapped(GetDependenciesFromPriority());
13489 13438
13490 // SPDY GET for HTTPS URL (through CONNECT tunnel) 13439 // SPDY GET for HTTPS URL (through CONNECT tunnel)
13491 const HostPortPair host_port_pair("www.example.org", 8080); 13440 const HostPortPair host_port_pair("www.example.org", 8080);
13492 std::unique_ptr<SpdySerializedFrame> connect( 13441 SpdySerializedFrame connect(
13493 spdy_util_.ConstructSpdyConnect(NULL, 0, 1, LOWEST, host_port_pair)); 13442 spdy_util_.ConstructSpdyConnect(NULL, 0, 1, LOWEST, host_port_pair));
13494 std::unique_ptr<SpdySerializedFrame> req1( 13443 SpdySerializedFrame req1(
13495 spdy_util_wrapped.ConstructSpdyGet(https_url.c_str(), 1, LOWEST)); 13444 spdy_util_wrapped.ConstructSpdyGet(https_url.c_str(), 1, LOWEST));
13496 std::unique_ptr<SpdySerializedFrame> wrapped_req1( 13445 SpdySerializedFrame wrapped_req1(
13497 spdy_util_.ConstructWrappedSpdyFrame(req1, 1)); 13446 spdy_util_.ConstructWrappedSpdyFrame(req1, 1));
13498 13447
13499 // SPDY GET for HTTP URL (through the proxy, but not the tunnel). 13448 // SPDY GET for HTTP URL (through the proxy, but not the tunnel).
13500 SpdyHeaderBlock req2_block; 13449 SpdyHeaderBlock req2_block;
13501 req2_block[spdy_util_.GetMethodKey()] = "GET"; 13450 req2_block[spdy_util_.GetMethodKey()] = "GET";
13502 req2_block[spdy_util_.GetHostKey()] = "www.example.org:8080"; 13451 req2_block[spdy_util_.GetHostKey()] = "www.example.org:8080";
13503 req2_block[spdy_util_.GetSchemeKey()] = "http"; 13452 req2_block[spdy_util_.GetSchemeKey()] = "http";
13504 req2_block[spdy_util_.GetPathKey()] = "/"; 13453 req2_block[spdy_util_.GetPathKey()] = "/";
13505 std::unique_ptr<SpdySerializedFrame> req2( 13454 SpdySerializedFrame req2(
13506 spdy_util_.ConstructSpdySyn(3, std::move(req2_block), MEDIUM, true)); 13455 spdy_util_.ConstructSpdySyn(3, std::move(req2_block), MEDIUM, true));
13507 13456
13508 MockWrite writes1[] = { 13457 MockWrite writes1[] = {
13509 CreateMockWrite(*connect, 0), CreateMockWrite(*wrapped_req1, 2), 13458 CreateMockWrite(connect, 0), CreateMockWrite(wrapped_req1, 2),
13510 CreateMockWrite(*req2, 6), 13459 CreateMockWrite(req2, 6),
13511 }; 13460 };
13512 13461
13513 std::unique_ptr<SpdySerializedFrame> conn_resp( 13462 SpdySerializedFrame conn_resp(
13514 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 13463 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
13515 std::unique_ptr<SpdySerializedFrame> resp1( 13464 SpdySerializedFrame resp1(
13516 spdy_util_wrapped.ConstructSpdyGetSynReply(nullptr, 0, 1)); 13465 spdy_util_wrapped.ConstructSpdyGetSynReply(nullptr, 0, 1));
13517 std::unique_ptr<SpdySerializedFrame> body1( 13466 SpdySerializedFrame body1(spdy_util_wrapped.ConstructSpdyDataFrame(1, true));
13518 spdy_util_wrapped.ConstructSpdyBodyFrame(1, true)); 13467 SpdySerializedFrame wrapped_resp1(
13519 std::unique_ptr<SpdySerializedFrame> wrapped_resp1(
13520 spdy_util_wrapped.ConstructWrappedSpdyFrame(resp1, 1)); 13468 spdy_util_wrapped.ConstructWrappedSpdyFrame(resp1, 1));
13521 std::unique_ptr<SpdySerializedFrame> wrapped_body1( 13469 SpdySerializedFrame wrapped_body1(
13522 spdy_util_wrapped.ConstructWrappedSpdyFrame(body1, 1)); 13470 spdy_util_wrapped.ConstructWrappedSpdyFrame(body1, 1));
13523 std::unique_ptr<SpdySerializedFrame> resp2( 13471 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
13524 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 13472 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(3, true));
13525 std::unique_ptr<SpdySerializedFrame> body2(
13526 spdy_util_.ConstructSpdyBodyFrame(3, true));
13527 MockRead reads1[] = { 13473 MockRead reads1[] = {
13528 CreateMockRead(*conn_resp, 1), 13474 CreateMockRead(conn_resp, 1),
13529 MockRead(ASYNC, ERR_IO_PENDING, 3), 13475 MockRead(ASYNC, ERR_IO_PENDING, 3),
13530 CreateMockRead(*wrapped_resp1, 4), 13476 CreateMockRead(wrapped_resp1, 4),
13531 CreateMockRead(*wrapped_body1, 5), 13477 CreateMockRead(wrapped_body1, 5),
13532 MockRead(ASYNC, ERR_IO_PENDING, 7), 13478 MockRead(ASYNC, ERR_IO_PENDING, 7),
13533 CreateMockRead(*resp2, 8), 13479 CreateMockRead(resp2, 8),
13534 CreateMockRead(*body2, 9), 13480 CreateMockRead(body2, 9),
13535 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 10), 13481 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 10),
13536 }; 13482 };
13537 13483
13538 SequencedSocketData data1(reads1, arraysize(reads1), writes1, 13484 SequencedSocketData data1(reads1, arraysize(reads1), writes1,
13539 arraysize(writes1)); 13485 arraysize(writes1));
13540 MockConnect connect_data1(ASYNC, OK); 13486 MockConnect connect_data1(ASYNC, OK);
13541 data1.set_connect_data(connect_data1); 13487 data1.set_connect_data(connect_data1);
13542 13488
13543 session_deps_.proxy_service = 13489 session_deps_.proxy_service =
13544 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70"); 13490 ProxyService::CreateFixedFromPacResult("HTTPS proxy:70");
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
13609 const std::string url1 = "http://www.example.org/"; 13555 const std::string url1 = "http://www.example.org/";
13610 const std::string url2 = "https://news.example.org/"; 13556 const std::string url2 = "https://news.example.org/";
13611 const std::string ip_addr = "1.2.3.4"; 13557 const std::string ip_addr = "1.2.3.4";
13612 13558
13613 // Second SpdyTestUtil instance for the second socket. 13559 // Second SpdyTestUtil instance for the second socket.
13614 SpdyTestUtil spdy_util_secure(GetDependenciesFromPriority()); 13560 SpdyTestUtil spdy_util_secure(GetDependenciesFromPriority());
13615 13561
13616 // SPDY GET for HTTP URL (through SPDY proxy) 13562 // SPDY GET for HTTP URL (through SPDY proxy)
13617 SpdyHeaderBlock headers( 13563 SpdyHeaderBlock headers(
13618 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/")); 13564 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/"));
13619 std::unique_ptr<SpdySerializedFrame> req1( 13565 SpdySerializedFrame req1(
13620 spdy_util_.ConstructSpdySyn(1, std::move(headers), LOWEST, true)); 13566 spdy_util_.ConstructSpdySyn(1, std::move(headers), LOWEST, true));
13621 13567
13622 MockWrite writes1[] = { 13568 MockWrite writes1[] = {
13623 CreateMockWrite(*req1, 0), 13569 CreateMockWrite(req1, 0),
13624 }; 13570 };
13625 13571
13626 std::unique_ptr<SpdySerializedFrame> resp1( 13572 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13627 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13573 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true));
13628 std::unique_ptr<SpdySerializedFrame> body1(
13629 spdy_util_.ConstructSpdyBodyFrame(1, true));
13630 MockRead reads1[] = { 13574 MockRead reads1[] = {
13631 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(*resp1, 2), 13575 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp1, 2),
13632 CreateMockRead(*body1, 3), MockRead(ASYNC, OK, 4), // EOF 13576 CreateMockRead(body1, 3), MockRead(ASYNC, OK, 4), // EOF
13633 }; 13577 };
13634 13578
13635 SequencedSocketData data1(reads1, arraysize(reads1), writes1, 13579 SequencedSocketData data1(reads1, arraysize(reads1), writes1,
13636 arraysize(writes1)); 13580 arraysize(writes1));
13637 IPAddress ip; 13581 IPAddress ip;
13638 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr)); 13582 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr));
13639 IPEndPoint peer_addr = IPEndPoint(ip, 443); 13583 IPEndPoint peer_addr = IPEndPoint(ip, 443);
13640 MockConnect connect_data1(ASYNC, OK, peer_addr); 13584 MockConnect connect_data1(ASYNC, OK, peer_addr);
13641 data1.set_connect_data(connect_data1); 13585 data1.set_connect_data(connect_data1);
13642 13586
13643 // SPDY GET for HTTPS URL (direct) 13587 // SPDY GET for HTTPS URL (direct)
13644 std::unique_ptr<SpdySerializedFrame> req2( 13588 SpdySerializedFrame req2(
13645 spdy_util_secure.ConstructSpdyGet(url2.c_str(), 1, MEDIUM)); 13589 spdy_util_secure.ConstructSpdyGet(url2.c_str(), 1, MEDIUM));
13646 13590
13647 MockWrite writes2[] = { 13591 MockWrite writes2[] = {
13648 CreateMockWrite(*req2, 0), 13592 CreateMockWrite(req2, 0),
13649 }; 13593 };
13650 13594
13651 std::unique_ptr<SpdySerializedFrame> resp2( 13595 SpdySerializedFrame resp2(
13652 spdy_util_secure.ConstructSpdyGetSynReply(NULL, 0, 1)); 13596 spdy_util_secure.ConstructSpdyGetSynReply(NULL, 0, 1));
13653 std::unique_ptr<SpdySerializedFrame> body2( 13597 SpdySerializedFrame body2(spdy_util_secure.ConstructSpdyDataFrame(1, true));
13654 spdy_util_secure.ConstructSpdyBodyFrame(1, true)); 13598 MockRead reads2[] = {CreateMockRead(resp2, 1), CreateMockRead(body2, 2),
13655 MockRead reads2[] = {CreateMockRead(*resp2, 1), CreateMockRead(*body2, 2),
13656 MockRead(ASYNC, OK, 3)}; 13599 MockRead(ASYNC, OK, 3)};
13657 13600
13658 SequencedSocketData data2(reads2, arraysize(reads2), writes2, 13601 SequencedSocketData data2(reads2, arraysize(reads2), writes2,
13659 arraysize(writes2)); 13602 arraysize(writes2));
13660 MockConnect connect_data2(ASYNC, OK); 13603 MockConnect connect_data2(ASYNC, OK);
13661 data2.set_connect_data(connect_data2); 13604 data2.set_connect_data(connect_data2);
13662 13605
13663 // Set up a proxy config that sends HTTP requests to a proxy, and 13606 // Set up a proxy config that sends HTTP requests to a proxy, and
13664 // all others direct. 13607 // all others direct.
13665 ProxyConfig proxy_config; 13608 ProxyConfig proxy_config;
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
13729 // SpdySession) do work. http://crbug.com/224701 13672 // SpdySession) do work. http://crbug.com/224701
13730 TEST_P(HttpNetworkTransactionTest, ErrorSocketNotConnected) { 13673 TEST_P(HttpNetworkTransactionTest, ErrorSocketNotConnected) {
13731 const std::string https_url = "https://www.example.org/"; 13674 const std::string https_url = "https://www.example.org/";
13732 13675
13733 MockRead reads1[] = { 13676 MockRead reads1[] = {
13734 MockRead(SYNCHRONOUS, ERR_CONNECTION_CLOSED, 0) 13677 MockRead(SYNCHRONOUS, ERR_CONNECTION_CLOSED, 0)
13735 }; 13678 };
13736 13679
13737 SequencedSocketData data1(reads1, arraysize(reads1), NULL, 0); 13680 SequencedSocketData data1(reads1, arraysize(reads1), NULL, 0);
13738 13681
13739 std::unique_ptr<SpdySerializedFrame> req2( 13682 SpdySerializedFrame req2(
13740 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, MEDIUM)); 13683 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, MEDIUM));
13741 MockWrite writes2[] = { 13684 MockWrite writes2[] = {
13742 CreateMockWrite(*req2, 0), 13685 CreateMockWrite(req2, 0),
13743 }; 13686 };
13744 13687
13745 std::unique_ptr<SpdySerializedFrame> resp2( 13688 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13746 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13689 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(1, true));
13747 std::unique_ptr<SpdySerializedFrame> body2(
13748 spdy_util_.ConstructSpdyBodyFrame(1, true));
13749 MockRead reads2[] = { 13690 MockRead reads2[] = {
13750 CreateMockRead(*resp2, 1), 13691 CreateMockRead(resp2, 1), CreateMockRead(body2, 2),
13751 CreateMockRead(*body2, 2), 13692 MockRead(ASYNC, OK, 3) // EOF
13752 MockRead(ASYNC, OK, 3) // EOF
13753 }; 13693 };
13754 13694
13755 SequencedSocketData data2(reads2, arraysize(reads2), writes2, 13695 SequencedSocketData data2(reads2, arraysize(reads2), writes2,
13756 arraysize(writes2)); 13696 arraysize(writes2));
13757 13697
13758 SSLSocketDataProvider ssl1(ASYNC, OK); 13698 SSLSocketDataProvider ssl1(ASYNC, OK);
13759 ssl1.SetNextProto(kProtoHTTP2); 13699 ssl1.SetNextProto(kProtoHTTP2);
13760 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); 13700 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1);
13761 session_deps_.socket_factory->AddSocketDataProvider(&data1); 13701 session_deps_.socket_factory->AddSocketDataProvider(&data1);
13762 13702
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
13805 session_deps_.host_resolver->rules()->AddRule("www.b.com", "10.0.0.2"); 13745 session_deps_.host_resolver->rules()->AddRule("www.b.com", "10.0.0.2");
13806 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 13746 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13807 13747
13808 SSLSocketDataProvider ssl1(ASYNC, OK); 13748 SSLSocketDataProvider ssl1(ASYNC, OK);
13809 ssl1.SetNextProto(kProtoHTTP2); 13749 ssl1.SetNextProto(kProtoHTTP2);
13810 SSLSocketDataProvider ssl2(ASYNC, OK); 13750 SSLSocketDataProvider ssl2(ASYNC, OK);
13811 ssl2.SetNextProto(kProtoHTTP2); 13751 ssl2.SetNextProto(kProtoHTTP2);
13812 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); 13752 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1);
13813 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); 13753 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2);
13814 13754
13815 std::unique_ptr<SpdySerializedFrame> host1_req( 13755 SpdySerializedFrame host1_req(
13816 spdy_util_.ConstructSpdyGet("https://www.a.com", 1, DEFAULT_PRIORITY)); 13756 spdy_util_.ConstructSpdyGet("https://www.a.com", 1, DEFAULT_PRIORITY));
13817 MockWrite spdy1_writes[] = { 13757 MockWrite spdy1_writes[] = {
13818 CreateMockWrite(*host1_req, 0), 13758 CreateMockWrite(host1_req, 0),
13819 }; 13759 };
13820 std::unique_ptr<SpdySerializedFrame> host1_resp( 13760 SpdySerializedFrame host1_resp(
13821 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13761 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13822 std::unique_ptr<SpdySerializedFrame> host1_resp_body( 13762 SpdySerializedFrame host1_resp_body(
13823 spdy_util_.ConstructSpdyBodyFrame(1, true)); 13763 spdy_util_.ConstructSpdyDataFrame(1, true));
13824 MockRead spdy1_reads[] = { 13764 MockRead spdy1_reads[] = {
13825 CreateMockRead(*host1_resp, 1), CreateMockRead(*host1_resp_body, 2), 13765 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
13826 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), 13766 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3),
13827 }; 13767 };
13828 13768
13829 // Use a separate test instance for the separate SpdySession that will be 13769 // Use a separate test instance for the separate SpdySession that will be
13830 // created. 13770 // created.
13831 SpdyTestUtil spdy_util_2(GetDependenciesFromPriority()); 13771 SpdyTestUtil spdy_util_2(GetDependenciesFromPriority());
13832 std::unique_ptr<SequencedSocketData> spdy1_data( 13772 std::unique_ptr<SequencedSocketData> spdy1_data(
13833 new SequencedSocketData(spdy1_reads, arraysize(spdy1_reads), spdy1_writes, 13773 new SequencedSocketData(spdy1_reads, arraysize(spdy1_reads), spdy1_writes,
13834 arraysize(spdy1_writes))); 13774 arraysize(spdy1_writes)));
13835 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get()); 13775 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get());
13836 13776
13837 std::unique_ptr<SpdySerializedFrame> host2_req( 13777 SpdySerializedFrame host2_req(
13838 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY)); 13778 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY));
13839 MockWrite spdy2_writes[] = { 13779 MockWrite spdy2_writes[] = {
13840 CreateMockWrite(*host2_req, 0), 13780 CreateMockWrite(host2_req, 0),
13841 }; 13781 };
13842 std::unique_ptr<SpdySerializedFrame> host2_resp( 13782 SpdySerializedFrame host2_resp(
13843 spdy_util_2.ConstructSpdyGetSynReply(NULL, 0, 1)); 13783 spdy_util_2.ConstructSpdyGetSynReply(NULL, 0, 1));
13844 std::unique_ptr<SpdySerializedFrame> host2_resp_body( 13784 SpdySerializedFrame host2_resp_body(
13845 spdy_util_2.ConstructSpdyBodyFrame(1, true)); 13785 spdy_util_2.ConstructSpdyDataFrame(1, true));
13846 MockRead spdy2_reads[] = { 13786 MockRead spdy2_reads[] = {
13847 CreateMockRead(*host2_resp, 1), CreateMockRead(*host2_resp_body, 2), 13787 CreateMockRead(host2_resp, 1), CreateMockRead(host2_resp_body, 2),
13848 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), 13788 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3),
13849 }; 13789 };
13850 13790
13851 std::unique_ptr<SequencedSocketData> spdy2_data( 13791 std::unique_ptr<SequencedSocketData> spdy2_data(
13852 new SequencedSocketData(spdy2_reads, arraysize(spdy2_reads), spdy2_writes, 13792 new SequencedSocketData(spdy2_reads, arraysize(spdy2_reads), spdy2_writes,
13853 arraysize(spdy2_writes))); 13793 arraysize(spdy2_writes)));
13854 session_deps_.socket_factory->AddSocketDataProvider(spdy2_data.get()); 13794 session_deps_.socket_factory->AddSocketDataProvider(spdy2_data.get());
13855 13795
13856 MockWrite http_write[] = { 13796 MockWrite http_write[] = {
13857 MockWrite("GET / HTTP/1.1\r\n" 13797 MockWrite("GET / HTTP/1.1\r\n"
(...skipping 1814 matching lines...) Expand 10 before | Expand all | Expand 10 after
15672 HttpRequestInfo request; 15612 HttpRequestInfo request;
15673 request.url = GURL(https_url); 15613 request.url = GURL(https_url);
15674 request.method = "GET"; 15614 request.method = "GET";
15675 15615
15676 SSLSocketDataProvider ssl(ASYNC, OK); 15616 SSLSocketDataProvider ssl(ASYNC, OK);
15677 ssl.token_binding_negotiated = true; 15617 ssl.token_binding_negotiated = true;
15678 ssl.token_binding_key_param = TB_PARAM_ECDSAP256; 15618 ssl.token_binding_key_param = TB_PARAM_ECDSAP256;
15679 ssl.SetNextProto(kProtoHTTP2); 15619 ssl.SetNextProto(kProtoHTTP2);
15680 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 15620 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
15681 15621
15682 std::unique_ptr<SpdySerializedFrame> resp( 15622 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
15683 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 15623 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
15684 std::unique_ptr<SpdySerializedFrame> body( 15624 MockRead reads[] = {CreateMockRead(resp), CreateMockRead(body),
15685 spdy_util_.ConstructSpdyBodyFrame(1, true));
15686 MockRead reads[] = {CreateMockRead(*resp), CreateMockRead(*body),
15687 MockRead(ASYNC, ERR_IO_PENDING)}; 15625 MockRead(ASYNC, ERR_IO_PENDING)};
15688 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); 15626 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0);
15689 session_deps_.socket_factory->AddSocketDataProvider(&data); 15627 session_deps_.socket_factory->AddSocketDataProvider(&data);
15690 session_deps_.channel_id_service.reset(new ChannelIDService( 15628 session_deps_.channel_id_service.reset(new ChannelIDService(
15691 new DefaultChannelIDStore(nullptr), base::ThreadTaskRunnerHandle::Get())); 15629 new DefaultChannelIDStore(nullptr), base::ThreadTaskRunnerHandle::Get()));
15692 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15630 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15693 15631
15694 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 15632 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
15695 TestCompletionCallback callback; 15633 TestCompletionCallback callback;
15696 EXPECT_EQ(ERR_IO_PENDING, 15634 EXPECT_EQ(ERR_IO_PENDING,
15697 trans.Start(&request, callback.callback(), BoundNetLog())); 15635 trans.Start(&request, callback.callback(), BoundNetLog()));
15698 base::RunLoop().RunUntilIdle(); 15636 base::RunLoop().RunUntilIdle();
15699 15637
15700 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 15638 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
15701 HttpRequestHeaders headers; 15639 HttpRequestHeaders headers;
15702 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 15640 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
15703 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 15641 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
15704 } 15642 }
15705 #endif // !defined(OS_IOS) 15643 #endif // !defined(OS_IOS)
15706 15644
15707 } // namespace net 15645 } // namespace net
OLDNEW
« no previous file with comments | « net/http/bidirectional_stream_unittest.cc ('k') | net/http/http_proxy_client_socket_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698