| 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 |