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 |