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

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: fix Canonical test Created 3 years, 5 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 | « components/grpc_support/test/get_stream_engine.cc ('k') | net/http/http_server_properties.h » ('j') | no next file with comments »
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 9219 matching lines...) Expand 10 before | Expand all | Expand 10 after
9230 }; 9230 };
9231 9231
9232 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( 9232 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests(
9233 SpdySessionDependencies* session_deps_) { 9233 SpdySessionDependencies* session_deps_) {
9234 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); 9234 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_));
9235 9235
9236 HttpServerProperties* http_server_properties = 9236 HttpServerProperties* http_server_properties =
9237 session->http_server_properties(); 9237 session->http_server_properties();
9238 AlternativeService alternative_service(kProtoHTTP2, "", 444); 9238 AlternativeService alternative_service(kProtoHTTP2, "", 444);
9239 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 9239 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
9240 http_server_properties->SetAlternativeService( 9240 http_server_properties->SetHttp2AlternativeService(
9241 url::SchemeHostPort("https", "host.with.alternate", 443), 9241 url::SchemeHostPort("https", "host.with.alternate", 443),
9242 alternative_service, expiration); 9242 alternative_service, expiration);
9243 9243
9244 return session; 9244 return session;
9245 } 9245 }
9246 9246
9247 int GroupNameTransactionHelper(const std::string& url, 9247 int GroupNameTransactionHelper(const std::string& url,
9248 HttpNetworkSession* session) { 9248 HttpNetworkSession* session) {
9249 HttpRequestInfo request; 9249 HttpRequestInfo request;
9250 request.method = "GET"; 9250 request.method = "GET";
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after
10189 0); 10189 0);
10190 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10190 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10191 10191
10192 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10192 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10193 10193
10194 HttpServerProperties* http_server_properties = 10194 HttpServerProperties* http_server_properties =
10195 session->http_server_properties(); 10195 session->http_server_properties();
10196 AlternativeService alternative_service(kProtoHTTP2, "different.example.org", 10196 AlternativeService alternative_service(kProtoHTTP2, "different.example.org",
10197 444); 10197 444);
10198 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10198 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10199 http_server_properties->SetAlternativeService( 10199 http_server_properties->SetHttp2AlternativeService(
10200 url::SchemeHostPort(request.url), alternative_service, expiration); 10200 url::SchemeHostPort(request.url), alternative_service, expiration);
10201 10201
10202 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10202 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10203 TestCompletionCallback callback; 10203 TestCompletionCallback callback;
10204 10204
10205 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10205 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10206 // Alternative service is not used, request fails. 10206 // Alternative service is not used, request fails.
10207 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); 10207 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED));
10208 } 10208 }
10209 10209
(...skipping 18 matching lines...) Expand all
10228 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, 10228 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL,
10229 0); 10229 0);
10230 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10230 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10231 10231
10232 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10232 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10233 10233
10234 HttpServerProperties* http_server_properties = 10234 HttpServerProperties* http_server_properties =
10235 session->http_server_properties(); 10235 session->http_server_properties();
10236 AlternativeService alternative_service(kProtoHTTP2, "", 444); 10236 AlternativeService alternative_service(kProtoHTTP2, "", 444);
10237 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10237 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10238 http_server_properties->SetAlternativeService( 10238 http_server_properties->SetHttp2AlternativeService(
10239 url::SchemeHostPort(request.url), alternative_service, expiration); 10239 url::SchemeHostPort(request.url), alternative_service, expiration);
10240 10240
10241 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10241 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10242 TestCompletionCallback callback; 10242 TestCompletionCallback callback;
10243 10243
10244 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10244 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10245 // Alternative service is not used, request fails. 10245 // Alternative service is not used, request fails.
10246 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); 10246 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED));
10247 } 10247 }
10248 10248
10249 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { 10249 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) {
10250 // Set an alternative service for origin. 10250 // Set an alternative service for origin.
10251 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10251 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10252 HttpServerProperties* http_server_properties = 10252 HttpServerProperties* http_server_properties =
10253 session->http_server_properties(); 10253 session->http_server_properties();
10254 url::SchemeHostPort test_server("https", "www.example.org", 443); 10254 url::SchemeHostPort test_server("https", "www.example.org", 443);
10255 AlternativeService alternative_service(kProtoQUIC, "", 80); 10255 AlternativeService alternative_service(kProtoQUIC, "", 80);
10256 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10256 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10257 http_server_properties->SetAlternativeService( 10257 http_server_properties->SetQuicAlternativeService(
10258 test_server, alternative_service, expiration); 10258 test_server, alternative_service, expiration,
10259 session->params().quic_supported_versions);
10259 EXPECT_EQ( 10260 EXPECT_EQ(
10260 1u, 10261 1u,
10261 http_server_properties->GetAlternativeServiceInfos(test_server).size()); 10262 http_server_properties->GetAlternativeServiceInfos(test_server).size());
10262 10263
10263 // Send a clear header. 10264 // Send a clear header.
10264 MockRead data_reads[] = { 10265 MockRead data_reads[] = {
10265 MockRead("HTTP/1.1 200 OK\r\n"), 10266 MockRead("HTTP/1.1 200 OK\r\n"),
10266 MockRead("Alt-Svc: clear\r\n"), 10267 MockRead("Alt-Svc: clear\r\n"),
10267 MockRead("\r\n"), 10268 MockRead("\r\n"),
10268 MockRead("hello world"), 10269 MockRead("hello world"),
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
10390 StaticSocketDataProvider data_refused; 10391 StaticSocketDataProvider data_refused;
10391 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 10392 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
10392 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); 10393 session_deps_.socket_factory->AddSocketDataProvider(&data_refused);
10393 10394
10394 // Set up a QUIC alternative service for server. 10395 // Set up a QUIC alternative service for server.
10395 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10396 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10396 HttpServerProperties* http_server_properties = 10397 HttpServerProperties* http_server_properties =
10397 session->http_server_properties(); 10398 session->http_server_properties();
10398 AlternativeService alternative_service(kProtoQUIC, alternative); 10399 AlternativeService alternative_service(kProtoQUIC, alternative);
10399 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10400 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10400 http_server_properties->SetAlternativeService(server, alternative_service, 10401 http_server_properties->SetQuicAlternativeService(
10401 expiration); 10402 server, alternative_service, expiration,
10403 HttpNetworkSession::Params().quic_supported_versions);
10402 // Mark the QUIC alternative service as broken. 10404 // Mark the QUIC alternative service as broken.
10403 http_server_properties->MarkAlternativeServiceBroken(alternative_service); 10405 http_server_properties->MarkAlternativeServiceBroken(alternative_service);
10404 10406
10405 HttpRequestInfo request; 10407 HttpRequestInfo request;
10406 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10408 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10407 request.method = "GET"; 10409 request.method = "GET";
10408 request.url = GURL(origin_url); 10410 request.url = GURL(origin_url);
10409 TestCompletionCallback callback; 10411 TestCompletionCallback callback;
10410 NetErrorDetails details; 10412 NetErrorDetails details;
10411 EXPECT_FALSE(details.quic_broken); 10413 EXPECT_FALSE(details.quic_broken);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
10451 10453
10452 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10454 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10453 HttpServerProperties* http_server_properties = 10455 HttpServerProperties* http_server_properties =
10454 session->http_server_properties(); 10456 session->http_server_properties();
10455 10457
10456 // Set up two QUIC alternative services for server. 10458 // Set up two QUIC alternative services for server.
10457 AlternativeServiceInfoVector alternative_service_info_vector; 10459 AlternativeServiceInfoVector alternative_service_info_vector;
10458 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10460 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10459 10461
10460 AlternativeService alternative_service1(kProtoQUIC, alternative1); 10462 AlternativeService alternative_service1(kProtoQUIC, alternative1);
10461 AlternativeServiceInfo alternative_service_info1(alternative_service1, 10463 alternative_service_info_vector.push_back(
10462 expiration); 10464 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo(
10463 alternative_service_info_vector.push_back(alternative_service_info1); 10465 alternative_service1, expiration,
10466 session->params().quic_supported_versions));
10464 AlternativeService alternative_service2(kProtoQUIC, alternative2); 10467 AlternativeService alternative_service2(kProtoQUIC, alternative2);
10465 AlternativeServiceInfo alternative_service_info2(alternative_service2, 10468 alternative_service_info_vector.push_back(
10466 expiration); 10469 AlternativeServiceInfo::CreateQuicAlternativeServiceInfo(
10467 alternative_service_info_vector.push_back(alternative_service_info2); 10470 alternative_service2, expiration,
10471 session->params().quic_supported_versions));
10468 10472
10469 http_server_properties->SetAlternativeServices( 10473 http_server_properties->SetAlternativeServices(
10470 server, alternative_service_info_vector); 10474 server, alternative_service_info_vector);
10471 10475
10472 // Mark one of the QUIC alternative service as broken. 10476 // Mark one of the QUIC alternative service as broken.
10473 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); 10477 http_server_properties->MarkAlternativeServiceBroken(alternative_service1);
10474 EXPECT_EQ(2u, 10478 EXPECT_EQ(2u,
10475 http_server_properties->GetAlternativeServiceInfos(server).size()); 10479 http_server_properties->GetAlternativeServiceInfos(server).size());
10476 10480
10477 HttpRequestInfo request; 10481 HttpRequestInfo request;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
10509 data_reads, arraysize(data_reads), NULL, 0); 10513 data_reads, arraysize(data_reads), NULL, 0);
10510 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10514 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10511 10515
10512 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10516 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10513 10517
10514 HttpServerProperties* http_server_properties = 10518 HttpServerProperties* http_server_properties =
10515 session->http_server_properties(); 10519 session->http_server_properties();
10516 const url::SchemeHostPort server(request.url); 10520 const url::SchemeHostPort server(request.url);
10517 // Port must be < 1024, or the header will be ignored (since initial port was 10521 // Port must be < 1024, or the header will be ignored (since initial port was
10518 // port 80 (another restricted port). 10522 // port 80 (another restricted port).
10519 const AlternativeService alternative_service( 10523 // Port is ignored by MockConnect anyway.
10520 kProtoHTTP2, "www.example.org", 10524 const AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10521 666); // Port is ignored by MockConnect anyway. 10525 666);
10522 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10526 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10523 http_server_properties->SetAlternativeService(server, alternative_service, 10527 http_server_properties->SetHttp2AlternativeService(
10524 expiration); 10528 server, alternative_service, expiration);
10525 10529
10526 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10530 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10527 TestCompletionCallback callback; 10531 TestCompletionCallback callback;
10528 10532
10529 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10533 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10530 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10534 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
10531 EXPECT_THAT(callback.WaitForResult(), IsOk()); 10535 EXPECT_THAT(callback.WaitForResult(), IsOk());
10532 10536
10533 const HttpResponseInfo* response = trans.GetResponseInfo(); 10537 const HttpResponseInfo* response = trans.GetResponseInfo();
10534 ASSERT_TRUE(response); 10538 ASSERT_TRUE(response);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
10576 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 10580 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
10577 10581
10578 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10582 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10579 10583
10580 HttpServerProperties* http_server_properties = 10584 HttpServerProperties* http_server_properties =
10581 session->http_server_properties(); 10585 session->http_server_properties();
10582 const int kUnrestrictedAlternatePort = 1024; 10586 const int kUnrestrictedAlternatePort = 1024;
10583 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", 10587 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10584 kUnrestrictedAlternatePort); 10588 kUnrestrictedAlternatePort);
10585 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10589 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10586 http_server_properties->SetAlternativeService( 10590 http_server_properties->SetHttp2AlternativeService(
10587 url::SchemeHostPort(restricted_port_request.url), alternative_service, 10591 url::SchemeHostPort(restricted_port_request.url), alternative_service,
10588 expiration); 10592 expiration);
10589 10593
10590 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10594 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10591 TestCompletionCallback callback; 10595 TestCompletionCallback callback;
10592 10596
10593 int rv = trans.Start(&restricted_port_request, callback.callback(), 10597 int rv = trans.Start(&restricted_port_request, callback.callback(),
10594 NetLogWithSource()); 10598 NetLogWithSource());
10595 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10599 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
10596 // Invalid change to unrestricted port should fail. 10600 // Invalid change to unrestricted port should fail.
(...skipping 29 matching lines...) Expand all
10626 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 10630 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
10627 10631
10628 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10632 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10629 10633
10630 HttpServerProperties* http_server_properties = 10634 HttpServerProperties* http_server_properties =
10631 session->http_server_properties(); 10635 session->http_server_properties();
10632 const int kUnrestrictedAlternatePort = 1024; 10636 const int kUnrestrictedAlternatePort = 1024;
10633 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", 10637 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10634 kUnrestrictedAlternatePort); 10638 kUnrestrictedAlternatePort);
10635 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10639 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10636 http_server_properties->SetAlternativeService( 10640 http_server_properties->SetHttp2AlternativeService(
10637 url::SchemeHostPort(restricted_port_request.url), alternative_service, 10641 url::SchemeHostPort(restricted_port_request.url), alternative_service,
10638 expiration); 10642 expiration);
10639 10643
10640 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10644 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10641 TestCompletionCallback callback; 10645 TestCompletionCallback callback;
10642 10646
10643 EXPECT_EQ(ERR_IO_PENDING, 10647 EXPECT_EQ(ERR_IO_PENDING,
10644 trans.Start(&restricted_port_request, callback.callback(), 10648 trans.Start(&restricted_port_request, callback.callback(),
10645 NetLogWithSource())); 10649 NetLogWithSource()));
10646 // Change to unrestricted port should succeed. 10650 // Change to unrestricted port should succeed.
(...skipping 28 matching lines...) Expand all
10675 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10679 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
10676 10680
10677 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10681 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10678 10682
10679 HttpServerProperties* http_server_properties = 10683 HttpServerProperties* http_server_properties =
10680 session->http_server_properties(); 10684 session->http_server_properties();
10681 const int kRestrictedAlternatePort = 80; 10685 const int kRestrictedAlternatePort = 80;
10682 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", 10686 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10683 kRestrictedAlternatePort); 10687 kRestrictedAlternatePort);
10684 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10688 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10685 http_server_properties->SetAlternativeService( 10689 http_server_properties->SetHttp2AlternativeService(
10686 url::SchemeHostPort(restricted_port_request.url), alternative_service, 10690 url::SchemeHostPort(restricted_port_request.url), alternative_service,
10687 expiration); 10691 expiration);
10688 10692
10689 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10693 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10690 TestCompletionCallback callback; 10694 TestCompletionCallback callback;
10691 10695
10692 int rv = trans.Start(&restricted_port_request, callback.callback(), 10696 int rv = trans.Start(&restricted_port_request, callback.callback(),
10693 NetLogWithSource()); 10697 NetLogWithSource());
10694 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10698 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
10695 // Valid change to restricted port should pass. 10699 // Valid change to restricted port should pass.
(...skipping 28 matching lines...) Expand all
10724 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 10728 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
10725 10729
10726 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10730 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10727 10731
10728 HttpServerProperties* http_server_properties = 10732 HttpServerProperties* http_server_properties =
10729 session->http_server_properties(); 10733 session->http_server_properties();
10730 const int kRestrictedAlternatePort = 80; 10734 const int kRestrictedAlternatePort = 80;
10731 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", 10735 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10732 kRestrictedAlternatePort); 10736 kRestrictedAlternatePort);
10733 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10737 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10734 http_server_properties->SetAlternativeService( 10738 http_server_properties->SetHttp2AlternativeService(
10735 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, 10739 url::SchemeHostPort(unrestricted_port_request.url), alternative_service,
10736 expiration); 10740 expiration);
10737 10741
10738 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10742 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10739 TestCompletionCallback callback; 10743 TestCompletionCallback callback;
10740 10744
10741 int rv = trans.Start(&unrestricted_port_request, callback.callback(), 10745 int rv = trans.Start(&unrestricted_port_request, callback.callback(),
10742 NetLogWithSource()); 10746 NetLogWithSource());
10743 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10747 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
10744 // Valid change to restricted port should pass. 10748 // Valid change to restricted port should pass.
(...skipping 28 matching lines...) Expand all
10773 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10777 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
10774 10778
10775 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10779 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10776 10780
10777 HttpServerProperties* http_server_properties = 10781 HttpServerProperties* http_server_properties =
10778 session->http_server_properties(); 10782 session->http_server_properties();
10779 const int kUnrestrictedAlternatePort = 1025; 10783 const int kUnrestrictedAlternatePort = 1025;
10780 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", 10784 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10781 kUnrestrictedAlternatePort); 10785 kUnrestrictedAlternatePort);
10782 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10786 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10783 http_server_properties->SetAlternativeService( 10787 http_server_properties->SetHttp2AlternativeService(
10784 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, 10788 url::SchemeHostPort(unrestricted_port_request.url), alternative_service,
10785 expiration); 10789 expiration);
10786 10790
10787 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10791 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10788 TestCompletionCallback callback; 10792 TestCompletionCallback callback;
10789 10793
10790 int rv = trans.Start(&unrestricted_port_request, callback.callback(), 10794 int rv = trans.Start(&unrestricted_port_request, callback.callback(),
10791 NetLogWithSource()); 10795 NetLogWithSource());
10792 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10796 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
10793 // Valid change to an unrestricted port should pass. 10797 // Valid change to an unrestricted port should pass.
(...skipping 20 matching lines...) Expand all
10814 session_deps_.socket_factory->AddSocketDataProvider(&data); 10818 session_deps_.socket_factory->AddSocketDataProvider(&data);
10815 10819
10816 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10820 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10817 10821
10818 HttpServerProperties* http_server_properties = 10822 HttpServerProperties* http_server_properties =
10819 session->http_server_properties(); 10823 session->http_server_properties();
10820 const int kUnsafePort = 7; 10824 const int kUnsafePort = 7;
10821 AlternativeService alternative_service(kProtoHTTP2, "www.example.org", 10825 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10822 kUnsafePort); 10826 kUnsafePort);
10823 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10827 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10824 http_server_properties->SetAlternativeService( 10828 http_server_properties->SetHttp2AlternativeService(
10825 url::SchemeHostPort(request.url), alternative_service, expiration); 10829 url::SchemeHostPort(request.url), alternative_service, expiration);
10826 10830
10827 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10831 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10828 TestCompletionCallback callback; 10832 TestCompletionCallback callback;
10829 10833
10830 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10834 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10831 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10835 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
10832 // The HTTP request should succeed. 10836 // The HTTP request should succeed.
10833 EXPECT_THAT(callback.WaitForResult(), IsOk()); 10837 EXPECT_THAT(callback.WaitForResult(), IsOk());
10834 10838
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
11174 11178
11175 // Configure alternative service with a hostname that is not bypassed by the 11179 // Configure alternative service with a hostname that is not bypassed by the
11176 // proxy. 11180 // proxy.
11177 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11181 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11178 HttpServerProperties* http_server_properties = 11182 HttpServerProperties* http_server_properties =
11179 session->http_server_properties(); 11183 session->http_server_properties();
11180 url::SchemeHostPort server("https", "www.example.org", 443); 11184 url::SchemeHostPort server("https", "www.example.org", 443);
11181 HostPortPair alternative("www.example.com", 443); 11185 HostPortPair alternative("www.example.com", 443);
11182 AlternativeService alternative_service(kProtoHTTP2, alternative); 11186 AlternativeService alternative_service(kProtoHTTP2, alternative);
11183 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 11187 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
11184 http_server_properties->SetAlternativeService(server, alternative_service, 11188 http_server_properties->SetHttp2AlternativeService(
11185 expiration); 11189 server, alternative_service, expiration);
11186 11190
11187 // Non-alternative job should hang. 11191 // Non-alternative job should hang.
11188 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 11192 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
11189 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, 11193 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0,
11190 nullptr, 0); 11194 nullptr, 0);
11191 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); 11195 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect);
11192 session_deps_.socket_factory->AddSocketDataProvider( 11196 session_deps_.socket_factory->AddSocketDataProvider(
11193 &hanging_alternate_protocol_socket); 11197 &hanging_alternate_protocol_socket);
11194 11198
11195 AddSSLSocketData(); 11199 AddSSLSocketData();
(...skipping 2862 matching lines...) Expand 10 before | Expand all | Expand 10 after
14058 StaticSocketDataProvider data_refused; 14062 StaticSocketDataProvider data_refused;
14059 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 14063 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
14060 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); 14064 session_deps_.socket_factory->AddSocketDataProvider(&data_refused);
14061 14065
14062 // Set up alternative service for server. 14066 // Set up alternative service for server.
14063 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 14067 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
14064 HttpServerProperties* http_server_properties = 14068 HttpServerProperties* http_server_properties =
14065 session->http_server_properties(); 14069 session->http_server_properties();
14066 AlternativeService alternative_service(kProtoHTTP2, alternative); 14070 AlternativeService alternative_service(kProtoHTTP2, alternative);
14067 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 14071 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
14068 http_server_properties->SetAlternativeService(server, alternative_service, 14072 http_server_properties->SetHttp2AlternativeService(
14069 expiration); 14073 server, alternative_service, expiration);
14070 14074
14071 HttpRequestInfo request; 14075 HttpRequestInfo request;
14072 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 14076 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
14073 request.method = "GET"; 14077 request.method = "GET";
14074 request.url = GURL("https://www.example.org:443"); 14078 request.url = GURL("https://www.example.org:443");
14075 TestCompletionCallback callback; 14079 TestCompletionCallback callback;
14076 14080
14077 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is 14081 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is
14078 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. 14082 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED.
14079 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 14083 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
14125 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 14129 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
14126 http_writes, arraysize(http_writes)); 14130 http_writes, arraysize(http_writes));
14127 session_deps_.socket_factory->AddSocketDataProvider(&http_data); 14131 session_deps_.socket_factory->AddSocketDataProvider(&http_data);
14128 14132
14129 // Set up alternative service for server. 14133 // Set up alternative service for server.
14130 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 14134 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
14131 HttpServerProperties* http_server_properties = 14135 HttpServerProperties* http_server_properties =
14132 session->http_server_properties(); 14136 session->http_server_properties();
14133 AlternativeService alternative_service(kProtoHTTP2, alternative); 14137 AlternativeService alternative_service(kProtoHTTP2, alternative);
14134 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 14138 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
14135 http_server_properties->SetAlternativeService(server, alternative_service, 14139 http_server_properties->SetHttp2AlternativeService(
14136 expiration); 14140 server, alternative_service, expiration);
14137 14141
14138 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); 14142 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get());
14139 HttpRequestInfo request1; 14143 HttpRequestInfo request1;
14140 request1.method = "GET"; 14144 request1.method = "GET";
14141 request1.url = GURL("https://www.example.org:443"); 14145 request1.url = GURL("https://www.example.org:443");
14142 request1.load_flags = 0; 14146 request1.load_flags = 0;
14143 TestCompletionCallback callback1; 14147 TestCompletionCallback callback1;
14144 14148
14145 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); 14149 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource());
14146 rv = callback1.GetResult(rv); 14150 rv = callback1.GetResult(rv);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
14232 StaticSocketDataProvider data_refused; 14236 StaticSocketDataProvider data_refused;
14233 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 14237 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
14234 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); 14238 session_deps_.socket_factory->AddSocketDataProvider(&data_refused);
14235 14239
14236 // Set up alternative service for server. 14240 // Set up alternative service for server.
14237 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 14241 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
14238 HttpServerProperties* http_server_properties = 14242 HttpServerProperties* http_server_properties =
14239 session->http_server_properties(); 14243 session->http_server_properties();
14240 AlternativeService alternative_service(kProtoHTTP2, alternative); 14244 AlternativeService alternative_service(kProtoHTTP2, alternative);
14241 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 14245 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
14242 http_server_properties->SetAlternativeService(server, alternative_service, 14246 http_server_properties->SetHttp2AlternativeService(
14243 expiration); 14247 server, alternative_service, expiration);
14244 14248
14245 // First transaction to alternative to open an HTTP/1.1 socket. 14249 // First transaction to alternative to open an HTTP/1.1 socket.
14246 HttpRequestInfo request1; 14250 HttpRequestInfo request1;
14247 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); 14251 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get());
14248 request1.method = "GET"; 14252 request1.method = "GET";
14249 request1.url = GURL(alternative_url); 14253 request1.url = GURL(alternative_url);
14250 request1.load_flags = 0; 14254 request1.load_flags = 0;
14251 TestCompletionCallback callback1; 14255 TestCompletionCallback callback1;
14252 14256
14253 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); 14257 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource());
(...skipping 2657 matching lines...) Expand 10 before | Expand all | Expand 10 after
16911 16915
16912 TestCompletionCallback callback; 16916 TestCompletionCallback callback;
16913 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 16917 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
16914 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 16918 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
16915 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 16919 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
16916 16920
16917 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES)); 16921 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NO_SUPPORTED_PROXIES));
16918 } 16922 }
16919 16923
16920 } // namespace net 16924 } // namespace net
OLDNEW
« no previous file with comments | « components/grpc_support/test/get_stream_engine.cc ('k') | net/http/http_server_properties.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698