| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <math.h> // ceil | 7 #include <math.h> // ceil |
| 8 #include <stdarg.h> | 8 #include <stdarg.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 8145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8156 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:443"); | 8156 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:443"); |
| 8157 BoundTestNetLog log; | 8157 BoundTestNetLog log; |
| 8158 session_deps_.net_log = log.bound().net_log(); | 8158 session_deps_.net_log = log.bound().net_log(); |
| 8159 | 8159 |
| 8160 session_deps_.proxy_delegate = std::move(proxy_delegate); | 8160 session_deps_.proxy_delegate = std::move(proxy_delegate); |
| 8161 | 8161 |
| 8162 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 8162 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 8163 | 8163 |
| 8164 SpdySerializedFrame stream1_syn( | 8164 SpdySerializedFrame stream1_syn( |
| 8165 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); | 8165 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); |
| 8166 SpdySerializedFrame stream2_priority( |
| 8167 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 8166 | 8168 |
| 8167 MockWrite spdy_writes[] = { | 8169 MockWrite spdy_writes[] = { |
| 8168 CreateMockWrite(stream1_syn, 0, ASYNC), | 8170 CreateMockWrite(stream1_syn, 0, ASYNC), |
| 8171 CreateMockWrite(stream2_priority, 3, ASYNC), |
| 8169 }; | 8172 }; |
| 8170 | 8173 |
| 8171 SpdySerializedFrame stream1_reply( | 8174 SpdySerializedFrame stream1_reply( |
| 8172 spdy_util_.ConstructSpdyGetReply(NULL, 0, 1)); | 8175 spdy_util_.ConstructSpdyGetReply(NULL, 0, 1)); |
| 8173 | 8176 |
| 8174 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); | 8177 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 8175 | 8178 |
| 8176 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( | 8179 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( |
| 8177 NULL, 0, 2, 1, "http://www.another-origin.com/foo.dat")); | 8180 NULL, 0, 2, 1, "http://www.another-origin.com/foo.dat")); |
| 8178 const char kPushedData[] = "pushed"; | 8181 const char kPushedData[] = "pushed"; |
| 8179 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame( | 8182 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame( |
| 8180 2, kPushedData, strlen(kPushedData), true)); | 8183 2, kPushedData, strlen(kPushedData), true)); |
| 8181 | 8184 |
| 8182 MockRead spdy_reads[] = { | 8185 MockRead spdy_reads[] = { |
| 8183 CreateMockRead(stream1_reply, 1, ASYNC), | 8186 CreateMockRead(stream1_reply, 1, ASYNC), |
| 8184 CreateMockRead(stream2_syn, 2, ASYNC), | 8187 CreateMockRead(stream2_syn, 2, ASYNC), |
| 8185 CreateMockRead(stream1_body, 3, ASYNC), | 8188 CreateMockRead(stream1_body, 4, ASYNC), |
| 8186 CreateMockRead(stream2_body, 4, ASYNC), | 8189 CreateMockRead(stream2_body, 5, ASYNC), |
| 8187 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang | 8190 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a hang |
| 8188 }; | 8191 }; |
| 8189 | 8192 |
| 8190 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, | 8193 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
| 8191 arraysize(spdy_writes)); | 8194 arraysize(spdy_writes)); |
| 8192 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 8195 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 8193 // Negotiate SPDY to the proxy | 8196 // Negotiate SPDY to the proxy |
| 8194 SSLSocketDataProvider proxy(ASYNC, OK); | 8197 SSLSocketDataProvider proxy(ASYNC, OK); |
| 8195 proxy.next_proto = kProtoHTTP2; | 8198 proxy.next_proto = kProtoHTTP2; |
| 8196 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); | 8199 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
| 8197 | 8200 |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8348 BoundTestNetLog log; | 8351 BoundTestNetLog log; |
| 8349 session_deps_.net_log = log.bound().net_log(); | 8352 session_deps_.net_log = log.bound().net_log(); |
| 8350 | 8353 |
| 8351 // Enable cross-origin push. | 8354 // Enable cross-origin push. |
| 8352 session_deps_.proxy_delegate = std::move(proxy_delegate); | 8355 session_deps_.proxy_delegate = std::move(proxy_delegate); |
| 8353 | 8356 |
| 8354 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 8357 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 8355 | 8358 |
| 8356 SpdySerializedFrame stream1_syn( | 8359 SpdySerializedFrame stream1_syn( |
| 8357 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); | 8360 spdy_util_.ConstructSpdyGet("http://www.example.org/", 1, LOWEST)); |
| 8361 SpdySerializedFrame stream2_priority( |
| 8362 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 8358 | 8363 |
| 8359 MockWrite spdy_writes[] = { | 8364 MockWrite spdy_writes[] = { |
| 8360 CreateMockWrite(stream1_syn, 0, ASYNC), | 8365 CreateMockWrite(stream1_syn, 0, ASYNC), |
| 8366 CreateMockWrite(stream2_priority, 3, ASYNC), |
| 8361 }; | 8367 }; |
| 8362 | 8368 |
| 8363 SpdySerializedFrame stream1_reply( | 8369 SpdySerializedFrame stream1_reply( |
| 8364 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 8370 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 8365 | 8371 |
| 8366 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( | 8372 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( |
| 8367 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat")); | 8373 nullptr, 0, 2, 1, "https://myproxy:70/foo.dat")); |
| 8368 | 8374 |
| 8369 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); | 8375 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 8370 | 8376 |
| 8371 SpdySerializedFrame stream2_reply( | 8377 SpdySerializedFrame stream2_reply( |
| 8372 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 8378 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 8373 | 8379 |
| 8374 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(1, true)); | 8380 SpdySerializedFrame stream2_body(spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 8375 | 8381 |
| 8376 MockRead spdy_reads[] = { | 8382 MockRead spdy_reads[] = { |
| 8377 CreateMockRead(stream1_reply, 1, ASYNC), | 8383 CreateMockRead(stream1_reply, 1, ASYNC), |
| 8378 CreateMockRead(stream2_syn, 2, ASYNC), | 8384 CreateMockRead(stream2_syn, 2, ASYNC), |
| 8379 CreateMockRead(stream1_body, 3, ASYNC), | 8385 CreateMockRead(stream1_body, 4, ASYNC), |
| 8380 CreateMockRead(stream2_body, 4, ASYNC), | 8386 CreateMockRead(stream2_body, 5, ASYNC), |
| 8381 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5), // Force a hang | 8387 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a hang |
| 8382 }; | 8388 }; |
| 8383 | 8389 |
| 8384 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, | 8390 SequencedSocketData spdy_data(spdy_reads, arraysize(spdy_reads), spdy_writes, |
| 8385 arraysize(spdy_writes)); | 8391 arraysize(spdy_writes)); |
| 8386 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); | 8392 session_deps_.socket_factory->AddSocketDataProvider(&spdy_data); |
| 8387 // Negotiate SPDY to the proxy | 8393 // Negotiate SPDY to the proxy |
| 8388 SSLSocketDataProvider proxy(ASYNC, OK); | 8394 SSLSocketDataProvider proxy(ASYNC, OK); |
| 8389 proxy.next_proto = kProtoHTTP2; | 8395 proxy.next_proto = kProtoHTTP2; |
| 8390 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); | 8396 session_deps_.socket_factory->AddSSLSocketDataProvider(&proxy); |
| 8391 | 8397 |
| (...skipping 8109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16501 base::RunLoop().RunUntilIdle(); | 16507 base::RunLoop().RunUntilIdle(); |
| 16502 | 16508 |
| 16503 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 16509 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
| 16504 HttpRequestHeaders headers; | 16510 HttpRequestHeaders headers; |
| 16505 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 16511 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
| 16506 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 16512 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
| 16507 } | 16513 } |
| 16508 #endif // !defined(OS_IOS) | 16514 #endif // !defined(OS_IOS) |
| 16509 | 16515 |
| 16510 } // namespace net | 16516 } // namespace net |
| OLD | NEW |