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

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: Self review 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
« no previous file with comments | « no previous file | net/http/http_server_properties.h » ('j') | net/http/http_server_properties.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 9207 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | net/http/http_server_properties.h » ('j') | net/http/http_server_properties.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698