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