| 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 9196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9207 std::string expected_group_name; | 9207 std::string expected_group_name; |
| 9208 bool ssl; | 9208 bool ssl; |
| 9209 }; | 9209 }; |
| 9210 | 9210 |
| 9211 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( | 9211 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( |
| 9212 SpdySessionDependencies* session_deps_) { | 9212 SpdySessionDependencies* session_deps_) { |
| 9213 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 9213 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
| 9214 | 9214 |
| 9215 HttpServerProperties* http_server_properties = | 9215 HttpServerProperties* http_server_properties = |
| 9216 session->http_server_properties(); | 9216 session->http_server_properties(); |
| 9217 AlternativeService alternative_service( | 9217 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
| 9218 AlternateProtocolFromNextProto(kProtoHTTP2), "", 444); | |
| 9219 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9218 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 9220 http_server_properties->SetAlternativeService( | 9219 http_server_properties->SetAlternativeService( |
| 9221 url::SchemeHostPort("https", "host.with.alternate", 443), | 9220 url::SchemeHostPort("https", "host.with.alternate", 443), |
| 9222 alternative_service, expiration); | 9221 alternative_service, expiration); |
| 9223 | 9222 |
| 9224 return session; | 9223 return session; |
| 9225 } | 9224 } |
| 9226 | 9225 |
| 9227 int GroupNameTransactionHelper(const std::string& url, | 9226 int GroupNameTransactionHelper(const std::string& url, |
| 9228 HttpNetworkSession* session) { | 9227 HttpNetworkSession* session) { |
| (...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10086 EXPECT_FALSE(response->was_fetched_via_spdy); | 10085 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 10087 EXPECT_FALSE(response->was_alpn_negotiated); | 10086 EXPECT_FALSE(response->was_alpn_negotiated); |
| 10088 | 10087 |
| 10089 std::string response_data; | 10088 std::string response_data; |
| 10090 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 10089 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
| 10091 EXPECT_EQ("hello world", response_data); | 10090 EXPECT_EQ("hello world", response_data); |
| 10092 | 10091 |
| 10093 alternative_service_vector = | 10092 alternative_service_vector = |
| 10094 http_server_properties->GetAlternativeServices(test_server); | 10093 http_server_properties->GetAlternativeServices(test_server); |
| 10095 ASSERT_EQ(1u, alternative_service_vector.size()); | 10094 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 10096 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoHTTP2), | 10095 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[0].protocol); |
| 10097 alternative_service_vector[0].protocol); | |
| 10098 EXPECT_EQ("mail.example.org", alternative_service_vector[0].host); | 10096 EXPECT_EQ("mail.example.org", alternative_service_vector[0].host); |
| 10099 EXPECT_EQ(443, alternative_service_vector[0].port); | 10097 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 10100 } | 10098 } |
| 10101 | 10099 |
| 10102 // Regression test for https://crbug.com/615497. | 10100 // Regression test for https://crbug.com/615497. |
| 10103 TEST_F(HttpNetworkTransactionTest, | 10101 TEST_F(HttpNetworkTransactionTest, |
| 10104 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { | 10102 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { |
| 10105 MockRead data_reads[] = { | 10103 MockRead data_reads[] = { |
| 10106 MockRead("HTTP/1.1 200 OK\r\n"), | 10104 MockRead("HTTP/1.1 200 OK\r\n"), |
| 10107 MockRead(kAlternativeServiceHttpHeader), | 10105 MockRead(kAlternativeServiceHttpHeader), |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10175 MockRead(ASYNC, OK), | 10173 MockRead(ASYNC, OK), |
| 10176 }; | 10174 }; |
| 10177 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, | 10175 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
| 10178 0); | 10176 0); |
| 10179 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10177 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10180 | 10178 |
| 10181 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10179 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10182 | 10180 |
| 10183 HttpServerProperties* http_server_properties = | 10181 HttpServerProperties* http_server_properties = |
| 10184 session->http_server_properties(); | 10182 session->http_server_properties(); |
| 10185 AlternativeService alternative_service( | 10183 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", |
| 10186 AlternateProtocolFromNextProto(kProtoHTTP2), "different.example.org", | 10184 444); |
| 10187 444); | |
| 10188 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10185 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10189 http_server_properties->SetAlternativeService( | 10186 http_server_properties->SetAlternativeService( |
| 10190 url::SchemeHostPort(request.url), alternative_service, expiration); | 10187 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10191 | 10188 |
| 10192 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10189 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10193 TestCompletionCallback callback; | 10190 TestCompletionCallback callback; |
| 10194 | 10191 |
| 10195 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10192 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10196 // Alternative service is not used, request fails. | 10193 // Alternative service is not used, request fails. |
| 10197 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10194 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 10216 MockRead(ASYNC, OK), | 10213 MockRead(ASYNC, OK), |
| 10217 }; | 10214 }; |
| 10218 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, | 10215 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
| 10219 0); | 10216 0); |
| 10220 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10217 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10221 | 10218 |
| 10222 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10219 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10223 | 10220 |
| 10224 HttpServerProperties* http_server_properties = | 10221 HttpServerProperties* http_server_properties = |
| 10225 session->http_server_properties(); | 10222 session->http_server_properties(); |
| 10226 AlternativeService alternative_service( | 10223 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
| 10227 AlternateProtocolFromNextProto(kProtoHTTP2), "", 444); | |
| 10228 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10224 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10229 http_server_properties->SetAlternativeService( | 10225 http_server_properties->SetAlternativeService( |
| 10230 url::SchemeHostPort(request.url), alternative_service, expiration); | 10226 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10231 | 10227 |
| 10232 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10228 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10233 TestCompletionCallback callback; | 10229 TestCompletionCallback callback; |
| 10234 | 10230 |
| 10235 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10231 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10236 // Alternative service is not used, request fails. | 10232 // Alternative service is not used, request fails. |
| 10237 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10233 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
| 10238 } | 10234 } |
| 10239 | 10235 |
| 10240 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10236 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { |
| 10241 // Set an alternative service for origin. | 10237 // Set an alternative service for origin. |
| 10242 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10238 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10243 HttpServerProperties* http_server_properties = | 10239 HttpServerProperties* http_server_properties = |
| 10244 session->http_server_properties(); | 10240 session->http_server_properties(); |
| 10245 url::SchemeHostPort test_server("https", "www.example.org", 443); | 10241 url::SchemeHostPort test_server("https", "www.example.org", 443); |
| 10246 AlternativeService alternative_service(QUIC, "", 80); | 10242 AlternativeService alternative_service(kProtoQUIC, "", 80); |
| 10247 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10243 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10248 http_server_properties->SetAlternativeService( | 10244 http_server_properties->SetAlternativeService( |
| 10249 test_server, alternative_service, expiration); | 10245 test_server, alternative_service, expiration); |
| 10250 AlternativeServiceVector alternative_service_vector = | 10246 AlternativeServiceVector alternative_service_vector = |
| 10251 http_server_properties->GetAlternativeServices(test_server); | 10247 http_server_properties->GetAlternativeServices(test_server); |
| 10252 EXPECT_EQ(1u, alternative_service_vector.size()); | 10248 EXPECT_EQ(1u, alternative_service_vector.size()); |
| 10253 | 10249 |
| 10254 // Send a clear header. | 10250 // Send a clear header. |
| 10255 MockRead data_reads[] = { | 10251 MockRead data_reads[] = { |
| 10256 MockRead("HTTP/1.1 200 OK\r\n"), | 10252 MockRead("HTTP/1.1 200 OK\r\n"), |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10335 EXPECT_FALSE(response->was_fetched_via_spdy); | 10331 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 10336 EXPECT_FALSE(response->was_alpn_negotiated); | 10332 EXPECT_FALSE(response->was_alpn_negotiated); |
| 10337 | 10333 |
| 10338 std::string response_data; | 10334 std::string response_data; |
| 10339 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 10335 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
| 10340 EXPECT_EQ("hello world", response_data); | 10336 EXPECT_EQ("hello world", response_data); |
| 10341 | 10337 |
| 10342 alternative_service_vector = | 10338 alternative_service_vector = |
| 10343 http_server_properties->GetAlternativeServices(test_server); | 10339 http_server_properties->GetAlternativeServices(test_server); |
| 10344 ASSERT_EQ(2u, alternative_service_vector.size()); | 10340 ASSERT_EQ(2u, alternative_service_vector.size()); |
| 10345 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoHTTP2), | 10341 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[0].protocol); |
| 10346 alternative_service_vector[0].protocol); | |
| 10347 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); | 10342 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); |
| 10348 EXPECT_EQ(443, alternative_service_vector[0].port); | 10343 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 10349 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoHTTP2), | 10344 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[1].protocol); |
| 10350 alternative_service_vector[1].protocol); | |
| 10351 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); | 10345 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); |
| 10352 EXPECT_EQ(1234, alternative_service_vector[1].port); | 10346 EXPECT_EQ(1234, alternative_service_vector[1].port); |
| 10353 } | 10347 } |
| 10354 | 10348 |
| 10355 TEST_F(HttpNetworkTransactionTest, IdentifyQuicBroken) { | 10349 TEST_F(HttpNetworkTransactionTest, IdentifyQuicBroken) { |
| 10356 url::SchemeHostPort server("https", "origin.example.org", 443); | 10350 url::SchemeHostPort server("https", "origin.example.org", 443); |
| 10357 HostPortPair alternative("alternative.example.org", 443); | 10351 HostPortPair alternative("alternative.example.org", 443); |
| 10358 std::string origin_url = "https://origin.example.org:443"; | 10352 std::string origin_url = "https://origin.example.org:443"; |
| 10359 std::string alternative_url = "https://alternative.example.org:443"; | 10353 std::string alternative_url = "https://alternative.example.org:443"; |
| 10360 | 10354 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 10381 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 10375 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 10382 | 10376 |
| 10383 StaticSocketDataProvider data_refused; | 10377 StaticSocketDataProvider data_refused; |
| 10384 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10378 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 10385 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10379 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 10386 | 10380 |
| 10387 // Set up a QUIC alternative service for server. | 10381 // Set up a QUIC alternative service for server. |
| 10388 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10382 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10389 HttpServerProperties* http_server_properties = | 10383 HttpServerProperties* http_server_properties = |
| 10390 session->http_server_properties(); | 10384 session->http_server_properties(); |
| 10391 AlternativeService alternative_service(QUIC, alternative); | 10385 AlternativeService alternative_service(kProtoQUIC, alternative); |
| 10392 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10386 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10393 http_server_properties->SetAlternativeService(server, alternative_service, | 10387 http_server_properties->SetAlternativeService(server, alternative_service, |
| 10394 expiration); | 10388 expiration); |
| 10395 // Mark the QUIC alternative service as broken. | 10389 // Mark the QUIC alternative service as broken. |
| 10396 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10390 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
| 10397 | 10391 |
| 10398 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10392 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10399 HttpRequestInfo request; | 10393 HttpRequestInfo request; |
| 10400 request.method = "GET"; | 10394 request.method = "GET"; |
| 10401 request.url = GURL(origin_url); | 10395 request.url = GURL(origin_url); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10443 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10437 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 10444 | 10438 |
| 10445 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10439 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10446 HttpServerProperties* http_server_properties = | 10440 HttpServerProperties* http_server_properties = |
| 10447 session->http_server_properties(); | 10441 session->http_server_properties(); |
| 10448 | 10442 |
| 10449 // Set up two QUIC alternative services for server. | 10443 // Set up two QUIC alternative services for server. |
| 10450 AlternativeServiceInfoVector alternative_service_info_vector; | 10444 AlternativeServiceInfoVector alternative_service_info_vector; |
| 10451 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10445 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10452 | 10446 |
| 10453 AlternativeService alternative_service1(QUIC, alternative1); | 10447 AlternativeService alternative_service1(kProtoQUIC, alternative1); |
| 10454 AlternativeServiceInfo alternative_service_info1(alternative_service1, | 10448 AlternativeServiceInfo alternative_service_info1(alternative_service1, |
| 10455 expiration); | 10449 expiration); |
| 10456 alternative_service_info_vector.push_back(alternative_service_info1); | 10450 alternative_service_info_vector.push_back(alternative_service_info1); |
| 10457 AlternativeService alternative_service2(QUIC, alternative2); | 10451 AlternativeService alternative_service2(kProtoQUIC, alternative2); |
| 10458 AlternativeServiceInfo alternative_service_info2(alternative_service2, | 10452 AlternativeServiceInfo alternative_service_info2(alternative_service2, |
| 10459 expiration); | 10453 expiration); |
| 10460 alternative_service_info_vector.push_back(alternative_service_info2); | 10454 alternative_service_info_vector.push_back(alternative_service_info2); |
| 10461 | 10455 |
| 10462 http_server_properties->SetAlternativeServices( | 10456 http_server_properties->SetAlternativeServices( |
| 10463 server, alternative_service_info_vector); | 10457 server, alternative_service_info_vector); |
| 10464 | 10458 |
| 10465 // Mark one of the QUIC alternative service as broken. | 10459 // Mark one of the QUIC alternative service as broken. |
| 10466 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); | 10460 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); |
| 10467 | 10461 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10504 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10498 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10505 | 10499 |
| 10506 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10500 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10507 | 10501 |
| 10508 HttpServerProperties* http_server_properties = | 10502 HttpServerProperties* http_server_properties = |
| 10509 session->http_server_properties(); | 10503 session->http_server_properties(); |
| 10510 const url::SchemeHostPort server(request.url); | 10504 const url::SchemeHostPort server(request.url); |
| 10511 // Port must be < 1024, or the header will be ignored (since initial port was | 10505 // Port must be < 1024, or the header will be ignored (since initial port was |
| 10512 // port 80 (another restricted port). | 10506 // port 80 (another restricted port). |
| 10513 const AlternativeService alternative_service( | 10507 const AlternativeService alternative_service( |
| 10514 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", | 10508 kProtoHTTP2, "www.example.org", |
| 10515 666); // Port is ignored by MockConnect anyway. | 10509 666); // Port is ignored by MockConnect anyway. |
| 10516 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10510 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10517 http_server_properties->SetAlternativeService(server, alternative_service, | 10511 http_server_properties->SetAlternativeService(server, alternative_service, |
| 10518 expiration); | 10512 expiration); |
| 10519 | 10513 |
| 10520 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10514 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10521 TestCompletionCallback callback; | 10515 TestCompletionCallback callback; |
| 10522 | 10516 |
| 10523 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10517 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10524 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10518 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10566 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10560 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10567 SSLSocketDataProvider ssl_http11(ASYNC, OK); | 10561 SSLSocketDataProvider ssl_http11(ASYNC, OK); |
| 10568 ssl_http11.next_proto = kProtoHTTP11; | 10562 ssl_http11.next_proto = kProtoHTTP11; |
| 10569 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); | 10563 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); |
| 10570 | 10564 |
| 10571 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10565 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10572 | 10566 |
| 10573 HttpServerProperties* http_server_properties = | 10567 HttpServerProperties* http_server_properties = |
| 10574 session->http_server_properties(); | 10568 session->http_server_properties(); |
| 10575 const int kUnrestrictedAlternatePort = 1024; | 10569 const int kUnrestrictedAlternatePort = 1024; |
| 10576 AlternativeService alternative_service( | 10570 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10577 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", | 10571 kUnrestrictedAlternatePort); |
| 10578 kUnrestrictedAlternatePort); | |
| 10579 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10572 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10580 http_server_properties->SetAlternativeService( | 10573 http_server_properties->SetAlternativeService( |
| 10581 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10574 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10582 expiration); | 10575 expiration); |
| 10583 | 10576 |
| 10584 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10577 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10585 TestCompletionCallback callback; | 10578 TestCompletionCallback callback; |
| 10586 | 10579 |
| 10587 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10580 int rv = trans.Start(&restricted_port_request, callback.callback(), |
| 10588 NetLogWithSource()); | 10581 NetLogWithSource()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 10617 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10610 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10618 SSLSocketDataProvider ssl_http11(ASYNC, OK); | 10611 SSLSocketDataProvider ssl_http11(ASYNC, OK); |
| 10619 ssl_http11.next_proto = kProtoHTTP11; | 10612 ssl_http11.next_proto = kProtoHTTP11; |
| 10620 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); | 10613 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); |
| 10621 | 10614 |
| 10622 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10615 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10623 | 10616 |
| 10624 HttpServerProperties* http_server_properties = | 10617 HttpServerProperties* http_server_properties = |
| 10625 session->http_server_properties(); | 10618 session->http_server_properties(); |
| 10626 const int kUnrestrictedAlternatePort = 1024; | 10619 const int kUnrestrictedAlternatePort = 1024; |
| 10627 AlternativeService alternative_service( | 10620 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10628 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", | 10621 kUnrestrictedAlternatePort); |
| 10629 kUnrestrictedAlternatePort); | |
| 10630 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10622 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10631 http_server_properties->SetAlternativeService( | 10623 http_server_properties->SetAlternativeService( |
| 10632 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10624 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10633 expiration); | 10625 expiration); |
| 10634 | 10626 |
| 10635 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10627 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10636 TestCompletionCallback callback; | 10628 TestCompletionCallback callback; |
| 10637 | 10629 |
| 10638 EXPECT_EQ(ERR_IO_PENDING, | 10630 EXPECT_EQ(ERR_IO_PENDING, |
| 10639 trans.Start(&restricted_port_request, callback.callback(), | 10631 trans.Start(&restricted_port_request, callback.callback(), |
| (...skipping 27 matching lines...) Expand all Loading... |
| 10667 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10659 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10668 | 10660 |
| 10669 SSLSocketDataProvider ssl(ASYNC, OK); | 10661 SSLSocketDataProvider ssl(ASYNC, OK); |
| 10670 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 10662 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 10671 | 10663 |
| 10672 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10664 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10673 | 10665 |
| 10674 HttpServerProperties* http_server_properties = | 10666 HttpServerProperties* http_server_properties = |
| 10675 session->http_server_properties(); | 10667 session->http_server_properties(); |
| 10676 const int kRestrictedAlternatePort = 80; | 10668 const int kRestrictedAlternatePort = 80; |
| 10677 AlternativeService alternative_service( | 10669 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10678 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", | 10670 kRestrictedAlternatePort); |
| 10679 kRestrictedAlternatePort); | |
| 10680 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10671 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10681 http_server_properties->SetAlternativeService( | 10672 http_server_properties->SetAlternativeService( |
| 10682 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10673 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10683 expiration); | 10674 expiration); |
| 10684 | 10675 |
| 10685 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10676 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10686 TestCompletionCallback callback; | 10677 TestCompletionCallback callback; |
| 10687 | 10678 |
| 10688 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10679 int rv = trans.Start(&restricted_port_request, callback.callback(), |
| 10689 NetLogWithSource()); | 10680 NetLogWithSource()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 10717 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10708 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10718 SSLSocketDataProvider ssl_http11(ASYNC, OK); | 10709 SSLSocketDataProvider ssl_http11(ASYNC, OK); |
| 10719 ssl_http11.next_proto = kProtoHTTP11; | 10710 ssl_http11.next_proto = kProtoHTTP11; |
| 10720 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); | 10711 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); |
| 10721 | 10712 |
| 10722 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10713 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10723 | 10714 |
| 10724 HttpServerProperties* http_server_properties = | 10715 HttpServerProperties* http_server_properties = |
| 10725 session->http_server_properties(); | 10716 session->http_server_properties(); |
| 10726 const int kRestrictedAlternatePort = 80; | 10717 const int kRestrictedAlternatePort = 80; |
| 10727 AlternativeService alternative_service( | 10718 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10728 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", | 10719 kRestrictedAlternatePort); |
| 10729 kRestrictedAlternatePort); | |
| 10730 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10720 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10731 http_server_properties->SetAlternativeService( | 10721 http_server_properties->SetAlternativeService( |
| 10732 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10722 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10733 expiration); | 10723 expiration); |
| 10734 | 10724 |
| 10735 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10725 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10736 TestCompletionCallback callback; | 10726 TestCompletionCallback callback; |
| 10737 | 10727 |
| 10738 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10728 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
| 10739 NetLogWithSource()); | 10729 NetLogWithSource()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 10767 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10757 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10768 | 10758 |
| 10769 SSLSocketDataProvider ssl(ASYNC, OK); | 10759 SSLSocketDataProvider ssl(ASYNC, OK); |
| 10770 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 10760 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| 10771 | 10761 |
| 10772 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10762 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10773 | 10763 |
| 10774 HttpServerProperties* http_server_properties = | 10764 HttpServerProperties* http_server_properties = |
| 10775 session->http_server_properties(); | 10765 session->http_server_properties(); |
| 10776 const int kUnrestrictedAlternatePort = 1025; | 10766 const int kUnrestrictedAlternatePort = 1025; |
| 10777 AlternativeService alternative_service( | 10767 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10778 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", | 10768 kUnrestrictedAlternatePort); |
| 10779 kUnrestrictedAlternatePort); | |
| 10780 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10769 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10781 http_server_properties->SetAlternativeService( | 10770 http_server_properties->SetAlternativeService( |
| 10782 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10771 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10783 expiration); | 10772 expiration); |
| 10784 | 10773 |
| 10785 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10774 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10786 TestCompletionCallback callback; | 10775 TestCompletionCallback callback; |
| 10787 | 10776 |
| 10788 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10777 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
| 10789 NetLogWithSource()); | 10778 NetLogWithSource()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 10809 }; | 10798 }; |
| 10810 StaticSocketDataProvider data( | 10799 StaticSocketDataProvider data( |
| 10811 data_reads, arraysize(data_reads), NULL, 0); | 10800 data_reads, arraysize(data_reads), NULL, 0); |
| 10812 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10801 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 10813 | 10802 |
| 10814 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10803 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10815 | 10804 |
| 10816 HttpServerProperties* http_server_properties = | 10805 HttpServerProperties* http_server_properties = |
| 10817 session->http_server_properties(); | 10806 session->http_server_properties(); |
| 10818 const int kUnsafePort = 7; | 10807 const int kUnsafePort = 7; |
| 10819 AlternativeService alternative_service( | 10808 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10820 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", | 10809 kUnsafePort); |
| 10821 kUnsafePort); | |
| 10822 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10810 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10823 http_server_properties->SetAlternativeService( | 10811 http_server_properties->SetAlternativeService( |
| 10824 url::SchemeHostPort(request.url), alternative_service, expiration); | 10812 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10825 | 10813 |
| 10826 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10814 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10827 TestCompletionCallback callback; | 10815 TestCompletionCallback callback; |
| 10828 | 10816 |
| 10829 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10817 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10830 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10818 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10831 // The HTTP request should succeed. | 10819 // The HTTP request should succeed. |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11169 | 11157 |
| 11170 session_deps_.net_log = &net_log; | 11158 session_deps_.net_log = &net_log; |
| 11171 | 11159 |
| 11172 // Configure alternative service with a hostname that is not bypassed by the | 11160 // Configure alternative service with a hostname that is not bypassed by the |
| 11173 // proxy. | 11161 // proxy. |
| 11174 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11162 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 11175 HttpServerProperties* http_server_properties = | 11163 HttpServerProperties* http_server_properties = |
| 11176 session->http_server_properties(); | 11164 session->http_server_properties(); |
| 11177 url::SchemeHostPort server("https", "www.example.org", 443); | 11165 url::SchemeHostPort server("https", "www.example.org", 443); |
| 11178 HostPortPair alternative("www.example.com", 443); | 11166 HostPortPair alternative("www.example.com", 443); |
| 11179 AlternativeService alternative_service( | 11167 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 11180 AlternateProtocolFromNextProto(kProtoHTTP2), alternative); | |
| 11181 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 11168 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 11182 http_server_properties->SetAlternativeService(server, alternative_service, | 11169 http_server_properties->SetAlternativeService(server, alternative_service, |
| 11183 expiration); | 11170 expiration); |
| 11184 | 11171 |
| 11185 // Non-alternative job should hang. | 11172 // Non-alternative job should hang. |
| 11186 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 11173 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 11187 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, | 11174 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, |
| 11188 nullptr, 0); | 11175 nullptr, 0); |
| 11189 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); | 11176 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); |
| 11190 session_deps_.socket_factory->AddSocketDataProvider( | 11177 session_deps_.socket_factory->AddSocketDataProvider( |
| (...skipping 2507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13698 // negotiated. In order to test this, a failed connection to the server is | 13685 // negotiated. In order to test this, a failed connection to the server is |
| 13699 // mocked. This way the request relies on the alternate Job. | 13686 // mocked. This way the request relies on the alternate Job. |
| 13700 StaticSocketDataProvider data_refused; | 13687 StaticSocketDataProvider data_refused; |
| 13701 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 13688 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 13702 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13689 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 13703 | 13690 |
| 13704 // Set up alternative service for server. | 13691 // Set up alternative service for server. |
| 13705 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13692 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13706 HttpServerProperties* http_server_properties = | 13693 HttpServerProperties* http_server_properties = |
| 13707 session->http_server_properties(); | 13694 session->http_server_properties(); |
| 13708 AlternativeService alternative_service( | 13695 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 13709 AlternateProtocolFromNextProto(kProtoHTTP2), alternative); | |
| 13710 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13696 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13711 http_server_properties->SetAlternativeService(server, alternative_service, | 13697 http_server_properties->SetAlternativeService(server, alternative_service, |
| 13712 expiration); | 13698 expiration); |
| 13713 | 13699 |
| 13714 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 13700 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 13715 HttpRequestInfo request; | 13701 HttpRequestInfo request; |
| 13716 request.method = "GET"; | 13702 request.method = "GET"; |
| 13717 request.url = GURL("https://www.example.org:443"); | 13703 request.url = GURL("https://www.example.org:443"); |
| 13718 TestCompletionCallback callback; | 13704 TestCompletionCallback callback; |
| 13719 | 13705 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13766 MockRead("another"), | 13752 MockRead("another"), |
| 13767 }; | 13753 }; |
| 13768 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 13754 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
| 13769 http_writes, arraysize(http_writes)); | 13755 http_writes, arraysize(http_writes)); |
| 13770 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 13756 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 13771 | 13757 |
| 13772 // Set up alternative service for server. | 13758 // Set up alternative service for server. |
| 13773 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13759 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13774 HttpServerProperties* http_server_properties = | 13760 HttpServerProperties* http_server_properties = |
| 13775 session->http_server_properties(); | 13761 session->http_server_properties(); |
| 13776 AlternativeService alternative_service( | 13762 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 13777 AlternateProtocolFromNextProto(kProtoHTTP2), alternative); | |
| 13778 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13763 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13779 http_server_properties->SetAlternativeService(server, alternative_service, | 13764 http_server_properties->SetAlternativeService(server, alternative_service, |
| 13780 expiration); | 13765 expiration); |
| 13781 | 13766 |
| 13782 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 13767 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 13783 HttpRequestInfo request1; | 13768 HttpRequestInfo request1; |
| 13784 request1.method = "GET"; | 13769 request1.method = "GET"; |
| 13785 request1.url = GURL("https://www.example.org:443"); | 13770 request1.url = GURL("https://www.example.org:443"); |
| 13786 request1.load_flags = 0; | 13771 request1.load_flags = 0; |
| 13787 TestCompletionCallback callback1; | 13772 TestCompletionCallback callback1; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13874 // existing HTTP/1.1 connection. In order to test this, a failed connection | 13859 // existing HTTP/1.1 connection. In order to test this, a failed connection |
| 13875 // to the server is mocked. This way |request2| relies on the alternate Job. | 13860 // to the server is mocked. This way |request2| relies on the alternate Job. |
| 13876 StaticSocketDataProvider data_refused; | 13861 StaticSocketDataProvider data_refused; |
| 13877 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 13862 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 13878 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13863 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 13879 | 13864 |
| 13880 // Set up alternative service for server. | 13865 // Set up alternative service for server. |
| 13881 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13866 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13882 HttpServerProperties* http_server_properties = | 13867 HttpServerProperties* http_server_properties = |
| 13883 session->http_server_properties(); | 13868 session->http_server_properties(); |
| 13884 AlternativeService alternative_service( | 13869 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 13885 AlternateProtocolFromNextProto(kProtoHTTP2), alternative); | |
| 13886 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13870 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13887 http_server_properties->SetAlternativeService(server, alternative_service, | 13871 http_server_properties->SetAlternativeService(server, alternative_service, |
| 13888 expiration); | 13872 expiration); |
| 13889 | 13873 |
| 13890 // First transaction to alternative to open an HTTP/1.1 socket. | 13874 // First transaction to alternative to open an HTTP/1.1 socket. |
| 13891 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 13875 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 13892 HttpRequestInfo request1; | 13876 HttpRequestInfo request1; |
| 13893 request1.method = "GET"; | 13877 request1.method = "GET"; |
| 13894 request1.url = GURL(alternative_url); | 13878 request1.url = GURL(alternative_url); |
| 13895 request1.load_flags = 0; | 13879 request1.load_flags = 0; |
| (...skipping 2500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16396 base::RunLoop().RunUntilIdle(); | 16380 base::RunLoop().RunUntilIdle(); |
| 16397 | 16381 |
| 16398 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 16382 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
| 16399 HttpRequestHeaders headers; | 16383 HttpRequestHeaders headers; |
| 16400 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 16384 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
| 16401 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 16385 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
| 16402 } | 16386 } |
| 16403 #endif // !defined(OS_IOS) | 16387 #endif // !defined(OS_IOS) |
| 16404 | 16388 |
| 16405 } // namespace net | 16389 } // namespace net |
| OLD | NEW |