| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <math.h> // ceil | 7 #include <math.h> // ceil |
| 8 #include <stdarg.h> | 8 #include <stdarg.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <limits> | 10 #include <limits> |
| (...skipping 1419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |