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 9207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
9218 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( | 9218 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( |
9219 SpdySessionDependencies* session_deps_) { | 9219 SpdySessionDependencies* session_deps_) { |
9220 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 9220 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
9221 | 9221 |
9222 HttpServerProperties* http_server_properties = | 9222 HttpServerProperties* http_server_properties = |
9223 session->http_server_properties(); | 9223 session->http_server_properties(); |
9224 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 9224 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
9225 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9225 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
9226 http_server_properties->SetAlternativeService( | 9226 http_server_properties->SetAlternativeService( |
9227 url::SchemeHostPort("https", "host.with.alternate", 443), | 9227 url::SchemeHostPort("https", "host.with.alternate", 443), |
9228 alternative_service, expiration); | 9228 alternative_service, expiration, |
9229 HttpNetworkSession::Params().quic_supported_versions); | |
Zhongyi Shi
2017/06/06 22:04:52
Changes introduced in this file are caused by the
| |
9229 | 9230 |
9230 return session; | 9231 return session; |
9231 } | 9232 } |
9232 | 9233 |
9233 int GroupNameTransactionHelper(const std::string& url, | 9234 int GroupNameTransactionHelper(const std::string& url, |
9234 HttpNetworkSession* session) { | 9235 HttpNetworkSession* session) { |
9235 HttpRequestInfo request; | 9236 HttpRequestInfo request; |
9236 request.method = "GET"; | 9237 request.method = "GET"; |
9237 request.url = GURL(url); | 9238 request.url = GURL(url); |
9238 | 9239 |
(...skipping 937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
10176 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10177 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10177 | 10178 |
10178 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10179 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10179 | 10180 |
10180 HttpServerProperties* http_server_properties = | 10181 HttpServerProperties* http_server_properties = |
10181 session->http_server_properties(); | 10182 session->http_server_properties(); |
10182 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", | 10183 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", |
10183 444); | 10184 444); |
10184 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10185 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10185 http_server_properties->SetAlternativeService( | 10186 http_server_properties->SetAlternativeService( |
10186 url::SchemeHostPort(request.url), alternative_service, expiration); | 10187 url::SchemeHostPort(request.url), alternative_service, expiration, |
10188 HttpNetworkSession::Params().quic_supported_versions); | |
10187 | 10189 |
10188 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10190 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10189 TestCompletionCallback callback; | 10191 TestCompletionCallback callback; |
10190 | 10192 |
10191 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10193 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10192 // Alternative service is not used, request fails. | 10194 // Alternative service is not used, request fails. |
10193 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10195 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
10194 } | 10196 } |
10195 | 10197 |
10196 // Regression test for https://crbug.com/615497: | 10198 // Regression test for https://crbug.com/615497: |
(...skipping 18 matching lines...) Expand all Loading... | |
10215 0); | 10217 0); |
10216 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10218 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10217 | 10219 |
10218 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10220 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10219 | 10221 |
10220 HttpServerProperties* http_server_properties = | 10222 HttpServerProperties* http_server_properties = |
10221 session->http_server_properties(); | 10223 session->http_server_properties(); |
10222 AlternativeService alternative_service(kProtoHTTP2, "", 444); | 10224 AlternativeService alternative_service(kProtoHTTP2, "", 444); |
10223 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10225 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10224 http_server_properties->SetAlternativeService( | 10226 http_server_properties->SetAlternativeService( |
10225 url::SchemeHostPort(request.url), alternative_service, expiration); | 10227 url::SchemeHostPort(request.url), alternative_service, expiration, |
10228 HttpNetworkSession::Params().quic_supported_versions); | |
10226 | 10229 |
10227 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10230 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10228 TestCompletionCallback callback; | 10231 TestCompletionCallback callback; |
10229 | 10232 |
10230 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10233 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10231 // Alternative service is not used, request fails. | 10234 // Alternative service is not used, request fails. |
10232 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); | 10235 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); |
10233 } | 10236 } |
10234 | 10237 |
10235 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10238 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { |
10236 // Set an alternative service for origin. | 10239 // Set an alternative service for origin. |
10237 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10240 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10238 HttpServerProperties* http_server_properties = | 10241 HttpServerProperties* http_server_properties = |
10239 session->http_server_properties(); | 10242 session->http_server_properties(); |
10240 url::SchemeHostPort test_server("https", "www.example.org", 443); | 10243 url::SchemeHostPort test_server("https", "www.example.org", 443); |
10241 AlternativeService alternative_service(kProtoQUIC, "", 80); | 10244 AlternativeService alternative_service(kProtoQUIC, "", 80); |
10242 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10245 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10243 http_server_properties->SetAlternativeService( | 10246 http_server_properties->SetAlternativeService( |
10244 test_server, alternative_service, expiration); | 10247 test_server, alternative_service, expiration, |
10248 HttpNetworkSession::Params().quic_supported_versions); | |
10245 EXPECT_EQ( | 10249 EXPECT_EQ( |
10246 1u, | 10250 1u, |
10247 http_server_properties->GetAlternativeServiceInfos(test_server).size()); | 10251 http_server_properties->GetAlternativeServiceInfos(test_server).size()); |
10248 | 10252 |
10249 // Send a clear header. | 10253 // Send a clear header. |
10250 MockRead data_reads[] = { | 10254 MockRead data_reads[] = { |
10251 MockRead("HTTP/1.1 200 OK\r\n"), | 10255 MockRead("HTTP/1.1 200 OK\r\n"), |
10252 MockRead("Alt-Svc: clear\r\n"), | 10256 MockRead("Alt-Svc: clear\r\n"), |
10253 MockRead("\r\n"), | 10257 MockRead("\r\n"), |
10254 MockRead("hello world"), | 10258 MockRead("hello world"), |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
10376 StaticSocketDataProvider data_refused; | 10380 StaticSocketDataProvider data_refused; |
10377 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10381 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
10378 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10382 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
10379 | 10383 |
10380 // Set up a QUIC alternative service for server. | 10384 // Set up a QUIC alternative service for server. |
10381 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10385 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10382 HttpServerProperties* http_server_properties = | 10386 HttpServerProperties* http_server_properties = |
10383 session->http_server_properties(); | 10387 session->http_server_properties(); |
10384 AlternativeService alternative_service(kProtoQUIC, alternative); | 10388 AlternativeService alternative_service(kProtoQUIC, alternative); |
10385 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10389 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10386 http_server_properties->SetAlternativeService(server, alternative_service, | 10390 http_server_properties->SetAlternativeService( |
10387 expiration); | 10391 server, alternative_service, expiration, |
10392 HttpNetworkSession::Params().quic_supported_versions); | |
10388 // Mark the QUIC alternative service as broken. | 10393 // Mark the QUIC alternative service as broken. |
10389 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10394 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
10390 | 10395 |
10391 HttpRequestInfo request; | 10396 HttpRequestInfo request; |
10392 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10397 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10393 request.method = "GET"; | 10398 request.method = "GET"; |
10394 request.url = GURL(origin_url); | 10399 request.url = GURL(origin_url); |
10395 TestCompletionCallback callback; | 10400 TestCompletionCallback callback; |
10396 NetErrorDetails details; | 10401 NetErrorDetails details; |
10397 EXPECT_FALSE(details.quic_broken); | 10402 EXPECT_FALSE(details.quic_broken); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
10499 | 10504 |
10500 HttpServerProperties* http_server_properties = | 10505 HttpServerProperties* http_server_properties = |
10501 session->http_server_properties(); | 10506 session->http_server_properties(); |
10502 const url::SchemeHostPort server(request.url); | 10507 const url::SchemeHostPort server(request.url); |
10503 // Port must be < 1024, or the header will be ignored (since initial port was | 10508 // Port must be < 1024, or the header will be ignored (since initial port was |
10504 // port 80 (another restricted port). | 10509 // port 80 (another restricted port). |
10505 const AlternativeService alternative_service( | 10510 const AlternativeService alternative_service( |
10506 kProtoHTTP2, "www.example.org", | 10511 kProtoHTTP2, "www.example.org", |
10507 666); // Port is ignored by MockConnect anyway. | 10512 666); // Port is ignored by MockConnect anyway. |
10508 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10513 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10509 http_server_properties->SetAlternativeService(server, alternative_service, | 10514 http_server_properties->SetAlternativeService( |
10510 expiration); | 10515 server, alternative_service, expiration, |
10516 HttpNetworkSession::Params().quic_supported_versions); | |
10511 | 10517 |
10512 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10518 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10513 TestCompletionCallback callback; | 10519 TestCompletionCallback callback; |
10514 | 10520 |
10515 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10521 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10516 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10522 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10517 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10523 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10518 | 10524 |
10519 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10525 const HttpResponseInfo* response = trans.GetResponseInfo(); |
10520 ASSERT_TRUE(response); | 10526 ASSERT_TRUE(response); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
10564 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10570 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10565 | 10571 |
10566 HttpServerProperties* http_server_properties = | 10572 HttpServerProperties* http_server_properties = |
10567 session->http_server_properties(); | 10573 session->http_server_properties(); |
10568 const int kUnrestrictedAlternatePort = 1024; | 10574 const int kUnrestrictedAlternatePort = 1024; |
10569 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10575 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10570 kUnrestrictedAlternatePort); | 10576 kUnrestrictedAlternatePort); |
10571 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10577 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10572 http_server_properties->SetAlternativeService( | 10578 http_server_properties->SetAlternativeService( |
10573 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10579 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10574 expiration); | 10580 expiration, HttpNetworkSession::Params().quic_supported_versions); |
10575 | 10581 |
10576 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10582 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10577 TestCompletionCallback callback; | 10583 TestCompletionCallback callback; |
10578 | 10584 |
10579 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10585 int rv = trans.Start(&restricted_port_request, callback.callback(), |
10580 NetLogWithSource()); | 10586 NetLogWithSource()); |
10581 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10587 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10582 // Invalid change to unrestricted port should fail. | 10588 // Invalid change to unrestricted port should fail. |
10583 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_REFUSED)); | 10589 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_REFUSED)); |
10584 } | 10590 } |
(...skipping 29 matching lines...) Expand all Loading... | |
10614 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10620 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10615 | 10621 |
10616 HttpServerProperties* http_server_properties = | 10622 HttpServerProperties* http_server_properties = |
10617 session->http_server_properties(); | 10623 session->http_server_properties(); |
10618 const int kUnrestrictedAlternatePort = 1024; | 10624 const int kUnrestrictedAlternatePort = 1024; |
10619 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10625 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10620 kUnrestrictedAlternatePort); | 10626 kUnrestrictedAlternatePort); |
10621 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10627 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10622 http_server_properties->SetAlternativeService( | 10628 http_server_properties->SetAlternativeService( |
10623 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10629 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10624 expiration); | 10630 expiration, HttpNetworkSession::Params().quic_supported_versions); |
10625 | 10631 |
10626 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10632 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10627 TestCompletionCallback callback; | 10633 TestCompletionCallback callback; |
10628 | 10634 |
10629 EXPECT_EQ(ERR_IO_PENDING, | 10635 EXPECT_EQ(ERR_IO_PENDING, |
10630 trans.Start(&restricted_port_request, callback.callback(), | 10636 trans.Start(&restricted_port_request, callback.callback(), |
10631 NetLogWithSource())); | 10637 NetLogWithSource())); |
10632 // Change to unrestricted port should succeed. | 10638 // Change to unrestricted port should succeed. |
10633 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10639 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10634 } | 10640 } |
(...skipping 28 matching lines...) Expand all Loading... | |
10663 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10669 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10664 | 10670 |
10665 HttpServerProperties* http_server_properties = | 10671 HttpServerProperties* http_server_properties = |
10666 session->http_server_properties(); | 10672 session->http_server_properties(); |
10667 const int kRestrictedAlternatePort = 80; | 10673 const int kRestrictedAlternatePort = 80; |
10668 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10674 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10669 kRestrictedAlternatePort); | 10675 kRestrictedAlternatePort); |
10670 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10676 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10671 http_server_properties->SetAlternativeService( | 10677 http_server_properties->SetAlternativeService( |
10672 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10678 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10673 expiration); | 10679 expiration, HttpNetworkSession::Params().quic_supported_versions); |
10674 | 10680 |
10675 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10681 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10676 TestCompletionCallback callback; | 10682 TestCompletionCallback callback; |
10677 | 10683 |
10678 int rv = trans.Start(&restricted_port_request, callback.callback(), | 10684 int rv = trans.Start(&restricted_port_request, callback.callback(), |
10679 NetLogWithSource()); | 10685 NetLogWithSource()); |
10680 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10686 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10681 // Valid change to restricted port should pass. | 10687 // Valid change to restricted port should pass. |
10682 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10688 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10683 } | 10689 } |
(...skipping 28 matching lines...) Expand all Loading... | |
10712 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10718 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10713 | 10719 |
10714 HttpServerProperties* http_server_properties = | 10720 HttpServerProperties* http_server_properties = |
10715 session->http_server_properties(); | 10721 session->http_server_properties(); |
10716 const int kRestrictedAlternatePort = 80; | 10722 const int kRestrictedAlternatePort = 80; |
10717 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10723 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10718 kRestrictedAlternatePort); | 10724 kRestrictedAlternatePort); |
10719 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10725 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10720 http_server_properties->SetAlternativeService( | 10726 http_server_properties->SetAlternativeService( |
10721 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10727 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
10722 expiration); | 10728 expiration, HttpNetworkSession::Params().quic_supported_versions); |
10723 | 10729 |
10724 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10730 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10725 TestCompletionCallback callback; | 10731 TestCompletionCallback callback; |
10726 | 10732 |
10727 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10733 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
10728 NetLogWithSource()); | 10734 NetLogWithSource()); |
10729 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10735 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10730 // Valid change to restricted port should pass. | 10736 // Valid change to restricted port should pass. |
10731 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10737 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10732 } | 10738 } |
(...skipping 28 matching lines...) Expand all Loading... | |
10761 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10767 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10762 | 10768 |
10763 HttpServerProperties* http_server_properties = | 10769 HttpServerProperties* http_server_properties = |
10764 session->http_server_properties(); | 10770 session->http_server_properties(); |
10765 const int kUnrestrictedAlternatePort = 1025; | 10771 const int kUnrestrictedAlternatePort = 1025; |
10766 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10772 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10767 kUnrestrictedAlternatePort); | 10773 kUnrestrictedAlternatePort); |
10768 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10774 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10769 http_server_properties->SetAlternativeService( | 10775 http_server_properties->SetAlternativeService( |
10770 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10776 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
10771 expiration); | 10777 expiration, HttpNetworkSession::Params().quic_supported_versions); |
10772 | 10778 |
10773 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10779 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10774 TestCompletionCallback callback; | 10780 TestCompletionCallback callback; |
10775 | 10781 |
10776 int rv = trans.Start(&unrestricted_port_request, callback.callback(), | 10782 int rv = trans.Start(&unrestricted_port_request, callback.callback(), |
10777 NetLogWithSource()); | 10783 NetLogWithSource()); |
10778 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10784 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10779 // Valid change to an unrestricted port should pass. | 10785 // Valid change to an unrestricted port should pass. |
10780 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10786 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10781 } | 10787 } |
(...skipping 19 matching lines...) Expand all Loading... | |
10801 | 10807 |
10802 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10808 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10803 | 10809 |
10804 HttpServerProperties* http_server_properties = | 10810 HttpServerProperties* http_server_properties = |
10805 session->http_server_properties(); | 10811 session->http_server_properties(); |
10806 const int kUnsafePort = 7; | 10812 const int kUnsafePort = 7; |
10807 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", | 10813 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", |
10808 kUnsafePort); | 10814 kUnsafePort); |
10809 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10815 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10810 http_server_properties->SetAlternativeService( | 10816 http_server_properties->SetAlternativeService( |
10811 url::SchemeHostPort(request.url), alternative_service, expiration); | 10817 url::SchemeHostPort(request.url), alternative_service, expiration, |
10818 HttpNetworkSession::Params().quic_supported_versions); | |
10812 | 10819 |
10813 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 10820 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
10814 TestCompletionCallback callback; | 10821 TestCompletionCallback callback; |
10815 | 10822 |
10816 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 10823 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
10817 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); | 10824 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
10818 // The HTTP request should succeed. | 10825 // The HTTP request should succeed. |
10819 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 10826 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
10820 | 10827 |
10821 const HttpResponseInfo* response = trans.GetResponseInfo(); | 10828 const HttpResponseInfo* response = trans.GetResponseInfo(); |
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
11160 | 11167 |
11161 // Configure alternative service with a hostname that is not bypassed by the | 11168 // Configure alternative service with a hostname that is not bypassed by the |
11162 // proxy. | 11169 // proxy. |
11163 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 11170 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
11164 HttpServerProperties* http_server_properties = | 11171 HttpServerProperties* http_server_properties = |
11165 session->http_server_properties(); | 11172 session->http_server_properties(); |
11166 url::SchemeHostPort server("https", "www.example.org", 443); | 11173 url::SchemeHostPort server("https", "www.example.org", 443); |
11167 HostPortPair alternative("www.example.com", 443); | 11174 HostPortPair alternative("www.example.com", 443); |
11168 AlternativeService alternative_service(kProtoHTTP2, alternative); | 11175 AlternativeService alternative_service(kProtoHTTP2, alternative); |
11169 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 11176 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
11170 http_server_properties->SetAlternativeService(server, alternative_service, | 11177 http_server_properties->SetAlternativeService( |
11171 expiration); | 11178 server, alternative_service, expiration, |
11179 HttpNetworkSession::Params().quic_supported_versions); | |
11172 | 11180 |
11173 // Non-alternative job should hang. | 11181 // Non-alternative job should hang. |
11174 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 11182 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
11175 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, | 11183 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, |
11176 nullptr, 0); | 11184 nullptr, 0); |
11177 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); | 11185 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); |
11178 session_deps_.socket_factory->AddSocketDataProvider( | 11186 session_deps_.socket_factory->AddSocketDataProvider( |
11179 &hanging_alternate_protocol_socket); | 11187 &hanging_alternate_protocol_socket); |
11180 | 11188 |
11181 AddSSLSocketData(); | 11189 AddSSLSocketData(); |
(...skipping 2882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
14064 StaticSocketDataProvider data_refused; | 14072 StaticSocketDataProvider data_refused; |
14065 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14073 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
14066 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14074 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
14067 | 14075 |
14068 // Set up alternative service for server. | 14076 // Set up alternative service for server. |
14069 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14077 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
14070 HttpServerProperties* http_server_properties = | 14078 HttpServerProperties* http_server_properties = |
14071 session->http_server_properties(); | 14079 session->http_server_properties(); |
14072 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14080 AlternativeService alternative_service(kProtoHTTP2, alternative); |
14073 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14081 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
14074 http_server_properties->SetAlternativeService(server, alternative_service, | 14082 http_server_properties->SetAlternativeService( |
14075 expiration); | 14083 server, alternative_service, expiration, |
14084 HttpNetworkSession::Params().quic_supported_versions); | |
14076 | 14085 |
14077 HttpRequestInfo request; | 14086 HttpRequestInfo request; |
14078 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); | 14087 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); |
14079 request.method = "GET"; | 14088 request.method = "GET"; |
14080 request.url = GURL("https://www.example.org:443"); | 14089 request.url = GURL("https://www.example.org:443"); |
14081 TestCompletionCallback callback; | 14090 TestCompletionCallback callback; |
14082 | 14091 |
14083 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is | 14092 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is |
14084 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. | 14093 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. |
14085 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 14094 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
14131 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 14140 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
14132 http_writes, arraysize(http_writes)); | 14141 http_writes, arraysize(http_writes)); |
14133 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 14142 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
14134 | 14143 |
14135 // Set up alternative service for server. | 14144 // Set up alternative service for server. |
14136 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14145 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
14137 HttpServerProperties* http_server_properties = | 14146 HttpServerProperties* http_server_properties = |
14138 session->http_server_properties(); | 14147 session->http_server_properties(); |
14139 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14148 AlternativeService alternative_service(kProtoHTTP2, alternative); |
14140 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14149 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
14141 http_server_properties->SetAlternativeService(server, alternative_service, | 14150 http_server_properties->SetAlternativeService( |
14142 expiration); | 14151 server, alternative_service, expiration, |
14152 HttpNetworkSession::Params().quic_supported_versions); | |
14143 | 14153 |
14144 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14154 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
14145 HttpRequestInfo request1; | 14155 HttpRequestInfo request1; |
14146 request1.method = "GET"; | 14156 request1.method = "GET"; |
14147 request1.url = GURL("https://www.example.org:443"); | 14157 request1.url = GURL("https://www.example.org:443"); |
14148 request1.load_flags = 0; | 14158 request1.load_flags = 0; |
14149 TestCompletionCallback callback1; | 14159 TestCompletionCallback callback1; |
14150 | 14160 |
14151 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14161 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
14152 rv = callback1.GetResult(rv); | 14162 rv = callback1.GetResult(rv); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
14238 StaticSocketDataProvider data_refused; | 14248 StaticSocketDataProvider data_refused; |
14239 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 14249 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
14240 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 14250 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
14241 | 14251 |
14242 // Set up alternative service for server. | 14252 // Set up alternative service for server. |
14243 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 14253 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
14244 HttpServerProperties* http_server_properties = | 14254 HttpServerProperties* http_server_properties = |
14245 session->http_server_properties(); | 14255 session->http_server_properties(); |
14246 AlternativeService alternative_service(kProtoHTTP2, alternative); | 14256 AlternativeService alternative_service(kProtoHTTP2, alternative); |
14247 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 14257 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
14248 http_server_properties->SetAlternativeService(server, alternative_service, | 14258 http_server_properties->SetAlternativeService( |
14249 expiration); | 14259 server, alternative_service, expiration, |
14260 HttpNetworkSession::Params().quic_supported_versions); | |
14250 | 14261 |
14251 // First transaction to alternative to open an HTTP/1.1 socket. | 14262 // First transaction to alternative to open an HTTP/1.1 socket. |
14252 HttpRequestInfo request1; | 14263 HttpRequestInfo request1; |
14253 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 14264 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
14254 request1.method = "GET"; | 14265 request1.method = "GET"; |
14255 request1.url = GURL(alternative_url); | 14266 request1.url = GURL(alternative_url); |
14256 request1.load_flags = 0; | 14267 request1.load_flags = 0; |
14257 TestCompletionCallback callback1; | 14268 TestCompletionCallback callback1; |
14258 | 14269 |
14259 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); | 14270 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); |
(...skipping 2587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
16847 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", | 16858 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", |
16848 "", false); | 16859 "", false); |
16849 } | 16860 } |
16850 | 16861 |
16851 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) { | 16862 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding4) { |
16852 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", | 16863 CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "gzip", |
16853 "www.foo.com/other", true); | 16864 "www.foo.com/other", true); |
16854 } | 16865 } |
16855 | 16866 |
16856 } // namespace net | 16867 } // namespace net |
OLD | NEW |