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

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

Issue 2167253002: s/SYN_STREAM/HEADERS/ in frame types, method names, comments. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 1374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1385 ssl1.SetNextProto(kProtoHTTP2); 1385 ssl1.SetNextProto(kProtoHTTP2);
1386 ssl2.SetNextProto(kProtoHTTP2); 1386 ssl2.SetNextProto(kProtoHTTP2);
1387 } 1387 }
1388 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); 1388 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1);
1389 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); 1389 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2);
1390 1390
1391 // SPDY versions of the request and response. 1391 // SPDY versions of the request and response.
1392 SpdySerializedFrame spdy_request(spdy_util_.ConstructSpdyGet( 1392 SpdySerializedFrame spdy_request(spdy_util_.ConstructSpdyGet(
1393 request.url.spec().c_str(), 1, DEFAULT_PRIORITY)); 1393 request.url.spec().c_str(), 1, DEFAULT_PRIORITY));
1394 SpdySerializedFrame spdy_response( 1394 SpdySerializedFrame spdy_response(
1395 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 1395 spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
1396 SpdySerializedFrame spdy_data( 1396 SpdySerializedFrame spdy_data(
1397 spdy_util_.ConstructSpdyDataFrame(1, "hello", 5, true)); 1397 spdy_util_.ConstructSpdyDataFrame(1, "hello", 5, true));
1398 1398
1399 // HTTP/1.1 versions of the request and response. 1399 // HTTP/1.1 versions of the request and response.
1400 const char kHttpRequest[] = "GET / HTTP/1.1\r\n" 1400 const char kHttpRequest[] = "GET / HTTP/1.1\r\n"
1401 "Host: www.foo.com\r\n" 1401 "Host: www.foo.com\r\n"
1402 "Connection: keep-alive\r\n\r\n"; 1402 "Connection: keep-alive\r\n\r\n";
1403 const char kHttpResponse[] = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"; 1403 const char kHttpResponse[] = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n";
1404 const char kHttpData[] = "hello"; 1404 const char kHttpData[] = "hello";
1405 1405
(...skipping 2952 matching lines...) Expand 10 before | Expand all | Expand 10 after
4358 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4358 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4359 BoundTestNetLog log; 4359 BoundTestNetLog log;
4360 session_deps_.net_log = log.bound().net_log(); 4360 session_deps_.net_log = log.bound().net_log();
4361 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4361 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4362 4362
4363 // fetch http://www.example.org/ via SPDY 4363 // fetch http://www.example.org/ via SPDY
4364 SpdySerializedFrame req( 4364 SpdySerializedFrame req(
4365 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 4365 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
4366 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)}; 4366 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
4367 4367
4368 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 4368 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
4369 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true)); 4369 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
4370 MockRead spdy_reads[] = { 4370 MockRead spdy_reads[] = {
4371 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3), 4371 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
4372 }; 4372 };
4373 4373
4374 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4374 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4375 arraysize(spdy_writes)); 4375 arraysize(spdy_writes));
4376 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4376 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4377 4377
4378 SSLSocketDataProvider ssl(ASYNC, OK); 4378 SSLSocketDataProvider ssl(ASYNC, OK);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
4418 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4418 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4419 BoundTestNetLog log; 4419 BoundTestNetLog log;
4420 session_deps_.net_log = log.bound().net_log(); 4420 session_deps_.net_log = log.bound().net_log();
4421 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4421 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4422 4422
4423 // Fetch http://www.example.org/ through the SPDY proxy. 4423 // Fetch http://www.example.org/ through the SPDY proxy.
4424 SpdySerializedFrame req( 4424 SpdySerializedFrame req(
4425 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 4425 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
4426 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)}; 4426 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
4427 4427
4428 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4428 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
4429 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true)); 4429 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
4430 MockRead spdy_reads[] = { 4430 MockRead spdy_reads[] = {
4431 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3), 4431 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
4432 }; 4432 };
4433 4433
4434 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4434 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4435 arraysize(spdy_writes)); 4435 arraysize(spdy_writes));
4436 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4436 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4437 4437
4438 SSLSocketDataProvider ssl(ASYNC, OK); 4438 SSLSocketDataProvider ssl(ASYNC, OK);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
4504 MockWrite spdy_writes[] = { 4504 MockWrite spdy_writes[] = {
4505 CreateMockWrite(req_get, 0), CreateMockWrite(req_get_authorization, 3), 4505 CreateMockWrite(req_get, 0), CreateMockWrite(req_get_authorization, 3),
4506 }; 4506 };
4507 4507
4508 // The first response is a 407 proxy authentication challenge, and the second 4508 // The first response is a 407 proxy authentication challenge, and the second
4509 // response will be a 200 response since the second request includes a valid 4509 // response will be a 200 response since the second request includes a valid
4510 // Authorization header. 4510 // Authorization header.
4511 const char* const kExtraAuthenticationHeaders[] = { 4511 const char* const kExtraAuthenticationHeaders[] = {
4512 "proxy-authenticate", "Basic realm=\"MyRealm1\"" 4512 "proxy-authenticate", "Basic realm=\"MyRealm1\""
4513 }; 4513 };
4514 SpdySerializedFrame resp_authentication(spdy_util_.ConstructSpdySynReplyError( 4514 SpdySerializedFrame resp_authentication(spdy_util_.ConstructSpdyReplyError(
4515 "407 Proxy Authentication Required", kExtraAuthenticationHeaders, 4515 "407 Proxy Authentication Required", kExtraAuthenticationHeaders,
4516 arraysize(kExtraAuthenticationHeaders) / 2, 1)); 4516 arraysize(kExtraAuthenticationHeaders) / 2, 1));
4517 SpdySerializedFrame body_authentication( 4517 SpdySerializedFrame body_authentication(
4518 spdy_util_.ConstructSpdyDataFrame(1, true)); 4518 spdy_util_.ConstructSpdyDataFrame(1, true));
4519 SpdySerializedFrame resp_data( 4519 SpdySerializedFrame resp_data(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
4520 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
4521 SpdySerializedFrame body_data(spdy_util_.ConstructSpdyDataFrame(3, true)); 4520 SpdySerializedFrame body_data(spdy_util_.ConstructSpdyDataFrame(3, true));
4522 MockRead spdy_reads[] = { 4521 MockRead spdy_reads[] = {
4523 CreateMockRead(resp_authentication, 1), 4522 CreateMockRead(resp_authentication, 1),
4524 CreateMockRead(body_authentication, 2), 4523 CreateMockRead(body_authentication, 2),
4525 CreateMockRead(resp_data, 4), 4524 CreateMockRead(resp_data, 4),
4526 CreateMockRead(body_data, 5), 4525 CreateMockRead(body_data, 5),
4527 MockRead(ASYNC, 0, 6), 4526 MockRead(ASYNC, 0, 6),
4528 }; 4527 };
4529 4528
4530 SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4529 SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes,
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
4592 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect( 4591 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect(
4593 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4592 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4594 // fetch https://www.example.org/ via HTTP 4593 // fetch https://www.example.org/ via HTTP
4595 4594
4596 const char get[] = 4595 const char get[] =
4597 "GET / HTTP/1.1\r\n" 4596 "GET / HTTP/1.1\r\n"
4598 "Host: www.example.org\r\n" 4597 "Host: www.example.org\r\n"
4599 "Connection: keep-alive\r\n\r\n"; 4598 "Connection: keep-alive\r\n\r\n";
4600 SpdySerializedFrame wrapped_get( 4599 SpdySerializedFrame wrapped_get(
4601 spdy_util_.ConstructSpdyDataFrame(1, get, strlen(get), false)); 4600 spdy_util_.ConstructSpdyDataFrame(1, get, strlen(get), false));
4602 SpdySerializedFrame conn_resp( 4601 SpdySerializedFrame conn_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
4603 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4604 const char resp[] = "HTTP/1.1 200 OK\r\n" 4602 const char resp[] = "HTTP/1.1 200 OK\r\n"
4605 "Content-Length: 10\r\n\r\n"; 4603 "Content-Length: 10\r\n\r\n";
4606 SpdySerializedFrame wrapped_get_resp( 4604 SpdySerializedFrame wrapped_get_resp(
4607 spdy_util_.ConstructSpdyDataFrame(1, resp, strlen(resp), false)); 4605 spdy_util_.ConstructSpdyDataFrame(1, resp, strlen(resp), false));
4608 SpdySerializedFrame wrapped_body( 4606 SpdySerializedFrame wrapped_body(
4609 spdy_util_.ConstructSpdyDataFrame(1, "1234567890", 10, false)); 4607 spdy_util_.ConstructSpdyDataFrame(1, "1234567890", 10, false));
4610 SpdySerializedFrame window_update( 4608 SpdySerializedFrame window_update(
4611 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp.size())); 4609 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp.size()));
4612 4610
4613 MockWrite spdy_writes[] = { 4611 MockWrite spdy_writes[] = {
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
4674 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4672 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4675 4673
4676 // CONNECT to www.example.org:443 via SPDY 4674 // CONNECT to www.example.org:443 via SPDY
4677 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect( 4675 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect(
4678 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4676 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4679 // fetch https://www.example.org/ via SPDY 4677 // fetch https://www.example.org/ via SPDY
4680 const char kMyUrl[] = "https://www.example.org/"; 4678 const char kMyUrl[] = "https://www.example.org/";
4681 SpdySerializedFrame get( 4679 SpdySerializedFrame get(
4682 spdy_util_wrapped.ConstructSpdyGet(kMyUrl, 1, LOWEST)); 4680 spdy_util_wrapped.ConstructSpdyGet(kMyUrl, 1, LOWEST));
4683 SpdySerializedFrame wrapped_get(spdy_util_.ConstructWrappedSpdyFrame(get, 1)); 4681 SpdySerializedFrame wrapped_get(spdy_util_.ConstructWrappedSpdyFrame(get, 1));
4684 SpdySerializedFrame conn_resp( 4682 SpdySerializedFrame conn_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
4685 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4686 SpdySerializedFrame get_resp( 4683 SpdySerializedFrame get_resp(
4687 spdy_util_wrapped.ConstructSpdyGetSynReply(NULL, 0, 1)); 4684 spdy_util_wrapped.ConstructSpdyGetReply(NULL, 0, 1));
4688 SpdySerializedFrame wrapped_get_resp( 4685 SpdySerializedFrame wrapped_get_resp(
4689 spdy_util_.ConstructWrappedSpdyFrame(get_resp, 1)); 4686 spdy_util_.ConstructWrappedSpdyFrame(get_resp, 1));
4690 SpdySerializedFrame body(spdy_util_wrapped.ConstructSpdyDataFrame(1, true)); 4687 SpdySerializedFrame body(spdy_util_wrapped.ConstructSpdyDataFrame(1, true));
4691 SpdySerializedFrame wrapped_body( 4688 SpdySerializedFrame wrapped_body(
4692 spdy_util_.ConstructWrappedSpdyFrame(body, 1)); 4689 spdy_util_.ConstructWrappedSpdyFrame(body, 1));
4693 SpdySerializedFrame window_update_get_resp( 4690 SpdySerializedFrame window_update_get_resp(
4694 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp.size())); 4691 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp.size()));
4695 SpdySerializedFrame window_update_body( 4692 SpdySerializedFrame window_update_body(
4696 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_body.size())); 4693 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_body.size()));
4697 4694
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
4765 // CONNECT to www.example.org:443 via SPDY 4762 // CONNECT to www.example.org:443 via SPDY
4766 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect( 4763 SpdySerializedFrame connect(spdy_util_.ConstructSpdyConnect(
4767 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4764 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4768 SpdySerializedFrame get( 4765 SpdySerializedFrame get(
4769 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 4766 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
4770 4767
4771 MockWrite spdy_writes[] = { 4768 MockWrite spdy_writes[] = {
4772 CreateMockWrite(connect, 0), CreateMockWrite(get, 2), 4769 CreateMockWrite(connect, 0), CreateMockWrite(get, 2),
4773 }; 4770 };
4774 4771
4775 SpdySerializedFrame resp(spdy_util_.ConstructSpdySynReplyError(1)); 4772 SpdySerializedFrame resp(spdy_util_.ConstructSpdyReplyError(1));
4776 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true)); 4773 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
4777 MockRead spdy_reads[] = { 4774 MockRead spdy_reads[] = {
4778 CreateMockRead(resp, 1, ASYNC), MockRead(ASYNC, 0, 3), 4775 CreateMockRead(resp, 1, ASYNC), MockRead(ASYNC, 0, 3),
4779 }; 4776 };
4780 4777
4781 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4778 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4782 arraysize(spdy_writes)); 4779 arraysize(spdy_writes));
4783 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4780 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4784 4781
4785 SSLSocketDataProvider ssl(ASYNC, OK); 4782 SSLSocketDataProvider ssl(ASYNC, OK);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
4817 request1.load_flags = 0; 4814 request1.load_flags = 0;
4818 4815
4819 HttpRequestInfo request2; 4816 HttpRequestInfo request2;
4820 request2.method = "GET"; 4817 request2.method = "GET";
4821 request2.url = GURL("https://mail.example.org/"); 4818 request2.url = GURL("https://mail.example.org/");
4822 request2.load_flags = 0; 4819 request2.load_flags = 0;
4823 4820
4824 // CONNECT to www.example.org:443 via SPDY. 4821 // CONNECT to www.example.org:443 via SPDY.
4825 SpdySerializedFrame connect1(spdy_util_.ConstructSpdyConnect( 4822 SpdySerializedFrame connect1(spdy_util_.ConstructSpdyConnect(
4826 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4823 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4827 SpdySerializedFrame conn_resp1( 4824 SpdySerializedFrame conn_resp1(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
4828 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4829 4825
4830 // Fetch https://www.example.org/ via HTTP. 4826 // Fetch https://www.example.org/ via HTTP.
4831 const char get1[] = 4827 const char get1[] =
4832 "GET / HTTP/1.1\r\n" 4828 "GET / HTTP/1.1\r\n"
4833 "Host: www.example.org\r\n" 4829 "Host: www.example.org\r\n"
4834 "Connection: keep-alive\r\n\r\n"; 4830 "Connection: keep-alive\r\n\r\n";
4835 SpdySerializedFrame wrapped_get1( 4831 SpdySerializedFrame wrapped_get1(
4836 spdy_util_.ConstructSpdyDataFrame(1, get1, strlen(get1), false)); 4832 spdy_util_.ConstructSpdyDataFrame(1, get1, strlen(get1), false));
4837 const char resp1[] = "HTTP/1.1 200 OK\r\n" 4833 const char resp1[] = "HTTP/1.1 200 OK\r\n"
4838 "Content-Length: 1\r\n\r\n"; 4834 "Content-Length: 1\r\n\r\n";
4839 SpdySerializedFrame wrapped_get_resp1( 4835 SpdySerializedFrame wrapped_get_resp1(
4840 spdy_util_.ConstructSpdyDataFrame(1, resp1, strlen(resp1), false)); 4836 spdy_util_.ConstructSpdyDataFrame(1, resp1, strlen(resp1), false));
4841 SpdySerializedFrame wrapped_body1( 4837 SpdySerializedFrame wrapped_body1(
4842 spdy_util_.ConstructSpdyDataFrame(1, "1", 1, false)); 4838 spdy_util_.ConstructSpdyDataFrame(1, "1", 1, false));
4843 SpdySerializedFrame window_update( 4839 SpdySerializedFrame window_update(
4844 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1.size())); 4840 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1.size()));
4845 4841
4846 // CONNECT to mail.example.org:443 via SPDY. 4842 // CONNECT to mail.example.org:443 via SPDY.
4847 SpdyHeaderBlock connect2_block; 4843 SpdyHeaderBlock connect2_block;
4848 connect2_block[spdy_util_.GetMethodKey()] = "CONNECT"; 4844 connect2_block[spdy_util_.GetMethodKey()] = "CONNECT";
4849 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org:443"; 4845 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org:443";
4850 SpdySerializedFrame connect2( 4846 SpdySerializedFrame connect2(spdy_util_.ConstructSpdyHeaders(
4851 spdy_util_.ConstructSpdySyn(3, std::move(connect2_block), LOWEST, false)); 4847 3, std::move(connect2_block), LOWEST, false));
4852 4848
4853 SpdySerializedFrame conn_resp2( 4849 SpdySerializedFrame conn_resp2(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
4854 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
4855 4850
4856 // Fetch https://mail.example.org/ via HTTP. 4851 // Fetch https://mail.example.org/ via HTTP.
4857 const char get2[] = 4852 const char get2[] =
4858 "GET / HTTP/1.1\r\n" 4853 "GET / HTTP/1.1\r\n"
4859 "Host: mail.example.org\r\n" 4854 "Host: mail.example.org\r\n"
4860 "Connection: keep-alive\r\n\r\n"; 4855 "Connection: keep-alive\r\n\r\n";
4861 SpdySerializedFrame wrapped_get2( 4856 SpdySerializedFrame wrapped_get2(
4862 spdy_util_.ConstructSpdyDataFrame(3, get2, strlen(get2), false)); 4857 spdy_util_.ConstructSpdyDataFrame(3, get2, strlen(get2), false));
4863 const char resp2[] = "HTTP/1.1 200 OK\r\n" 4858 const char resp2[] = "HTTP/1.1 200 OK\r\n"
4864 "Content-Length: 2\r\n\r\n"; 4859 "Content-Length: 2\r\n\r\n";
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
4951 request1.load_flags = 0; 4946 request1.load_flags = 0;
4952 4947
4953 HttpRequestInfo request2; 4948 HttpRequestInfo request2;
4954 request2.method = "GET"; 4949 request2.method = "GET";
4955 request2.url = GURL("https://www.example.org/2"); 4950 request2.url = GURL("https://www.example.org/2");
4956 request2.load_flags = 0; 4951 request2.load_flags = 0;
4957 4952
4958 // CONNECT to www.example.org:443 via SPDY. 4953 // CONNECT to www.example.org:443 via SPDY.
4959 SpdySerializedFrame connect1(spdy_util_.ConstructSpdyConnect( 4954 SpdySerializedFrame connect1(spdy_util_.ConstructSpdyConnect(
4960 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4955 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4961 SpdySerializedFrame conn_resp1( 4956 SpdySerializedFrame conn_resp1(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
4962 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4963 4957
4964 // Fetch https://www.example.org/ via HTTP. 4958 // Fetch https://www.example.org/ via HTTP.
4965 const char get1[] = 4959 const char get1[] =
4966 "GET / HTTP/1.1\r\n" 4960 "GET / HTTP/1.1\r\n"
4967 "Host: www.example.org\r\n" 4961 "Host: www.example.org\r\n"
4968 "Connection: keep-alive\r\n\r\n"; 4962 "Connection: keep-alive\r\n\r\n";
4969 SpdySerializedFrame wrapped_get1( 4963 SpdySerializedFrame wrapped_get1(
4970 spdy_util_.ConstructSpdyDataFrame(1, get1, strlen(get1), false)); 4964 spdy_util_.ConstructSpdyDataFrame(1, get1, strlen(get1), false));
4971 const char resp1[] = "HTTP/1.1 200 OK\r\n" 4965 const char resp1[] = "HTTP/1.1 200 OK\r\n"
4972 "Content-Length: 1\r\n\r\n"; 4966 "Content-Length: 1\r\n\r\n";
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
5074 5068
5075 HttpRequestInfo request2; 5069 HttpRequestInfo request2;
5076 request2.method = "GET"; 5070 request2.method = "GET";
5077 request2.url = GURL("http://mail.example.org/"); 5071 request2.url = GURL("http://mail.example.org/");
5078 request2.load_flags = 0; 5072 request2.load_flags = 0;
5079 5073
5080 // http://www.example.org/ 5074 // http://www.example.org/
5081 SpdyHeaderBlock headers( 5075 SpdyHeaderBlock headers(
5082 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/")); 5076 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/"));
5083 SpdySerializedFrame get1( 5077 SpdySerializedFrame get1(
5084 spdy_util_.ConstructSpdySyn(1, std::move(headers), LOWEST, true)); 5078 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true));
5085 SpdySerializedFrame get_resp1( 5079 SpdySerializedFrame get_resp1(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
5086 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
5087 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, "1", 1, true)); 5080 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, "1", 1, true));
5088 spdy_util_.UpdateWithStreamDestruction(1); 5081 spdy_util_.UpdateWithStreamDestruction(1);
5089 5082
5090 // http://mail.example.org/ 5083 // http://mail.example.org/
5091 SpdyHeaderBlock headers2( 5084 SpdyHeaderBlock headers2(
5092 spdy_util_.ConstructGetHeaderBlockForProxy("http://mail.example.org/")); 5085 spdy_util_.ConstructGetHeaderBlockForProxy("http://mail.example.org/"));
5093 SpdySerializedFrame get2( 5086 SpdySerializedFrame get2(
5094 spdy_util_.ConstructSpdySyn(3, std::move(headers2), LOWEST, true)); 5087 spdy_util_.ConstructSpdyHeaders(3, std::move(headers2), LOWEST, true));
5095 SpdySerializedFrame get_resp2( 5088 SpdySerializedFrame get_resp2(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
5096 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
5097 SpdySerializedFrame body2( 5089 SpdySerializedFrame body2(
5098 spdy_util_.ConstructSpdyDataFrame(3, "22", 2, true)); 5090 spdy_util_.ConstructSpdyDataFrame(3, "22", 2, true));
5099 5091
5100 MockWrite spdy_writes[] = { 5092 MockWrite spdy_writes[] = {
5101 CreateMockWrite(get1, 0), CreateMockWrite(get2, 3), 5093 CreateMockWrite(get1, 0), CreateMockWrite(get2, 3),
5102 }; 5094 };
5103 5095
5104 MockRead spdy_reads[] = { 5096 MockRead spdy_reads[] = {
5105 CreateMockRead(get_resp1, 1, ASYNC), 5097 CreateMockRead(get_resp1, 1, ASYNC),
5106 CreateMockRead(body1, 2, ASYNC), 5098 CreateMockRead(body1, 2, ASYNC),
(...skipping 2558 matching lines...) Expand 10 before | Expand all | Expand 10 after
7665 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7657 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7666 MockWrite data_writes[] = { 7658 MockWrite data_writes[] = {
7667 CreateMockWrite(conn, 0, SYNCHRONOUS), 7659 CreateMockWrite(conn, 0, SYNCHRONOUS),
7668 CreateMockWrite(goaway, 2, SYNCHRONOUS), 7660 CreateMockWrite(goaway, 2, SYNCHRONOUS),
7669 }; 7661 };
7670 7662
7671 static const char* const kExtraHeaders[] = { 7663 static const char* const kExtraHeaders[] = {
7672 "location", 7664 "location",
7673 "http://login.example.com/", 7665 "http://login.example.com/",
7674 }; 7666 };
7675 SpdySerializedFrame resp(spdy_util_.ConstructSpdySynReplyError( 7667 SpdySerializedFrame resp(spdy_util_.ConstructSpdyReplyError(
7676 "302 Redirect", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1)); 7668 "302 Redirect", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1));
7677 MockRead data_reads[] = { 7669 MockRead data_reads[] = {
7678 CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3), // EOF 7670 CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3), // EOF
7679 }; 7671 };
7680 7672
7681 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes, 7673 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes,
7682 arraysize(data_writes)); 7674 arraysize(data_writes));
7683 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy 7675 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
7684 proxy_ssl.SetNextProto(kProtoHTTP2); 7676 proxy_ssl.SetNextProto(kProtoHTTP2);
7685 7677
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
7765 SpdySerializedFrame rst( 7757 SpdySerializedFrame rst(
7766 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7758 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7767 MockWrite data_writes[] = { 7759 MockWrite data_writes[] = {
7768 CreateMockWrite(conn, 0), CreateMockWrite(rst, 3), 7760 CreateMockWrite(conn, 0), CreateMockWrite(rst, 3),
7769 }; 7761 };
7770 7762
7771 static const char* const kExtraHeaders[] = { 7763 static const char* const kExtraHeaders[] = {
7772 "location", 7764 "location",
7773 "http://login.example.com/", 7765 "http://login.example.com/",
7774 }; 7766 };
7775 SpdySerializedFrame resp(spdy_util_.ConstructSpdySynReplyError( 7767 SpdySerializedFrame resp(spdy_util_.ConstructSpdyReplyError(
7776 "404 Not Found", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1)); 7768 "404 Not Found", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1));
7777 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame( 7769 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(
7778 1, "The host does not exist", 23, true)); 7770 1, "The host does not exist", 23, true));
7779 MockRead data_reads[] = { 7771 MockRead data_reads[] = {
7780 CreateMockRead(resp, 1), CreateMockRead(body, 2), 7772 CreateMockRead(resp, 1), CreateMockRead(body, 2),
7781 MockRead(ASYNC, 0, 4), // EOF 7773 MockRead(ASYNC, 0, 4), // EOF
7782 }; 7774 };
7783 7775
7784 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes, 7776 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes,
7785 arraysize(data_writes)); 7777 arraysize(data_writes));
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
7847 CreateMockWrite(req, 0, ASYNC), CreateMockWrite(rst, 2, ASYNC), 7839 CreateMockWrite(req, 0, ASYNC), CreateMockWrite(rst, 2, ASYNC),
7848 CreateMockWrite(connect2, 3), CreateMockWrite(wrapped_get, 5), 7840 CreateMockWrite(connect2, 3), CreateMockWrite(wrapped_get, 5),
7849 }; 7841 };
7850 7842
7851 // The proxy responds to the connect with a 407, using a persistent 7843 // The proxy responds to the connect with a 407, using a persistent
7852 // connection. 7844 // connection.
7853 const char kAuthStatus[] = "407"; 7845 const char kAuthStatus[] = "407";
7854 const char* const kAuthChallenge[] = { 7846 const char* const kAuthChallenge[] = {
7855 "proxy-authenticate", "Basic realm=\"MyRealm1\"", 7847 "proxy-authenticate", "Basic realm=\"MyRealm1\"",
7856 }; 7848 };
7857 SpdySerializedFrame conn_auth_resp(spdy_util_.ConstructSpdySynReplyError( 7849 SpdySerializedFrame conn_auth_resp(spdy_util_.ConstructSpdyReplyError(
7858 kAuthStatus, kAuthChallenge, arraysize(kAuthChallenge) / 2, 1)); 7850 kAuthStatus, kAuthChallenge, arraysize(kAuthChallenge) / 2, 1));
7859 7851
7860 SpdySerializedFrame conn_resp( 7852 SpdySerializedFrame conn_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
7861 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
7862 const char resp[] = "HTTP/1.1 200 OK\r\n" 7853 const char resp[] = "HTTP/1.1 200 OK\r\n"
7863 "Content-Length: 5\r\n\r\n"; 7854 "Content-Length: 5\r\n\r\n";
7864 7855
7865 SpdySerializedFrame wrapped_get_resp( 7856 SpdySerializedFrame wrapped_get_resp(
7866 spdy_util_.ConstructSpdyDataFrame(3, resp, strlen(resp), false)); 7857 spdy_util_.ConstructSpdyDataFrame(3, resp, strlen(resp), false));
7867 SpdySerializedFrame wrapped_body( 7858 SpdySerializedFrame wrapped_body(
7868 spdy_util_.ConstructSpdyDataFrame(3, "hello", 5, false)); 7859 spdy_util_.ConstructSpdyDataFrame(3, "hello", 5, false));
7869 MockRead spdy_reads[] = { 7860 MockRead spdy_reads[] = {
7870 CreateMockRead(conn_auth_resp, 1, ASYNC), 7861 CreateMockRead(conn_auth_resp, 1, ASYNC),
7871 CreateMockRead(conn_resp, 4, ASYNC), 7862 CreateMockRead(conn_resp, 4, ASYNC),
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
7968 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7959 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7969 7960
7970 SpdySerializedFrame stream1_syn( 7961 SpdySerializedFrame stream1_syn(
7971 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 7962 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
7972 7963
7973 MockWrite spdy_writes[] = { 7964 MockWrite spdy_writes[] = {
7974 CreateMockWrite(stream1_syn, 0, ASYNC), 7965 CreateMockWrite(stream1_syn, 0, ASYNC),
7975 }; 7966 };
7976 7967
7977 SpdySerializedFrame stream1_reply( 7968 SpdySerializedFrame stream1_reply(
7978 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 7969 spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
7979 7970
7980 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 7971 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
7981 7972
7982 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 7973 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
7983 NULL, 0, 2, 1, "http://www.another-origin.com/foo.dat")); 7974 NULL, 0, 2, 1, "http://www.another-origin.com/foo.dat"));
7984 const char kPushedData[] = "pushed"; 7975 const char kPushedData[] = "pushed";
7985 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame( 7976 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(
7986 2, kPushedData, strlen(kPushedData), true)); 7977 2, kPushedData, strlen(kPushedData), true));
7987 7978
7988 MockRead spdy_reads[] = { 7979 MockRead spdy_reads[] = {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
8082 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 8073 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
8083 8074
8084 SpdySerializedFrame push_rst( 8075 SpdySerializedFrame push_rst(
8085 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 8076 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
8086 8077
8087 MockWrite spdy_writes[] = { 8078 MockWrite spdy_writes[] = {
8088 CreateMockWrite(stream1_syn, 0, ASYNC), CreateMockWrite(push_rst, 3), 8079 CreateMockWrite(stream1_syn, 0, ASYNC), CreateMockWrite(push_rst, 3),
8089 }; 8080 };
8090 8081
8091 SpdySerializedFrame stream1_reply( 8082 SpdySerializedFrame stream1_reply(
8092 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 8083 spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
8093 8084
8094 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 8085 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
8095 8086
8096 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 8087 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
8097 NULL, 0, 2, 1, "https://www.another-origin.com/foo.dat")); 8088 NULL, 0, 2, 1, "https://www.another-origin.com/foo.dat"));
8098 8089
8099 MockRead spdy_reads[] = { 8090 MockRead spdy_reads[] = {
8100 CreateMockRead(stream1_reply, 1, ASYNC), 8091 CreateMockRead(stream1_reply, 1, ASYNC),
8101 CreateMockRead(stream2_syn, 2, ASYNC), 8092 CreateMockRead(stream2_syn, 2, ASYNC),
8102 CreateMockRead(stream1_body, 4, ASYNC), 8093 CreateMockRead(stream1_body, 4, ASYNC),
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
8160 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 8151 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
8161 8152
8162 SpdySerializedFrame stream1_syn( 8153 SpdySerializedFrame stream1_syn(
8163 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); 8154 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST));
8164 8155
8165 MockWrite spdy_writes[] = { 8156 MockWrite spdy_writes[] = {
8166 CreateMockWrite(stream1_syn, 0, ASYNC), 8157 CreateMockWrite(stream1_syn, 0, ASYNC),
8167 }; 8158 };
8168 8159
8169 SpdySerializedFrame stream1_reply( 8160 SpdySerializedFrame stream1_reply(
8170 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 8161 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
8171 8162
8172 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 8163 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
8173 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat")); 8164 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat"));
8174 8165
8175 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 8166 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
8176 8167
8177 SpdySerializedFrame stream2_reply( 8168 SpdySerializedFrame stream2_reply(
8178 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 8169 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
8179 8170
8180 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 8171 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(1, true));
8181 8172
8182 MockRead spdy_reads[] = { 8173 MockRead spdy_reads[] = {
8183 CreateMockRead(stream1_reply, 1, ASYNC), 8174 CreateMockRead(stream1_reply, 1, ASYNC),
8184 CreateMockRead(stream2_syn, 2, ASYNC), 8175 CreateMockRead(stream2_syn, 2, ASYNC),
8185 CreateMockRead(stream1_body, 3, ASYNC), 8176 CreateMockRead(stream1_body, 3, ASYNC),
8186 CreateMockRead(stream2_body, 4, ASYNC), 8177 CreateMockRead(stream2_body, 4, ASYNC),
8187 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang 8178 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang
8188 }; 8179 };
(...skipping 2545 matching lines...) Expand 10 before | Expand all | Expand 10 after
10734 ssl_http2.SetNextProto(kProtoHTTP2); 10725 ssl_http2.SetNextProto(kProtoHTTP2);
10735 ssl_http2.cert = 10726 ssl_http2.cert =
10736 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 10727 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
10737 ASSERT_TRUE(ssl_http2.cert.get()); 10728 ASSERT_TRUE(ssl_http2.cert.get());
10738 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2); 10729 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2);
10739 10730
10740 SpdySerializedFrame req( 10731 SpdySerializedFrame req(
10741 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST)); 10732 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST));
10742 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)}; 10733 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
10743 10734
10744 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 10735 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
10745 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true)); 10736 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
10746 MockRead spdy_reads[] = { 10737 MockRead spdy_reads[] = {
10747 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3), 10738 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
10748 }; 10739 };
10749 10740
10750 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 10741 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
10751 arraysize(spdy_writes)); 10742 arraysize(spdy_writes));
10752 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 10743 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
10753 10744
10754 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 10745 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
10832 // Third transaction starts an alternative and a non-alternative job. 10823 // Third transaction starts an alternative and a non-alternative job.
10833 // The non-alternative job hangs, but the alternative one succeeds. 10824 // The non-alternative job hangs, but the alternative one succeeds.
10834 // The second transaction, still pending, binds to this socket. 10825 // The second transaction, still pending, binds to this socket.
10835 SpdySerializedFrame req1( 10826 SpdySerializedFrame req1(
10836 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST)); 10827 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST));
10837 SpdySerializedFrame req2( 10828 SpdySerializedFrame req2(
10838 spdy_util_.ConstructSpdyGet("https://www.example.org/", 3, LOWEST)); 10829 spdy_util_.ConstructSpdyGet("https://www.example.org/", 3, LOWEST));
10839 MockWrite spdy_writes[] = { 10830 MockWrite spdy_writes[] = {
10840 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), 10831 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1),
10841 }; 10832 };
10842 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 10833 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
10843 SpdySerializedFrame data1(spdy_util_.ConstructSpdyDataFrame(1, true)); 10834 SpdySerializedFrame data1(spdy_util_.ConstructSpdyDataFrame(1, true));
10844 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 10835 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
10845 SpdySerializedFrame data2(spdy_util_.ConstructSpdyDataFrame(3, true)); 10836 SpdySerializedFrame data2(spdy_util_.ConstructSpdyDataFrame(3, true));
10846 MockRead spdy_reads[] = { 10837 MockRead spdy_reads[] = {
10847 CreateMockRead(resp1, 2), CreateMockRead(data1, 3), 10838 CreateMockRead(resp1, 2), CreateMockRead(data1, 3),
10848 CreateMockRead(resp2, 4), CreateMockRead(data2, 5), 10839 CreateMockRead(resp2, 4), CreateMockRead(data2, 5),
10849 MockRead(ASYNC, 0, 6), 10840 MockRead(ASYNC, 0, 6),
10850 }; 10841 };
10851 10842
10852 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 10843 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
10853 arraysize(spdy_writes)); 10844 arraysize(spdy_writes));
10854 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 10845 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
11082 MockWrite spdy_writes[] = { 11073 MockWrite spdy_writes[] = {
11083 MockWrite(ASYNC, 0, 11074 MockWrite(ASYNC, 0,
11084 "CONNECT www.example.org:443 HTTP/1.1\r\n" 11075 "CONNECT www.example.org:443 HTTP/1.1\r\n"
11085 "Host: www.example.org:443\r\n" 11076 "Host: www.example.org:443\r\n"
11086 "Proxy-Connection: keep-alive\r\n\r\n"), 11077 "Proxy-Connection: keep-alive\r\n\r\n"),
11087 CreateMockWrite(req, 2), 11078 CreateMockWrite(req, 2),
11088 }; 11079 };
11089 11080
11090 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; 11081 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n";
11091 11082
11092 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 11083 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
11093 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true)); 11084 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
11094 MockRead spdy_reads[] = { 11085 MockRead spdy_reads[] = {
11095 MockRead(ASYNC, 1, kCONNECTResponse), CreateMockRead(resp, 3), 11086 MockRead(ASYNC, 1, kCONNECTResponse), CreateMockRead(resp, 3),
11096 CreateMockRead(data, 4), MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), 11087 CreateMockRead(data, 4), MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),
11097 }; 11088 };
11098 11089
11099 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11090 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
11100 arraysize(spdy_writes)); 11091 arraysize(spdy_writes));
11101 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11092 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
11102 11093
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
11172 ssl_http2.SetNextProto(kProtoHTTP2); 11163 ssl_http2.SetNextProto(kProtoHTTP2);
11173 ssl_http2.cert = 11164 ssl_http2.cert =
11174 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 11165 ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
11175 ASSERT_TRUE(ssl_http2.cert); 11166 ASSERT_TRUE(ssl_http2.cert);
11176 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2); 11167 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http2);
11177 11168
11178 SpdySerializedFrame req( 11169 SpdySerializedFrame req(
11179 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST)); 11170 spdy_util_.ConstructSpdyGet("https://www.example.org/", 1, LOWEST));
11180 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)}; 11171 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
11181 11172
11182 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 11173 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
11183 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true)); 11174 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
11184 MockRead spdy_reads[] = { 11175 MockRead spdy_reads[] = {
11185 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3), 11176 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
11186 }; 11177 };
11187 11178
11188 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11179 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
11189 arraysize(spdy_writes)); 11180 arraysize(spdy_writes));
11190 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11181 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
11191 11182
11192 TestCompletionCallback callback; 11183 TestCompletionCallback callback;
(...skipping 1132 matching lines...) Expand 10 before | Expand all | Expand 10 after
12325 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, 12316 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS,
12326 NetLog::PHASE_NONE); 12317 NetLog::PHASE_NONE);
12327 } 12318 }
12328 12319
12329 // Test for crbug.com/55424. 12320 // Test for crbug.com/55424.
12330 TEST_F(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) { 12321 TEST_F(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) {
12331 SpdySerializedFrame req( 12322 SpdySerializedFrame req(
12332 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12323 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12333 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)}; 12324 MockWrite spdy_writes[] = {CreateMockWrite(req, 0)};
12334 12325
12335 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 12326 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
12336 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true)); 12327 SpdySerializedFrame data(spdy_util_.ConstructSpdyDataFrame(1, true));
12337 MockRead spdy_reads[] = { 12328 MockRead spdy_reads[] = {
12338 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3), 12329 CreateMockRead(resp, 1), CreateMockRead(data, 2), MockRead(ASYNC, 0, 3),
12339 }; 12330 };
12340 12331
12341 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 12332 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
12342 arraysize(spdy_writes)); 12333 arraysize(spdy_writes));
12343 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 12334 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
12344 12335
12345 SSLSocketDataProvider ssl(ASYNC, OK); 12336 SSLSocketDataProvider ssl(ASYNC, OK);
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
12747 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12738 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12748 12739
12749 SpdySerializedFrame host1_req( 12740 SpdySerializedFrame host1_req(
12750 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12741 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12751 spdy_util_.UpdateWithStreamDestruction(1); 12742 spdy_util_.UpdateWithStreamDestruction(1);
12752 SpdySerializedFrame host2_req( 12743 SpdySerializedFrame host2_req(
12753 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 12744 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
12754 MockWrite spdy_writes[] = { 12745 MockWrite spdy_writes[] = {
12755 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3), 12746 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3),
12756 }; 12747 };
12757 SpdySerializedFrame host1_resp( 12748 SpdySerializedFrame host1_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
12758 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12759 SpdySerializedFrame host1_resp_body( 12749 SpdySerializedFrame host1_resp_body(
12760 spdy_util_.ConstructSpdyDataFrame(1, true)); 12750 spdy_util_.ConstructSpdyDataFrame(1, true));
12761 SpdySerializedFrame host2_resp( 12751 SpdySerializedFrame host2_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
12762 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
12763 SpdySerializedFrame host2_resp_body( 12752 SpdySerializedFrame host2_resp_body(
12764 spdy_util_.ConstructSpdyDataFrame(3, true)); 12753 spdy_util_.ConstructSpdyDataFrame(3, true));
12765 MockRead spdy_reads[] = { 12754 MockRead spdy_reads[] = {
12766 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2), 12755 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
12767 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5), 12756 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5),
12768 MockRead(ASYNC, 0, 6), 12757 MockRead(ASYNC, 0, 6),
12769 }; 12758 };
12770 12759
12771 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 12760 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
12772 MockConnect connect(ASYNC, OK, peer_addr); 12761 MockConnect connect(ASYNC, OK, peer_addr);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
12840 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12829 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12841 12830
12842 SpdySerializedFrame host1_req( 12831 SpdySerializedFrame host1_req(
12843 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12832 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12844 spdy_util_.UpdateWithStreamDestruction(1); 12833 spdy_util_.UpdateWithStreamDestruction(1);
12845 SpdySerializedFrame host2_req( 12834 SpdySerializedFrame host2_req(
12846 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 12835 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
12847 MockWrite spdy_writes[] = { 12836 MockWrite spdy_writes[] = {
12848 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3), 12837 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3),
12849 }; 12838 };
12850 SpdySerializedFrame host1_resp( 12839 SpdySerializedFrame host1_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
12851 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12852 SpdySerializedFrame host1_resp_body( 12840 SpdySerializedFrame host1_resp_body(
12853 spdy_util_.ConstructSpdyDataFrame(1, true)); 12841 spdy_util_.ConstructSpdyDataFrame(1, true));
12854 SpdySerializedFrame host2_resp( 12842 SpdySerializedFrame host2_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
12855 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
12856 SpdySerializedFrame host2_resp_body( 12843 SpdySerializedFrame host2_resp_body(
12857 spdy_util_.ConstructSpdyDataFrame(3, true)); 12844 spdy_util_.ConstructSpdyDataFrame(3, true));
12858 MockRead spdy_reads[] = { 12845 MockRead spdy_reads[] = {
12859 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2), 12846 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
12860 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5), 12847 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5),
12861 MockRead(ASYNC, 0, 6), 12848 MockRead(ASYNC, 0, 6),
12862 }; 12849 };
12863 12850
12864 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 12851 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
12865 MockConnect connect(ASYNC, OK, peer_addr); 12852 MockConnect connect(ASYNC, OK, peer_addr);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
12964 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12951 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12965 12952
12966 SpdySerializedFrame host1_req( 12953 SpdySerializedFrame host1_req(
12967 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12954 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12968 spdy_util_.UpdateWithStreamDestruction(1); 12955 spdy_util_.UpdateWithStreamDestruction(1);
12969 SpdySerializedFrame host2_req( 12956 SpdySerializedFrame host2_req(
12970 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 12957 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
12971 MockWrite spdy_writes[] = { 12958 MockWrite spdy_writes[] = {
12972 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3), 12959 CreateMockWrite(host1_req, 0), CreateMockWrite(host2_req, 3),
12973 }; 12960 };
12974 SpdySerializedFrame host1_resp( 12961 SpdySerializedFrame host1_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
12975 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12976 SpdySerializedFrame host1_resp_body( 12962 SpdySerializedFrame host1_resp_body(
12977 spdy_util_.ConstructSpdyDataFrame(1, true)); 12963 spdy_util_.ConstructSpdyDataFrame(1, true));
12978 SpdySerializedFrame host2_resp( 12964 SpdySerializedFrame host2_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
12979 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
12980 SpdySerializedFrame host2_resp_body( 12965 SpdySerializedFrame host2_resp_body(
12981 spdy_util_.ConstructSpdyDataFrame(3, true)); 12966 spdy_util_.ConstructSpdyDataFrame(3, true));
12982 MockRead spdy_reads[] = { 12967 MockRead spdy_reads[] = {
12983 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2), 12968 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
12984 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5), 12969 CreateMockRead(host2_resp, 4), CreateMockRead(host2_resp_body, 5),
12985 MockRead(ASYNC, 0, 6), 12970 MockRead(ASYNC, 0, 6),
12986 }; 12971 };
12987 12972
12988 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 12973 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
12989 MockConnect connect(ASYNC, OK, peer_addr); 12974 MockConnect connect(ASYNC, OK, peer_addr);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
13049 const std::string http_url = "http://www.example.org:8080/"; 13034 const std::string http_url = "http://www.example.org:8080/";
13050 13035
13051 // SPDY GET for HTTPS URL 13036 // SPDY GET for HTTPS URL
13052 SpdySerializedFrame req1( 13037 SpdySerializedFrame req1(
13053 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, LOWEST)); 13038 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, LOWEST));
13054 13039
13055 MockWrite writes1[] = { 13040 MockWrite writes1[] = {
13056 CreateMockWrite(req1, 0), 13041 CreateMockWrite(req1, 0),
13057 }; 13042 };
13058 13043
13059 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13044 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
13060 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true)); 13045 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true));
13061 MockRead reads1[] = {CreateMockRead(resp1, 1), CreateMockRead(body1, 2), 13046 MockRead reads1[] = {CreateMockRead(resp1, 1), CreateMockRead(body1, 2),
13062 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3)}; 13047 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3)};
13063 13048
13064 SequencedSocketData data1(reads1, arraysize(reads1), writes1, 13049 SequencedSocketData data1(reads1, arraysize(reads1), writes1,
13065 arraysize(writes1)); 13050 arraysize(writes1));
13066 MockConnect connect_data1(ASYNC, OK); 13051 MockConnect connect_data1(ASYNC, OK);
13067 data1.set_connect_data(connect_data1); 13052 data1.set_connect_data(connect_data1);
13068 13053
13069 // HTTP GET for the HTTP URL 13054 // HTTP GET for the HTTP URL
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
13407 SpdySerializedFrame wrapped_req1( 13392 SpdySerializedFrame wrapped_req1(
13408 spdy_util_.ConstructWrappedSpdyFrame(req1, 1)); 13393 spdy_util_.ConstructWrappedSpdyFrame(req1, 1));
13409 13394
13410 // SPDY GET for HTTP URL (through the proxy, but not the tunnel). 13395 // SPDY GET for HTTP URL (through the proxy, but not the tunnel).
13411 SpdyHeaderBlock req2_block; 13396 SpdyHeaderBlock req2_block;
13412 req2_block[spdy_util_.GetMethodKey()] = "GET"; 13397 req2_block[spdy_util_.GetMethodKey()] = "GET";
13413 req2_block[spdy_util_.GetHostKey()] = "www.example.org:8080"; 13398 req2_block[spdy_util_.GetHostKey()] = "www.example.org:8080";
13414 req2_block[spdy_util_.GetSchemeKey()] = "http"; 13399 req2_block[spdy_util_.GetSchemeKey()] = "http";
13415 req2_block[spdy_util_.GetPathKey()] = "/"; 13400 req2_block[spdy_util_.GetPathKey()] = "/";
13416 SpdySerializedFrame req2( 13401 SpdySerializedFrame req2(
13417 spdy_util_.ConstructSpdySyn(3, std::move(req2_block), MEDIUM, true)); 13402 spdy_util_.ConstructSpdyHeaders(3, std::move(req2_block), MEDIUM, true));
13418 13403
13419 MockWrite writes1[] = { 13404 MockWrite writes1[] = {
13420 CreateMockWrite(connect, 0), CreateMockWrite(wrapped_req1, 2), 13405 CreateMockWrite(connect, 0), CreateMockWrite(wrapped_req1, 2),
13421 CreateMockWrite(req2, 6), 13406 CreateMockWrite(req2, 6),
13422 }; 13407 };
13423 13408
13424 SpdySerializedFrame conn_resp( 13409 SpdySerializedFrame conn_resp(
13425 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 13410 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
13426 SpdySerializedFrame resp1( 13411 SpdySerializedFrame resp1(
13427 spdy_util_wrapped.ConstructSpdyGetSynReply(nullptr, 0, 1)); 13412 spdy_util_wrapped.ConstructSpdyGetReply(nullptr, 0, 1));
13428 SpdySerializedFrame body1(spdy_util_wrapped.ConstructSpdyDataFrame(1, true)); 13413 SpdySerializedFrame body1(spdy_util_wrapped.ConstructSpdyDataFrame(1, true));
13429 SpdySerializedFrame wrapped_resp1( 13414 SpdySerializedFrame wrapped_resp1(
13430 spdy_util_wrapped.ConstructWrappedSpdyFrame(resp1, 1)); 13415 spdy_util_wrapped.ConstructWrappedSpdyFrame(resp1, 1));
13431 SpdySerializedFrame wrapped_body1( 13416 SpdySerializedFrame wrapped_body1(
13432 spdy_util_wrapped.ConstructWrappedSpdyFrame(body1, 1)); 13417 spdy_util_wrapped.ConstructWrappedSpdyFrame(body1, 1));
13433 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 13418 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(NULL, 0, 3));
13434 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(3, true)); 13419 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(3, true));
13435 MockRead reads1[] = { 13420 MockRead reads1[] = {
13436 CreateMockRead(conn_resp, 1), 13421 CreateMockRead(conn_resp, 1),
13437 MockRead(ASYNC, ERR_IO_PENDING, 3), 13422 MockRead(ASYNC, ERR_IO_PENDING, 3),
13438 CreateMockRead(wrapped_resp1, 4), 13423 CreateMockRead(wrapped_resp1, 4),
13439 CreateMockRead(wrapped_body1, 5), 13424 CreateMockRead(wrapped_body1, 5),
13440 MockRead(ASYNC, ERR_IO_PENDING, 7), 13425 MockRead(ASYNC, ERR_IO_PENDING, 7),
13441 CreateMockRead(resp2, 8), 13426 CreateMockRead(resp2, 8),
13442 CreateMockRead(body2, 9), 13427 CreateMockRead(body2, 9),
13443 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 10), 13428 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 10),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
13518 const std::string url2 = "https://news.example.org/"; 13503 const std::string url2 = "https://news.example.org/";
13519 const std::string ip_addr = "1.2.3.4"; 13504 const std::string ip_addr = "1.2.3.4";
13520 13505
13521 // Second SpdyTestUtil instance for the second socket. 13506 // Second SpdyTestUtil instance for the second socket.
13522 SpdyTestUtil spdy_util_secure; 13507 SpdyTestUtil spdy_util_secure;
13523 13508
13524 // SPDY GET for HTTP URL (through SPDY proxy) 13509 // SPDY GET for HTTP URL (through SPDY proxy)
13525 SpdyHeaderBlock headers( 13510 SpdyHeaderBlock headers(
13526 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/")); 13511 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/"));
13527 SpdySerializedFrame req1( 13512 SpdySerializedFrame req1(
13528 spdy_util_.ConstructSpdySyn(1, std::move(headers), LOWEST, true)); 13513 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true));
13529 13514
13530 MockWrite writes1[] = { 13515 MockWrite writes1[] = {
13531 CreateMockWrite(req1, 0), 13516 CreateMockWrite(req1, 0),
13532 }; 13517 };
13533 13518
13534 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13519 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
13535 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true)); 13520 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true));
13536 MockRead reads1[] = { 13521 MockRead reads1[] = {
13537 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp1, 2), 13522 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp1, 2),
13538 CreateMockRead(body1, 3), MockRead(ASYNC, OK, 4), // EOF 13523 CreateMockRead(body1, 3), MockRead(ASYNC, OK, 4), // EOF
13539 }; 13524 };
13540 13525
13541 SequencedSocketData data1(reads1, arraysize(reads1), writes1, 13526 SequencedSocketData data1(reads1, arraysize(reads1), writes1,
13542 arraysize(writes1)); 13527 arraysize(writes1));
13543 IPAddress ip; 13528 IPAddress ip;
13544 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr)); 13529 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr));
13545 IPEndPoint peer_addr = IPEndPoint(ip, 443); 13530 IPEndPoint peer_addr = IPEndPoint(ip, 443);
13546 MockConnect connect_data1(ASYNC, OK, peer_addr); 13531 MockConnect connect_data1(ASYNC, OK, peer_addr);
13547 data1.set_connect_data(connect_data1); 13532 data1.set_connect_data(connect_data1);
13548 13533
13549 // SPDY GET for HTTPS URL (direct) 13534 // SPDY GET for HTTPS URL (direct)
13550 SpdySerializedFrame req2( 13535 SpdySerializedFrame req2(
13551 spdy_util_secure.ConstructSpdyGet(url2.c_str(), 1, MEDIUM)); 13536 spdy_util_secure.ConstructSpdyGet(url2.c_str(), 1, MEDIUM));
13552 13537
13553 MockWrite writes2[] = { 13538 MockWrite writes2[] = {
13554 CreateMockWrite(req2, 0), 13539 CreateMockWrite(req2, 0),
13555 }; 13540 };
13556 13541
13557 SpdySerializedFrame resp2( 13542 SpdySerializedFrame resp2(spdy_util_secure.ConstructSpdyGetReply(NULL, 0, 1));
13558 spdy_util_secure.ConstructSpdyGetSynReply(NULL, 0, 1));
13559 SpdySerializedFrame body2(spdy_util_secure.ConstructSpdyDataFrame(1, true)); 13543 SpdySerializedFrame body2(spdy_util_secure.ConstructSpdyDataFrame(1, true));
13560 MockRead reads2[] = {CreateMockRead(resp2, 1), CreateMockRead(body2, 2), 13544 MockRead reads2[] = {CreateMockRead(resp2, 1), CreateMockRead(body2, 2),
13561 MockRead(ASYNC, OK, 3)}; 13545 MockRead(ASYNC, OK, 3)};
13562 13546
13563 SequencedSocketData data2(reads2, arraysize(reads2), writes2, 13547 SequencedSocketData data2(reads2, arraysize(reads2), writes2,
13564 arraysize(writes2)); 13548 arraysize(writes2));
13565 MockConnect connect_data2(ASYNC, OK); 13549 MockConnect connect_data2(ASYNC, OK);
13566 data2.set_connect_data(connect_data2); 13550 data2.set_connect_data(connect_data2);
13567 13551
13568 // Set up a proxy config that sends HTTP requests to a proxy, and 13552 // Set up a proxy config that sends HTTP requests to a proxy, and
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
13640 }; 13624 };
13641 13625
13642 SequencedSocketData data1(reads1, arraysize(reads1), NULL, 0); 13626 SequencedSocketData data1(reads1, arraysize(reads1), NULL, 0);
13643 13627
13644 SpdySerializedFrame req2( 13628 SpdySerializedFrame req2(
13645 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, MEDIUM)); 13629 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, MEDIUM));
13646 MockWrite writes2[] = { 13630 MockWrite writes2[] = {
13647 CreateMockWrite(req2, 0), 13631 CreateMockWrite(req2, 0),
13648 }; 13632 };
13649 13633
13650 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13634 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
13651 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(1, true)); 13635 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(1, true));
13652 MockRead reads2[] = { 13636 MockRead reads2[] = {
13653 CreateMockRead(resp2, 1), CreateMockRead(body2, 2), 13637 CreateMockRead(resp2, 1), CreateMockRead(body2, 2),
13654 MockRead(ASYNC, OK, 3) // EOF 13638 MockRead(ASYNC, OK, 3) // EOF
13655 }; 13639 };
13656 13640
13657 SequencedSocketData data2(reads2, arraysize(reads2), writes2, 13641 SequencedSocketData data2(reads2, arraysize(reads2), writes2,
13658 arraysize(writes2)); 13642 arraysize(writes2));
13659 13643
13660 SSLSocketDataProvider ssl1(ASYNC, OK); 13644 SSLSocketDataProvider ssl1(ASYNC, OK);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
13712 SSLSocketDataProvider ssl2(ASYNC, OK); 13696 SSLSocketDataProvider ssl2(ASYNC, OK);
13713 ssl2.SetNextProto(kProtoHTTP2); 13697 ssl2.SetNextProto(kProtoHTTP2);
13714 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); 13698 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1);
13715 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); 13699 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2);
13716 13700
13717 SpdySerializedFrame host1_req( 13701 SpdySerializedFrame host1_req(
13718 spdy_util_.ConstructSpdyGet("https://www.a.com", 1, DEFAULT_PRIORITY)); 13702 spdy_util_.ConstructSpdyGet("https://www.a.com", 1, DEFAULT_PRIORITY));
13719 MockWrite spdy1_writes[] = { 13703 MockWrite spdy1_writes[] = {
13720 CreateMockWrite(host1_req, 0), 13704 CreateMockWrite(host1_req, 0),
13721 }; 13705 };
13722 SpdySerializedFrame host1_resp( 13706 SpdySerializedFrame host1_resp(spdy_util_.ConstructSpdyGetReply(NULL, 0, 1));
13723 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13724 SpdySerializedFrame host1_resp_body( 13707 SpdySerializedFrame host1_resp_body(
13725 spdy_util_.ConstructSpdyDataFrame(1, true)); 13708 spdy_util_.ConstructSpdyDataFrame(1, true));
13726 MockRead spdy1_reads[] = { 13709 MockRead spdy1_reads[] = {
13727 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2), 13710 CreateMockRead(host1_resp, 1), CreateMockRead(host1_resp_body, 2),
13728 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), 13711 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3),
13729 }; 13712 };
13730 13713
13731 // Use a separate test instance for the separate SpdySession that will be 13714 // Use a separate test instance for the separate SpdySession that will be
13732 // created. 13715 // created.
13733 SpdyTestUtil spdy_util_2; 13716 SpdyTestUtil spdy_util_2;
13734 std::unique_ptr<SequencedSocketData> spdy1_data( 13717 std::unique_ptr<SequencedSocketData> spdy1_data(
13735 new SequencedSocketData(spdy1_reads, arraysize(spdy1_reads), spdy1_writes, 13718 new SequencedSocketData(spdy1_reads, arraysize(spdy1_reads), spdy1_writes,
13736 arraysize(spdy1_writes))); 13719 arraysize(spdy1_writes)));
13737 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get()); 13720 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get());
13738 13721
13739 SpdySerializedFrame host2_req( 13722 SpdySerializedFrame host2_req(
13740 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY)); 13723 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY));
13741 MockWrite spdy2_writes[] = { 13724 MockWrite spdy2_writes[] = {
13742 CreateMockWrite(host2_req, 0), 13725 CreateMockWrite(host2_req, 0),
13743 }; 13726 };
13744 SpdySerializedFrame host2_resp( 13727 SpdySerializedFrame host2_resp(spdy_util_2.ConstructSpdyGetReply(NULL, 0, 1));
13745 spdy_util_2.ConstructSpdyGetSynReply(NULL, 0, 1));
13746 SpdySerializedFrame host2_resp_body( 13728 SpdySerializedFrame host2_resp_body(
13747 spdy_util_2.ConstructSpdyDataFrame(1, true)); 13729 spdy_util_2.ConstructSpdyDataFrame(1, true));
13748 MockRead spdy2_reads[] = { 13730 MockRead spdy2_reads[] = {
13749 CreateMockRead(host2_resp, 1), CreateMockRead(host2_resp_body, 2), 13731 CreateMockRead(host2_resp, 1), CreateMockRead(host2_resp_body, 2),
13750 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), 13732 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3),
13751 }; 13733 };
13752 13734
13753 std::unique_ptr<SequencedSocketData> spdy2_data( 13735 std::unique_ptr<SequencedSocketData> spdy2_data(
13754 new SequencedSocketData(spdy2_reads, arraysize(spdy2_reads), spdy2_writes, 13736 new SequencedSocketData(spdy2_reads, arraysize(spdy2_reads), spdy2_writes,
13755 arraysize(spdy2_writes))); 13737 arraysize(spdy2_writes)));
(...skipping 1818 matching lines...) Expand 10 before | Expand all | Expand 10 after
15574 HttpRequestInfo request; 15556 HttpRequestInfo request;
15575 request.url = GURL(https_url); 15557 request.url = GURL(https_url);
15576 request.method = "GET"; 15558 request.method = "GET";
15577 15559
15578 SSLSocketDataProvider ssl(ASYNC, OK); 15560 SSLSocketDataProvider ssl(ASYNC, OK);
15579 ssl.token_binding_negotiated = true; 15561 ssl.token_binding_negotiated = true;
15580 ssl.token_binding_key_param = TB_PARAM_ECDSAP256; 15562 ssl.token_binding_key_param = TB_PARAM_ECDSAP256;
15581 ssl.SetNextProto(kProtoHTTP2); 15563 ssl.SetNextProto(kProtoHTTP2);
15582 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 15564 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
15583 15565
15584 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 15566 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
15585 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 15567 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
15586 MockRead reads[] = {CreateMockRead(resp), CreateMockRead(body), 15568 MockRead reads[] = {CreateMockRead(resp), CreateMockRead(body),
15587 MockRead(ASYNC, ERR_IO_PENDING)}; 15569 MockRead(ASYNC, ERR_IO_PENDING)};
15588 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); 15570 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0);
15589 session_deps_.socket_factory->AddSocketDataProvider(&data); 15571 session_deps_.socket_factory->AddSocketDataProvider(&data);
15590 session_deps_.channel_id_service.reset(new ChannelIDService( 15572 session_deps_.channel_id_service.reset(new ChannelIDService(
15591 new DefaultChannelIDStore(nullptr), base::ThreadTaskRunnerHandle::Get())); 15573 new DefaultChannelIDStore(nullptr), base::ThreadTaskRunnerHandle::Get()));
15592 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15574 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15593 15575
15594 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 15576 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
15595 TestCompletionCallback callback; 15577 TestCompletionCallback callback;
15596 EXPECT_EQ(ERR_IO_PENDING, 15578 EXPECT_EQ(ERR_IO_PENDING,
15597 trans.Start(&request, callback.callback(), BoundNetLog())); 15579 trans.Start(&request, callback.callback(), BoundNetLog()));
15598 base::RunLoop().RunUntilIdle(); 15580 base::RunLoop().RunUntilIdle();
15599 15581
15600 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 15582 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
15601 HttpRequestHeaders headers; 15583 HttpRequestHeaders headers;
15602 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 15584 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
15603 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 15585 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
15604 } 15586 }
15605 #endif // !defined(OS_IOS) 15587 #endif // !defined(OS_IOS)
15606 15588
15607 } // namespace net 15589 } // namespace net
OLDNEW
« no previous file with comments | « net/http/bidirectional_stream_unittest.cc ('k') | net/http/http_proxy_client_socket_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698