Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(396)

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 2901093004: Add and persist a new field in AlternativeServiceInfo to list QUIC verisons advertised (Closed)
Patch Set: manually fix rebase issues Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698