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 10083 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10094 | 10094 |
10095 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10095 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10096 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10096 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10097 | 10097 |
10098 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10098 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10099 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10099 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10100 | 10100 |
10101 url::SchemeHostPort test_server(request.url); | 10101 url::SchemeHostPort test_server(request.url); |
10102 HttpServerProperties* http_server_properties = | 10102 HttpServerProperties* http_server_properties = |
10103 session->http_server_properties(); | 10103 session->http_server_properties(); |
10104 AlternativeServiceVector alternative_service_vector = | 10104 EXPECT_TRUE( |
10105 http_server_properties->GetAlternativeServices(test_server); | 10105 http_server_properties->GetAlternativeServiceInfos(test_server).empty()); |
10106 EXPECT_TRUE(alternative_service_vector.empty()); | |
10107 | 10106 |
10108 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10107 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10109 | 10108 |
10110 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10109 const HttpResponseInfo* response = trans.GetResponseInfo(); |
10111 ASSERT_TRUE(response); | 10110 ASSERT_TRUE(response); |
10112 ASSERT_TRUE(response->headers); | 10111 ASSERT_TRUE(response->headers); |
10113 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10112 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10114 EXPECT_FALSE(response->was_fetched_via_spdy); | 10113 EXPECT_FALSE(response->was_fetched_via_spdy); |
10115 EXPECT_FALSE(response->was_alpn_negotiated); | 10114 EXPECT_FALSE(response->was_alpn_negotiated); |
10116 | 10115 |
10117 std::string response_data; | 10116 std::string response_data; |
10118 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 10117 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
10119 EXPECT_EQ("hello world", response_data); | 10118 EXPECT_EQ("hello world", response_data); |
10120 | 10119 |
10121 alternative_service_vector = | 10120 AlternativeServiceInfoVector alternative_service_info_vector = |
10122 http_server_properties->GetAlternativeServices(test_server); | 10121 http_server_properties->GetAlternativeServiceInfos(test_server); |
10123 ASSERT_EQ(1u, alternative_service_vector.size()); | 10122 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
10124 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[0].protocol); | 10123 AlternativeService alternative_service(kProtoHTTP2, "mail.example.org", 443); |
10125 EXPECT_EQ("mail.example.org", alternative_service_vector[0].host); | 10124 EXPECT_EQ(alternative_service, |
10126 EXPECT_EQ(443, alternative_service_vector[0].port); | 10125 alternative_service_info_vector[0].alternative_service); |
10127 } | 10126 } |
10128 | 10127 |
10129 // Regression test for https://crbug.com/615497. | 10128 // Regression test for https://crbug.com/615497. |
10130 TEST_F(HttpNetworkTransactionTest, | 10129 TEST_F(HttpNetworkTransactionTest, |
10131 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { | 10130 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { |
10132 MockRead data_reads[] = { | 10131 MockRead data_reads[] = { |
10133 MockRead("HTTP/1.1 200 OK\r\n"), | 10132 MockRead("HTTP/1.1 200 OK\r\n"), |
10134 MockRead(kAlternativeServiceHttpHeader), | 10133 MockRead(kAlternativeServiceHttpHeader), |
10135 MockRead("\r\n"), | 10134 MockRead("\r\n"), |
10136 MockRead("hello world"), | 10135 MockRead("hello world"), |
10137 MockRead(SYNCHRONOUS, OK), | 10136 MockRead(SYNCHRONOUS, OK), |
10138 }; | 10137 }; |
10139 | 10138 |
10140 HttpRequestInfo request; | 10139 HttpRequestInfo request; |
10141 request.method = "GET"; | 10140 request.method = "GET"; |
10142 request.url = GURL("http://www.example.org/"); | 10141 request.url = GURL("http://www.example.org/"); |
10143 request.load_flags = 0; | 10142 request.load_flags = 0; |
10144 | 10143 |
10145 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 10144 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
10146 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10145 session_deps_.socket_factory->AddSocketDataProvider(&data); |
10147 | 10146 |
10148 TestCompletionCallback callback; | 10147 TestCompletionCallback callback; |
10149 | 10148 |
10150 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10149 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10151 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10150 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10152 | 10151 |
10153 url::SchemeHostPort test_server(request.url); | 10152 url::SchemeHostPort test_server(request.url); |
10154 HttpServerProperties* http_server_properties = | 10153 HttpServerProperties* http_server_properties = |
10155 session->http_server_properties(); | 10154 session->http_server_properties(); |
10156 AlternativeServiceVector alternative_service_vector = | 10155 EXPECT_TRUE( |
10157 http_server_properties->GetAlternativeServices(test_server); | 10156 http_server_properties->GetAlternativeServiceInfos(test_server).empty()); |
10158 EXPECT_TRUE(alternative_service_vector.empty()); | |
10159 | 10157 |
10160 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10158 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10161 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10159 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10162 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10160 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10163 | 10161 |
10164 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10162 const HttpResponseInfo* response = trans.GetResponseInfo(); |
10165 ASSERT_TRUE(response); | 10163 ASSERT_TRUE(response); |
10166 ASSERT_TRUE(response->headers); | 10164 ASSERT_TRUE(response->headers); |
10167 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10165 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10168 EXPECT_FALSE(response->was_fetched_via_spdy); | 10166 EXPECT_FALSE(response->was_fetched_via_spdy); |
10169 EXPECT_FALSE(response->was_alpn_negotiated); | 10167 EXPECT_FALSE(response->was_alpn_negotiated); |
10170 | 10168 |
10171 std::string response_data; | 10169 std::string response_data; |
10172 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 10170 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
10173 EXPECT_EQ("hello world", response_data); | 10171 EXPECT_EQ("hello world", response_data); |
10174 | 10172 |
10175 alternative_service_vector = | 10173 EXPECT_TRUE( |
10176 http_server_properties->GetAlternativeServices(test_server); | 10174 http_server_properties->GetAlternativeServiceInfos(test_server).empty()); |
10177 EXPECT_TRUE(alternative_service_vector.empty()); | |
10178 } | 10175 } |
10179 | 10176 |
10180 // HTTP/2 Alternative Services should be disabled by default. | 10177 // HTTP/2 Alternative Services should be disabled by default. |
10181 // TODO(bnc): Remove when https://crbug.com/615413 is fixed. | 10178 // TODO(bnc): Remove when https://crbug.com/615413 is fixed. |
10182 TEST_F(HttpNetworkTransactionTest, | 10179 TEST_F(HttpNetworkTransactionTest, |
10183 DisableHTTP2AlternativeServicesWithDifferentHost) { | 10180 DisableHTTP2AlternativeServicesWithDifferentHost) { |
10184 session_deps_.enable_http2_alternative_service = false; | 10181 session_deps_.enable_http2_alternative_service = false; |
10185 | 10182 |
10186 HttpRequestInfo request; | 10183 HttpRequestInfo request; |
10187 request.method = "GET"; | 10184 request.method = "GET"; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10264 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10261 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { |
10265 // Set an alternative service for origin. | 10262 // Set an alternative service for origin. |
10266 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10263 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10267 HttpServerProperties* http_server_properties = | 10264 HttpServerProperties* http_server_properties = |
10268 session->http_server_properties(); | 10265 session->http_server_properties(); |
10269 url::SchemeHostPort test_server("https", "www.example.org", 443); | 10266 url::SchemeHostPort test_server("https", "www.example.org", 443); |
10270 AlternativeService alternative_service(kProtoQUIC, "", 80); | 10267 AlternativeService alternative_service(kProtoQUIC, "", 80); |
10271 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10268 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10272 http_server_properties->SetAlternativeService( | 10269 http_server_properties->SetAlternativeService( |
10273 test_server, alternative_service, expiration); | 10270 test_server, alternative_service, expiration); |
10274 AlternativeServiceVector alternative_service_vector = | 10271 EXPECT_EQ( |
10275 http_server_properties->GetAlternativeServices(test_server); | 10272 1u, |
10276 EXPECT_EQ(1u, alternative_service_vector.size()); | 10273 http_server_properties->GetAlternativeServiceInfos(test_server).size()); |
10277 | 10274 |
10278 // Send a clear header. | 10275 // Send a clear header. |
10279 MockRead data_reads[] = { | 10276 MockRead data_reads[] = { |
10280 MockRead("HTTP/1.1 200 OK\r\n"), | 10277 MockRead("HTTP/1.1 200 OK\r\n"), |
10281 MockRead("Alt-Svc: clear\r\n"), | 10278 MockRead("Alt-Svc: clear\r\n"), |
10282 MockRead("\r\n"), | 10279 MockRead("\r\n"), |
10283 MockRead("hello world"), | 10280 MockRead("hello world"), |
10284 MockRead(SYNCHRONOUS, OK), | 10281 MockRead(SYNCHRONOUS, OK), |
10285 }; | 10282 }; |
10286 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); | 10283 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); |
(...skipping 17 matching lines...) Expand all Loading... |
10304 ASSERT_TRUE(response); | 10301 ASSERT_TRUE(response); |
10305 ASSERT_TRUE(response->headers); | 10302 ASSERT_TRUE(response->headers); |
10306 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10303 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10307 EXPECT_FALSE(response->was_fetched_via_spdy); | 10304 EXPECT_FALSE(response->was_fetched_via_spdy); |
10308 EXPECT_FALSE(response->was_alpn_negotiated); | 10305 EXPECT_FALSE(response->was_alpn_negotiated); |
10309 | 10306 |
10310 std::string response_data; | 10307 std::string response_data; |
10311 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 10308 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
10312 EXPECT_EQ("hello world", response_data); | 10309 EXPECT_EQ("hello world", response_data); |
10313 | 10310 |
10314 alternative_service_vector = | 10311 EXPECT_TRUE( |
10315 http_server_properties->GetAlternativeServices(test_server); | 10312 http_server_properties->GetAlternativeServiceInfos(test_server).empty()); |
10316 EXPECT_TRUE(alternative_service_vector.empty()); | |
10317 } | 10313 } |
10318 | 10314 |
10319 TEST_F(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeaders) { | 10315 TEST_F(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeaders) { |
10320 MockRead data_reads[] = { | 10316 MockRead data_reads[] = { |
10321 MockRead("HTTP/1.1 200 OK\r\n"), | 10317 MockRead("HTTP/1.1 200 OK\r\n"), |
10322 MockRead("Alt-Svc: h2=\"www.example.com:443\","), | 10318 MockRead("Alt-Svc: h2=\"www.example.com:443\","), |
10323 MockRead("h2=\":1234\"\r\n\r\n"), | 10319 MockRead("h2=\":1234\"\r\n\r\n"), |
10324 MockRead("hello world"), | 10320 MockRead("hello world"), |
10325 MockRead(SYNCHRONOUS, OK), | 10321 MockRead(SYNCHRONOUS, OK), |
10326 }; | 10322 }; |
(...skipping 12 matching lines...) Expand all Loading... |
10339 | 10335 |
10340 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10336 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10341 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10337 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10342 | 10338 |
10343 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10339 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10344 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10340 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10345 | 10341 |
10346 url::SchemeHostPort test_server("https", "www.example.org", 443); | 10342 url::SchemeHostPort test_server("https", "www.example.org", 443); |
10347 HttpServerProperties* http_server_properties = | 10343 HttpServerProperties* http_server_properties = |
10348 session->http_server_properties(); | 10344 session->http_server_properties(); |
10349 AlternativeServiceVector alternative_service_vector = | 10345 EXPECT_TRUE( |
10350 http_server_properties->GetAlternativeServices(test_server); | 10346 http_server_properties->GetAlternativeServiceInfos(test_server).empty()); |
10351 EXPECT_TRUE(alternative_service_vector.empty()); | |
10352 | 10347 |
10353 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10348 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10354 | 10349 |
10355 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10350 const HttpResponseInfo* response = trans.GetResponseInfo(); |
10356 ASSERT_TRUE(response); | 10351 ASSERT_TRUE(response); |
10357 ASSERT_TRUE(response->headers); | 10352 ASSERT_TRUE(response->headers); |
10358 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10353 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10359 EXPECT_FALSE(response->was_fetched_via_spdy); | 10354 EXPECT_FALSE(response->was_fetched_via_spdy); |
10360 EXPECT_FALSE(response->was_alpn_negotiated); | 10355 EXPECT_FALSE(response->was_alpn_negotiated); |
10361 | 10356 |
10362 std::string response_data; | 10357 std::string response_data; |
10363 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 10358 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
10364 EXPECT_EQ("hello world", response_data); | 10359 EXPECT_EQ("hello world", response_data); |
10365 | 10360 |
10366 alternative_service_vector = | 10361 AlternativeServiceInfoVector alternative_service_info_vector = |
10367 http_server_properties->GetAlternativeServices(test_server); | 10362 http_server_properties->GetAlternativeServiceInfos(test_server); |
10368 ASSERT_EQ(2u, alternative_service_vector.size()); | 10363 ASSERT_EQ(2u, alternative_service_info_vector.size()); |
10369 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[0].protocol); | 10364 |
10370 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); | 10365 AlternativeService alternative_service(kProtoHTTP2, "www.example.com", 443); |
10371 EXPECT_EQ(443, alternative_service_vector[0].port); | 10366 EXPECT_EQ(alternative_service, |
10372 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[1].protocol); | 10367 alternative_service_info_vector[0].alternative_service); |
10373 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); | 10368 AlternativeService alternative_service_2(kProtoHTTP2, "www.example.org", |
10374 EXPECT_EQ(1234, alternative_service_vector[1].port); | 10369 1234); |
| 10370 EXPECT_EQ(alternative_service_2, |
| 10371 alternative_service_info_vector[1].alternative_service); |
10375 } | 10372 } |
10376 | 10373 |
10377 TEST_F(HttpNetworkTransactionTest, IdentifyQuicBroken) { | 10374 TEST_F(HttpNetworkTransactionTest, IdentifyQuicBroken) { |
10378 url::SchemeHostPort server("https", "origin.example.org", 443); | 10375 url::SchemeHostPort server("https", "origin.example.org", 443); |
10379 HostPortPair alternative("alternative.example.org", 443); | 10376 HostPortPair alternative("alternative.example.org", 443); |
10380 std::string origin_url = "https://origin.example.org:443"; | 10377 std::string origin_url = "https://origin.example.org:443"; |
10381 std::string alternative_url = "https://alternative.example.org:443"; | 10378 std::string alternative_url = "https://alternative.example.org:443"; |
10382 | 10379 |
10383 // Negotiate HTTP/1.1 with alternative.example.org. | 10380 // Negotiate HTTP/1.1 with alternative.example.org. |
10384 SSLSocketDataProvider ssl(ASYNC, OK); | 10381 SSLSocketDataProvider ssl(ASYNC, OK); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10479 AlternativeService alternative_service2(kProtoQUIC, alternative2); | 10476 AlternativeService alternative_service2(kProtoQUIC, alternative2); |
10480 AlternativeServiceInfo alternative_service_info2(alternative_service2, | 10477 AlternativeServiceInfo alternative_service_info2(alternative_service2, |
10481 expiration); | 10478 expiration); |
10482 alternative_service_info_vector.push_back(alternative_service_info2); | 10479 alternative_service_info_vector.push_back(alternative_service_info2); |
10483 | 10480 |
10484 http_server_properties->SetAlternativeServices( | 10481 http_server_properties->SetAlternativeServices( |
10485 server, alternative_service_info_vector); | 10482 server, alternative_service_info_vector); |
10486 | 10483 |
10487 // Mark one of the QUIC alternative service as broken. | 10484 // Mark one of the QUIC alternative service as broken. |
10488 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); | 10485 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); |
10489 | 10486 EXPECT_EQ(2u, |
10490 const AlternativeServiceVector alternative_service_vector = | 10487 http_server_properties->GetAlternativeServiceInfos(server).size()); |
10491 http_server_properties->GetAlternativeServices(server); | |
10492 | 10488 |
10493 HttpRequestInfo request; | 10489 HttpRequestInfo request; |
10494 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10490 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10495 request.method = "GET"; | 10491 request.method = "GET"; |
10496 request.url = GURL(origin_url); | 10492 request.url = GURL(origin_url); |
10497 TestCompletionCallback callback; | 10493 TestCompletionCallback callback; |
10498 NetErrorDetails details; | 10494 NetErrorDetails details; |
10499 EXPECT_FALSE(details.quic_broken); | 10495 EXPECT_FALSE(details.quic_broken); |
10500 | 10496 |
10501 trans.Start(&request, callback.callback(), NetLogWithSource()); | 10497 trans.Start(&request, callback.callback(), NetLogWithSource()); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10548 | 10544 |
10549 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10545 const HttpResponseInfo* response = trans.GetResponseInfo(); |
10550 ASSERT_TRUE(response); | 10546 ASSERT_TRUE(response); |
10551 ASSERT_TRUE(response->headers); | 10547 ASSERT_TRUE(response->headers); |
10552 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10548 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10553 | 10549 |
10554 std::string response_data; | 10550 std::string response_data; |
10555 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 10551 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
10556 EXPECT_EQ("hello world", response_data); | 10552 EXPECT_EQ("hello world", response_data); |
10557 | 10553 |
10558 const AlternativeServiceVector alternative_service_vector = | 10554 const AlternativeServiceInfoVector alternative_service_info_vector = |
10559 http_server_properties->GetAlternativeServices(server); | 10555 http_server_properties->GetAlternativeServiceInfos(server); |
10560 ASSERT_EQ(1u, alternative_service_vector.size()); | 10556 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
10561 EXPECT_EQ(alternative_service, alternative_service_vector[0]); | 10557 EXPECT_EQ(alternative_service, |
10562 EXPECT_TRUE(http_server_properties->IsAlternativeServiceBroken( | 10558 alternative_service_info_vector[0].alternative_service); |
10563 alternative_service_vector[0])); | 10559 EXPECT_TRUE( |
| 10560 http_server_properties->IsAlternativeServiceBroken(alternative_service)); |
10564 } | 10561 } |
10565 | 10562 |
10566 // Ensure that we are not allowed to redirect traffic via an alternate protocol | 10563 // Ensure that we are not allowed to redirect traffic via an alternate protocol |
10567 // to an unrestricted (port >= 1024) when the original traffic was on a | 10564 // to an unrestricted (port >= 1024) when the original traffic was on a |
10568 // restricted port (port < 1024). Ensure that we can redirect in all other | 10565 // restricted port (port < 1024). Ensure that we can redirect in all other |
10569 // cases. | 10566 // cases. |
10570 TEST_F(HttpNetworkTransactionTest, AlternateProtocolPortRestrictedBlocked) { | 10567 TEST_F(HttpNetworkTransactionTest, AlternateProtocolPortRestrictedBlocked) { |
10571 HttpRequestInfo restricted_port_request; | 10568 HttpRequestInfo restricted_port_request; |
10572 restricted_port_request.method = "GET"; | 10569 restricted_port_request.method = "GET"; |
10573 restricted_port_request.url = GURL("https://www.example.org:1023/"); | 10570 restricted_port_request.url = GURL("https://www.example.org:1023/"); |
(...skipping 6375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16949 | 16946 |
16950 TestCompletionCallback callback; | 16947 TestCompletionCallback callback; |
16951 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 16948 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
16952 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 16949 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
16953 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 16950 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
16954 | 16951 |
16955 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES)); | 16952 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES)); |
16956 } | 16953 } |
16957 | 16954 |
16958 } // namespace net | 16955 } // namespace net |
OLD | NEW |