| 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 9213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9224 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( | 9224 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( |
| 9225 SpdySessionDependencies* session_deps_) { | 9225 SpdySessionDependencies* session_deps_) { |
| 9226 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 9226 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
| 9227 | 9227 |
| 9228 HttpServerProperties* http_server_properties = | 9228 HttpServerProperties* http_server_properties = |
| 9229 session->http_server_properties(); | 9229 session->http_server_properties(); |
| 9230 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 9230 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
| 9231 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9231 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 9232 http_server_properties->SetAlternativeService( | 9232 http_server_properties->SetAlternativeService( |
| 9233 url::SchemeHostPort("https", "host.with.alternate", 443), | 9233 url::SchemeHostPort("https", "host.with.alternate", 443), |
| 9234 alternative_service, expiration); | 9234 alternative_service, expiration, |
| 9235 HttpNetworkSession::Params().quic_supported_versions); |
| 9235 | 9236 |
| 9236 return session; | 9237 return session; |
| 9237 } | 9238 } |
| 9238 | 9239 |
| 9239 int GroupNameTransactionHelper(const std::string& url, | 9240 int GroupNameTransactionHelper(const std::string& url, |
| 9240 HttpNetworkSession* session) { | 9241 HttpNetworkSession* session) { |
| 9241 HttpRequestInfo request; | 9242 HttpRequestInfo request; |
| 9242 request.method = "GET"; | 9243 request.method = "GET"; |
| 9243 request.url = GURL(url); | 9244 request.url = GURL(url); |
| 9244 | 9245 |
| (...skipping 942 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10187 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10188 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10188 | 10189 |
| 10189 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10190 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10190 | 10191 |
| 10191 HttpServerProperties* http_server_properties = | 10192 HttpServerProperties* http_server_properties = |
| 10192 session->http_server_properties(); | 10193 session->http_server_properties(); |
| 10193 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", | 10194 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", |
| 10194 444); | 10195 444); |
| 10195 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10196 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10196 http_server_properties->SetAlternativeService( | 10197 http_server_properties->SetAlternativeService( |
| 10197 url::SchemeHostPort(request.url), alternative_service, expiration); | 10198 url::SchemeHostPort(request.url), alternative_service, expiration, |
| 10199 HttpNetworkSession::Params().quic_supported_versions); |
| 10198 | 10200 |
| 10199 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10201 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10200 TestCompletionCallback callback; | 10202 TestCompletionCallback callback; |
| 10201 | 10203 |
| 10202 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10204 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10203 // Alternative service is not used, request fails. | 10205 // Alternative service is not used, request fails. |
| 10204 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10206 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
| 10205 } | 10207 } |
| 10206 | 10208 |
| 10207 // Regression test for https://crbug.com/615497: | 10209 // Regression test for https://crbug.com/615497: |
| (...skipping 18 matching lines...) Expand all Loading... |
| 10226 0); | 10228 0); |
| 10227 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10229 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10228 | 10230 |
| 10229 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10231 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10230 | 10232 |
| 10231 HttpServerProperties* http_server_properties = | 10233 HttpServerProperties* http_server_properties = |
| 10232 session->http_server_properties(); | 10234 session->http_server_properties(); |
| 10233 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 10235 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
| 10234 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10236 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10235 http_server_properties->SetAlternativeService( | 10237 http_server_properties->SetAlternativeService( |
| 10236 url::SchemeHostPort(request.url), alternative_service, expiration); | 10238 url::SchemeHostPort(request.url), alternative_service, expiration, |
| 10239 HttpNetworkSession::Params().quic_supported_versions); |
| 10237 | 10240 |
| 10238 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10241 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10239 TestCompletionCallback callback; | 10242 TestCompletionCallback callback; |
| 10240 | 10243 |
| 10241 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10244 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10242 // Alternative service is not used, request fails. | 10245 // Alternative service is not used, request fails. |
| 10243 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10246 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
| 10244 } | 10247 } |
| 10245 | 10248 |
| 10246 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10249 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { |
| 10247 // Set an alternative service for origin. | 10250 // Set an alternative service for origin. |
| 10248 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10251 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10249 HttpServerProperties* http_server_properties = | 10252 HttpServerProperties* http_server_properties = |
| 10250 session->http_server_properties(); | 10253 session->http_server_properties(); |
| 10251 url::SchemeHostPort test_server("https", "www.example.org", 443); | 10254 url::SchemeHostPort test_server("https", "www.example.org", 443); |
| 10252 AlternativeService alternative_service(kProtoQUIC, "", 80); | 10255 AlternativeService alternative_service(kProtoQUIC, "", 80); |
| 10253 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10256 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10254 http_server_properties->SetAlternativeService( | 10257 http_server_properties->SetAlternativeService( |
| 10255 test_server, alternative_service, expiration); | 10258 test_server, alternative_service, expiration, |
| 10259 HttpNetworkSession::Params().quic_supported_versions); |
| 10256 EXPECT_EQ( | 10260 EXPECT_EQ( |
| 10257 1u, | 10261 1u, |
| 10258 http_server_properties->GetAlternativeServiceInfos(test_server).size()); | 10262 http_server_properties->GetAlternativeServiceInfos(test_server).size()); |
| 10259 | 10263 |
| 10260 // Send a clear header. | 10264 // Send a clear header. |
| 10261 MockRead data_reads[] = { | 10265 MockRead data_reads[] = { |
| 10262 MockRead("HTTP/1.1 200 OK\r\n"), | 10266 MockRead("HTTP/1.1 200 OK\r\n"), |
| 10263 MockRead("Alt-Svc: clear\r\n"), | 10267 MockRead("Alt-Svc: clear\r\n"), |
| 10264 MockRead("\r\n"), | 10268 MockRead("\r\n"), |
| 10265 MockRead("hello world"), | 10269 MockRead("hello world"), |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10387 StaticSocketDataProvider data_refused; | 10391 StaticSocketDataProvider data_refused; |
| 10388 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10392 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 10389 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10393 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 10390 | 10394 |
| 10391 // Set up a QUIC alternative service for server. | 10395 // Set up a QUIC alternative service for server. |
| 10392 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10396 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10393 HttpServerProperties* http_server_properties = | 10397 HttpServerProperties* http_server_properties = |
| 10394 session->http_server_properties(); | 10398 session->http_server_properties(); |
| 10395 AlternativeService alternative_service(kProtoQUIC, alternative); | 10399 AlternativeService alternative_service(kProtoQUIC, alternative); |
| 10396 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10400 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10397 http_server_properties->SetAlternativeService(server, alternative_service, | 10401 http_server_properties->SetAlternativeService( |
| 10398 expiration); | 10402 server, alternative_service, expiration, |
| 10403 HttpNetworkSession::Params().quic_supported_versions); |
| 10399 // Mark the QUIC alternative service as broken. | 10404 // Mark the QUIC alternative service as broken. |
| 10400 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10405 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
| 10401 | 10406 |
| 10402 HttpRequestInfo request; | 10407 HttpRequestInfo request; |
| 10403 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10408 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10404 request.method = "GET"; | 10409 request.method = "GET"; |
| 10405 request.url = GURL(origin_url); | 10410 request.url = GURL(origin_url); |
| 10406 TestCompletionCallback callback; | 10411 TestCompletionCallback callback; |
| 10407 NetErrorDetails details; | 10412 NetErrorDetails details; |
| 10408 EXPECT_FALSE(details.quic_broken); | 10413 EXPECT_FALSE(details.quic_broken); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10448 | 10453 |
| 10449 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10454 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10450 HttpServerProperties* http_server_properties = | 10455 HttpServerProperties* http_server_properties = |
| 10451 session->http_server_properties(); | 10456 session->http_server_properties(); |
| 10452 | 10457 |
| 10453 // Set up two QUIC alternative services for server. | 10458 // Set up two QUIC alternative services for server. |
| 10454 AlternativeServiceInfoVector alternative_service_info_vector; | 10459 AlternativeServiceInfoVector alternative_service_info_vector; |
| 10455 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10460 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10456 | 10461 |
| 10457 AlternativeService alternative_service1(kProtoQUIC, alternative1); | 10462 AlternativeService alternative_service1(kProtoQUIC, alternative1); |
| 10458 AlternativeServiceInfo alternative_service_info1(alternative_service1, | 10463 AlternativeServiceInfo alternative_service_info1( |
| 10459 expiration); | 10464 alternative_service1, expiration, |
| 10465 HttpNetworkSession::Params().quic_supported_versions); |
| 10460 alternative_service_info_vector.push_back(alternative_service_info1); | 10466 alternative_service_info_vector.push_back(alternative_service_info1); |
| 10461 AlternativeService alternative_service2(kProtoQUIC, alternative2); | 10467 AlternativeService alternative_service2(kProtoQUIC, alternative2); |
| 10462 AlternativeServiceInfo alternative_service_info2(alternative_service2, | 10468 AlternativeServiceInfo alternative_service_info2( |
| 10463 expiration); | 10469 alternative_service2, expiration, |
| 10470 HttpNetworkSession::Params().quic_supported_versions); |
| 10464 alternative_service_info_vector.push_back(alternative_service_info2); | 10471 alternative_service_info_vector.push_back(alternative_service_info2); |
| 10465 | 10472 |
| 10466 http_server_properties->SetAlternativeServices( | 10473 http_server_properties->SetAlternativeServices( |
| 10467 server, alternative_service_info_vector); | 10474 server, alternative_service_info_vector); |
| 10468 | 10475 |
| 10469 // Mark one of the QUIC alternative service as broken. | 10476 // Mark one of the QUIC alternative service as broken. |
| 10470 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); | 10477 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); |
| 10471 EXPECT_EQ(2u, | 10478 EXPECT_EQ(2u, |
| 10472 http_server_properties->GetAlternativeServiceInfos(server).size()); | 10479 http_server_properties->GetAlternativeServiceInfos(server).size()); |
| 10473 | 10480 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10510 | 10517 |
| 10511 HttpServerProperties* http_server_properties = | 10518 HttpServerProperties* http_server_properties = |
| 10512 session->http_server_properties(); | 10519 session->http_server_properties(); |
| 10513 const url::SchemeHostPort server(request.url); | 10520 const url::SchemeHostPort server(request.url); |
| 10514 // Port must be < 1024, or the header will be ignored (since initial port was | 10521 // Port must be < 1024, or the header will be ignored (since initial port was |
| 10515 // port 80 (another restricted port). | 10522 // port 80 (another restricted port). |
| 10516 const AlternativeService alternative_service( | 10523 const AlternativeService alternative_service( |
| 10517 kProtoHTTP2, "www.example.org", | 10524 kProtoHTTP2, "www.example.org", |
| 10518 666); // Port is ignored by MockConnect anyway. | 10525 666); // Port is ignored by MockConnect anyway. |
| 10519 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10526 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10520 http_server_properties->SetAlternativeService(server, alternative_service, | 10527 http_server_properties->SetAlternativeService( |
| 10521 expiration); | 10528 server, alternative_service, expiration, |
| 10529 HttpNetworkSession::Params().quic_supported_versions); |
| 10522 | 10530 |
| 10523 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10531 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10524 TestCompletionCallback callback; | 10532 TestCompletionCallback callback; |
| 10525 | 10533 |
| 10526 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10534 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10527 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10535 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10528 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10536 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10529 | 10537 |
| 10530 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10538 const HttpResponseInfo* response = trans.GetResponseInfo(); |
| 10531 ASSERT_TRUE(response); | 10539 ASSERT_TRUE(response); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10575 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10583 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10576 | 10584 |
| 10577 HttpServerProperties* http_server_properties = | 10585 HttpServerProperties* http_server_properties = |
| 10578 session->http_server_properties(); | 10586 session->http_server_properties(); |
| 10579 const int kUnrestrictedAlternatePort = 1024; | 10587 const int kUnrestrictedAlternatePort = 1024; |
| 10580 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10588 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10581 kUnrestrictedAlternatePort); | 10589 kUnrestrictedAlternatePort); |
| 10582 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10590 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10583 http_server_properties->SetAlternativeService( | 10591 http_server_properties->SetAlternativeService( |
| 10584 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10592 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10585 expiration); | 10593 expiration, HttpNetworkSession::Params().quic_supported_versions); |
| 10586 | 10594 |
| 10587 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10595 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10588 TestCompletionCallback callback; | 10596 TestCompletionCallback callback; |
| 10589 | 10597 |
| 10590 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10598 int rv = trans.Start(&restricted_port_request, callback.callback(), |
| 10591 NetLogWithSource()); | 10599 NetLogWithSource()); |
| 10592 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10600 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10593 // Invalid change to unrestricted port should fail. | 10601 // Invalid change to unrestricted port should fail. |
| 10594 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_REFUSED)); | 10602 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_REFUSED)); |
| 10595 } | 10603 } |
| (...skipping 29 matching lines...) Expand all Loading... |
| 10625 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10633 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10626 | 10634 |
| 10627 HttpServerProperties* http_server_properties = | 10635 HttpServerProperties* http_server_properties = |
| 10628 session->http_server_properties(); | 10636 session->http_server_properties(); |
| 10629 const int kUnrestrictedAlternatePort = 1024; | 10637 const int kUnrestrictedAlternatePort = 1024; |
| 10630 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10638 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10631 kUnrestrictedAlternatePort); | 10639 kUnrestrictedAlternatePort); |
| 10632 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10640 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10633 http_server_properties->SetAlternativeService( | 10641 http_server_properties->SetAlternativeService( |
| 10634 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10642 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10635 expiration); | 10643 expiration, HttpNetworkSession::Params().quic_supported_versions); |
| 10636 | 10644 |
| 10637 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10645 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10638 TestCompletionCallback callback; | 10646 TestCompletionCallback callback; |
| 10639 | 10647 |
| 10640 EXPECT_EQ(ERR_IO_PENDING, | 10648 EXPECT_EQ(ERR_IO_PENDING, |
| 10641 trans.Start(&restricted_port_request, callback.callback(), | 10649 trans.Start(&restricted_port_request, callback.callback(), |
| 10642 NetLogWithSource())); | 10650 NetLogWithSource())); |
| 10643 // Change to unrestricted port should succeed. | 10651 // Change to unrestricted port should succeed. |
| 10644 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10652 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10645 } | 10653 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 10674 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10682 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10675 | 10683 |
| 10676 HttpServerProperties* http_server_properties = | 10684 HttpServerProperties* http_server_properties = |
| 10677 session->http_server_properties(); | 10685 session->http_server_properties(); |
| 10678 const int kRestrictedAlternatePort = 80; | 10686 const int kRestrictedAlternatePort = 80; |
| 10679 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10687 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10680 kRestrictedAlternatePort); | 10688 kRestrictedAlternatePort); |
| 10681 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10689 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10682 http_server_properties->SetAlternativeService( | 10690 http_server_properties->SetAlternativeService( |
| 10683 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10691 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10684 expiration); | 10692 expiration, HttpNetworkSession::Params().quic_supported_versions); |
| 10685 | 10693 |
| 10686 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10694 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10687 TestCompletionCallback callback; | 10695 TestCompletionCallback callback; |
| 10688 | 10696 |
| 10689 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10697 int rv = trans.Start(&restricted_port_request, callback.callback(), |
| 10690 NetLogWithSource()); | 10698 NetLogWithSource()); |
| 10691 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10699 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10692 // Valid change to restricted port should pass. | 10700 // Valid change to restricted port should pass. |
| 10693 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10701 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10694 } | 10702 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 10723 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10731 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10724 | 10732 |
| 10725 HttpServerProperties* http_server_properties = | 10733 HttpServerProperties* http_server_properties = |
| 10726 session->http_server_properties(); | 10734 session->http_server_properties(); |
| 10727 const int kRestrictedAlternatePort = 80; | 10735 const int kRestrictedAlternatePort = 80; |
| 10728 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10736 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10729 kRestrictedAlternatePort); | 10737 kRestrictedAlternatePort); |
| 10730 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10738 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10731 http_server_properties->SetAlternativeService( | 10739 http_server_properties->SetAlternativeService( |
| 10732 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10740 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10733 expiration); | 10741 expiration, HttpNetworkSession::Params().quic_supported_versions); |
| 10734 | 10742 |
| 10735 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10743 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10736 TestCompletionCallback callback; | 10744 TestCompletionCallback callback; |
| 10737 | 10745 |
| 10738 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10746 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
| 10739 NetLogWithSource()); | 10747 NetLogWithSource()); |
| 10740 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10748 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10741 // Valid change to restricted port should pass. | 10749 // Valid change to restricted port should pass. |
| 10742 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10750 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10743 } | 10751 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 10772 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10780 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10773 | 10781 |
| 10774 HttpServerProperties* http_server_properties = | 10782 HttpServerProperties* http_server_properties = |
| 10775 session->http_server_properties(); | 10783 session->http_server_properties(); |
| 10776 const int kUnrestrictedAlternatePort = 1025; | 10784 const int kUnrestrictedAlternatePort = 1025; |
| 10777 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10785 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10778 kUnrestrictedAlternatePort); | 10786 kUnrestrictedAlternatePort); |
| 10779 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10787 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10780 http_server_properties->SetAlternativeService( | 10788 http_server_properties->SetAlternativeService( |
| 10781 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10789 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10782 expiration); | 10790 expiration, HttpNetworkSession::Params().quic_supported_versions); |
| 10783 | 10791 |
| 10784 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10792 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10785 TestCompletionCallback callback; | 10793 TestCompletionCallback callback; |
| 10786 | 10794 |
| 10787 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10795 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
| 10788 NetLogWithSource()); | 10796 NetLogWithSource()); |
| 10789 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10797 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10790 // Valid change to an unrestricted port should pass. | 10798 // Valid change to an unrestricted port should pass. |
| 10791 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10799 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10792 } | 10800 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 10812 | 10820 |
| 10813 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10821 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10814 | 10822 |
| 10815 HttpServerProperties* http_server_properties = | 10823 HttpServerProperties* http_server_properties = |
| 10816 session->http_server_properties(); | 10824 session->http_server_properties(); |
| 10817 const int kUnsafePort = 7; | 10825 const int kUnsafePort = 7; |
| 10818 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10826 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10819 kUnsafePort); | 10827 kUnsafePort); |
| 10820 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10828 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10821 http_server_properties->SetAlternativeService( | 10829 http_server_properties->SetAlternativeService( |
| 10822 url::SchemeHostPort(request.url), alternative_service, expiration); | 10830 url::SchemeHostPort(request.url), alternative_service, expiration, |
| 10831 HttpNetworkSession::Params().quic_supported_versions); |
| 10823 | 10832 |
| 10824 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10833 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10825 TestCompletionCallback callback; | 10834 TestCompletionCallback callback; |
| 10826 | 10835 |
| 10827 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10836 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10828 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10837 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10829 // The HTTP request should succeed. | 10838 // The HTTP request should succeed. |
| 10830 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10839 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10831 | 10840 |
| 10832 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10841 const HttpResponseInfo* response = trans.GetResponseInfo(); |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11169 | 11178 |
| 11170 // Configure alternative service with a hostname that is not bypassed by the | 11179 // Configure alternative service with a hostname that is not bypassed by the |
| 11171 // proxy. | 11180 // proxy. |
| 11172 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11181 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 11173 HttpServerProperties* http_server_properties = | 11182 HttpServerProperties* http_server_properties = |
| 11174 session->http_server_properties(); | 11183 session->http_server_properties(); |
| 11175 url::SchemeHostPort server("https", "www.example.org", 443); | 11184 url::SchemeHostPort server("https", "www.example.org", 443); |
| 11176 HostPortPair alternative("www.example.com", 443); | 11185 HostPortPair alternative("www.example.com", 443); |
| 11177 AlternativeService alternative_service(kProtoHTTP2, alternative); | 11186 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 11178 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 11187 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 11179 http_server_properties->SetAlternativeService(server, alternative_service, | 11188 http_server_properties->SetAlternativeService( |
| 11180 expiration); | 11189 server, alternative_service, expiration, |
| 11190 HttpNetworkSession::Params().quic_supported_versions); |
| 11181 | 11191 |
| 11182 // Non-alternative job should hang. | 11192 // Non-alternative job should hang. |
| 11183 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 11193 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 11184 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, | 11194 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, |
| 11185 nullptr, 0); | 11195 nullptr, 0); |
| 11186 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); | 11196 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); |
| 11187 session_deps_.socket_factory->AddSocketDataProvider( | 11197 session_deps_.socket_factory->AddSocketDataProvider( |
| 11188 &hanging_alternate_protocol_socket); | 11198 &hanging_alternate_protocol_socket); |
| 11189 | 11199 |
| 11190 AddSSLSocketData(); | 11200 AddSSLSocketData(); |
| (...skipping 2881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14072 StaticSocketDataProvider data_refused; | 14082 StaticSocketDataProvider data_refused; |
| 14073 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14083 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 14074 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14084 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 14075 | 14085 |
| 14076 // Set up alternative service for server. | 14086 // Set up alternative service for server. |
| 14077 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14087 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 14078 HttpServerProperties* http_server_properties = | 14088 HttpServerProperties* http_server_properties = |
| 14079 session->http_server_properties(); | 14089 session->http_server_properties(); |
| 14080 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14090 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 14081 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14091 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 14082 http_server_properties->SetAlternativeService(server, alternative_service, | 14092 http_server_properties->SetAlternativeService( |
| 14083 expiration); | 14093 server, alternative_service, expiration, |
| 14094 HttpNetworkSession::Params().quic_supported_versions); |
| 14084 | 14095 |
| 14085 HttpRequestInfo request; | 14096 HttpRequestInfo request; |
| 14086 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 14097 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 14087 request.method = "GET"; | 14098 request.method = "GET"; |
| 14088 request.url = GURL("https://www.example.org:443"); | 14099 request.url = GURL("https://www.example.org:443"); |
| 14089 TestCompletionCallback callback; | 14100 TestCompletionCallback callback; |
| 14090 | 14101 |
| 14091 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is | 14102 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is |
| 14092 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. | 14103 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. |
| 14093 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 14104 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14139 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 14150 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
| 14140 http_writes, arraysize(http_writes)); | 14151 http_writes, arraysize(http_writes)); |
| 14141 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 14152 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 14142 | 14153 |
| 14143 // Set up alternative service for server. | 14154 // Set up alternative service for server. |
| 14144 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14155 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 14145 HttpServerProperties* http_server_properties = | 14156 HttpServerProperties* http_server_properties = |
| 14146 session->http_server_properties(); | 14157 session->http_server_properties(); |
| 14147 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14158 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 14148 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14159 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 14149 http_server_properties->SetAlternativeService(server, alternative_service, | 14160 http_server_properties->SetAlternativeService( |
| 14150 expiration); | 14161 server, alternative_service, expiration, |
| 14162 HttpNetworkSession::Params().quic_supported_versions); |
| 14151 | 14163 |
| 14152 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14164 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 14153 HttpRequestInfo request1; | 14165 HttpRequestInfo request1; |
| 14154 request1.method = "GET"; | 14166 request1.method = "GET"; |
| 14155 request1.url = GURL("https://www.example.org:443"); | 14167 request1.url = GURL("https://www.example.org:443"); |
| 14156 request1.load_flags = 0; | 14168 request1.load_flags = 0; |
| 14157 TestCompletionCallback callback1; | 14169 TestCompletionCallback callback1; |
| 14158 | 14170 |
| 14159 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14171 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
| 14160 rv = callback1.GetResult(rv); | 14172 rv = callback1.GetResult(rv); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14246 StaticSocketDataProvider data_refused; | 14258 StaticSocketDataProvider data_refused; |
| 14247 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14259 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 14248 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14260 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 14249 | 14261 |
| 14250 // Set up alternative service for server. | 14262 // Set up alternative service for server. |
| 14251 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14263 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 14252 HttpServerProperties* http_server_properties = | 14264 HttpServerProperties* http_server_properties = |
| 14253 session->http_server_properties(); | 14265 session->http_server_properties(); |
| 14254 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14266 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 14255 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14267 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 14256 http_server_properties->SetAlternativeService(server, alternative_service, | 14268 http_server_properties->SetAlternativeService( |
| 14257 expiration); | 14269 server, alternative_service, expiration, |
| 14270 HttpNetworkSession::Params().quic_supported_versions); |
| 14258 | 14271 |
| 14259 // First transaction to alternative to open an HTTP/1.1 socket. | 14272 // First transaction to alternative to open an HTTP/1.1 socket. |
| 14260 HttpRequestInfo request1; | 14273 HttpRequestInfo request1; |
| 14261 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14274 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 14262 request1.method = "GET"; | 14275 request1.method = "GET"; |
| 14263 request1.url = GURL(alternative_url); | 14276 request1.url = GURL(alternative_url); |
| 14264 request1.load_flags = 0; | 14277 request1.load_flags = 0; |
| 14265 TestCompletionCallback callback1; | 14278 TestCompletionCallback callback1; |
| 14266 | 14279 |
| 14267 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14280 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
| (...skipping 2587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16855 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", | 16868 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", |
| 16856 "", false); | 16869 "", false); |
| 16857 } | 16870 } |
| 16858 | 16871 |
| 16859 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) { | 16872 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) { |
| 16860 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", | 16873 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", |
| 16861 "www.foo.com/other", true); | 16874 "www.foo.com/other", true); |
| 16862 } | 16875 } |
| 16863 | 16876 |
| 16864 } // namespace net | 16877 } // namespace net |
| OLD | NEW |