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 9219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9230 }; | 9230 }; |
9231 | 9231 |
9232 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( | 9232 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( |
9233 SpdySessionDependencies* session_deps_) { | 9233 SpdySessionDependencies* session_deps_) { |
9234 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 9234 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
9235 | 9235 |
9236 HttpServerProperties* http_server_properties = | 9236 HttpServerProperties* http_server_properties = |
9237 session->http_server_properties(); | 9237 session->http_server_properties(); |
9238 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 9238 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
9239 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9239 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
9240 http_server_properties->SetAlternativeService( | 9240 http_server_properties->SetHttp2AlternativeService( |
9241 url::SchemeHostPort("https", "host.with.alternate", 443), | 9241 url::SchemeHostPort("https", "host.with.alternate", 443), |
9242 alternative_service, expiration); | 9242 alternative_service, expiration); |
9243 | 9243 |
9244 return session; | 9244 return session; |
9245 } | 9245 } |
9246 | 9246 |
9247 int GroupNameTransactionHelper(const std::string& url, | 9247 int GroupNameTransactionHelper(const std::string& url, |
9248 HttpNetworkSession* session) { | 9248 HttpNetworkSession* session) { |
9249 HttpRequestInfo request; | 9249 HttpRequestInfo request; |
9250 request.method = "GET"; | 9250 request.method = "GET"; |
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10189 0); | 10189 0); |
10190 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10190 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10191 | 10191 |
10192 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10192 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10193 | 10193 |
10194 HttpServerProperties* http_server_properties = | 10194 HttpServerProperties* http_server_properties = |
10195 session->http_server_properties(); | 10195 session->http_server_properties(); |
10196 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", | 10196 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", |
10197 444); | 10197 444); |
10198 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10198 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10199 http_server_properties->SetAlternativeService( | 10199 http_server_properties->SetHttp2AlternativeService( |
10200 url::SchemeHostPort(request.url), alternative_service, expiration); | 10200 url::SchemeHostPort(request.url), alternative_service, expiration); |
10201 | 10201 |
10202 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10202 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10203 TestCompletionCallback callback; | 10203 TestCompletionCallback callback; |
10204 | 10204 |
10205 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10205 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10206 // Alternative service is not used, request fails. | 10206 // Alternative service is not used, request fails. |
10207 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10207 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
10208 } | 10208 } |
10209 | 10209 |
(...skipping 18 matching lines...) Expand all Loading... |
10228 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, | 10228 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
10229 0); | 10229 0); |
10230 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10230 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10231 | 10231 |
10232 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10232 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10233 | 10233 |
10234 HttpServerProperties* http_server_properties = | 10234 HttpServerProperties* http_server_properties = |
10235 session->http_server_properties(); | 10235 session->http_server_properties(); |
10236 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 10236 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
10237 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10237 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10238 http_server_properties->SetAlternativeService( | 10238 http_server_properties->SetHttp2AlternativeService( |
10239 url::SchemeHostPort(request.url), alternative_service, expiration); | 10239 url::SchemeHostPort(request.url), alternative_service, expiration); |
10240 | 10240 |
10241 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10241 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10242 TestCompletionCallback callback; | 10242 TestCompletionCallback callback; |
10243 | 10243 |
10244 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10244 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10245 // Alternative service is not used, request fails. | 10245 // Alternative service is not used, request fails. |
10246 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10246 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
10247 } | 10247 } |
10248 | 10248 |
10249 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10249 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { |
10250 // Set an alternative service for origin. | 10250 // Set an alternative service for origin. |
10251 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10251 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10252 HttpServerProperties* http_server_properties = | 10252 HttpServerProperties* http_server_properties = |
10253 session->http_server_properties(); | 10253 session->http_server_properties(); |
10254 url::SchemeHostPort test_server("https", "www.example.org", 443); | 10254 url::SchemeHostPort test_server("https", "www.example.org", 443); |
10255 AlternativeService alternative_service(kProtoQUIC, "", 80); | 10255 AlternativeService alternative_service(kProtoQUIC, "", 80); |
10256 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10256 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10257 http_server_properties->SetAlternativeService( | 10257 http_server_properties->SetQuicAlternativeService( |
10258 test_server, alternative_service, expiration); | 10258 test_server, alternative_service, expiration, |
| 10259 session->params().quic_supported_versions); |
10259 EXPECT_EQ( | 10260 EXPECT_EQ( |
10260 1u, | 10261 1u, |
10261 http_server_properties->GetAlternativeServiceInfos(test_server).size()); | 10262 http_server_properties->GetAlternativeServiceInfos(test_server).size()); |
10262 | 10263 |
10263 // Send a clear header. | 10264 // Send a clear header. |
10264 MockRead data_reads[] = { | 10265 MockRead data_reads[] = { |
10265 MockRead("HTTP/1.1 200 OK\r\n"), | 10266 MockRead("HTTP/1.1 200 OK\r\n"), |
10266 MockRead("Alt-Svc: clear\r\n"), | 10267 MockRead("Alt-Svc: clear\r\n"), |
10267 MockRead("\r\n"), | 10268 MockRead("\r\n"), |
10268 MockRead("hello world"), | 10269 MockRead("hello world"), |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10390 StaticSocketDataProvider data_refused; | 10391 StaticSocketDataProvider data_refused; |
10391 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10392 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
10392 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10393 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
10393 | 10394 |
10394 // Set up a QUIC alternative service for server. | 10395 // Set up a QUIC alternative service for server. |
10395 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10396 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10396 HttpServerProperties* http_server_properties = | 10397 HttpServerProperties* http_server_properties = |
10397 session->http_server_properties(); | 10398 session->http_server_properties(); |
10398 AlternativeService alternative_service(kProtoQUIC, alternative); | 10399 AlternativeService alternative_service(kProtoQUIC, alternative); |
10399 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10400 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10400 http_server_properties->SetAlternativeService(server, alternative_service, | 10401 http_server_properties->SetQuicAlternativeService( |
10401 expiration); | 10402 server, alternative_service, expiration, |
| 10403 HttpNetworkSession::Params().quic_supported_versions); |
10402 // Mark the QUIC alternative service as broken. | 10404 // Mark the QUIC alternative service as broken. |
10403 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10405 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
10404 | 10406 |
10405 HttpRequestInfo request; | 10407 HttpRequestInfo request; |
10406 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10408 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10407 request.method = "GET"; | 10409 request.method = "GET"; |
10408 request.url = GURL(origin_url); | 10410 request.url = GURL(origin_url); |
10409 TestCompletionCallback callback; | 10411 TestCompletionCallback callback; |
10410 NetErrorDetails details; | 10412 NetErrorDetails details; |
10411 EXPECT_FALSE(details.quic_broken); | 10413 EXPECT_FALSE(details.quic_broken); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10451 | 10453 |
10452 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10454 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10453 HttpServerProperties* http_server_properties = | 10455 HttpServerProperties* http_server_properties = |
10454 session->http_server_properties(); | 10456 session->http_server_properties(); |
10455 | 10457 |
10456 // Set up two QUIC alternative services for server. | 10458 // Set up two QUIC alternative services for server. |
10457 AlternativeServiceInfoVector alternative_service_info_vector; | 10459 AlternativeServiceInfoVector alternative_service_info_vector; |
10458 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10460 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10459 | 10461 |
10460 AlternativeService alternative_service1(kProtoQUIC, alternative1); | 10462 AlternativeService alternative_service1(kProtoQUIC, alternative1); |
10461 AlternativeServiceInfo alternative_service_info1(alternative_service1, | 10463 alternative_service_info_vector.push_back( |
10462 expiration); | 10464 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
10463 alternative_service_info_vector.push_back(alternative_service_info1); | 10465 alternative_service1, expiration, |
| 10466 session->params().quic_supported_versions)); |
10464 AlternativeService alternative_service2(kProtoQUIC, alternative2); | 10467 AlternativeService alternative_service2(kProtoQUIC, alternative2); |
10465 AlternativeServiceInfo alternative_service_info2(alternative_service2, | 10468 alternative_service_info_vector.push_back( |
10466 expiration); | 10469 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo( |
10467 alternative_service_info_vector.push_back(alternative_service_info2); | 10470 alternative_service2, expiration, |
| 10471 session->params().quic_supported_versions)); |
10468 | 10472 |
10469 http_server_properties->SetAlternativeServices( | 10473 http_server_properties->SetAlternativeServices( |
10470 server, alternative_service_info_vector); | 10474 server, alternative_service_info_vector); |
10471 | 10475 |
10472 // Mark one of the QUIC alternative service as broken. | 10476 // Mark one of the QUIC alternative service as broken. |
10473 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); | 10477 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); |
10474 EXPECT_EQ(2u, | 10478 EXPECT_EQ(2u, |
10475 http_server_properties->GetAlternativeServiceInfos(server).size()); | 10479 http_server_properties->GetAlternativeServiceInfos(server).size()); |
10476 | 10480 |
10477 HttpRequestInfo request; | 10481 HttpRequestInfo request; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10509 data_reads, arraysize(data_reads), NULL, 0); | 10513 data_reads, arraysize(data_reads), NULL, 0); |
10510 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10514 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10511 | 10515 |
10512 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10516 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10513 | 10517 |
10514 HttpServerProperties* http_server_properties = | 10518 HttpServerProperties* http_server_properties = |
10515 session->http_server_properties(); | 10519 session->http_server_properties(); |
10516 const url::SchemeHostPort server(request.url); | 10520 const url::SchemeHostPort server(request.url); |
10517 // 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 |
10518 // port 80 (another restricted port). | 10522 // port 80 (another restricted port). |
10519 const AlternativeService alternative_service( | 10523 // Port is ignored by MockConnect anyway. |
10520 kProtoHTTP2, "www.example.org", | 10524 const AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10521 666); // Port is ignored by MockConnect anyway. | 10525 666); |
10522 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10526 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10523 http_server_properties->SetAlternativeService(server, alternative_service, | 10527 http_server_properties->SetHttp2AlternativeService( |
10524 expiration); | 10528 server, alternative_service, expiration); |
10525 | 10529 |
10526 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10530 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10527 TestCompletionCallback callback; | 10531 TestCompletionCallback callback; |
10528 | 10532 |
10529 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10533 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10530 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10534 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10531 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10535 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10532 | 10536 |
10533 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10537 const HttpResponseInfo* response = trans.GetResponseInfo(); |
10534 ASSERT_TRUE(response); | 10538 ASSERT_TRUE(response); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10576 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); | 10580 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); |
10577 | 10581 |
10578 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10582 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10579 | 10583 |
10580 HttpServerProperties* http_server_properties = | 10584 HttpServerProperties* http_server_properties = |
10581 session->http_server_properties(); | 10585 session->http_server_properties(); |
10582 const int kUnrestrictedAlternatePort = 1024; | 10586 const int kUnrestrictedAlternatePort = 1024; |
10583 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10587 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10584 kUnrestrictedAlternatePort); | 10588 kUnrestrictedAlternatePort); |
10585 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10589 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10586 http_server_properties->SetAlternativeService( | 10590 http_server_properties->SetHttp2AlternativeService( |
10587 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10591 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10588 expiration); | 10592 expiration); |
10589 | 10593 |
10590 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10594 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10591 TestCompletionCallback callback; | 10595 TestCompletionCallback callback; |
10592 | 10596 |
10593 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10597 int rv = trans.Start(&restricted_port_request, callback.callback(), |
10594 NetLogWithSource()); | 10598 NetLogWithSource()); |
10595 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10599 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10596 // Invalid change to unrestricted port should fail. | 10600 // Invalid change to unrestricted port should fail. |
(...skipping 29 matching lines...) Expand all Loading... |
10626 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); | 10630 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); |
10627 | 10631 |
10628 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10632 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10629 | 10633 |
10630 HttpServerProperties* http_server_properties = | 10634 HttpServerProperties* http_server_properties = |
10631 session->http_server_properties(); | 10635 session->http_server_properties(); |
10632 const int kUnrestrictedAlternatePort = 1024; | 10636 const int kUnrestrictedAlternatePort = 1024; |
10633 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10637 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10634 kUnrestrictedAlternatePort); | 10638 kUnrestrictedAlternatePort); |
10635 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10639 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10636 http_server_properties->SetAlternativeService( | 10640 http_server_properties->SetHttp2AlternativeService( |
10637 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10641 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10638 expiration); | 10642 expiration); |
10639 | 10643 |
10640 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10644 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10641 TestCompletionCallback callback; | 10645 TestCompletionCallback callback; |
10642 | 10646 |
10643 EXPECT_EQ(ERR_IO_PENDING, | 10647 EXPECT_EQ(ERR_IO_PENDING, |
10644 trans.Start(&restricted_port_request, callback.callback(), | 10648 trans.Start(&restricted_port_request, callback.callback(), |
10645 NetLogWithSource())); | 10649 NetLogWithSource())); |
10646 // Change to unrestricted port should succeed. | 10650 // Change to unrestricted port should succeed. |
(...skipping 28 matching lines...) Expand all Loading... |
10675 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 10679 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
10676 | 10680 |
10677 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10681 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10678 | 10682 |
10679 HttpServerProperties* http_server_properties = | 10683 HttpServerProperties* http_server_properties = |
10680 session->http_server_properties(); | 10684 session->http_server_properties(); |
10681 const int kRestrictedAlternatePort = 80; | 10685 const int kRestrictedAlternatePort = 80; |
10682 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10686 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10683 kRestrictedAlternatePort); | 10687 kRestrictedAlternatePort); |
10684 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10688 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10685 http_server_properties->SetAlternativeService( | 10689 http_server_properties->SetHttp2AlternativeService( |
10686 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10690 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10687 expiration); | 10691 expiration); |
10688 | 10692 |
10689 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10693 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10690 TestCompletionCallback callback; | 10694 TestCompletionCallback callback; |
10691 | 10695 |
10692 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10696 int rv = trans.Start(&restricted_port_request, callback.callback(), |
10693 NetLogWithSource()); | 10697 NetLogWithSource()); |
10694 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10698 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10695 // Valid change to restricted port should pass. | 10699 // Valid change to restricted port should pass. |
(...skipping 28 matching lines...) Expand all Loading... |
10724 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); | 10728 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); |
10725 | 10729 |
10726 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10730 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10727 | 10731 |
10728 HttpServerProperties* http_server_properties = | 10732 HttpServerProperties* http_server_properties = |
10729 session->http_server_properties(); | 10733 session->http_server_properties(); |
10730 const int kRestrictedAlternatePort = 80; | 10734 const int kRestrictedAlternatePort = 80; |
10731 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10735 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10732 kRestrictedAlternatePort); | 10736 kRestrictedAlternatePort); |
10733 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10737 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10734 http_server_properties->SetAlternativeService( | 10738 http_server_properties->SetHttp2AlternativeService( |
10735 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10739 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
10736 expiration); | 10740 expiration); |
10737 | 10741 |
10738 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10742 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10739 TestCompletionCallback callback; | 10743 TestCompletionCallback callback; |
10740 | 10744 |
10741 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10745 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
10742 NetLogWithSource()); | 10746 NetLogWithSource()); |
10743 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10747 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10744 // Valid change to restricted port should pass. | 10748 // Valid change to restricted port should pass. |
(...skipping 28 matching lines...) Expand all Loading... |
10773 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 10777 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
10774 | 10778 |
10775 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10779 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10776 | 10780 |
10777 HttpServerProperties* http_server_properties = | 10781 HttpServerProperties* http_server_properties = |
10778 session->http_server_properties(); | 10782 session->http_server_properties(); |
10779 const int kUnrestrictedAlternatePort = 1025; | 10783 const int kUnrestrictedAlternatePort = 1025; |
10780 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10784 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10781 kUnrestrictedAlternatePort); | 10785 kUnrestrictedAlternatePort); |
10782 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10786 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10783 http_server_properties->SetAlternativeService( | 10787 http_server_properties->SetHttp2AlternativeService( |
10784 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10788 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
10785 expiration); | 10789 expiration); |
10786 | 10790 |
10787 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10791 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10788 TestCompletionCallback callback; | 10792 TestCompletionCallback callback; |
10789 | 10793 |
10790 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10794 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
10791 NetLogWithSource()); | 10795 NetLogWithSource()); |
10792 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10796 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10793 // Valid change to an unrestricted port should pass. | 10797 // Valid change to an unrestricted port should pass. |
(...skipping 20 matching lines...) Expand all Loading... |
10814 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10818 session_deps_.socket_factory->AddSocketDataProvider(&data); |
10815 | 10819 |
10816 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10820 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10817 | 10821 |
10818 HttpServerProperties* http_server_properties = | 10822 HttpServerProperties* http_server_properties = |
10819 session->http_server_properties(); | 10823 session->http_server_properties(); |
10820 const int kUnsafePort = 7; | 10824 const int kUnsafePort = 7; |
10821 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10825 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10822 kUnsafePort); | 10826 kUnsafePort); |
10823 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10827 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10824 http_server_properties->SetAlternativeService( | 10828 http_server_properties->SetHttp2AlternativeService( |
10825 url::SchemeHostPort(request.url), alternative_service, expiration); | 10829 url::SchemeHostPort(request.url), alternative_service, expiration); |
10826 | 10830 |
10827 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10831 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10828 TestCompletionCallback callback; | 10832 TestCompletionCallback callback; |
10829 | 10833 |
10830 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10834 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10831 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10835 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10832 // The HTTP request should succeed. | 10836 // The HTTP request should succeed. |
10833 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10837 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10834 | 10838 |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11174 | 11178 |
11175 // 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 |
11176 // proxy. | 11180 // proxy. |
11177 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11181 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
11178 HttpServerProperties* http_server_properties = | 11182 HttpServerProperties* http_server_properties = |
11179 session->http_server_properties(); | 11183 session->http_server_properties(); |
11180 url::SchemeHostPort server("https", "www.example.org", 443); | 11184 url::SchemeHostPort server("https", "www.example.org", 443); |
11181 HostPortPair alternative("www.example.com", 443); | 11185 HostPortPair alternative("www.example.com", 443); |
11182 AlternativeService alternative_service(kProtoHTTP2, alternative); | 11186 AlternativeService alternative_service(kProtoHTTP2, alternative); |
11183 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 11187 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
11184 http_server_properties->SetAlternativeService(server, alternative_service, | 11188 http_server_properties->SetHttp2AlternativeService( |
11185 expiration); | 11189 server, alternative_service, expiration); |
11186 | 11190 |
11187 // Non-alternative job should hang. | 11191 // Non-alternative job should hang. |
11188 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 11192 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
11189 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, | 11193 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, |
11190 nullptr, 0); | 11194 nullptr, 0); |
11191 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); | 11195 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); |
11192 session_deps_.socket_factory->AddSocketDataProvider( | 11196 session_deps_.socket_factory->AddSocketDataProvider( |
11193 &hanging_alternate_protocol_socket); | 11197 &hanging_alternate_protocol_socket); |
11194 | 11198 |
11195 AddSSLSocketData(); | 11199 AddSSLSocketData(); |
(...skipping 2862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14058 StaticSocketDataProvider data_refused; | 14062 StaticSocketDataProvider data_refused; |
14059 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14063 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
14060 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14064 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
14061 | 14065 |
14062 // Set up alternative service for server. | 14066 // Set up alternative service for server. |
14063 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14067 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
14064 HttpServerProperties* http_server_properties = | 14068 HttpServerProperties* http_server_properties = |
14065 session->http_server_properties(); | 14069 session->http_server_properties(); |
14066 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14070 AlternativeService alternative_service(kProtoHTTP2, alternative); |
14067 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14071 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
14068 http_server_properties->SetAlternativeService(server, alternative_service, | 14072 http_server_properties->SetHttp2AlternativeService( |
14069 expiration); | 14073 server, alternative_service, expiration); |
14070 | 14074 |
14071 HttpRequestInfo request; | 14075 HttpRequestInfo request; |
14072 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 14076 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
14073 request.method = "GET"; | 14077 request.method = "GET"; |
14074 request.url = GURL("https://www.example.org:443"); | 14078 request.url = GURL("https://www.example.org:443"); |
14075 TestCompletionCallback callback; | 14079 TestCompletionCallback callback; |
14076 | 14080 |
14077 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is | 14081 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is |
14078 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. | 14082 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. |
14079 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 14083 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14125 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 14129 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
14126 http_writes, arraysize(http_writes)); | 14130 http_writes, arraysize(http_writes)); |
14127 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 14131 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
14128 | 14132 |
14129 // Set up alternative service for server. | 14133 // Set up alternative service for server. |
14130 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14134 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
14131 HttpServerProperties* http_server_properties = | 14135 HttpServerProperties* http_server_properties = |
14132 session->http_server_properties(); | 14136 session->http_server_properties(); |
14133 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14137 AlternativeService alternative_service(kProtoHTTP2, alternative); |
14134 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14138 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
14135 http_server_properties->SetAlternativeService(server, alternative_service, | 14139 http_server_properties->SetHttp2AlternativeService( |
14136 expiration); | 14140 server, alternative_service, expiration); |
14137 | 14141 |
14138 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14142 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
14139 HttpRequestInfo request1; | 14143 HttpRequestInfo request1; |
14140 request1.method = "GET"; | 14144 request1.method = "GET"; |
14141 request1.url = GURL("https://www.example.org:443"); | 14145 request1.url = GURL("https://www.example.org:443"); |
14142 request1.load_flags = 0; | 14146 request1.load_flags = 0; |
14143 TestCompletionCallback callback1; | 14147 TestCompletionCallback callback1; |
14144 | 14148 |
14145 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14149 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
14146 rv = callback1.GetResult(rv); | 14150 rv = callback1.GetResult(rv); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14232 StaticSocketDataProvider data_refused; | 14236 StaticSocketDataProvider data_refused; |
14233 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14237 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
14234 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14238 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
14235 | 14239 |
14236 // Set up alternative service for server. | 14240 // Set up alternative service for server. |
14237 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14241 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
14238 HttpServerProperties* http_server_properties = | 14242 HttpServerProperties* http_server_properties = |
14239 session->http_server_properties(); | 14243 session->http_server_properties(); |
14240 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14244 AlternativeService alternative_service(kProtoHTTP2, alternative); |
14241 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14245 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
14242 http_server_properties->SetAlternativeService(server, alternative_service, | 14246 http_server_properties->SetHttp2AlternativeService( |
14243 expiration); | 14247 server, alternative_service, expiration); |
14244 | 14248 |
14245 // First transaction to alternative to open an HTTP/1.1 socket. | 14249 // First transaction to alternative to open an HTTP/1.1 socket. |
14246 HttpRequestInfo request1; | 14250 HttpRequestInfo request1; |
14247 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14251 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
14248 request1.method = "GET"; | 14252 request1.method = "GET"; |
14249 request1.url = GURL(alternative_url); | 14253 request1.url = GURL(alternative_url); |
14250 request1.load_flags = 0; | 14254 request1.load_flags = 0; |
14251 TestCompletionCallback callback1; | 14255 TestCompletionCallback callback1; |
14252 | 14256 |
14253 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14257 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
(...skipping 2657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16911 | 16915 |
16912 TestCompletionCallback callback; | 16916 TestCompletionCallback callback; |
16913 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 16917 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
16914 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 16918 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
16915 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 16919 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
16916 | 16920 |
16917 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES)); | 16921 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES)); |
16918 } | 16922 } |
16919 | 16923 |
16920 } // namespace net | 16924 } // namespace net |
OLD | NEW |