| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |