Chromium Code Reviews| 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 |