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 |