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

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

Issue 1852423004: Implement SpdySerializedFrame move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 #include <limits> 10 #include <limits>
(...skipping 1419 matching lines...) Expand 10 before | Expand all | Expand 10 after
1430 SSLSocketDataProvider ssl1(ASYNC, OK); 1430 SSLSocketDataProvider ssl1(ASYNC, OK);
1431 SSLSocketDataProvider ssl2(ASYNC, OK); 1431 SSLSocketDataProvider ssl2(ASYNC, OK);
1432 if (use_spdy) { 1432 if (use_spdy) {
1433 ssl1.SetNextProto(GetProtocol()); 1433 ssl1.SetNextProto(GetProtocol());
1434 ssl2.SetNextProto(GetProtocol()); 1434 ssl2.SetNextProto(GetProtocol());
1435 } 1435 }
1436 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); 1436 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1);
1437 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); 1437 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2);
1438 1438
1439 // SPDY versions of the request and response. 1439 // SPDY versions of the request and response.
1440 scoped_ptr<SpdyFrame> spdy_request(spdy_util_.ConstructSpdyGet( 1440 scoped_ptr<SpdySerializedFrame> spdy_request(spdy_util_.ConstructSpdyGet(
1441 request.url.spec().c_str(), 1, DEFAULT_PRIORITY)); 1441 request.url.spec().c_str(), 1, DEFAULT_PRIORITY));
1442 scoped_ptr<SpdyFrame> spdy_response( 1442 scoped_ptr<SpdySerializedFrame> spdy_response(
1443 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 1443 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
1444 scoped_ptr<SpdyFrame> spdy_data( 1444 scoped_ptr<SpdySerializedFrame> spdy_data(
1445 spdy_util_.ConstructSpdyBodyFrame(1, "hello", 5, true)); 1445 spdy_util_.ConstructSpdyBodyFrame(1, "hello", 5, true));
1446 1446
1447 // HTTP/1.1 versions of the request and response. 1447 // HTTP/1.1 versions of the request and response.
1448 const char kHttpRequest[] = "GET / HTTP/1.1\r\n" 1448 const char kHttpRequest[] = "GET / HTTP/1.1\r\n"
1449 "Host: www.foo.com\r\n" 1449 "Host: www.foo.com\r\n"
1450 "Connection: keep-alive\r\n\r\n"; 1450 "Connection: keep-alive\r\n\r\n";
1451 const char kHttpResponse[] = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"; 1451 const char kHttpResponse[] = "HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n";
1452 const char kHttpData[] = "hello"; 1452 const char kHttpData[] = "hello";
1453 1453
1454 std::vector<MockRead> data1_reads; 1454 std::vector<MockRead> data1_reads;
(...skipping 2753 matching lines...) Expand 10 before | Expand all | Expand 10 after
4208 request.url = GURL("http://www.example.org/"); 4208 request.url = GURL("http://www.example.org/");
4209 request.load_flags = 0; 4209 request.load_flags = 0;
4210 4210
4211 // Configure against https proxy server "proxy:70". 4211 // Configure against https proxy server "proxy:70".
4212 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4212 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4213 BoundTestNetLog log; 4213 BoundTestNetLog log;
4214 session_deps_.net_log = log.bound().net_log(); 4214 session_deps_.net_log = log.bound().net_log();
4215 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4215 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4216 4216
4217 // fetch http://www.example.org/ via SPDY 4217 // fetch http://www.example.org/ via SPDY
4218 scoped_ptr<SpdyFrame> req( 4218 scoped_ptr<SpdySerializedFrame> req(
4219 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false)); 4219 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false));
4220 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 4220 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
4221 4221
4222 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4222 scoped_ptr<SpdySerializedFrame> resp(
4223 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 4223 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
4224 scoped_ptr<SpdySerializedFrame> data(
4225 spdy_util_.ConstructSpdyBodyFrame(1, true));
4224 MockRead spdy_reads[] = { 4226 MockRead spdy_reads[] = {
4225 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 4227 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3),
4226 }; 4228 };
4227 4229
4228 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4230 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4229 arraysize(spdy_writes)); 4231 arraysize(spdy_writes));
4230 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4232 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4231 4233
4232 SSLSocketDataProvider ssl(ASYNC, OK); 4234 SSLSocketDataProvider ssl(ASYNC, OK);
4233 ssl.SetNextProto(GetProtocol()); 4235 ssl.SetNextProto(GetProtocol());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
4268 request.url = GURL("http://www.example.org/"); 4270 request.url = GURL("http://www.example.org/");
4269 request.load_flags = 0; 4271 request.load_flags = 0;
4270 4272
4271 // Configure SPDY proxy server "proxy:70". 4273 // Configure SPDY proxy server "proxy:70".
4272 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4274 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4273 BoundTestNetLog log; 4275 BoundTestNetLog log;
4274 session_deps_.net_log = log.bound().net_log(); 4276 session_deps_.net_log = log.bound().net_log();
4275 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4277 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4276 4278
4277 // Fetch http://www.example.org/ through the SPDY proxy. 4279 // Fetch http://www.example.org/ through the SPDY proxy.
4278 scoped_ptr<SpdyFrame> req( 4280 scoped_ptr<SpdySerializedFrame> req(
4279 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false)); 4281 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false));
4280 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 4282 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
4281 4283
4282 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4284 scoped_ptr<SpdySerializedFrame> resp(
4283 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 4285 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4286 scoped_ptr<SpdySerializedFrame> data(
4287 spdy_util_.ConstructSpdyBodyFrame(1, true));
4284 MockRead spdy_reads[] = { 4288 MockRead spdy_reads[] = {
4285 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 4289 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3),
4286 }; 4290 };
4287 4291
4288 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4292 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4289 arraysize(spdy_writes)); 4293 arraysize(spdy_writes));
4290 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4294 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4291 4295
4292 SSLSocketDataProvider ssl(ASYNC, OK); 4296 SSLSocketDataProvider ssl(ASYNC, OK);
4293 ssl.SetNextProto(GetProtocol()); 4297 ssl.SetNextProto(GetProtocol());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4338 request.load_flags = 0; 4342 request.load_flags = 0;
4339 4343
4340 // Configure against https proxy server "myproxy:70". 4344 // Configure against https proxy server "myproxy:70".
4341 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70"); 4345 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70");
4342 BoundTestNetLog log; 4346 BoundTestNetLog log;
4343 session_deps_.net_log = log.bound().net_log(); 4347 session_deps_.net_log = log.bound().net_log();
4344 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4348 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4345 4349
4346 // The first request will be a bare GET, the second request will be a 4350 // The first request will be a bare GET, the second request will be a
4347 // GET with a Proxy-Authorization header. 4351 // GET with a Proxy-Authorization header.
4348 scoped_ptr<SpdyFrame> req_get( 4352 scoped_ptr<SpdySerializedFrame> req_get(
4349 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false)); 4353 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false));
4350 spdy_util_.UpdateWithStreamDestruction(1); 4354 spdy_util_.UpdateWithStreamDestruction(1);
4351 const char* const kExtraAuthorizationHeaders[] = { 4355 const char* const kExtraAuthorizationHeaders[] = {
4352 "proxy-authorization", "Basic Zm9vOmJhcg==" 4356 "proxy-authorization", "Basic Zm9vOmJhcg=="
4353 }; 4357 };
4354 scoped_ptr<SpdyFrame> req_get_authorization( 4358 scoped_ptr<SpdySerializedFrame> req_get_authorization(
4355 spdy_util_.ConstructSpdyGet(kExtraAuthorizationHeaders, 4359 spdy_util_.ConstructSpdyGet(kExtraAuthorizationHeaders,
4356 arraysize(kExtraAuthorizationHeaders) / 2, 4360 arraysize(kExtraAuthorizationHeaders) / 2, 3,
4357 3, 4361 LOWEST, false));
4358 LOWEST,
4359 false));
4360 MockWrite spdy_writes[] = { 4362 MockWrite spdy_writes[] = {
4361 CreateMockWrite(*req_get, 0), CreateMockWrite(*req_get_authorization, 3), 4363 CreateMockWrite(*req_get, 0), CreateMockWrite(*req_get_authorization, 3),
4362 }; 4364 };
4363 4365
4364 // The first response is a 407 proxy authentication challenge, and the second 4366 // The first response is a 407 proxy authentication challenge, and the second
4365 // response will be a 200 response since the second request includes a valid 4367 // response will be a 200 response since the second request includes a valid
4366 // Authorization header. 4368 // Authorization header.
4367 const char* const kExtraAuthenticationHeaders[] = { 4369 const char* const kExtraAuthenticationHeaders[] = {
4368 "proxy-authenticate", "Basic realm=\"MyRealm1\"" 4370 "proxy-authenticate", "Basic realm=\"MyRealm1\""
4369 }; 4371 };
4370 scoped_ptr<SpdyFrame> resp_authentication( 4372 scoped_ptr<SpdySerializedFrame> resp_authentication(
4371 spdy_util_.ConstructSpdySynReplyError( 4373 spdy_util_.ConstructSpdySynReplyError(
4372 "407 Proxy Authentication Required", 4374 "407 Proxy Authentication Required", kExtraAuthenticationHeaders,
4373 kExtraAuthenticationHeaders, arraysize(kExtraAuthenticationHeaders)/2, 4375 arraysize(kExtraAuthenticationHeaders) / 2, 1));
4374 1)); 4376 scoped_ptr<SpdySerializedFrame> body_authentication(
4375 scoped_ptr<SpdyFrame> body_authentication(
4376 spdy_util_.ConstructSpdyBodyFrame(1, true)); 4377 spdy_util_.ConstructSpdyBodyFrame(1, true));
4377 scoped_ptr<SpdyFrame> resp_data( 4378 scoped_ptr<SpdySerializedFrame> resp_data(
4378 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 4379 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
4379 scoped_ptr<SpdyFrame> body_data(spdy_util_.ConstructSpdyBodyFrame(3, true)); 4380 scoped_ptr<SpdySerializedFrame> body_data(
4381 spdy_util_.ConstructSpdyBodyFrame(3, true));
4380 MockRead spdy_reads[] = { 4382 MockRead spdy_reads[] = {
4381 CreateMockRead(*resp_authentication, 1), 4383 CreateMockRead(*resp_authentication, 1),
4382 CreateMockRead(*body_authentication, 2), 4384 CreateMockRead(*body_authentication, 2),
4383 CreateMockRead(*resp_data, 4), 4385 CreateMockRead(*resp_data, 4),
4384 CreateMockRead(*body_data, 5), 4386 CreateMockRead(*body_data, 5),
4385 MockRead(ASYNC, 0, 6), 4387 MockRead(ASYNC, 0, 6),
4386 }; 4388 };
4387 4389
4388 SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4390 SequencedSocketData data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4389 arraysize(spdy_writes)); 4391 arraysize(spdy_writes));
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
4440 // Configure against https proxy server "proxy:70". 4442 // Configure against https proxy server "proxy:70".
4441 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4443 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4442 BoundTestNetLog log; 4444 BoundTestNetLog log;
4443 session_deps_.net_log = log.bound().net_log(); 4445 session_deps_.net_log = log.bound().net_log();
4444 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4446 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4445 4447
4446 scoped_ptr<HttpTransaction> trans( 4448 scoped_ptr<HttpTransaction> trans(
4447 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4449 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4448 4450
4449 // CONNECT to www.example.org:443 via SPDY 4451 // CONNECT to www.example.org:443 via SPDY
4450 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( 4452 scoped_ptr<SpdySerializedFrame> connect(spdy_util_.ConstructSpdyConnect(
4451 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4453 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4452 // fetch https://www.example.org/ via HTTP 4454 // fetch https://www.example.org/ via HTTP
4453 4455
4454 const char get[] = 4456 const char get[] =
4455 "GET / HTTP/1.1\r\n" 4457 "GET / HTTP/1.1\r\n"
4456 "Host: www.example.org\r\n" 4458 "Host: www.example.org\r\n"
4457 "Connection: keep-alive\r\n\r\n"; 4459 "Connection: keep-alive\r\n\r\n";
4458 scoped_ptr<SpdyFrame> wrapped_get( 4460 scoped_ptr<SpdySerializedFrame> wrapped_get(
4459 spdy_util_.ConstructSpdyBodyFrame(1, get, strlen(get), false)); 4461 spdy_util_.ConstructSpdyBodyFrame(1, get, strlen(get), false));
4460 scoped_ptr<SpdyFrame> conn_resp( 4462 scoped_ptr<SpdySerializedFrame> conn_resp(
4461 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4463 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4462 const char resp[] = "HTTP/1.1 200 OK\r\n" 4464 const char resp[] = "HTTP/1.1 200 OK\r\n"
4463 "Content-Length: 10\r\n\r\n"; 4465 "Content-Length: 10\r\n\r\n";
4464 scoped_ptr<SpdyFrame> wrapped_get_resp( 4466 scoped_ptr<SpdySerializedFrame> wrapped_get_resp(
4465 spdy_util_.ConstructSpdyBodyFrame(1, resp, strlen(resp), false)); 4467 spdy_util_.ConstructSpdyBodyFrame(1, resp, strlen(resp), false));
4466 scoped_ptr<SpdyFrame> wrapped_body( 4468 scoped_ptr<SpdySerializedFrame> wrapped_body(
4467 spdy_util_.ConstructSpdyBodyFrame(1, "1234567890", 10, false)); 4469 spdy_util_.ConstructSpdyBodyFrame(1, "1234567890", 10, false));
4468 scoped_ptr<SpdyFrame> window_update( 4470 scoped_ptr<SpdySerializedFrame> window_update(
4469 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size())); 4471 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size()));
4470 4472
4471 MockWrite spdy_writes[] = { 4473 MockWrite spdy_writes[] = {
4472 CreateMockWrite(*connect, 0), 4474 CreateMockWrite(*connect, 0),
4473 CreateMockWrite(*wrapped_get, 2), 4475 CreateMockWrite(*wrapped_get, 2),
4474 CreateMockWrite(*window_update, 6), 4476 CreateMockWrite(*window_update, 6),
4475 }; 4477 };
4476 4478
4477 MockRead spdy_reads[] = { 4479 MockRead spdy_reads[] = {
4478 CreateMockRead(*conn_resp, 1, ASYNC), 4480 CreateMockRead(*conn_resp, 1, ASYNC),
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
4526 // Configure against https proxy server "proxy:70". 4528 // Configure against https proxy server "proxy:70".
4527 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4529 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4528 BoundTestNetLog log; 4530 BoundTestNetLog log;
4529 session_deps_.net_log = log.bound().net_log(); 4531 session_deps_.net_log = log.bound().net_log();
4530 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4532 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4531 4533
4532 scoped_ptr<HttpTransaction> trans( 4534 scoped_ptr<HttpTransaction> trans(
4533 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4535 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4534 4536
4535 // CONNECT to www.example.org:443 via SPDY 4537 // CONNECT to www.example.org:443 via SPDY
4536 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( 4538 scoped_ptr<SpdySerializedFrame> connect(spdy_util_.ConstructSpdyConnect(
4537 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4539 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4538 // fetch https://www.example.org/ via SPDY 4540 // fetch https://www.example.org/ via SPDY
4539 const char kMyUrl[] = "https://www.example.org/"; 4541 const char kMyUrl[] = "https://www.example.org/";
4540 scoped_ptr<SpdyFrame> get( 4542 scoped_ptr<SpdySerializedFrame> get(
4541 spdy_util_wrapped.ConstructSpdyGet(kMyUrl, 1, LOWEST)); 4543 spdy_util_wrapped.ConstructSpdyGet(kMyUrl, 1, LOWEST));
4542 scoped_ptr<SpdyFrame> wrapped_get( 4544 scoped_ptr<SpdySerializedFrame> wrapped_get(
4543 spdy_util_.ConstructWrappedSpdyFrame(get, 1)); 4545 spdy_util_.ConstructWrappedSpdyFrame(get, 1));
4544 scoped_ptr<SpdyFrame> conn_resp( 4546 scoped_ptr<SpdySerializedFrame> conn_resp(
4545 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4547 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4546 scoped_ptr<SpdyFrame> get_resp( 4548 scoped_ptr<SpdySerializedFrame> get_resp(
4547 spdy_util_wrapped.ConstructSpdyGetSynReply(NULL, 0, 1)); 4549 spdy_util_wrapped.ConstructSpdyGetSynReply(NULL, 0, 1));
4548 scoped_ptr<SpdyFrame> wrapped_get_resp( 4550 scoped_ptr<SpdySerializedFrame> wrapped_get_resp(
4549 spdy_util_.ConstructWrappedSpdyFrame(get_resp, 1)); 4551 spdy_util_.ConstructWrappedSpdyFrame(get_resp, 1));
4550 scoped_ptr<SpdyFrame> body(spdy_util_wrapped.ConstructSpdyBodyFrame(1, true)); 4552 scoped_ptr<SpdySerializedFrame> body(
4551 scoped_ptr<SpdyFrame> wrapped_body( 4553 spdy_util_wrapped.ConstructSpdyBodyFrame(1, true));
4554 scoped_ptr<SpdySerializedFrame> wrapped_body(
4552 spdy_util_.ConstructWrappedSpdyFrame(body, 1)); 4555 spdy_util_.ConstructWrappedSpdyFrame(body, 1));
4553 scoped_ptr<SpdyFrame> window_update_get_resp( 4556 scoped_ptr<SpdySerializedFrame> window_update_get_resp(
4554 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size())); 4557 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp->size()));
4555 scoped_ptr<SpdyFrame> window_update_body( 4558 scoped_ptr<SpdySerializedFrame> window_update_body(
4556 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_body->size())); 4559 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_body->size()));
4557 4560
4558 MockWrite spdy_writes[] = { 4561 MockWrite spdy_writes[] = {
4559 CreateMockWrite(*connect, 0), 4562 CreateMockWrite(*connect, 0),
4560 CreateMockWrite(*wrapped_get, 2), 4563 CreateMockWrite(*wrapped_get, 2),
4561 CreateMockWrite(*window_update_get_resp, 6), 4564 CreateMockWrite(*window_update_get_resp, 6),
4562 CreateMockWrite(*window_update_body, 7), 4565 CreateMockWrite(*window_update_body, 7),
4563 }; 4566 };
4564 4567
4565 MockRead spdy_reads[] = { 4568 MockRead spdy_reads[] = {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
4617 // Configure against https proxy server "proxy:70". 4620 // Configure against https proxy server "proxy:70".
4618 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 4621 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
4619 BoundTestNetLog log; 4622 BoundTestNetLog log;
4620 session_deps_.net_log = log.bound().net_log(); 4623 session_deps_.net_log = log.bound().net_log();
4621 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 4624 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
4622 4625
4623 scoped_ptr<HttpTransaction> trans( 4626 scoped_ptr<HttpTransaction> trans(
4624 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 4627 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
4625 4628
4626 // CONNECT to www.example.org:443 via SPDY 4629 // CONNECT to www.example.org:443 via SPDY
4627 scoped_ptr<SpdyFrame> connect(spdy_util_.ConstructSpdyConnect( 4630 scoped_ptr<SpdySerializedFrame> connect(spdy_util_.ConstructSpdyConnect(
4628 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4631 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4629 scoped_ptr<SpdyFrame> get( 4632 scoped_ptr<SpdySerializedFrame> get(
4630 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 4633 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
4631 4634
4632 MockWrite spdy_writes[] = { 4635 MockWrite spdy_writes[] = {
4633 CreateMockWrite(*connect, 0), CreateMockWrite(*get, 2), 4636 CreateMockWrite(*connect, 0), CreateMockWrite(*get, 2),
4634 }; 4637 };
4635 4638
4636 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdySynReplyError(1)); 4639 scoped_ptr<SpdySerializedFrame> resp(
4637 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 4640 spdy_util_.ConstructSpdySynReplyError(1));
4641 scoped_ptr<SpdySerializedFrame> data(
4642 spdy_util_.ConstructSpdyBodyFrame(1, true));
4638 MockRead spdy_reads[] = { 4643 MockRead spdy_reads[] = {
4639 CreateMockRead(*resp, 1, ASYNC), MockRead(ASYNC, 0, 3), 4644 CreateMockRead(*resp, 1, ASYNC), MockRead(ASYNC, 0, 3),
4640 }; 4645 };
4641 4646
4642 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 4647 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
4643 arraysize(spdy_writes)); 4648 arraysize(spdy_writes));
4644 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 4649 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
4645 4650
4646 SSLSocketDataProvider ssl(ASYNC, OK); 4651 SSLSocketDataProvider ssl(ASYNC, OK);
4647 ssl.SetNextProto(GetProtocol()); 4652 ssl.SetNextProto(GetProtocol());
(...skipping 28 matching lines...) Expand all
4676 request1.method = "GET"; 4681 request1.method = "GET";
4677 request1.url = GURL("https://www.example.org/"); 4682 request1.url = GURL("https://www.example.org/");
4678 request1.load_flags = 0; 4683 request1.load_flags = 0;
4679 4684
4680 HttpRequestInfo request2; 4685 HttpRequestInfo request2;
4681 request2.method = "GET"; 4686 request2.method = "GET";
4682 request2.url = GURL("https://mail.example.org/"); 4687 request2.url = GURL("https://mail.example.org/");
4683 request2.load_flags = 0; 4688 request2.load_flags = 0;
4684 4689
4685 // CONNECT to www.example.org:443 via SPDY. 4690 // CONNECT to www.example.org:443 via SPDY.
4686 scoped_ptr<SpdyFrame> connect1(spdy_util_.ConstructSpdyConnect( 4691 scoped_ptr<SpdySerializedFrame> connect1(spdy_util_.ConstructSpdyConnect(
4687 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4692 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4688 scoped_ptr<SpdyFrame> conn_resp1( 4693 scoped_ptr<SpdySerializedFrame> conn_resp1(
4689 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4694 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4690 4695
4691 // Fetch https://www.example.org/ via HTTP. 4696 // Fetch https://www.example.org/ via HTTP.
4692 const char get1[] = 4697 const char get1[] =
4693 "GET / HTTP/1.1\r\n" 4698 "GET / HTTP/1.1\r\n"
4694 "Host: www.example.org\r\n" 4699 "Host: www.example.org\r\n"
4695 "Connection: keep-alive\r\n\r\n"; 4700 "Connection: keep-alive\r\n\r\n";
4696 scoped_ptr<SpdyFrame> wrapped_get1( 4701 scoped_ptr<SpdySerializedFrame> wrapped_get1(
4697 spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); 4702 spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false));
4698 const char resp1[] = "HTTP/1.1 200 OK\r\n" 4703 const char resp1[] = "HTTP/1.1 200 OK\r\n"
4699 "Content-Length: 1\r\n\r\n"; 4704 "Content-Length: 1\r\n\r\n";
4700 scoped_ptr<SpdyFrame> wrapped_get_resp1( 4705 scoped_ptr<SpdySerializedFrame> wrapped_get_resp1(
4701 spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); 4706 spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false));
4702 scoped_ptr<SpdyFrame> wrapped_body1( 4707 scoped_ptr<SpdySerializedFrame> wrapped_body1(
4703 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false)); 4708 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false));
4704 scoped_ptr<SpdyFrame> window_update( 4709 scoped_ptr<SpdySerializedFrame> window_update(
4705 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size())); 4710 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size()));
4706 4711
4707 // CONNECT to mail.example.org:443 via SPDY. 4712 // CONNECT to mail.example.org:443 via SPDY.
4708 SpdyHeaderBlock connect2_block; 4713 SpdyHeaderBlock connect2_block;
4709 spdy_util_.MaybeAddVersionHeader(&connect2_block); 4714 spdy_util_.MaybeAddVersionHeader(&connect2_block);
4710 connect2_block[spdy_util_.GetMethodKey()] = "CONNECT"; 4715 connect2_block[spdy_util_.GetMethodKey()] = "CONNECT";
4711 if (GetProtocol() == kProtoHTTP2) { 4716 if (GetProtocol() == kProtoHTTP2) {
4712 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org:443"; 4717 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org:443";
4713 } else { 4718 } else {
4714 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org"; 4719 connect2_block[spdy_util_.GetHostKey()] = "mail.example.org";
4715 connect2_block[spdy_util_.GetPathKey()] = "mail.example.org:443"; 4720 connect2_block[spdy_util_.GetPathKey()] = "mail.example.org:443";
4716 } 4721 }
4717 scoped_ptr<SpdyFrame> connect2( 4722 scoped_ptr<SpdySerializedFrame> connect2(
4718 spdy_util_.ConstructSpdySyn(3, connect2_block, LOWEST, false)); 4723 spdy_util_.ConstructSpdySyn(3, connect2_block, LOWEST, false));
4719 4724
4720 scoped_ptr<SpdyFrame> conn_resp2( 4725 scoped_ptr<SpdySerializedFrame> conn_resp2(
4721 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 4726 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
4722 4727
4723 // Fetch https://mail.example.org/ via HTTP. 4728 // Fetch https://mail.example.org/ via HTTP.
4724 const char get2[] = 4729 const char get2[] =
4725 "GET / HTTP/1.1\r\n" 4730 "GET / HTTP/1.1\r\n"
4726 "Host: mail.example.org\r\n" 4731 "Host: mail.example.org\r\n"
4727 "Connection: keep-alive\r\n\r\n"; 4732 "Connection: keep-alive\r\n\r\n";
4728 scoped_ptr<SpdyFrame> wrapped_get2( 4733 scoped_ptr<SpdySerializedFrame> wrapped_get2(
4729 spdy_util_.ConstructSpdyBodyFrame(3, get2, strlen(get2), false)); 4734 spdy_util_.ConstructSpdyBodyFrame(3, get2, strlen(get2), false));
4730 const char resp2[] = "HTTP/1.1 200 OK\r\n" 4735 const char resp2[] = "HTTP/1.1 200 OK\r\n"
4731 "Content-Length: 2\r\n\r\n"; 4736 "Content-Length: 2\r\n\r\n";
4732 scoped_ptr<SpdyFrame> wrapped_get_resp2( 4737 scoped_ptr<SpdySerializedFrame> wrapped_get_resp2(
4733 spdy_util_.ConstructSpdyBodyFrame(3, resp2, strlen(resp2), false)); 4738 spdy_util_.ConstructSpdyBodyFrame(3, resp2, strlen(resp2), false));
4734 scoped_ptr<SpdyFrame> wrapped_body2( 4739 scoped_ptr<SpdySerializedFrame> wrapped_body2(
4735 spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, false)); 4740 spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, false));
4736 4741
4737 MockWrite spdy_writes[] = { 4742 MockWrite spdy_writes[] = {
4738 CreateMockWrite(*connect1, 0), 4743 CreateMockWrite(*connect1, 0),
4739 CreateMockWrite(*wrapped_get1, 2), 4744 CreateMockWrite(*wrapped_get1, 2),
4740 CreateMockWrite(*connect2, 5), 4745 CreateMockWrite(*connect2, 5),
4741 CreateMockWrite(*wrapped_get2, 7), 4746 CreateMockWrite(*wrapped_get2, 7),
4742 }; 4747 };
4743 4748
4744 MockRead spdy_reads[] = { 4749 MockRead spdy_reads[] = {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
4818 request1.method = "GET"; 4823 request1.method = "GET";
4819 request1.url = GURL("https://www.example.org/"); 4824 request1.url = GURL("https://www.example.org/");
4820 request1.load_flags = 0; 4825 request1.load_flags = 0;
4821 4826
4822 HttpRequestInfo request2; 4827 HttpRequestInfo request2;
4823 request2.method = "GET"; 4828 request2.method = "GET";
4824 request2.url = GURL("https://www.example.org/2"); 4829 request2.url = GURL("https://www.example.org/2");
4825 request2.load_flags = 0; 4830 request2.load_flags = 0;
4826 4831
4827 // CONNECT to www.example.org:443 via SPDY. 4832 // CONNECT to www.example.org:443 via SPDY.
4828 scoped_ptr<SpdyFrame> connect1(spdy_util_.ConstructSpdyConnect( 4833 scoped_ptr<SpdySerializedFrame> connect1(spdy_util_.ConstructSpdyConnect(
4829 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4834 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4830 scoped_ptr<SpdyFrame> conn_resp1( 4835 scoped_ptr<SpdySerializedFrame> conn_resp1(
4831 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4836 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4832 4837
4833 // Fetch https://www.example.org/ via HTTP. 4838 // Fetch https://www.example.org/ via HTTP.
4834 const char get1[] = 4839 const char get1[] =
4835 "GET / HTTP/1.1\r\n" 4840 "GET / HTTP/1.1\r\n"
4836 "Host: www.example.org\r\n" 4841 "Host: www.example.org\r\n"
4837 "Connection: keep-alive\r\n\r\n"; 4842 "Connection: keep-alive\r\n\r\n";
4838 scoped_ptr<SpdyFrame> wrapped_get1( 4843 scoped_ptr<SpdySerializedFrame> wrapped_get1(
4839 spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false)); 4844 spdy_util_.ConstructSpdyBodyFrame(1, get1, strlen(get1), false));
4840 const char resp1[] = "HTTP/1.1 200 OK\r\n" 4845 const char resp1[] = "HTTP/1.1 200 OK\r\n"
4841 "Content-Length: 1\r\n\r\n"; 4846 "Content-Length: 1\r\n\r\n";
4842 scoped_ptr<SpdyFrame> wrapped_get_resp1( 4847 scoped_ptr<SpdySerializedFrame> wrapped_get_resp1(
4843 spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false)); 4848 spdy_util_.ConstructSpdyBodyFrame(1, resp1, strlen(resp1), false));
4844 scoped_ptr<SpdyFrame> wrapped_body1( 4849 scoped_ptr<SpdySerializedFrame> wrapped_body1(
4845 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false)); 4850 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, false));
4846 scoped_ptr<SpdyFrame> window_update( 4851 scoped_ptr<SpdySerializedFrame> window_update(
4847 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size())); 4852 spdy_util_.ConstructSpdyWindowUpdate(1, wrapped_get_resp1->size()));
4848 4853
4849 // Fetch https://www.example.org/2 via HTTP. 4854 // Fetch https://www.example.org/2 via HTTP.
4850 const char get2[] = 4855 const char get2[] =
4851 "GET /2 HTTP/1.1\r\n" 4856 "GET /2 HTTP/1.1\r\n"
4852 "Host: www.example.org\r\n" 4857 "Host: www.example.org\r\n"
4853 "Connection: keep-alive\r\n\r\n"; 4858 "Connection: keep-alive\r\n\r\n";
4854 scoped_ptr<SpdyFrame> wrapped_get2( 4859 scoped_ptr<SpdySerializedFrame> wrapped_get2(
4855 spdy_util_.ConstructSpdyBodyFrame(1, get2, strlen(get2), false)); 4860 spdy_util_.ConstructSpdyBodyFrame(1, get2, strlen(get2), false));
4856 const char resp2[] = "HTTP/1.1 200 OK\r\n" 4861 const char resp2[] = "HTTP/1.1 200 OK\r\n"
4857 "Content-Length: 2\r\n\r\n"; 4862 "Content-Length: 2\r\n\r\n";
4858 scoped_ptr<SpdyFrame> wrapped_get_resp2( 4863 scoped_ptr<SpdySerializedFrame> wrapped_get_resp2(
4859 spdy_util_.ConstructSpdyBodyFrame(1, resp2, strlen(resp2), false)); 4864 spdy_util_.ConstructSpdyBodyFrame(1, resp2, strlen(resp2), false));
4860 scoped_ptr<SpdyFrame> wrapped_body2( 4865 scoped_ptr<SpdySerializedFrame> wrapped_body2(
4861 spdy_util_.ConstructSpdyBodyFrame(1, "22", 2, false)); 4866 spdy_util_.ConstructSpdyBodyFrame(1, "22", 2, false));
4862 4867
4863 MockWrite spdy_writes[] = { 4868 MockWrite spdy_writes[] = {
4864 CreateMockWrite(*connect1, 0), 4869 CreateMockWrite(*connect1, 0),
4865 CreateMockWrite(*wrapped_get1, 2), 4870 CreateMockWrite(*wrapped_get1, 2),
4866 CreateMockWrite(*wrapped_get2, 5), 4871 CreateMockWrite(*wrapped_get2, 5),
4867 }; 4872 };
4868 4873
4869 MockRead spdy_reads[] = { 4874 MockRead spdy_reads[] = {
4870 CreateMockRead(*conn_resp1, 1, ASYNC), 4875 CreateMockRead(*conn_resp1, 1, ASYNC),
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
4943 request1.load_flags = 0; 4948 request1.load_flags = 0;
4944 4949
4945 HttpRequestInfo request2; 4950 HttpRequestInfo request2;
4946 request2.method = "GET"; 4951 request2.method = "GET";
4947 request2.url = GURL("http://mail.example.org/"); 4952 request2.url = GURL("http://mail.example.org/");
4948 request2.load_flags = 0; 4953 request2.load_flags = 0;
4949 4954
4950 // http://www.example.org/ 4955 // http://www.example.org/
4951 scoped_ptr<SpdyHeaderBlock> headers( 4956 scoped_ptr<SpdyHeaderBlock> headers(
4952 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/")); 4957 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/"));
4953 scoped_ptr<SpdyFrame> get1( 4958 scoped_ptr<SpdySerializedFrame> get1(
4954 spdy_util_.ConstructSpdySyn(1, *headers, LOWEST, true)); 4959 spdy_util_.ConstructSpdySyn(1, *headers, LOWEST, true));
4955 scoped_ptr<SpdyFrame> get_resp1( 4960 scoped_ptr<SpdySerializedFrame> get_resp1(
4956 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 4961 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
4957 scoped_ptr<SpdyFrame> body1( 4962 scoped_ptr<SpdySerializedFrame> body1(
4958 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, true)); 4963 spdy_util_.ConstructSpdyBodyFrame(1, "1", 1, true));
4959 spdy_util_.UpdateWithStreamDestruction(1); 4964 spdy_util_.UpdateWithStreamDestruction(1);
4960 4965
4961 // http://mail.example.org/ 4966 // http://mail.example.org/
4962 scoped_ptr<SpdyHeaderBlock> headers2( 4967 scoped_ptr<SpdyHeaderBlock> headers2(
4963 spdy_util_.ConstructGetHeaderBlockForProxy("http://mail.example.org/")); 4968 spdy_util_.ConstructGetHeaderBlockForProxy("http://mail.example.org/"));
4964 scoped_ptr<SpdyFrame> get2( 4969 scoped_ptr<SpdySerializedFrame> get2(
4965 spdy_util_.ConstructSpdySyn(3, *headers2, LOWEST, true)); 4970 spdy_util_.ConstructSpdySyn(3, *headers2, LOWEST, true));
4966 scoped_ptr<SpdyFrame> get_resp2( 4971 scoped_ptr<SpdySerializedFrame> get_resp2(
4967 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 4972 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
4968 scoped_ptr<SpdyFrame> body2( 4973 scoped_ptr<SpdySerializedFrame> body2(
4969 spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, true)); 4974 spdy_util_.ConstructSpdyBodyFrame(3, "22", 2, true));
4970 4975
4971 MockWrite spdy_writes[] = { 4976 MockWrite spdy_writes[] = {
4972 CreateMockWrite(*get1, 0), 4977 CreateMockWrite(*get1, 0),
4973 CreateMockWrite(*get2, 3), 4978 CreateMockWrite(*get2, 3),
4974 }; 4979 };
4975 4980
4976 MockRead spdy_reads[] = { 4981 MockRead spdy_reads[] = {
4977 CreateMockRead(*get_resp1, 1, ASYNC), 4982 CreateMockRead(*get_resp1, 1, ASYNC),
4978 CreateMockRead(*body1, 2, ASYNC), 4983 CreateMockRead(*body1, 2, ASYNC),
(...skipping 2410 matching lines...) Expand 10 before | Expand all | Expand 10 after
7389 7394
7390 // Test an HTTPS (SPDY) Proxy's ability to redirect a CONNECT request 7395 // Test an HTTPS (SPDY) Proxy's ability to redirect a CONNECT request
7391 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) { 7396 TEST_P(HttpNetworkTransactionTest, RedirectOfHttpsConnectViaSpdyProxy) {
7392 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 7397 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
7393 7398
7394 HttpRequestInfo request; 7399 HttpRequestInfo request;
7395 request.method = "GET"; 7400 request.method = "GET";
7396 request.url = GURL("https://www.example.org/"); 7401 request.url = GURL("https://www.example.org/");
7397 request.load_flags = 0; 7402 request.load_flags = 0;
7398 7403
7399 scoped_ptr<SpdyFrame> conn(spdy_util_.ConstructSpdyConnect( 7404 scoped_ptr<SpdySerializedFrame> conn(spdy_util_.ConstructSpdyConnect(
7400 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 7405 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
7401 scoped_ptr<SpdyFrame> goaway( 7406 scoped_ptr<SpdySerializedFrame> goaway(
7402 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7407 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7403 MockWrite data_writes[] = { 7408 MockWrite data_writes[] = {
7404 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS), 7409 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS),
7405 CreateMockWrite(*goaway.get(), 2, SYNCHRONOUS), 7410 CreateMockWrite(*goaway.get(), 2, SYNCHRONOUS),
7406 }; 7411 };
7407 7412
7408 static const char* const kExtraHeaders[] = { 7413 static const char* const kExtraHeaders[] = {
7409 "location", 7414 "location",
7410 "http://login.example.com/", 7415 "http://login.example.com/",
7411 }; 7416 };
7412 scoped_ptr<SpdyFrame> resp( 7417 scoped_ptr<SpdySerializedFrame> resp(spdy_util_.ConstructSpdySynReplyError(
7413 spdy_util_.ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, 7418 "302 Redirect", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1));
7414 arraysize(kExtraHeaders)/2, 1));
7415 MockRead data_reads[] = { 7419 MockRead data_reads[] = {
7416 CreateMockRead(*resp.get(), 1), MockRead(ASYNC, 0, 3), // EOF 7420 CreateMockRead(*resp.get(), 1), MockRead(ASYNC, 0, 3), // EOF
7417 }; 7421 };
7418 7422
7419 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes, 7423 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes,
7420 arraysize(data_writes)); 7424 arraysize(data_writes));
7421 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy 7425 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
7422 proxy_ssl.SetNextProto(GetProtocol()); 7426 proxy_ssl.SetNextProto(GetProtocol());
7423 7427
7424 session_deps_.socket_factory->AddSocketDataProvider(&data); 7428 session_deps_.socket_factory->AddSocketDataProvider(&data);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
7493 // Test that a SPDY proxy's response to a CONNECT request is filtered. 7497 // Test that a SPDY proxy's response to a CONNECT request is filtered.
7494 TEST_P(HttpNetworkTransactionTest, 7498 TEST_P(HttpNetworkTransactionTest,
7495 ErrorResponseToHttpsConnectViaSpdyProxy) { 7499 ErrorResponseToHttpsConnectViaSpdyProxy) {
7496 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70"); 7500 session_deps_.proxy_service = ProxyService::CreateFixed("https://proxy:70");
7497 7501
7498 HttpRequestInfo request; 7502 HttpRequestInfo request;
7499 request.method = "GET"; 7503 request.method = "GET";
7500 request.url = GURL("https://www.example.org/"); 7504 request.url = GURL("https://www.example.org/");
7501 request.load_flags = 0; 7505 request.load_flags = 0;
7502 7506
7503 scoped_ptr<SpdyFrame> conn(spdy_util_.ConstructSpdyConnect( 7507 scoped_ptr<SpdySerializedFrame> conn(spdy_util_.ConstructSpdyConnect(
7504 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 7508 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
7505 scoped_ptr<SpdyFrame> rst( 7509 scoped_ptr<SpdySerializedFrame> rst(
7506 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7510 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7507 MockWrite data_writes[] = { 7511 MockWrite data_writes[] = {
7508 CreateMockWrite(*conn.get(), 0), CreateMockWrite(*rst.get(), 3), 7512 CreateMockWrite(*conn.get(), 0), CreateMockWrite(*rst.get(), 3),
7509 }; 7513 };
7510 7514
7511 static const char* const kExtraHeaders[] = { 7515 static const char* const kExtraHeaders[] = {
7512 "location", 7516 "location",
7513 "http://login.example.com/", 7517 "http://login.example.com/",
7514 }; 7518 };
7515 scoped_ptr<SpdyFrame> resp( 7519 scoped_ptr<SpdySerializedFrame> resp(spdy_util_.ConstructSpdySynReplyError(
7516 spdy_util_.ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, 7520 "404 Not Found", kExtraHeaders, arraysize(kExtraHeaders) / 2, 1));
7517 arraysize(kExtraHeaders)/2, 1)); 7521 scoped_ptr<SpdySerializedFrame> body(spdy_util_.ConstructSpdyBodyFrame(
7518 scoped_ptr<SpdyFrame> body( 7522 1, "The host does not exist", 23, true));
7519 spdy_util_.ConstructSpdyBodyFrame(
7520 1, "The host does not exist", 23, true));
7521 MockRead data_reads[] = { 7523 MockRead data_reads[] = {
7522 CreateMockRead(*resp.get(), 1), 7524 CreateMockRead(*resp.get(), 1),
7523 CreateMockRead(*body.get(), 2), 7525 CreateMockRead(*body.get(), 2),
7524 MockRead(ASYNC, 0, 4), // EOF 7526 MockRead(ASYNC, 0, 4), // EOF
7525 }; 7527 };
7526 7528
7527 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes, 7529 SequencedSocketData data(data_reads, arraysize(data_reads), data_writes,
7528 arraysize(data_writes)); 7530 arraysize(data_writes));
7529 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy 7531 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
7530 proxy_ssl.SetNextProto(GetProtocol()); 7532 proxy_ssl.SetNextProto(GetProtocol());
(...skipping 26 matching lines...) Expand all
7557 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA; 7559 request.load_flags = LOAD_DO_NOT_SEND_AUTH_DATA;
7558 7560
7559 // Configure against https proxy server "myproxy:70". 7561 // Configure against https proxy server "myproxy:70".
7560 session_deps_.proxy_service = 7562 session_deps_.proxy_service =
7561 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70"); 7563 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70");
7562 BoundTestNetLog log; 7564 BoundTestNetLog log;
7563 session_deps_.net_log = log.bound().net_log(); 7565 session_deps_.net_log = log.bound().net_log();
7564 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7566 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7565 7567
7566 // Since we have proxy, should try to establish tunnel. 7568 // Since we have proxy, should try to establish tunnel.
7567 scoped_ptr<SpdyFrame> req(spdy_util_.ConstructSpdyConnect( 7569 scoped_ptr<SpdySerializedFrame> req(spdy_util_.ConstructSpdyConnect(
7568 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 7570 NULL, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
7569 scoped_ptr<SpdyFrame> rst( 7571 scoped_ptr<SpdySerializedFrame> rst(
7570 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 7572 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL));
7571 spdy_util_.UpdateWithStreamDestruction(1); 7573 spdy_util_.UpdateWithStreamDestruction(1);
7572 7574
7573 // After calling trans->RestartWithAuth(), this is the request we should 7575 // After calling trans->RestartWithAuth(), this is the request we should
7574 // be issuing -- the final header line contains the credentials. 7576 // be issuing -- the final header line contains the credentials.
7575 const char* const kAuthCredentials[] = { 7577 const char* const kAuthCredentials[] = {
7576 "proxy-authorization", "Basic Zm9vOmJhcg==", 7578 "proxy-authorization", "Basic Zm9vOmJhcg==",
7577 }; 7579 };
7578 scoped_ptr<SpdyFrame> connect2(spdy_util_.ConstructSpdyConnect( 7580 scoped_ptr<SpdySerializedFrame> connect2(spdy_util_.ConstructSpdyConnect(
7579 kAuthCredentials, arraysize(kAuthCredentials) / 2, 3, LOWEST, 7581 kAuthCredentials, arraysize(kAuthCredentials) / 2, 3, LOWEST,
7580 HostPortPair("www.example.org", 443))); 7582 HostPortPair("www.example.org", 443)));
7581 // fetch https://www.example.org/ via HTTP 7583 // fetch https://www.example.org/ via HTTP
7582 const char get[] = 7584 const char get[] =
7583 "GET / HTTP/1.1\r\n" 7585 "GET / HTTP/1.1\r\n"
7584 "Host: www.example.org\r\n" 7586 "Host: www.example.org\r\n"
7585 "Connection: keep-alive\r\n\r\n"; 7587 "Connection: keep-alive\r\n\r\n";
7586 scoped_ptr<SpdyFrame> wrapped_get( 7588 scoped_ptr<SpdySerializedFrame> wrapped_get(
7587 spdy_util_.ConstructSpdyBodyFrame(3, get, strlen(get), false)); 7589 spdy_util_.ConstructSpdyBodyFrame(3, get, strlen(get), false));
7588 7590
7589 MockWrite spdy_writes[] = { 7591 MockWrite spdy_writes[] = {
7590 CreateMockWrite(*req, 0, ASYNC), 7592 CreateMockWrite(*req, 0, ASYNC),
7591 CreateMockWrite(*rst, 2, ASYNC), 7593 CreateMockWrite(*rst, 2, ASYNC),
7592 CreateMockWrite(*connect2, 3), 7594 CreateMockWrite(*connect2, 3),
7593 CreateMockWrite(*wrapped_get, 5), 7595 CreateMockWrite(*wrapped_get, 5),
7594 }; 7596 };
7595 7597
7596 // The proxy responds to the connect with a 407, using a persistent 7598 // The proxy responds to the connect with a 407, using a persistent
7597 // connection. 7599 // connection.
7598 const char kAuthStatus[] = "407"; 7600 const char kAuthStatus[] = "407";
7599 const char* const kAuthChallenge[] = { 7601 const char* const kAuthChallenge[] = {
7600 "proxy-authenticate", "Basic realm=\"MyRealm1\"", 7602 "proxy-authenticate", "Basic realm=\"MyRealm1\"",
7601 }; 7603 };
7602 scoped_ptr<SpdyFrame> conn_auth_resp(spdy_util_.ConstructSpdySynReplyError( 7604 scoped_ptr<SpdySerializedFrame> conn_auth_resp(
7603 kAuthStatus, kAuthChallenge, arraysize(kAuthChallenge) / 2, 1)); 7605 spdy_util_.ConstructSpdySynReplyError(kAuthStatus, kAuthChallenge,
7606 arraysize(kAuthChallenge) / 2, 1));
7604 7607
7605 scoped_ptr<SpdyFrame> conn_resp( 7608 scoped_ptr<SpdySerializedFrame> conn_resp(
7606 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 7609 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
7607 const char resp[] = "HTTP/1.1 200 OK\r\n" 7610 const char resp[] = "HTTP/1.1 200 OK\r\n"
7608 "Content-Length: 5\r\n\r\n"; 7611 "Content-Length: 5\r\n\r\n";
7609 7612
7610 scoped_ptr<SpdyFrame> wrapped_get_resp( 7613 scoped_ptr<SpdySerializedFrame> wrapped_get_resp(
7611 spdy_util_.ConstructSpdyBodyFrame(3, resp, strlen(resp), false)); 7614 spdy_util_.ConstructSpdyBodyFrame(3, resp, strlen(resp), false));
7612 scoped_ptr<SpdyFrame> wrapped_body( 7615 scoped_ptr<SpdySerializedFrame> wrapped_body(
7613 spdy_util_.ConstructSpdyBodyFrame(3, "hello", 5, false)); 7616 spdy_util_.ConstructSpdyBodyFrame(3, "hello", 5, false));
7614 MockRead spdy_reads[] = { 7617 MockRead spdy_reads[] = {
7615 CreateMockRead(*conn_auth_resp, 1, ASYNC), 7618 CreateMockRead(*conn_auth_resp, 1, ASYNC),
7616 CreateMockRead(*conn_resp, 4, ASYNC), 7619 CreateMockRead(*conn_resp, 4, ASYNC),
7617 CreateMockRead(*wrapped_get_resp, 6, ASYNC), 7620 CreateMockRead(*wrapped_get_resp, 6, ASYNC),
7618 CreateMockRead(*wrapped_body, 7, ASYNC), 7621 CreateMockRead(*wrapped_body, 7, ASYNC),
7619 MockRead(ASYNC, OK, 8), // EOF. May or may not be read. 7622 MockRead(ASYNC, OK, 8), // EOF. May or may not be read.
7620 }; 7623 };
7621 7624
7622 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 7625 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
7705 // Configure against https proxy server "myproxy:443". 7708 // Configure against https proxy server "myproxy:443".
7706 session_deps_.proxy_service = 7709 session_deps_.proxy_service =
7707 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:443"); 7710 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:443");
7708 BoundTestNetLog log; 7711 BoundTestNetLog log;
7709 session_deps_.net_log = log.bound().net_log(); 7712 session_deps_.net_log = log.bound().net_log();
7710 7713
7711 session_deps_.proxy_delegate.reset(proxy_delegate.release()); 7714 session_deps_.proxy_delegate.reset(proxy_delegate.release());
7712 7715
7713 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7716 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7714 7717
7715 scoped_ptr<SpdyFrame> stream1_syn( 7718 scoped_ptr<SpdySerializedFrame> stream1_syn(
7716 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false)); 7719 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false));
7717 7720
7718 MockWrite spdy_writes[] = { 7721 MockWrite spdy_writes[] = {
7719 CreateMockWrite(*stream1_syn, 0, ASYNC), 7722 CreateMockWrite(*stream1_syn, 0, ASYNC),
7720 }; 7723 };
7721 7724
7722 scoped_ptr<SpdyFrame> 7725 scoped_ptr<SpdySerializedFrame> stream1_reply(
7723 stream1_reply(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 7726 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
7724 7727
7725 scoped_ptr<SpdyFrame> 7728 scoped_ptr<SpdySerializedFrame> stream1_body(
7726 stream1_body(spdy_util_.ConstructSpdyBodyFrame(1, true)); 7729 spdy_util_.ConstructSpdyBodyFrame(1, true));
7727 7730
7728 scoped_ptr<SpdyFrame> 7731 scoped_ptr<SpdySerializedFrame> stream2_syn(spdy_util_.ConstructSpdyPush(
7729 stream2_syn(spdy_util_.ConstructSpdyPush(NULL, 7732 NULL, 0, 2, 1, "http://www.another-origin.com/foo.dat"));
7730 0,
7731 2,
7732 1,
7733 "http://www.another-origin.com/foo.dat"));
7734 const char kPushedData[] = "pushed"; 7733 const char kPushedData[] = "pushed";
7735 scoped_ptr<SpdyFrame> stream2_body( 7734 scoped_ptr<SpdySerializedFrame> stream2_body(
7736 spdy_util_.ConstructSpdyBodyFrame( 7735 spdy_util_.ConstructSpdyBodyFrame(2, kPushedData, strlen(kPushedData),
7737 2, kPushedData, strlen(kPushedData), true)); 7736 true));
7738 7737
7739 MockRead spdy_reads[] = { 7738 MockRead spdy_reads[] = {
7740 CreateMockRead(*stream1_reply, 1, ASYNC), 7739 CreateMockRead(*stream1_reply, 1, ASYNC),
7741 CreateMockRead(*stream2_syn, 2, ASYNC), 7740 CreateMockRead(*stream2_syn, 2, ASYNC),
7742 CreateMockRead(*stream1_body, 3, ASYNC), 7741 CreateMockRead(*stream1_body, 3, ASYNC),
7743 CreateMockRead(*stream2_body, 4, ASYNC), 7742 CreateMockRead(*stream2_body, 4, ASYNC),
7744 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang 7743 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang
7745 }; 7744 };
7746 7745
7747 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 7746 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
7822 session_deps_.proxy_service = 7821 session_deps_.proxy_service =
7823 ProxyService::CreateFixed("https://myproxy:443"); 7822 ProxyService::CreateFixed("https://myproxy:443");
7824 BoundTestNetLog log; 7823 BoundTestNetLog log;
7825 session_deps_.net_log = log.bound().net_log(); 7824 session_deps_.net_log = log.bound().net_log();
7826 7825
7827 // Enable cross-origin push. 7826 // Enable cross-origin push.
7828 session_deps_.proxy_delegate.reset(proxy_delegate.release()); 7827 session_deps_.proxy_delegate.reset(proxy_delegate.release());
7829 7828
7830 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7829 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7831 7830
7832 scoped_ptr<SpdyFrame> stream1_syn( 7831 scoped_ptr<SpdySerializedFrame> stream1_syn(
7833 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false)); 7832 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false));
7834 7833
7835 scoped_ptr<SpdyFrame> push_rst( 7834 scoped_ptr<SpdySerializedFrame> push_rst(
7836 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 7835 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM));
7837 7836
7838 MockWrite spdy_writes[] = { 7837 MockWrite spdy_writes[] = {
7839 CreateMockWrite(*stream1_syn, 0, ASYNC), CreateMockWrite(*push_rst, 3), 7838 CreateMockWrite(*stream1_syn, 0, ASYNC), CreateMockWrite(*push_rst, 3),
7840 }; 7839 };
7841 7840
7842 scoped_ptr<SpdyFrame> 7841 scoped_ptr<SpdySerializedFrame> stream1_reply(
7843 stream1_reply(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 7842 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
7844 7843
7845 scoped_ptr<SpdyFrame> 7844 scoped_ptr<SpdySerializedFrame> stream1_body(
7846 stream1_body(spdy_util_.ConstructSpdyBodyFrame(1, true)); 7845 spdy_util_.ConstructSpdyBodyFrame(1, true));
7847 7846
7848 scoped_ptr<SpdyFrame> 7847 scoped_ptr<SpdySerializedFrame> stream2_syn(spdy_util_.ConstructSpdyPush(
7849 stream2_syn(spdy_util_.ConstructSpdyPush(NULL, 7848 NULL, 0, 2, 1, "https://www.another-origin.com/foo.dat"));
7850 0,
7851 2,
7852 1,
7853 "https://www.another-origin.com/foo.dat"));
7854 7849
7855 MockRead spdy_reads[] = { 7850 MockRead spdy_reads[] = {
7856 CreateMockRead(*stream1_reply, 1, ASYNC), 7851 CreateMockRead(*stream1_reply, 1, ASYNC),
7857 CreateMockRead(*stream2_syn, 2, ASYNC), 7852 CreateMockRead(*stream2_syn, 2, ASYNC),
7858 CreateMockRead(*stream1_body, 4, ASYNC), 7853 CreateMockRead(*stream1_body, 4, ASYNC),
7859 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang 7854 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang
7860 }; 7855 };
7861 7856
7862 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 7857 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
7863 arraysize(spdy_writes)); 7858 arraysize(spdy_writes));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
7908 // Configure against https proxy server "myproxy:70". 7903 // Configure against https proxy server "myproxy:70".
7909 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70"); 7904 session_deps_.proxy_service = ProxyService::CreateFixed("https://myproxy:70");
7910 BoundTestNetLog log; 7905 BoundTestNetLog log;
7911 session_deps_.net_log = log.bound().net_log(); 7906 session_deps_.net_log = log.bound().net_log();
7912 7907
7913 // Enable cross-origin push. 7908 // Enable cross-origin push.
7914 session_deps_.proxy_delegate.reset(proxy_delegate.release()); 7909 session_deps_.proxy_delegate.reset(proxy_delegate.release());
7915 7910
7916 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 7911 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
7917 7912
7918 scoped_ptr<SpdyFrame> stream1_syn( 7913 scoped_ptr<SpdySerializedFrame> stream1_syn(
7919 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false)); 7914 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, false));
7920 7915
7921 MockWrite spdy_writes[] = { 7916 MockWrite spdy_writes[] = {
7922 CreateMockWrite(*stream1_syn, 0, ASYNC), 7917 CreateMockWrite(*stream1_syn, 0, ASYNC),
7923 }; 7918 };
7924 7919
7925 scoped_ptr<SpdyFrame> stream1_reply( 7920 scoped_ptr<SpdySerializedFrame> stream1_reply(
7926 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 7921 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
7927 7922
7928 scoped_ptr<SpdyFrame> stream2_syn(spdy_util_.ConstructSpdyPush( 7923 scoped_ptr<SpdySerializedFrame> stream2_syn(spdy_util_.ConstructSpdyPush(
7929 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat")); 7924 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat"));
7930 7925
7931 scoped_ptr<SpdyFrame> stream1_body( 7926 scoped_ptr<SpdySerializedFrame> stream1_body(
7932 spdy_util_.ConstructSpdyBodyFrame(1, true)); 7927 spdy_util_.ConstructSpdyBodyFrame(1, true));
7933 7928
7934 scoped_ptr<SpdyFrame> stream2_reply( 7929 scoped_ptr<SpdySerializedFrame> stream2_reply(
7935 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 7930 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
7936 7931
7937 scoped_ptr<SpdyFrame> stream2_body( 7932 scoped_ptr<SpdySerializedFrame> stream2_body(
7938 spdy_util_.ConstructSpdyBodyFrame(1, true)); 7933 spdy_util_.ConstructSpdyBodyFrame(1, true));
7939 7934
7940 MockRead spdy_reads[] = { 7935 MockRead spdy_reads[] = {
7941 CreateMockRead(*stream1_reply, 1, ASYNC), 7936 CreateMockRead(*stream1_reply, 1, ASYNC),
7942 CreateMockRead(*stream2_syn, 2, ASYNC), 7937 CreateMockRead(*stream2_syn, 2, ASYNC),
7943 CreateMockRead(*stream1_body, 3, ASYNC), 7938 CreateMockRead(*stream1_body, 3, ASYNC),
7944 CreateMockRead(*stream2_body, 4, ASYNC), 7939 CreateMockRead(*stream2_body, 4, ASYNC),
7945 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang 7940 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang
7946 }; 7941 };
7947 7942
(...skipping 2731 matching lines...) Expand 10 before | Expand all | Expand 10 after
10679 StaticSocketDataProvider first_transaction( 10674 StaticSocketDataProvider first_transaction(
10680 data_reads, arraysize(data_reads), NULL, 0); 10675 data_reads, arraysize(data_reads), NULL, 0);
10681 session_deps_.socket_factory->AddSocketDataProvider(&first_transaction); 10676 session_deps_.socket_factory->AddSocketDataProvider(&first_transaction);
10682 10677
10683 SSLSocketDataProvider ssl(ASYNC, OK); 10678 SSLSocketDataProvider ssl(ASYNC, OK);
10684 ssl.SetNextProto(GetProtocol()); 10679 ssl.SetNextProto(GetProtocol());
10685 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 10680 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
10686 ASSERT_TRUE(ssl.cert.get()); 10681 ASSERT_TRUE(ssl.cert.get());
10687 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10682 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
10688 10683
10689 scoped_ptr<SpdyFrame> req( 10684 scoped_ptr<SpdySerializedFrame> req(
10690 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 10685 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
10691 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 10686 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
10692 10687
10693 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 10688 scoped_ptr<SpdySerializedFrame> resp(
10694 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 10689 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
10690 scoped_ptr<SpdySerializedFrame> data(
10691 spdy_util_.ConstructSpdyBodyFrame(1, true));
10695 MockRead spdy_reads[] = { 10692 MockRead spdy_reads[] = {
10696 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 10693 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3),
10697 }; 10694 };
10698 10695
10699 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 10696 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
10700 arraysize(spdy_writes)); 10697 arraysize(spdy_writes));
10701 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 10698 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
10702 10699
10703 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 10700 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
10704 StaticSocketDataProvider hanging_non_alternate_protocol_socket( 10701 StaticSocketDataProvider hanging_non_alternate_protocol_socket(
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
10780 StaticSocketDataProvider hanging_socket2(NULL, 0, NULL, 0); 10777 StaticSocketDataProvider hanging_socket2(NULL, 0, NULL, 0);
10781 hanging_socket2.set_connect_data(never_finishing_connect); 10778 hanging_socket2.set_connect_data(never_finishing_connect);
10782 session_deps_.socket_factory->AddSocketDataProvider(&hanging_socket2); 10779 session_deps_.socket_factory->AddSocketDataProvider(&hanging_socket2);
10783 10780
10784 SSLSocketDataProvider ssl(ASYNC, OK); 10781 SSLSocketDataProvider ssl(ASYNC, OK);
10785 ssl.SetNextProto(GetProtocol()); 10782 ssl.SetNextProto(GetProtocol());
10786 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 10783 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
10787 ASSERT_TRUE(ssl.cert.get()); 10784 ASSERT_TRUE(ssl.cert.get());
10788 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10785 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
10789 10786
10790 scoped_ptr<SpdyFrame> req1( 10787 scoped_ptr<SpdySerializedFrame> req1(
10791 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 10788 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
10792 scoped_ptr<SpdyFrame> req2( 10789 scoped_ptr<SpdySerializedFrame> req2(
10793 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, LOWEST, true)); 10790 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, LOWEST, true));
10794 MockWrite spdy_writes[] = { 10791 MockWrite spdy_writes[] = {
10795 CreateMockWrite(*req1, 0), CreateMockWrite(*req2, 1), 10792 CreateMockWrite(*req1, 0), CreateMockWrite(*req2, 1),
10796 }; 10793 };
10797 scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 10794 scoped_ptr<SpdySerializedFrame> resp1(
10798 scoped_ptr<SpdyFrame> data1(spdy_util_.ConstructSpdyBodyFrame(1, true)); 10795 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
10799 scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 10796 scoped_ptr<SpdySerializedFrame> data1(
10800 scoped_ptr<SpdyFrame> data2(spdy_util_.ConstructSpdyBodyFrame(3, true)); 10797 spdy_util_.ConstructSpdyBodyFrame(1, true));
10798 scoped_ptr<SpdySerializedFrame> resp2(
10799 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
10800 scoped_ptr<SpdySerializedFrame> data2(
10801 spdy_util_.ConstructSpdyBodyFrame(3, true));
10801 MockRead spdy_reads[] = { 10802 MockRead spdy_reads[] = {
10802 CreateMockRead(*resp1, 2), 10803 CreateMockRead(*resp1, 2),
10803 CreateMockRead(*data1, 3), 10804 CreateMockRead(*data1, 3),
10804 CreateMockRead(*resp2, 4), 10805 CreateMockRead(*resp2, 4),
10805 CreateMockRead(*data2, 5), 10806 CreateMockRead(*data2, 5),
10806 MockRead(ASYNC, 0, 6), 10807 MockRead(ASYNC, 0, 6),
10807 }; 10808 };
10808 10809
10809 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 10810 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
10810 arraysize(spdy_writes)); 10811 arraysize(spdy_writes));
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
11031 StaticSocketDataProvider first_transaction( 11032 StaticSocketDataProvider first_transaction(
11032 data_reads, arraysize(data_reads), NULL, 0); 11033 data_reads, arraysize(data_reads), NULL, 0);
11033 session_deps_.socket_factory->AddSocketDataProvider(&first_transaction); 11034 session_deps_.socket_factory->AddSocketDataProvider(&first_transaction);
11034 11035
11035 SSLSocketDataProvider ssl(ASYNC, OK); 11036 SSLSocketDataProvider ssl(ASYNC, OK);
11036 ssl.SetNextProto(GetProtocol()); 11037 ssl.SetNextProto(GetProtocol());
11037 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 11038 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
11038 ASSERT_TRUE(ssl.cert.get()); 11039 ASSERT_TRUE(ssl.cert.get());
11039 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 11040 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
11040 11041
11041 scoped_ptr<SpdyFrame> req( 11042 scoped_ptr<SpdySerializedFrame> req(
11042 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 11043 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
11043 MockWrite spdy_writes[] = { 11044 MockWrite spdy_writes[] = {
11044 MockWrite(ASYNC, 0, 11045 MockWrite(ASYNC, 0,
11045 "CONNECT www.example.org:443 HTTP/1.1\r\n" 11046 "CONNECT www.example.org:443 HTTP/1.1\r\n"
11046 "Host: www.example.org:443\r\n" 11047 "Host: www.example.org:443\r\n"
11047 "Proxy-Connection: keep-alive\r\n\r\n"), 11048 "Proxy-Connection: keep-alive\r\n\r\n"),
11048 CreateMockWrite(*req, 2), 11049 CreateMockWrite(*req, 2),
11049 }; 11050 };
11050 11051
11051 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; 11052 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n";
11052 11053
11053 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 11054 scoped_ptr<SpdySerializedFrame> resp(
11054 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 11055 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
11056 scoped_ptr<SpdySerializedFrame> data(
11057 spdy_util_.ConstructSpdyBodyFrame(1, true));
11055 MockRead spdy_reads[] = { 11058 MockRead spdy_reads[] = {
11056 MockRead(ASYNC, 1, kCONNECTResponse), CreateMockRead(*resp.get(), 3), 11059 MockRead(ASYNC, 1, kCONNECTResponse), CreateMockRead(*resp.get(), 3),
11057 CreateMockRead(*data.get(), 4), MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), 11060 CreateMockRead(*data.get(), 4), MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),
11058 }; 11061 };
11059 11062
11060 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11063 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
11061 arraysize(spdy_writes)); 11064 arraysize(spdy_writes));
11062 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11065 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
11063 11066
11064 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 11067 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
11141 StaticSocketDataProvider first_transaction( 11144 StaticSocketDataProvider first_transaction(
11142 data_reads, arraysize(data_reads), NULL, 0); 11145 data_reads, arraysize(data_reads), NULL, 0);
11143 session_deps_.socket_factory->AddSocketDataProvider(&first_transaction); 11146 session_deps_.socket_factory->AddSocketDataProvider(&first_transaction);
11144 11147
11145 SSLSocketDataProvider ssl(ASYNC, OK); 11148 SSLSocketDataProvider ssl(ASYNC, OK);
11146 ssl.SetNextProto(GetProtocol()); 11149 ssl.SetNextProto(GetProtocol());
11147 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); 11150 ssl.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem");
11148 ASSERT_TRUE(ssl.cert.get()); 11151 ASSERT_TRUE(ssl.cert.get());
11149 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 11152 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
11150 11153
11151 scoped_ptr<SpdyFrame> req( 11154 scoped_ptr<SpdySerializedFrame> req(
11152 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 11155 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
11153 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 11156 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
11154 11157
11155 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 11158 scoped_ptr<SpdySerializedFrame> resp(
11156 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 11159 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
11160 scoped_ptr<SpdySerializedFrame> data(
11161 spdy_util_.ConstructSpdyBodyFrame(1, true));
11157 MockRead spdy_reads[] = { 11162 MockRead spdy_reads[] = {
11158 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 11163 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3),
11159 }; 11164 };
11160 11165
11161 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11166 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
11162 arraysize(spdy_writes)); 11167 arraysize(spdy_writes));
11163 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11168 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
11164 11169
11165 TestCompletionCallback callback; 11170 TestCompletionCallback callback;
11166 11171
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after
11889 11894
11890 HttpRequestInfo request; 11895 HttpRequestInfo request;
11891 request.method = "GET"; 11896 request.method = "GET";
11892 request.url = GURL("https://www.example.org/"); 11897 request.url = GURL("https://www.example.org/");
11893 request.load_flags = 0; 11898 request.load_flags = 0;
11894 11899
11895 SSLSocketDataProvider ssl(ASYNC, OK); 11900 SSLSocketDataProvider ssl(ASYNC, OK);
11896 ssl.SetNextProto(GetProtocol()); 11901 ssl.SetNextProto(GetProtocol());
11897 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 11902 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
11898 11903
11899 scoped_ptr<SpdyFrame> req( 11904 scoped_ptr<SpdySerializedFrame> req(
11900 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 11905 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
11901 MockWrite spdy_writes[] = {CreateMockWrite(*req, 1)}; 11906 MockWrite spdy_writes[] = {CreateMockWrite(*req, 1)};
11902 11907
11903 MockRead spdy_reads[] = { 11908 MockRead spdy_reads[] = {
11904 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately. 11909 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately.
11905 }; 11910 };
11906 11911
11907 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 11912 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
11908 arraysize(spdy_writes)); 11913 arraysize(spdy_writes));
11909 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 11914 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
11998 // same MockTCPClientSocket since the underlying HttpNetworkClientSocket 12003 // same MockTCPClientSocket since the underlying HttpNetworkClientSocket
11999 // does a Disconnect and Connect on the same socket, rather than trying 12004 // does a Disconnect and Connect on the same socket, rather than trying
12000 // to obtain a new one. 12005 // to obtain a new one.
12001 // 12006 //
12002 // NOTE: Originally, the proxy response to the second CONNECT request 12007 // NOTE: Originally, the proxy response to the second CONNECT request
12003 // simply returned another 407 so the unit test could skip the SSL connection 12008 // simply returned another 407 so the unit test could skip the SSL connection
12004 // establishment and SPDY framing issues. Alas, the 12009 // establishment and SPDY framing issues. Alas, the
12005 // retry-http-when-alternate-protocol fails logic kicks in, which was more 12010 // retry-http-when-alternate-protocol fails logic kicks in, which was more
12006 // complicated to set up expectations for than the SPDY session. 12011 // complicated to set up expectations for than the SPDY session.
12007 12012
12008 scoped_ptr<SpdyFrame> req( 12013 scoped_ptr<SpdySerializedFrame> req(
12009 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 12014 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
12010 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 12015 scoped_ptr<SpdySerializedFrame> resp(
12011 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 12016 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12017 scoped_ptr<SpdySerializedFrame> data(
12018 spdy_util_.ConstructSpdyBodyFrame(1, true));
12012 12019
12013 MockWrite data_writes_2[] = { 12020 MockWrite data_writes_2[] = {
12014 // First connection attempt without Proxy-Authorization. 12021 // First connection attempt without Proxy-Authorization.
12015 MockWrite(ASYNC, 0, 12022 MockWrite(ASYNC, 0,
12016 "CONNECT www.example.org:443 HTTP/1.1\r\n" 12023 "CONNECT www.example.org:443 HTTP/1.1\r\n"
12017 "Host: www.example.org:443\r\n" 12024 "Host: www.example.org:443\r\n"
12018 "Proxy-Connection: keep-alive\r\n" 12025 "Proxy-Connection: keep-alive\r\n"
12019 "\r\n"), 12026 "\r\n"),
12020 12027
12021 // Second connection attempt with Proxy-Authorization. 12028 // Second connection attempt with Proxy-Authorization.
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
12457 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS, 12464 entries, 0, NetLog::TYPE_HTTP_TRANSACTION_SEND_TUNNEL_HEADERS,
12458 NetLog::PHASE_NONE); 12465 NetLog::PHASE_NONE);
12459 ExpectLogContainsSomewhere( 12466 ExpectLogContainsSomewhere(
12460 entries, pos, 12467 entries, pos,
12461 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, 12468 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS,
12462 NetLog::PHASE_NONE); 12469 NetLog::PHASE_NONE);
12463 } 12470 }
12464 12471
12465 // Test for crbug.com/55424. 12472 // Test for crbug.com/55424.
12466 TEST_P(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) { 12473 TEST_P(HttpNetworkTransactionTest, PreconnectWithExistingSpdySession) {
12467 scoped_ptr<SpdyFrame> req( 12474 scoped_ptr<SpdySerializedFrame> req(
12468 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12475 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12469 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)}; 12476 MockWrite spdy_writes[] = {CreateMockWrite(*req, 0)};
12470 12477
12471 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 12478 scoped_ptr<SpdySerializedFrame> resp(
12472 scoped_ptr<SpdyFrame> data(spdy_util_.ConstructSpdyBodyFrame(1, true)); 12479 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12480 scoped_ptr<SpdySerializedFrame> data(
12481 spdy_util_.ConstructSpdyBodyFrame(1, true));
12473 MockRead spdy_reads[] = { 12482 MockRead spdy_reads[] = {
12474 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3), 12483 CreateMockRead(*resp, 1), CreateMockRead(*data, 2), MockRead(ASYNC, 0, 3),
12475 }; 12484 };
12476 12485
12477 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, 12486 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes,
12478 arraysize(spdy_writes)); 12487 arraysize(spdy_writes));
12479 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); 12488 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data);
12480 12489
12481 SSLSocketDataProvider ssl(ASYNC, OK); 12490 SSLSocketDataProvider ssl(ASYNC, OK);
12482 ssl.SetNextProto(GetProtocol()); 12491 ssl.SetNextProto(GetProtocol());
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
12880 // Set up a special HttpNetworkSession with a MockCachingHostResolver. 12889 // Set up a special HttpNetworkSession with a MockCachingHostResolver.
12881 session_deps_.host_resolver.reset(new MockCachingHostResolver()); 12890 session_deps_.host_resolver.reset(new MockCachingHostResolver());
12882 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 12891 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
12883 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 12892 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
12884 pool_peer.DisableDomainAuthenticationVerification(); 12893 pool_peer.DisableDomainAuthenticationVerification();
12885 12894
12886 SSLSocketDataProvider ssl(ASYNC, OK); 12895 SSLSocketDataProvider ssl(ASYNC, OK);
12887 ssl.SetNextProto(GetProtocol()); 12896 ssl.SetNextProto(GetProtocol());
12888 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12897 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12889 12898
12890 scoped_ptr<SpdyFrame> host1_req( 12899 scoped_ptr<SpdySerializedFrame> host1_req(
12891 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12900 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12892 spdy_util_.UpdateWithStreamDestruction(1); 12901 spdy_util_.UpdateWithStreamDestruction(1);
12893 scoped_ptr<SpdyFrame> host2_req( 12902 scoped_ptr<SpdySerializedFrame> host2_req(
12894 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 12903 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
12895 MockWrite spdy_writes[] = { 12904 MockWrite spdy_writes[] = {
12896 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3), 12905 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3),
12897 }; 12906 };
12898 scoped_ptr<SpdyFrame> host1_resp( 12907 scoped_ptr<SpdySerializedFrame> host1_resp(
12899 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 12908 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12900 scoped_ptr<SpdyFrame> host1_resp_body( 12909 scoped_ptr<SpdySerializedFrame> host1_resp_body(
12901 spdy_util_.ConstructSpdyBodyFrame(1, true)); 12910 spdy_util_.ConstructSpdyBodyFrame(1, true));
12902 scoped_ptr<SpdyFrame> host2_resp( 12911 scoped_ptr<SpdySerializedFrame> host2_resp(
12903 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 12912 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
12904 scoped_ptr<SpdyFrame> host2_resp_body( 12913 scoped_ptr<SpdySerializedFrame> host2_resp_body(
12905 spdy_util_.ConstructSpdyBodyFrame(3, true)); 12914 spdy_util_.ConstructSpdyBodyFrame(3, true));
12906 MockRead spdy_reads[] = { 12915 MockRead spdy_reads[] = {
12907 CreateMockRead(*host1_resp, 1), 12916 CreateMockRead(*host1_resp, 1),
12908 CreateMockRead(*host1_resp_body, 2), 12917 CreateMockRead(*host1_resp_body, 2),
12909 CreateMockRead(*host2_resp, 4), 12918 CreateMockRead(*host2_resp, 4),
12910 CreateMockRead(*host2_resp_body, 5), 12919 CreateMockRead(*host2_resp_body, 5),
12911 MockRead(ASYNC, 0, 6), 12920 MockRead(ASYNC, 0, 6),
12912 }; 12921 };
12913 12922
12914 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 12923 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
12978 // Set up a special HttpNetworkSession with a MockCachingHostResolver. 12987 // Set up a special HttpNetworkSession with a MockCachingHostResolver.
12979 session_deps_.host_resolver.reset(new MockCachingHostResolver()); 12988 session_deps_.host_resolver.reset(new MockCachingHostResolver());
12980 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 12989 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
12981 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 12990 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
12982 pool_peer.DisableDomainAuthenticationVerification(); 12991 pool_peer.DisableDomainAuthenticationVerification();
12983 12992
12984 SSLSocketDataProvider ssl(ASYNC, OK); 12993 SSLSocketDataProvider ssl(ASYNC, OK);
12985 ssl.SetNextProto(GetProtocol()); 12994 ssl.SetNextProto(GetProtocol());
12986 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 12995 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
12987 12996
12988 scoped_ptr<SpdyFrame> host1_req( 12997 scoped_ptr<SpdySerializedFrame> host1_req(
12989 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 12998 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
12990 spdy_util_.UpdateWithStreamDestruction(1); 12999 spdy_util_.UpdateWithStreamDestruction(1);
12991 scoped_ptr<SpdyFrame> host2_req( 13000 scoped_ptr<SpdySerializedFrame> host2_req(
12992 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 13001 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
12993 MockWrite spdy_writes[] = { 13002 MockWrite spdy_writes[] = {
12994 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3), 13003 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3),
12995 }; 13004 };
12996 scoped_ptr<SpdyFrame> host1_resp( 13005 scoped_ptr<SpdySerializedFrame> host1_resp(
12997 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13006 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
12998 scoped_ptr<SpdyFrame> host1_resp_body( 13007 scoped_ptr<SpdySerializedFrame> host1_resp_body(
12999 spdy_util_.ConstructSpdyBodyFrame(1, true)); 13008 spdy_util_.ConstructSpdyBodyFrame(1, true));
13000 scoped_ptr<SpdyFrame> host2_resp( 13009 scoped_ptr<SpdySerializedFrame> host2_resp(
13001 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 13010 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
13002 scoped_ptr<SpdyFrame> host2_resp_body( 13011 scoped_ptr<SpdySerializedFrame> host2_resp_body(
13003 spdy_util_.ConstructSpdyBodyFrame(3, true)); 13012 spdy_util_.ConstructSpdyBodyFrame(3, true));
13004 MockRead spdy_reads[] = { 13013 MockRead spdy_reads[] = {
13005 CreateMockRead(*host1_resp, 1), 13014 CreateMockRead(*host1_resp, 1),
13006 CreateMockRead(*host1_resp_body, 2), 13015 CreateMockRead(*host1_resp_body, 2),
13007 CreateMockRead(*host2_resp, 4), 13016 CreateMockRead(*host2_resp, 4),
13008 CreateMockRead(*host2_resp_body, 5), 13017 CreateMockRead(*host2_resp_body, 5),
13009 MockRead(ASYNC, 0, 6), 13018 MockRead(ASYNC, 0, 6),
13010 }; 13019 };
13011 13020
13012 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 13021 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
13107 SpdySessionDependencies::CreateSessionParams(&session_deps_); 13116 SpdySessionDependencies::CreateSessionParams(&session_deps_);
13108 params.host_resolver = &host_resolver; 13117 params.host_resolver = &host_resolver;
13109 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 13118 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13110 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 13119 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
13111 pool_peer.DisableDomainAuthenticationVerification(); 13120 pool_peer.DisableDomainAuthenticationVerification();
13112 13121
13113 SSLSocketDataProvider ssl(ASYNC, OK); 13122 SSLSocketDataProvider ssl(ASYNC, OK);
13114 ssl.SetNextProto(GetProtocol()); 13123 ssl.SetNextProto(GetProtocol());
13115 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 13124 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
13116 13125
13117 scoped_ptr<SpdyFrame> host1_req( 13126 scoped_ptr<SpdySerializedFrame> host1_req(
13118 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST)); 13127 spdy_util_.ConstructSpdyGet("https://www.example.org", 1, LOWEST));
13119 spdy_util_.UpdateWithStreamDestruction(1); 13128 spdy_util_.UpdateWithStreamDestruction(1);
13120 scoped_ptr<SpdyFrame> host2_req( 13129 scoped_ptr<SpdySerializedFrame> host2_req(
13121 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST)); 13130 spdy_util_.ConstructSpdyGet("https://www.gmail.com", 3, LOWEST));
13122 MockWrite spdy_writes[] = { 13131 MockWrite spdy_writes[] = {
13123 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3), 13132 CreateMockWrite(*host1_req, 0), CreateMockWrite(*host2_req, 3),
13124 }; 13133 };
13125 scoped_ptr<SpdyFrame> host1_resp( 13134 scoped_ptr<SpdySerializedFrame> host1_resp(
13126 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13135 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13127 scoped_ptr<SpdyFrame> host1_resp_body( 13136 scoped_ptr<SpdySerializedFrame> host1_resp_body(
13128 spdy_util_.ConstructSpdyBodyFrame(1, true)); 13137 spdy_util_.ConstructSpdyBodyFrame(1, true));
13129 scoped_ptr<SpdyFrame> host2_resp( 13138 scoped_ptr<SpdySerializedFrame> host2_resp(
13130 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 13139 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
13131 scoped_ptr<SpdyFrame> host2_resp_body( 13140 scoped_ptr<SpdySerializedFrame> host2_resp_body(
13132 spdy_util_.ConstructSpdyBodyFrame(3, true)); 13141 spdy_util_.ConstructSpdyBodyFrame(3, true));
13133 MockRead spdy_reads[] = { 13142 MockRead spdy_reads[] = {
13134 CreateMockRead(*host1_resp, 1), 13143 CreateMockRead(*host1_resp, 1),
13135 CreateMockRead(*host1_resp_body, 2), 13144 CreateMockRead(*host1_resp_body, 2),
13136 CreateMockRead(*host2_resp, 4), 13145 CreateMockRead(*host2_resp, 4),
13137 CreateMockRead(*host2_resp_body, 5), 13146 CreateMockRead(*host2_resp_body, 5),
13138 MockRead(ASYNC, 0, 6), 13147 MockRead(ASYNC, 0, 6),
13139 }; 13148 };
13140 13149
13141 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443); 13150 IPEndPoint peer_addr(IPAddress::IPv4Localhost(), 443);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
13195 EXPECT_TRUE(response->was_npn_negotiated); 13204 EXPECT_TRUE(response->was_npn_negotiated);
13196 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 13205 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
13197 EXPECT_EQ("hello!", response_data); 13206 EXPECT_EQ("hello!", response_data);
13198 } 13207 }
13199 13208
13200 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { 13209 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) {
13201 const std::string https_url = "https://www.example.org:8080/"; 13210 const std::string https_url = "https://www.example.org:8080/";
13202 const std::string http_url = "http://www.example.org:8080/"; 13211 const std::string http_url = "http://www.example.org:8080/";
13203 13212
13204 // SPDY GET for HTTPS URL 13213 // SPDY GET for HTTPS URL
13205 scoped_ptr<SpdyFrame> req1( 13214 scoped_ptr<SpdySerializedFrame> req1(
13206 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, LOWEST)); 13215 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, LOWEST));
13207 13216
13208 MockWrite writes1[] = { 13217 MockWrite writes1[] = {
13209 CreateMockWrite(*req1, 0), 13218 CreateMockWrite(*req1, 0),
13210 }; 13219 };
13211 13220
13212 scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13221 scoped_ptr<SpdySerializedFrame> resp1(
13213 scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); 13222 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13223 scoped_ptr<SpdySerializedFrame> body1(
13224 spdy_util_.ConstructSpdyBodyFrame(1, true));
13214 MockRead reads1[] = {CreateMockRead(*resp1, 1), CreateMockRead(*body1, 2), 13225 MockRead reads1[] = {CreateMockRead(*resp1, 1), CreateMockRead(*body1, 2),
13215 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3)}; 13226 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3)};
13216 13227
13217 SequencedSocketData data1(reads1, arraysize(reads1), writes1, 13228 SequencedSocketData data1(reads1, arraysize(reads1), writes1,
13218 arraysize(writes1)); 13229 arraysize(writes1));
13219 MockConnect connect_data1(ASYNC, OK); 13230 MockConnect connect_data1(ASYNC, OK);
13220 data1.set_connect_data(connect_data1); 13231 data1.set_connect_data(connect_data1);
13221 13232
13222 // HTTP GET for the HTTP URL 13233 // HTTP GET for the HTTP URL
13223 MockWrite writes2[] = { 13234 MockWrite writes2[] = {
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
13296 13307
13297 // If pooling, then start a request to alternative first to create a 13308 // If pooling, then start a request to alternative first to create a
13298 // SpdySession. 13309 // SpdySession.
13299 std::string url0 = "https://www.example.org:443"; 13310 std::string url0 = "https://www.example.org:443";
13300 // Second request to origin, which has an alternative service, and could 13311 // Second request to origin, which has an alternative service, and could
13301 // open a connection to the alternative host or pool to the existing one. 13312 // open a connection to the alternative host or pool to the existing one.
13302 std::string url1("https://"); 13313 std::string url1("https://");
13303 url1.append(origin.host()); 13314 url1.append(origin.host());
13304 url1.append(":443"); 13315 url1.append(":443");
13305 13316
13306 scoped_ptr<SpdyFrame> req0; 13317 scoped_ptr<SpdySerializedFrame> req0;
13307 scoped_ptr<SpdyFrame> req1; 13318 scoped_ptr<SpdySerializedFrame> req1;
13308 scoped_ptr<SpdyFrame> resp0; 13319 scoped_ptr<SpdySerializedFrame> resp0;
13309 scoped_ptr<SpdyFrame> body0; 13320 scoped_ptr<SpdySerializedFrame> body0;
13310 scoped_ptr<SpdyFrame> resp1; 13321 scoped_ptr<SpdySerializedFrame> resp1;
13311 scoped_ptr<SpdyFrame> body1; 13322 scoped_ptr<SpdySerializedFrame> body1;
13312 std::vector<MockWrite> writes; 13323 std::vector<MockWrite> writes;
13313 std::vector<MockRead> reads; 13324 std::vector<MockRead> reads;
13314 13325
13315 if (pooling) { 13326 if (pooling) {
13316 req0.reset(spdy_util_.ConstructSpdyGet(url0.c_str(), 1, LOWEST)); 13327 req0.reset(spdy_util_.ConstructSpdyGet(url0.c_str(), 1, LOWEST));
13317 spdy_util_.UpdateWithStreamDestruction(1); 13328 spdy_util_.UpdateWithStreamDestruction(1);
13318 req1.reset(spdy_util_.ConstructSpdyGet(url1.c_str(), 3, LOWEST)); 13329 req1.reset(spdy_util_.ConstructSpdyGet(url1.c_str(), 3, LOWEST));
13319 13330
13320 writes.push_back(CreateMockWrite(*req0, 0)); 13331 writes.push_back(CreateMockWrite(*req0, 0));
13321 writes.push_back(CreateMockWrite(*req1, 3)); 13332 writes.push_back(CreateMockWrite(*req1, 3));
(...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after
13716 13727
13717 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttpOverTunnel) { 13728 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttpOverTunnel) {
13718 const std::string https_url = "https://www.example.org:8080/"; 13729 const std::string https_url = "https://www.example.org:8080/";
13719 const std::string http_url = "http://www.example.org:8080/"; 13730 const std::string http_url = "http://www.example.org:8080/";
13720 13731
13721 // Separate SPDY util instance for naked and wrapped requests. 13732 // Separate SPDY util instance for naked and wrapped requests.
13722 SpdyTestUtil spdy_util_wrapped(GetProtocol(), GetDependenciesFromPriority()); 13733 SpdyTestUtil spdy_util_wrapped(GetProtocol(), GetDependenciesFromPriority());
13723 13734
13724 // SPDY GET for HTTPS URL (through CONNECT tunnel) 13735 // SPDY GET for HTTPS URL (through CONNECT tunnel)
13725 const HostPortPair host_port_pair("www.example.org", 8080); 13736 const HostPortPair host_port_pair("www.example.org", 8080);
13726 scoped_ptr<SpdyFrame> connect( 13737 scoped_ptr<SpdySerializedFrame> connect(
13727 spdy_util_.ConstructSpdyConnect(NULL, 0, 1, LOWEST, host_port_pair)); 13738 spdy_util_.ConstructSpdyConnect(NULL, 0, 1, LOWEST, host_port_pair));
13728 scoped_ptr<SpdyFrame> req1( 13739 scoped_ptr<SpdySerializedFrame> req1(
13729 spdy_util_wrapped.ConstructSpdyGet(https_url.c_str(), 1, LOWEST)); 13740 spdy_util_wrapped.ConstructSpdyGet(https_url.c_str(), 1, LOWEST));
13730 scoped_ptr<SpdyFrame> wrapped_req1( 13741 scoped_ptr<SpdySerializedFrame> wrapped_req1(
13731 spdy_util_.ConstructWrappedSpdyFrame(req1, 1)); 13742 spdy_util_.ConstructWrappedSpdyFrame(req1, 1));
13732 13743
13733 // SPDY GET for HTTP URL (through the proxy, but not the tunnel). 13744 // SPDY GET for HTTP URL (through the proxy, but not the tunnel).
13734 SpdyHeaderBlock req2_block; 13745 SpdyHeaderBlock req2_block;
13735 spdy_util_.MaybeAddVersionHeader(&req2_block); 13746 spdy_util_.MaybeAddVersionHeader(&req2_block);
13736 req2_block[spdy_util_.GetMethodKey()] = "GET"; 13747 req2_block[spdy_util_.GetMethodKey()] = "GET";
13737 req2_block[spdy_util_.GetHostKey()] = "www.example.org:8080"; 13748 req2_block[spdy_util_.GetHostKey()] = "www.example.org:8080";
13738 req2_block[spdy_util_.GetSchemeKey()] = "http"; 13749 req2_block[spdy_util_.GetSchemeKey()] = "http";
13739 req2_block[spdy_util_.GetPathKey()] = "/"; 13750 req2_block[spdy_util_.GetPathKey()] = "/";
13740 scoped_ptr<SpdyFrame> req2( 13751 scoped_ptr<SpdySerializedFrame> req2(
13741 spdy_util_.ConstructSpdySyn(3, req2_block, MEDIUM, true)); 13752 spdy_util_.ConstructSpdySyn(3, req2_block, MEDIUM, true));
13742 13753
13743 MockWrite writes1[] = { 13754 MockWrite writes1[] = {
13744 CreateMockWrite(*connect, 0), CreateMockWrite(*wrapped_req1, 2), 13755 CreateMockWrite(*connect, 0), CreateMockWrite(*wrapped_req1, 2),
13745 CreateMockWrite(*req2, 6), 13756 CreateMockWrite(*req2, 6),
13746 }; 13757 };
13747 13758
13748 scoped_ptr<SpdyFrame> conn_resp( 13759 scoped_ptr<SpdySerializedFrame> conn_resp(
13749 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 13760 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
13750 scoped_ptr<SpdyFrame> resp1( 13761 scoped_ptr<SpdySerializedFrame> resp1(
13751 spdy_util_wrapped.ConstructSpdyGetSynReply(nullptr, 0, 1)); 13762 spdy_util_wrapped.ConstructSpdyGetSynReply(nullptr, 0, 1));
13752 scoped_ptr<SpdyFrame> body1( 13763 scoped_ptr<SpdySerializedFrame> body1(
13753 spdy_util_wrapped.ConstructSpdyBodyFrame(1, true)); 13764 spdy_util_wrapped.ConstructSpdyBodyFrame(1, true));
13754 scoped_ptr<SpdyFrame> wrapped_resp1( 13765 scoped_ptr<SpdySerializedFrame> wrapped_resp1(
13755 spdy_util_wrapped.ConstructWrappedSpdyFrame(resp1, 1)); 13766 spdy_util_wrapped.ConstructWrappedSpdyFrame(resp1, 1));
13756 scoped_ptr<SpdyFrame> wrapped_body1( 13767 scoped_ptr<SpdySerializedFrame> wrapped_body1(
13757 spdy_util_wrapped.ConstructWrappedSpdyFrame(body1, 1)); 13768 spdy_util_wrapped.ConstructWrappedSpdyFrame(body1, 1));
13758 scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3)); 13769 scoped_ptr<SpdySerializedFrame> resp2(
13759 scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(3, true)); 13770 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 3));
13771 scoped_ptr<SpdySerializedFrame> body2(
13772 spdy_util_.ConstructSpdyBodyFrame(3, true));
13760 MockRead reads1[] = { 13773 MockRead reads1[] = {
13761 CreateMockRead(*conn_resp, 1), 13774 CreateMockRead(*conn_resp, 1),
13762 MockRead(ASYNC, ERR_IO_PENDING, 3), 13775 MockRead(ASYNC, ERR_IO_PENDING, 3),
13763 CreateMockRead(*wrapped_resp1, 4), 13776 CreateMockRead(*wrapped_resp1, 4),
13764 CreateMockRead(*wrapped_body1, 5), 13777 CreateMockRead(*wrapped_body1, 5),
13765 MockRead(ASYNC, ERR_IO_PENDING, 7), 13778 MockRead(ASYNC, ERR_IO_PENDING, 7),
13766 CreateMockRead(*resp2, 8), 13779 CreateMockRead(*resp2, 8),
13767 CreateMockRead(*body2, 9), 13780 CreateMockRead(*body2, 9),
13768 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 10), 13781 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 10),
13769 }; 13782 };
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
13842 const std::string url1 = "http://www.example.org/"; 13855 const std::string url1 = "http://www.example.org/";
13843 const std::string url2 = "https://news.example.org/"; 13856 const std::string url2 = "https://news.example.org/";
13844 const std::string ip_addr = "1.2.3.4"; 13857 const std::string ip_addr = "1.2.3.4";
13845 13858
13846 // Second SpdyTestUtil instance for the second socket. 13859 // Second SpdyTestUtil instance for the second socket.
13847 SpdyTestUtil spdy_util_secure(GetProtocol(), GetDependenciesFromPriority()); 13860 SpdyTestUtil spdy_util_secure(GetProtocol(), GetDependenciesFromPriority());
13848 13861
13849 // SPDY GET for HTTP URL (through SPDY proxy) 13862 // SPDY GET for HTTP URL (through SPDY proxy)
13850 scoped_ptr<SpdyHeaderBlock> headers( 13863 scoped_ptr<SpdyHeaderBlock> headers(
13851 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/")); 13864 spdy_util_.ConstructGetHeaderBlockForProxy("http://www.example.org/"));
13852 scoped_ptr<SpdyFrame> req1( 13865 scoped_ptr<SpdySerializedFrame> req1(
13853 spdy_util_.ConstructSpdySyn(1, *headers, LOWEST, true)); 13866 spdy_util_.ConstructSpdySyn(1, *headers, LOWEST, true));
13854 13867
13855 MockWrite writes1[] = { 13868 MockWrite writes1[] = {
13856 CreateMockWrite(*req1, 0), 13869 CreateMockWrite(*req1, 0),
13857 }; 13870 };
13858 13871
13859 scoped_ptr<SpdyFrame> resp1(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13872 scoped_ptr<SpdySerializedFrame> resp1(
13860 scoped_ptr<SpdyFrame> body1(spdy_util_.ConstructSpdyBodyFrame(1, true)); 13873 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13874 scoped_ptr<SpdySerializedFrame> body1(
13875 spdy_util_.ConstructSpdyBodyFrame(1, true));
13861 MockRead reads1[] = { 13876 MockRead reads1[] = {
13862 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(*resp1, 2), 13877 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(*resp1, 2),
13863 CreateMockRead(*body1, 3), MockRead(ASYNC, OK, 4), // EOF 13878 CreateMockRead(*body1, 3), MockRead(ASYNC, OK, 4), // EOF
13864 }; 13879 };
13865 13880
13866 SequencedSocketData data1(reads1, arraysize(reads1), writes1, 13881 SequencedSocketData data1(reads1, arraysize(reads1), writes1,
13867 arraysize(writes1)); 13882 arraysize(writes1));
13868 IPAddress ip; 13883 IPAddress ip;
13869 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr)); 13884 ASSERT_TRUE(ip.AssignFromIPLiteral(ip_addr));
13870 IPEndPoint peer_addr = IPEndPoint(ip, 443); 13885 IPEndPoint peer_addr = IPEndPoint(ip, 443);
13871 MockConnect connect_data1(ASYNC, OK, peer_addr); 13886 MockConnect connect_data1(ASYNC, OK, peer_addr);
13872 data1.set_connect_data(connect_data1); 13887 data1.set_connect_data(connect_data1);
13873 13888
13874 // SPDY GET for HTTPS URL (direct) 13889 // SPDY GET for HTTPS URL (direct)
13875 scoped_ptr<SpdyFrame> req2( 13890 scoped_ptr<SpdySerializedFrame> req2(
13876 spdy_util_secure.ConstructSpdyGet(url2.c_str(), 1, MEDIUM)); 13891 spdy_util_secure.ConstructSpdyGet(url2.c_str(), 1, MEDIUM));
13877 13892
13878 MockWrite writes2[] = { 13893 MockWrite writes2[] = {
13879 CreateMockWrite(*req2, 0), 13894 CreateMockWrite(*req2, 0),
13880 }; 13895 };
13881 13896
13882 scoped_ptr<SpdyFrame> resp2( 13897 scoped_ptr<SpdySerializedFrame> resp2(
13883 spdy_util_secure.ConstructSpdyGetSynReply(NULL, 0, 1)); 13898 spdy_util_secure.ConstructSpdyGetSynReply(NULL, 0, 1));
13884 scoped_ptr<SpdyFrame> body2(spdy_util_secure.ConstructSpdyBodyFrame(1, true)); 13899 scoped_ptr<SpdySerializedFrame> body2(
13900 spdy_util_secure.ConstructSpdyBodyFrame(1, true));
13885 MockRead reads2[] = {CreateMockRead(*resp2, 1), CreateMockRead(*body2, 2), 13901 MockRead reads2[] = {CreateMockRead(*resp2, 1), CreateMockRead(*body2, 2),
13886 MockRead(ASYNC, OK, 3)}; 13902 MockRead(ASYNC, OK, 3)};
13887 13903
13888 SequencedSocketData data2(reads2, arraysize(reads2), writes2, 13904 SequencedSocketData data2(reads2, arraysize(reads2), writes2,
13889 arraysize(writes2)); 13905 arraysize(writes2));
13890 MockConnect connect_data2(ASYNC, OK); 13906 MockConnect connect_data2(ASYNC, OK);
13891 data2.set_connect_data(connect_data2); 13907 data2.set_connect_data(connect_data2);
13892 13908
13893 // Set up a proxy config that sends HTTP requests to a proxy, and 13909 // Set up a proxy config that sends HTTP requests to a proxy, and
13894 // all others direct. 13910 // all others direct.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
13959 // SpdySession) do work. http://crbug.com/224701 13975 // SpdySession) do work. http://crbug.com/224701
13960 TEST_P(HttpNetworkTransactionTest, ErrorSocketNotConnected) { 13976 TEST_P(HttpNetworkTransactionTest, ErrorSocketNotConnected) {
13961 const std::string https_url = "https://www.example.org/"; 13977 const std::string https_url = "https://www.example.org/";
13962 13978
13963 MockRead reads1[] = { 13979 MockRead reads1[] = {
13964 MockRead(SYNCHRONOUS, ERR_CONNECTION_CLOSED, 0) 13980 MockRead(SYNCHRONOUS, ERR_CONNECTION_CLOSED, 0)
13965 }; 13981 };
13966 13982
13967 SequencedSocketData data1(reads1, arraysize(reads1), NULL, 0); 13983 SequencedSocketData data1(reads1, arraysize(reads1), NULL, 0);
13968 13984
13969 scoped_ptr<SpdyFrame> req2( 13985 scoped_ptr<SpdySerializedFrame> req2(
13970 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, MEDIUM)); 13986 spdy_util_.ConstructSpdyGet(https_url.c_str(), 1, MEDIUM));
13971 MockWrite writes2[] = { 13987 MockWrite writes2[] = {
13972 CreateMockWrite(*req2, 0), 13988 CreateMockWrite(*req2, 0),
13973 }; 13989 };
13974 13990
13975 scoped_ptr<SpdyFrame> resp2(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 13991 scoped_ptr<SpdySerializedFrame> resp2(
13976 scoped_ptr<SpdyFrame> body2(spdy_util_.ConstructSpdyBodyFrame(1, true)); 13992 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
13993 scoped_ptr<SpdySerializedFrame> body2(
13994 spdy_util_.ConstructSpdyBodyFrame(1, true));
13977 MockRead reads2[] = { 13995 MockRead reads2[] = {
13978 CreateMockRead(*resp2, 1), 13996 CreateMockRead(*resp2, 1),
13979 CreateMockRead(*body2, 2), 13997 CreateMockRead(*body2, 2),
13980 MockRead(ASYNC, OK, 3) // EOF 13998 MockRead(ASYNC, OK, 3) // EOF
13981 }; 13999 };
13982 14000
13983 SequencedSocketData data2(reads2, arraysize(reads2), writes2, 14001 SequencedSocketData data2(reads2, arraysize(reads2), writes2,
13984 arraysize(writes2)); 14002 arraysize(writes2));
13985 14003
13986 SSLSocketDataProvider ssl1(ASYNC, OK); 14004 SSLSocketDataProvider ssl1(ASYNC, OK);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
14033 session_deps_.host_resolver->rules()->AddRule("www.b.com", "10.0.0.2"); 14051 session_deps_.host_resolver->rules()->AddRule("www.b.com", "10.0.0.2");
14034 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 14052 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
14035 14053
14036 SSLSocketDataProvider ssl1(ASYNC, OK); 14054 SSLSocketDataProvider ssl1(ASYNC, OK);
14037 ssl1.SetNextProto(GetProtocol()); 14055 ssl1.SetNextProto(GetProtocol());
14038 SSLSocketDataProvider ssl2(ASYNC, OK); 14056 SSLSocketDataProvider ssl2(ASYNC, OK);
14039 ssl2.SetNextProto(GetProtocol()); 14057 ssl2.SetNextProto(GetProtocol());
14040 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1); 14058 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl1);
14041 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2); 14059 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl2);
14042 14060
14043 scoped_ptr<SpdyFrame> host1_req( 14061 scoped_ptr<SpdySerializedFrame> host1_req(
14044 spdy_util_.ConstructSpdyGet("https://www.a.com", 1, DEFAULT_PRIORITY)); 14062 spdy_util_.ConstructSpdyGet("https://www.a.com", 1, DEFAULT_PRIORITY));
14045 MockWrite spdy1_writes[] = { 14063 MockWrite spdy1_writes[] = {
14046 CreateMockWrite(*host1_req, 0), 14064 CreateMockWrite(*host1_req, 0),
14047 }; 14065 };
14048 scoped_ptr<SpdyFrame> host1_resp( 14066 scoped_ptr<SpdySerializedFrame> host1_resp(
14049 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); 14067 spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1));
14050 scoped_ptr<SpdyFrame> host1_resp_body( 14068 scoped_ptr<SpdySerializedFrame> host1_resp_body(
14051 spdy_util_.ConstructSpdyBodyFrame(1, true)); 14069 spdy_util_.ConstructSpdyBodyFrame(1, true));
14052 MockRead spdy1_reads[] = { 14070 MockRead spdy1_reads[] = {
14053 CreateMockRead(*host1_resp, 1), CreateMockRead(*host1_resp_body, 2), 14071 CreateMockRead(*host1_resp, 1), CreateMockRead(*host1_resp_body, 2),
14054 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), 14072 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3),
14055 }; 14073 };
14056 14074
14057 // Use a separate test instance for the separate SpdySession that will be 14075 // Use a separate test instance for the separate SpdySession that will be
14058 // created. 14076 // created.
14059 SpdyTestUtil spdy_util_2(GetProtocol(), GetDependenciesFromPriority()); 14077 SpdyTestUtil spdy_util_2(GetProtocol(), GetDependenciesFromPriority());
14060 scoped_ptr<SequencedSocketData> spdy1_data( 14078 scoped_ptr<SequencedSocketData> spdy1_data(
14061 new SequencedSocketData(spdy1_reads, arraysize(spdy1_reads), spdy1_writes, 14079 new SequencedSocketData(spdy1_reads, arraysize(spdy1_reads), spdy1_writes,
14062 arraysize(spdy1_writes))); 14080 arraysize(spdy1_writes)));
14063 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get()); 14081 session_deps_.socket_factory->AddSocketDataProvider(spdy1_data.get());
14064 14082
14065 scoped_ptr<SpdyFrame> host2_req( 14083 scoped_ptr<SpdySerializedFrame> host2_req(
14066 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY)); 14084 spdy_util_2.ConstructSpdyGet("https://www.b.com", 1, DEFAULT_PRIORITY));
14067 MockWrite spdy2_writes[] = { 14085 MockWrite spdy2_writes[] = {
14068 CreateMockWrite(*host2_req, 0), 14086 CreateMockWrite(*host2_req, 0),
14069 }; 14087 };
14070 scoped_ptr<SpdyFrame> host2_resp( 14088 scoped_ptr<SpdySerializedFrame> host2_resp(
14071 spdy_util_2.ConstructSpdyGetSynReply(NULL, 0, 1)); 14089 spdy_util_2.ConstructSpdyGetSynReply(NULL, 0, 1));
14072 scoped_ptr<SpdyFrame> host2_resp_body( 14090 scoped_ptr<SpdySerializedFrame> host2_resp_body(
14073 spdy_util_2.ConstructSpdyBodyFrame(1, true)); 14091 spdy_util_2.ConstructSpdyBodyFrame(1, true));
14074 MockRead spdy2_reads[] = { 14092 MockRead spdy2_reads[] = {
14075 CreateMockRead(*host2_resp, 1), CreateMockRead(*host2_resp_body, 2), 14093 CreateMockRead(*host2_resp, 1), CreateMockRead(*host2_resp_body, 2),
14076 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3), 14094 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 3),
14077 }; 14095 };
14078 14096
14079 scoped_ptr<SequencedSocketData> spdy2_data( 14097 scoped_ptr<SequencedSocketData> spdy2_data(
14080 new SequencedSocketData(spdy2_reads, arraysize(spdy2_reads), spdy2_writes, 14098 new SequencedSocketData(spdy2_reads, arraysize(spdy2_reads), spdy2_writes,
14081 arraysize(spdy2_writes))); 14099 arraysize(spdy2_writes)));
14082 session_deps_.socket_factory->AddSocketDataProvider(spdy2_data.get()); 14100 session_deps_.socket_factory->AddSocketDataProvider(spdy2_data.get());
(...skipping 1844 matching lines...) Expand 10 before | Expand all | Expand 10 after
15927 HttpRequestInfo request; 15945 HttpRequestInfo request;
15928 request.url = GURL(https_url); 15946 request.url = GURL(https_url);
15929 request.method = "GET"; 15947 request.method = "GET";
15930 15948
15931 SSLSocketDataProvider ssl(ASYNC, OK); 15949 SSLSocketDataProvider ssl(ASYNC, OK);
15932 ssl.token_binding_negotiated = true; 15950 ssl.token_binding_negotiated = true;
15933 ssl.token_binding_key_param = TB_PARAM_ECDSAP256; 15951 ssl.token_binding_key_param = TB_PARAM_ECDSAP256;
15934 ssl.SetNextProto(GetProtocol()); 15952 ssl.SetNextProto(GetProtocol());
15935 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 15953 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
15936 15954
15937 scoped_ptr<SpdyFrame> resp( 15955 scoped_ptr<SpdySerializedFrame> resp(
15938 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1)); 15956 spdy_util_.ConstructSpdyGetSynReply(nullptr, 0, 1));
15939 scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); 15957 scoped_ptr<SpdySerializedFrame> body(
15958 spdy_util_.ConstructSpdyBodyFrame(1, true));
15940 MockRead reads[] = {CreateMockRead(*resp), CreateMockRead(*body), 15959 MockRead reads[] = {CreateMockRead(*resp), CreateMockRead(*body),
15941 MockRead(ASYNC, ERR_IO_PENDING)}; 15960 MockRead(ASYNC, ERR_IO_PENDING)};
15942 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); 15961 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0);
15943 session_deps_.socket_factory->AddSocketDataProvider(&data); 15962 session_deps_.socket_factory->AddSocketDataProvider(&data);
15944 session_deps_.channel_id_service.reset(new ChannelIDService( 15963 session_deps_.channel_id_service.reset(new ChannelIDService(
15945 new DefaultChannelIDStore(nullptr), base::ThreadTaskRunnerHandle::Get())); 15964 new DefaultChannelIDStore(nullptr), base::ThreadTaskRunnerHandle::Get()));
15946 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15965 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15947 15966
15948 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 15967 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
15949 TestCompletionCallback callback; 15968 TestCompletionCallback callback;
15950 EXPECT_EQ(ERR_IO_PENDING, 15969 EXPECT_EQ(ERR_IO_PENDING,
15951 trans.Start(&request, callback.callback(), BoundNetLog())); 15970 trans.Start(&request, callback.callback(), BoundNetLog()));
15952 base::MessageLoop::current()->RunUntilIdle(); 15971 base::MessageLoop::current()->RunUntilIdle();
15953 15972
15954 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 15973 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
15955 HttpRequestHeaders headers; 15974 HttpRequestHeaders headers;
15956 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 15975 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
15957 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 15976 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
15958 } 15977 }
15959 #endif // !defined(OS_IOS) 15978 #endif // !defined(OS_IOS)
15960 15979
15961 } // namespace net 15980 } // 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