| 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 9222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9233 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( | 9233 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( |
| 9234 SpdySessionDependencies* session_deps_) { | 9234 SpdySessionDependencies* session_deps_) { |
| 9235 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 9235 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
| 9236 | 9236 |
| 9237 HttpServerProperties* http_server_properties = | 9237 HttpServerProperties* http_server_properties = |
| 9238 session->http_server_properties(); | 9238 session->http_server_properties(); |
| 9239 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 9239 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
| 9240 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9240 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 9241 http_server_properties->SetAlternativeService( | 9241 http_server_properties->SetAlternativeService( |
| 9242 url::SchemeHostPort("https", "host.with.alternate", 443), | 9242 url::SchemeHostPort("https", "host.with.alternate", 443), |
| 9243 alternative_service, expiration); | 9243 alternative_service, expiration, QuicVersionVector()); |
| 9244 | 9244 |
| 9245 return session; | 9245 return session; |
| 9246 } | 9246 } |
| 9247 | 9247 |
| 9248 int GroupNameTransactionHelper(const std::string& url, | 9248 int GroupNameTransactionHelper(const std::string& url, |
| 9249 HttpNetworkSession* session) { | 9249 HttpNetworkSession* session) { |
| 9250 HttpRequestInfo request; | 9250 HttpRequestInfo request; |
| 9251 request.method = "GET"; | 9251 request.method = "GET"; |
| 9252 request.url = GURL(url); | 9252 request.url = GURL(url); |
| 9253 | 9253 |
| (...skipping 937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10191 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10191 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10192 | 10192 |
| 10193 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10193 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10194 | 10194 |
| 10195 HttpServerProperties* http_server_properties = | 10195 HttpServerProperties* http_server_properties = |
| 10196 session->http_server_properties(); | 10196 session->http_server_properties(); |
| 10197 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", | 10197 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", |
| 10198 444); | 10198 444); |
| 10199 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10199 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10200 http_server_properties->SetAlternativeService( | 10200 http_server_properties->SetAlternativeService( |
| 10201 url::SchemeHostPort(request.url), alternative_service, expiration); | 10201 url::SchemeHostPort(request.url), alternative_service, expiration, |
| 10202 QuicVersionVector()); |
| 10202 | 10203 |
| 10203 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10204 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10204 TestCompletionCallback callback; | 10205 TestCompletionCallback callback; |
| 10205 | 10206 |
| 10206 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10207 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10207 // Alternative service is not used, request fails. | 10208 // Alternative service is not used, request fails. |
| 10208 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10209 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
| 10209 } | 10210 } |
| 10210 | 10211 |
| 10211 // Regression test for https://crbug.com/615497: | 10212 // Regression test for https://crbug.com/615497: |
| (...skipping 18 matching lines...) Expand all Loading... |
| 10230 0); | 10231 0); |
| 10231 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10232 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10232 | 10233 |
| 10233 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10234 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10234 | 10235 |
| 10235 HttpServerProperties* http_server_properties = | 10236 HttpServerProperties* http_server_properties = |
| 10236 session->http_server_properties(); | 10237 session->http_server_properties(); |
| 10237 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 10238 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
| 10238 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10239 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10239 http_server_properties->SetAlternativeService( | 10240 http_server_properties->SetAlternativeService( |
| 10240 url::SchemeHostPort(request.url), alternative_service, expiration); | 10241 url::SchemeHostPort(request.url), alternative_service, expiration, |
| 10242 QuicVersionVector()); |
| 10241 | 10243 |
| 10242 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10244 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10243 TestCompletionCallback callback; | 10245 TestCompletionCallback callback; |
| 10244 | 10246 |
| 10245 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10247 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10246 // Alternative service is not used, request fails. | 10248 // Alternative service is not used, request fails. |
| 10247 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10249 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
| 10248 } | 10250 } |
| 10249 | 10251 |
| 10250 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10252 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { |
| 10251 // Set an alternative service for origin. | 10253 // Set an alternative service for origin. |
| 10252 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10254 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10253 HttpServerProperties* http_server_properties = | 10255 HttpServerProperties* http_server_properties = |
| 10254 session->http_server_properties(); | 10256 session->http_server_properties(); |
| 10255 url::SchemeHostPort test_server("https", "www.example.org", 443); | 10257 url::SchemeHostPort test_server("https", "www.example.org", 443); |
| 10256 AlternativeService alternative_service(kProtoQUIC, "", 80); | 10258 AlternativeService alternative_service(kProtoQUIC, "", 80); |
| 10257 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10259 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10258 http_server_properties->SetAlternativeService( | 10260 http_server_properties->SetAlternativeService( |
| 10259 test_server, alternative_service, expiration); | 10261 test_server, alternative_service, expiration, |
| 10262 session->params().quic_supported_versions); |
| 10260 EXPECT_EQ( | 10263 EXPECT_EQ( |
| 10261 1u, | 10264 1u, |
| 10262 http_server_properties->GetAlternativeServiceInfos(test_server).size()); | 10265 http_server_properties->GetAlternativeServiceInfos(test_server).size()); |
| 10263 | 10266 |
| 10264 // Send a clear header. | 10267 // Send a clear header. |
| 10265 MockRead data_reads[] = { | 10268 MockRead data_reads[] = { |
| 10266 MockRead("HTTP/1.1 200 OK\r\n"), | 10269 MockRead("HTTP/1.1 200 OK\r\n"), |
| 10267 MockRead("Alt-Svc: clear\r\n"), | 10270 MockRead("Alt-Svc: clear\r\n"), |
| 10268 MockRead("\r\n"), | 10271 MockRead("\r\n"), |
| 10269 MockRead("hello world"), | 10272 MockRead("hello world"), |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10391 StaticSocketDataProvider data_refused; | 10394 StaticSocketDataProvider data_refused; |
| 10392 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10395 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 10393 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10396 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 10394 | 10397 |
| 10395 // Set up a QUIC alternative service for server. | 10398 // Set up a QUIC alternative service for server. |
| 10396 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10399 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10397 HttpServerProperties* http_server_properties = | 10400 HttpServerProperties* http_server_properties = |
| 10398 session->http_server_properties(); | 10401 session->http_server_properties(); |
| 10399 AlternativeService alternative_service(kProtoQUIC, alternative); | 10402 AlternativeService alternative_service(kProtoQUIC, alternative); |
| 10400 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10403 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10401 http_server_properties->SetAlternativeService(server, alternative_service, | 10404 http_server_properties->SetAlternativeService( |
| 10402 expiration); | 10405 server, alternative_service, expiration, |
| 10406 HttpNetworkSession::Params().quic_supported_versions); |
| 10403 // Mark the QUIC alternative service as broken. | 10407 // Mark the QUIC alternative service as broken. |
| 10404 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10408 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
| 10405 | 10409 |
| 10406 HttpRequestInfo request; | 10410 HttpRequestInfo request; |
| 10407 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10411 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10408 request.method = "GET"; | 10412 request.method = "GET"; |
| 10409 request.url = GURL(origin_url); | 10413 request.url = GURL(origin_url); |
| 10410 TestCompletionCallback callback; | 10414 TestCompletionCallback callback; |
| 10411 NetErrorDetails details; | 10415 NetErrorDetails details; |
| 10412 EXPECT_FALSE(details.quic_broken); | 10416 EXPECT_FALSE(details.quic_broken); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10514 | 10518 |
| 10515 HttpServerProperties* http_server_properties = | 10519 HttpServerProperties* http_server_properties = |
| 10516 session->http_server_properties(); | 10520 session->http_server_properties(); |
| 10517 const url::SchemeHostPort server(request.url); | 10521 const url::SchemeHostPort server(request.url); |
| 10518 // Port must be < 1024, or the header will be ignored (since initial port was | 10522 // Port must be < 1024, or the header will be ignored (since initial port was |
| 10519 // port 80 (another restricted port). | 10523 // port 80 (another restricted port). |
| 10520 const AlternativeService alternative_service( | 10524 const AlternativeService alternative_service( |
| 10521 kProtoHTTP2, "www.example.org", | 10525 kProtoHTTP2, "www.example.org", |
| 10522 666); // Port is ignored by MockConnect anyway. | 10526 666); // Port is ignored by MockConnect anyway. |
| 10523 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10527 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10524 http_server_properties->SetAlternativeService(server, alternative_service, | 10528 http_server_properties->SetAlternativeService( |
| 10525 expiration); | 10529 server, alternative_service, expiration, QuicVersionVector()); |
| 10526 | 10530 |
| 10527 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10531 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10528 TestCompletionCallback callback; | 10532 TestCompletionCallback callback; |
| 10529 | 10533 |
| 10530 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10534 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10531 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10535 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10532 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10536 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10533 | 10537 |
| 10534 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10538 const HttpResponseInfo* response = trans.GetResponseInfo(); |
| 10535 ASSERT_TRUE(response); | 10539 ASSERT_TRUE(response); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10579 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10583 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10580 | 10584 |
| 10581 HttpServerProperties* http_server_properties = | 10585 HttpServerProperties* http_server_properties = |
| 10582 session->http_server_properties(); | 10586 session->http_server_properties(); |
| 10583 const int kUnrestrictedAlternatePort = 1024; | 10587 const int kUnrestrictedAlternatePort = 1024; |
| 10584 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10588 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10585 kUnrestrictedAlternatePort); | 10589 kUnrestrictedAlternatePort); |
| 10586 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10590 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10587 http_server_properties->SetAlternativeService( | 10591 http_server_properties->SetAlternativeService( |
| 10588 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10592 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10589 expiration); | 10593 expiration, QuicVersionVector()); |
| 10590 | 10594 |
| 10591 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10595 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10592 TestCompletionCallback callback; | 10596 TestCompletionCallback callback; |
| 10593 | 10597 |
| 10594 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10598 int rv = trans.Start(&restricted_port_request, callback.callback(), |
| 10595 NetLogWithSource()); | 10599 NetLogWithSource()); |
| 10596 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10600 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10597 // Invalid change to unrestricted port should fail. | 10601 // Invalid change to unrestricted port should fail. |
| 10598 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_REFUSED)); | 10602 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_REFUSED)); |
| 10599 } | 10603 } |
| (...skipping 29 matching lines...) Expand all Loading... |
| 10629 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10633 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10630 | 10634 |
| 10631 HttpServerProperties* http_server_properties = | 10635 HttpServerProperties* http_server_properties = |
| 10632 session->http_server_properties(); | 10636 session->http_server_properties(); |
| 10633 const int kUnrestrictedAlternatePort = 1024; | 10637 const int kUnrestrictedAlternatePort = 1024; |
| 10634 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10638 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10635 kUnrestrictedAlternatePort); | 10639 kUnrestrictedAlternatePort); |
| 10636 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10640 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10637 http_server_properties->SetAlternativeService( | 10641 http_server_properties->SetAlternativeService( |
| 10638 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10642 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10639 expiration); | 10643 expiration, QuicVersionVector()); |
| 10640 | 10644 |
| 10641 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10645 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10642 TestCompletionCallback callback; | 10646 TestCompletionCallback callback; |
| 10643 | 10647 |
| 10644 EXPECT_EQ(ERR_IO_PENDING, | 10648 EXPECT_EQ(ERR_IO_PENDING, |
| 10645 trans.Start(&restricted_port_request, callback.callback(), | 10649 trans.Start(&restricted_port_request, callback.callback(), |
| 10646 NetLogWithSource())); | 10650 NetLogWithSource())); |
| 10647 // Change to unrestricted port should succeed. | 10651 // Change to unrestricted port should succeed. |
| 10648 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10652 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10649 } | 10653 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 10678 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10682 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10679 | 10683 |
| 10680 HttpServerProperties* http_server_properties = | 10684 HttpServerProperties* http_server_properties = |
| 10681 session->http_server_properties(); | 10685 session->http_server_properties(); |
| 10682 const int kRestrictedAlternatePort = 80; | 10686 const int kRestrictedAlternatePort = 80; |
| 10683 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10687 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10684 kRestrictedAlternatePort); | 10688 kRestrictedAlternatePort); |
| 10685 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10689 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10686 http_server_properties->SetAlternativeService( | 10690 http_server_properties->SetAlternativeService( |
| 10687 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10691 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10688 expiration); | 10692 expiration, QuicVersionVector()); |
| 10689 | 10693 |
| 10690 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10694 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10691 TestCompletionCallback callback; | 10695 TestCompletionCallback callback; |
| 10692 | 10696 |
| 10693 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10697 int rv = trans.Start(&restricted_port_request, callback.callback(), |
| 10694 NetLogWithSource()); | 10698 NetLogWithSource()); |
| 10695 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10699 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10696 // Valid change to restricted port should pass. | 10700 // Valid change to restricted port should pass. |
| 10697 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10701 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10698 } | 10702 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 10727 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10731 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10728 | 10732 |
| 10729 HttpServerProperties* http_server_properties = | 10733 HttpServerProperties* http_server_properties = |
| 10730 session->http_server_properties(); | 10734 session->http_server_properties(); |
| 10731 const int kRestrictedAlternatePort = 80; | 10735 const int kRestrictedAlternatePort = 80; |
| 10732 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10736 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10733 kRestrictedAlternatePort); | 10737 kRestrictedAlternatePort); |
| 10734 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10738 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10735 http_server_properties->SetAlternativeService( | 10739 http_server_properties->SetAlternativeService( |
| 10736 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10740 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10737 expiration); | 10741 expiration, QuicVersionVector()); |
| 10738 | 10742 |
| 10739 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10743 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10740 TestCompletionCallback callback; | 10744 TestCompletionCallback callback; |
| 10741 | 10745 |
| 10742 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10746 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
| 10743 NetLogWithSource()); | 10747 NetLogWithSource()); |
| 10744 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10748 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10745 // Valid change to restricted port should pass. | 10749 // Valid change to restricted port should pass. |
| 10746 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10750 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10747 } | 10751 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 10776 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10780 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10777 | 10781 |
| 10778 HttpServerProperties* http_server_properties = | 10782 HttpServerProperties* http_server_properties = |
| 10779 session->http_server_properties(); | 10783 session->http_server_properties(); |
| 10780 const int kUnrestrictedAlternatePort = 1025; | 10784 const int kUnrestrictedAlternatePort = 1025; |
| 10781 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10785 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10782 kUnrestrictedAlternatePort); | 10786 kUnrestrictedAlternatePort); |
| 10783 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10787 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10784 http_server_properties->SetAlternativeService( | 10788 http_server_properties->SetAlternativeService( |
| 10785 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10789 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10786 expiration); | 10790 expiration, QuicVersionVector()); |
| 10787 | 10791 |
| 10788 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10792 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10789 TestCompletionCallback callback; | 10793 TestCompletionCallback callback; |
| 10790 | 10794 |
| 10791 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10795 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
| 10792 NetLogWithSource()); | 10796 NetLogWithSource()); |
| 10793 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10797 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10794 // Valid change to an unrestricted port should pass. | 10798 // Valid change to an unrestricted port should pass. |
| 10795 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10799 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10796 } | 10800 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 10816 | 10820 |
| 10817 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10821 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10818 | 10822 |
| 10819 HttpServerProperties* http_server_properties = | 10823 HttpServerProperties* http_server_properties = |
| 10820 session->http_server_properties(); | 10824 session->http_server_properties(); |
| 10821 const int kUnsafePort = 7; | 10825 const int kUnsafePort = 7; |
| 10822 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10826 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
| 10823 kUnsafePort); | 10827 kUnsafePort); |
| 10824 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10828 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10825 http_server_properties->SetAlternativeService( | 10829 http_server_properties->SetAlternativeService( |
| 10826 url::SchemeHostPort(request.url), alternative_service, expiration); | 10830 url::SchemeHostPort(request.url), alternative_service, expiration, |
| 10831 QuicVersionVector()); |
| 10827 | 10832 |
| 10828 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10833 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 10829 TestCompletionCallback callback; | 10834 TestCompletionCallback callback; |
| 10830 | 10835 |
| 10831 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10836 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 10832 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10837 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 10833 // The HTTP request should succeed. | 10838 // The HTTP request should succeed. |
| 10834 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10839 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| 10835 | 10840 |
| 10836 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10841 const HttpResponseInfo* response = trans.GetResponseInfo(); |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11175 | 11180 |
| 11176 // Configure alternative service with a hostname that is not bypassed by the | 11181 // Configure alternative service with a hostname that is not bypassed by the |
| 11177 // proxy. | 11182 // proxy. |
| 11178 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11183 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 11179 HttpServerProperties* http_server_properties = | 11184 HttpServerProperties* http_server_properties = |
| 11180 session->http_server_properties(); | 11185 session->http_server_properties(); |
| 11181 url::SchemeHostPort server("https", "www.example.org", 443); | 11186 url::SchemeHostPort server("https", "www.example.org", 443); |
| 11182 HostPortPair alternative("www.example.com", 443); | 11187 HostPortPair alternative("www.example.com", 443); |
| 11183 AlternativeService alternative_service(kProtoHTTP2, alternative); | 11188 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 11184 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 11189 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 11185 http_server_properties->SetAlternativeService(server, alternative_service, | 11190 http_server_properties->SetAlternativeService( |
| 11186 expiration); | 11191 server, alternative_service, expiration, QuicVersionVector()); |
| 11187 | 11192 |
| 11188 // Non-alternative job should hang. | 11193 // Non-alternative job should hang. |
| 11189 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 11194 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 11190 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, | 11195 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, |
| 11191 nullptr, 0); | 11196 nullptr, 0); |
| 11192 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); | 11197 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); |
| 11193 session_deps_.socket_factory->AddSocketDataProvider( | 11198 session_deps_.socket_factory->AddSocketDataProvider( |
| 11194 &hanging_alternate_protocol_socket); | 11199 &hanging_alternate_protocol_socket); |
| 11195 | 11200 |
| 11196 AddSSLSocketData(); | 11201 AddSSLSocketData(); |
| (...skipping 2862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14059 StaticSocketDataProvider data_refused; | 14064 StaticSocketDataProvider data_refused; |
| 14060 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14065 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 14061 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14066 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 14062 | 14067 |
| 14063 // Set up alternative service for server. | 14068 // Set up alternative service for server. |
| 14064 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14069 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 14065 HttpServerProperties* http_server_properties = | 14070 HttpServerProperties* http_server_properties = |
| 14066 session->http_server_properties(); | 14071 session->http_server_properties(); |
| 14067 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14072 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 14068 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14073 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 14069 http_server_properties->SetAlternativeService(server, alternative_service, | 14074 http_server_properties->SetAlternativeService( |
| 14070 expiration); | 14075 server, alternative_service, expiration, QuicVersionVector()); |
| 14071 | 14076 |
| 14072 HttpRequestInfo request; | 14077 HttpRequestInfo request; |
| 14073 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 14078 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 14074 request.method = "GET"; | 14079 request.method = "GET"; |
| 14075 request.url = GURL("https://www.example.org:443"); | 14080 request.url = GURL("https://www.example.org:443"); |
| 14076 TestCompletionCallback callback; | 14081 TestCompletionCallback callback; |
| 14077 | 14082 |
| 14078 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is | 14083 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is |
| 14079 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. | 14084 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. |
| 14080 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 14085 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14126 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 14131 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
| 14127 http_writes, arraysize(http_writes)); | 14132 http_writes, arraysize(http_writes)); |
| 14128 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 14133 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 14129 | 14134 |
| 14130 // Set up alternative service for server. | 14135 // Set up alternative service for server. |
| 14131 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14136 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 14132 HttpServerProperties* http_server_properties = | 14137 HttpServerProperties* http_server_properties = |
| 14133 session->http_server_properties(); | 14138 session->http_server_properties(); |
| 14134 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14139 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 14135 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14140 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 14136 http_server_properties->SetAlternativeService(server, alternative_service, | 14141 http_server_properties->SetAlternativeService( |
| 14137 expiration); | 14142 server, alternative_service, expiration, QuicVersionVector()); |
| 14138 | 14143 |
| 14139 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14144 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 14140 HttpRequestInfo request1; | 14145 HttpRequestInfo request1; |
| 14141 request1.method = "GET"; | 14146 request1.method = "GET"; |
| 14142 request1.url = GURL("https://www.example.org:443"); | 14147 request1.url = GURL("https://www.example.org:443"); |
| 14143 request1.load_flags = 0; | 14148 request1.load_flags = 0; |
| 14144 TestCompletionCallback callback1; | 14149 TestCompletionCallback callback1; |
| 14145 | 14150 |
| 14146 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14151 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
| 14147 rv = callback1.GetResult(rv); | 14152 rv = callback1.GetResult(rv); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14233 StaticSocketDataProvider data_refused; | 14238 StaticSocketDataProvider data_refused; |
| 14234 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14239 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 14235 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14240 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 14236 | 14241 |
| 14237 // Set up alternative service for server. | 14242 // Set up alternative service for server. |
| 14238 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14243 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 14239 HttpServerProperties* http_server_properties = | 14244 HttpServerProperties* http_server_properties = |
| 14240 session->http_server_properties(); | 14245 session->http_server_properties(); |
| 14241 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14246 AlternativeService alternative_service(kProtoHTTP2, alternative); |
| 14242 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14247 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 14243 http_server_properties->SetAlternativeService(server, alternative_service, | 14248 http_server_properties->SetAlternativeService( |
| 14244 expiration); | 14249 server, alternative_service, expiration, QuicVersionVector()); |
| 14245 | 14250 |
| 14246 // First transaction to alternative to open an HTTP/1.1 socket. | 14251 // First transaction to alternative to open an HTTP/1.1 socket. |
| 14247 HttpRequestInfo request1; | 14252 HttpRequestInfo request1; |
| 14248 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14253 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 14249 request1.method = "GET"; | 14254 request1.method = "GET"; |
| 14250 request1.url = GURL(alternative_url); | 14255 request1.url = GURL(alternative_url); |
| 14251 request1.load_flags = 0; | 14256 request1.load_flags = 0; |
| 14252 TestCompletionCallback callback1; | 14257 TestCompletionCallback callback1; |
| 14253 | 14258 |
| 14254 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14259 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
| (...skipping 2657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16912 | 16917 |
| 16913 TestCompletionCallback callback; | 16918 TestCompletionCallback callback; |
| 16914 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 16919 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
| 16915 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 16920 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 16916 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 16921 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| 16917 | 16922 |
| 16918 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES)); | 16923 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES)); |
| 16919 } | 16924 } |
| 16920 | 16925 |
| 16921 } // namespace net | 16926 } // namespace net |
| OLD | NEW |