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

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

Issue 2373663002: Unify enum NextProto and enum AlternateProtocol. (Closed)
Patch Set: Fix compile errors. Created 4 years, 1 month 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 | « net/http/http_network_transaction.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 9196 matching lines...) Expand 10 before | Expand all | Expand 10 after
9207 std::string expected_group_name; 9207 std::string expected_group_name;
9208 bool ssl; 9208 bool ssl;
9209 }; 9209 };
9210 9210
9211 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( 9211 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests(
9212 SpdySessionDependencies* session_deps_) { 9212 SpdySessionDependencies* session_deps_) {
9213 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); 9213 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_));
9214 9214
9215 HttpServerProperties* http_server_properties = 9215 HttpServerProperties* http_server_properties =
9216 session->http_server_properties(); 9216 session->http_server_properties();
9217 AlternativeService alternative_service( 9217 AlternativeService alternative_service(kProtoHTTP2, "", 444);
9218 AlternateProtocolFromNextProto(kProtoHTTP2), "", 444);
9219 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 9218 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
9220 http_server_properties->SetAlternativeService( 9219 http_server_properties->SetAlternativeService(
9221 url::SchemeHostPort("https", "host.with.alternate", 443), 9220 url::SchemeHostPort("https", "host.with.alternate", 443),
9222 alternative_service, expiration); 9221 alternative_service, expiration);
9223 9222
9224 return session; 9223 return session;
9225 } 9224 }
9226 9225
9227 int GroupNameTransactionHelper(const std::string& url, 9226 int GroupNameTransactionHelper(const std::string& url,
9228 HttpNetworkSession* session) { 9227 HttpNetworkSession* session) {
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
10086 EXPECT_FALSE(response->was_fetched_via_spdy); 10085 EXPECT_FALSE(response->was_fetched_via_spdy);
10087 EXPECT_FALSE(response->was_alpn_negotiated); 10086 EXPECT_FALSE(response->was_alpn_negotiated);
10088 10087
10089 std::string response_data; 10088 std::string response_data;
10090 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); 10089 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk());
10091 EXPECT_EQ("hello world", response_data); 10090 EXPECT_EQ("hello world", response_data);
10092 10091
10093 alternative_service_vector = 10092 alternative_service_vector =
10094 http_server_properties->GetAlternativeServices(test_server); 10093 http_server_properties->GetAlternativeServices(test_server);
10095 ASSERT_EQ(1u, alternative_service_vector.size()); 10094 ASSERT_EQ(1u, alternative_service_vector.size());
10096 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoHTTP2), 10095 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[0].protocol);
10097 alternative_service_vector[0].protocol);
10098 EXPECT_EQ("mail.example.org", alternative_service_vector[0].host); 10096 EXPECT_EQ("mail.example.org", alternative_service_vector[0].host);
10099 EXPECT_EQ(443, alternative_service_vector[0].port); 10097 EXPECT_EQ(443, alternative_service_vector[0].port);
10100 } 10098 }
10101 10099
10102 // Regression test for https://crbug.com/615497. 10100 // Regression test for https://crbug.com/615497.
10103 TEST_F(HttpNetworkTransactionTest, 10101 TEST_F(HttpNetworkTransactionTest,
10104 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { 10102 DoNotParseAlternativeServiceHeaderOnInsecureRequest) {
10105 MockRead data_reads[] = { 10103 MockRead data_reads[] = {
10106 MockRead("HTTP/1.1 200 OK\r\n"), 10104 MockRead("HTTP/1.1 200 OK\r\n"),
10107 MockRead(kAlternativeServiceHttpHeader), 10105 MockRead(kAlternativeServiceHttpHeader),
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
10175 MockRead(ASYNC, OK), 10173 MockRead(ASYNC, OK),
10176 }; 10174 };
10177 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, 10175 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL,
10178 0); 10176 0);
10179 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10177 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10180 10178
10181 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10179 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10182 10180
10183 HttpServerProperties* http_server_properties = 10181 HttpServerProperties* http_server_properties =
10184 session->http_server_properties(); 10182 session->http_server_properties();
10185 AlternativeService alternative_service( 10183 AlternativeService alternative_service(kProtoHTTP2, "different.example.org",
10186 AlternateProtocolFromNextProto(kProtoHTTP2), "different.example.org", 10184 444);
10187 444);
10188 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10185 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10189 http_server_properties->SetAlternativeService( 10186 http_server_properties->SetAlternativeService(
10190 url::SchemeHostPort(request.url), alternative_service, expiration); 10187 url::SchemeHostPort(request.url), alternative_service, expiration);
10191 10188
10192 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10189 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10193 TestCompletionCallback callback; 10190 TestCompletionCallback callback;
10194 10191
10195 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10192 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10196 // Alternative service is not used, request fails. 10193 // Alternative service is not used, request fails.
10197 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); 10194 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED));
(...skipping 18 matching lines...) Expand all
10216 MockRead(ASYNC, OK), 10213 MockRead(ASYNC, OK),
10217 }; 10214 };
10218 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, 10215 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL,
10219 0); 10216 0);
10220 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10217 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10221 10218
10222 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10219 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10223 10220
10224 HttpServerProperties* http_server_properties = 10221 HttpServerProperties* http_server_properties =
10225 session->http_server_properties(); 10222 session->http_server_properties();
10226 AlternativeService alternative_service( 10223 AlternativeService alternative_service(kProtoHTTP2, "", 444);
10227 AlternateProtocolFromNextProto(kProtoHTTP2), "", 444);
10228 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10224 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10229 http_server_properties->SetAlternativeService( 10225 http_server_properties->SetAlternativeService(
10230 url::SchemeHostPort(request.url), alternative_service, expiration); 10226 url::SchemeHostPort(request.url), alternative_service, expiration);
10231 10227
10232 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10228 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10233 TestCompletionCallback callback; 10229 TestCompletionCallback callback;
10234 10230
10235 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10231 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10236 // Alternative service is not used, request fails. 10232 // Alternative service is not used, request fails.
10237 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); 10233 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_CONNECTION_REFUSED));
10238 } 10234 }
10239 10235
10240 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) { 10236 TEST_F(HttpNetworkTransactionTest, ClearAlternativeServices) {
10241 // Set an alternative service for origin. 10237 // Set an alternative service for origin.
10242 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10238 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10243 HttpServerProperties* http_server_properties = 10239 HttpServerProperties* http_server_properties =
10244 session->http_server_properties(); 10240 session->http_server_properties();
10245 url::SchemeHostPort test_server("https", "www.example.org", 443); 10241 url::SchemeHostPort test_server("https", "www.example.org", 443);
10246 AlternativeService alternative_service(QUIC, "", 80); 10242 AlternativeService alternative_service(kProtoQUIC, "", 80);
10247 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10243 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10248 http_server_properties->SetAlternativeService( 10244 http_server_properties->SetAlternativeService(
10249 test_server, alternative_service, expiration); 10245 test_server, alternative_service, expiration);
10250 AlternativeServiceVector alternative_service_vector = 10246 AlternativeServiceVector alternative_service_vector =
10251 http_server_properties->GetAlternativeServices(test_server); 10247 http_server_properties->GetAlternativeServices(test_server);
10252 EXPECT_EQ(1u, alternative_service_vector.size()); 10248 EXPECT_EQ(1u, alternative_service_vector.size());
10253 10249
10254 // Send a clear header. 10250 // Send a clear header.
10255 MockRead data_reads[] = { 10251 MockRead data_reads[] = {
10256 MockRead("HTTP/1.1 200 OK\r\n"), 10252 MockRead("HTTP/1.1 200 OK\r\n"),
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
10335 EXPECT_FALSE(response->was_fetched_via_spdy); 10331 EXPECT_FALSE(response->was_fetched_via_spdy);
10336 EXPECT_FALSE(response->was_alpn_negotiated); 10332 EXPECT_FALSE(response->was_alpn_negotiated);
10337 10333
10338 std::string response_data; 10334 std::string response_data;
10339 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); 10335 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk());
10340 EXPECT_EQ("hello world", response_data); 10336 EXPECT_EQ("hello world", response_data);
10341 10337
10342 alternative_service_vector = 10338 alternative_service_vector =
10343 http_server_properties->GetAlternativeServices(test_server); 10339 http_server_properties->GetAlternativeServices(test_server);
10344 ASSERT_EQ(2u, alternative_service_vector.size()); 10340 ASSERT_EQ(2u, alternative_service_vector.size());
10345 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoHTTP2), 10341 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[0].protocol);
10346 alternative_service_vector[0].protocol);
10347 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); 10342 EXPECT_EQ("www.example.com", alternative_service_vector[0].host);
10348 EXPECT_EQ(443, alternative_service_vector[0].port); 10343 EXPECT_EQ(443, alternative_service_vector[0].port);
10349 EXPECT_EQ(AlternateProtocolFromNextProto(kProtoHTTP2), 10344 EXPECT_EQ(kProtoHTTP2, alternative_service_vector[1].protocol);
10350 alternative_service_vector[1].protocol);
10351 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); 10345 EXPECT_EQ("www.example.org", alternative_service_vector[1].host);
10352 EXPECT_EQ(1234, alternative_service_vector[1].port); 10346 EXPECT_EQ(1234, alternative_service_vector[1].port);
10353 } 10347 }
10354 10348
10355 TEST_F(HttpNetworkTransactionTest, IdentifyQuicBroken) { 10349 TEST_F(HttpNetworkTransactionTest, IdentifyQuicBroken) {
10356 url::SchemeHostPort server("https", "origin.example.org", 443); 10350 url::SchemeHostPort server("https", "origin.example.org", 443);
10357 HostPortPair alternative("alternative.example.org", 443); 10351 HostPortPair alternative("alternative.example.org", 443);
10358 std::string origin_url = "https://origin.example.org:443"; 10352 std::string origin_url = "https://origin.example.org:443";
10359 std::string alternative_url = "https://alternative.example.org:443"; 10353 std::string alternative_url = "https://alternative.example.org:443";
10360 10354
(...skipping 20 matching lines...) Expand all
10381 session_deps_.socket_factory->AddSocketDataProvider(&http_data); 10375 session_deps_.socket_factory->AddSocketDataProvider(&http_data);
10382 10376
10383 StaticSocketDataProvider data_refused; 10377 StaticSocketDataProvider data_refused;
10384 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 10378 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
10385 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); 10379 session_deps_.socket_factory->AddSocketDataProvider(&data_refused);
10386 10380
10387 // Set up a QUIC alternative service for server. 10381 // Set up a QUIC alternative service for server.
10388 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10382 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10389 HttpServerProperties* http_server_properties = 10383 HttpServerProperties* http_server_properties =
10390 session->http_server_properties(); 10384 session->http_server_properties();
10391 AlternativeService alternative_service(QUIC, alternative); 10385 AlternativeService alternative_service(kProtoQUIC, alternative);
10392 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10386 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10393 http_server_properties->SetAlternativeService(server, alternative_service, 10387 http_server_properties->SetAlternativeService(server, alternative_service,
10394 expiration); 10388 expiration);
10395 // Mark the QUIC alternative service as broken. 10389 // Mark the QUIC alternative service as broken.
10396 http_server_properties->MarkAlternativeServiceBroken(alternative_service); 10390 http_server_properties->MarkAlternativeServiceBroken(alternative_service);
10397 10391
10398 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10392 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10399 HttpRequestInfo request; 10393 HttpRequestInfo request;
10400 request.method = "GET"; 10394 request.method = "GET";
10401 request.url = GURL(origin_url); 10395 request.url = GURL(origin_url);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
10443 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); 10437 session_deps_.socket_factory->AddSocketDataProvider(&data_refused);
10444 10438
10445 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10439 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10446 HttpServerProperties* http_server_properties = 10440 HttpServerProperties* http_server_properties =
10447 session->http_server_properties(); 10441 session->http_server_properties();
10448 10442
10449 // Set up two QUIC alternative services for server. 10443 // Set up two QUIC alternative services for server.
10450 AlternativeServiceInfoVector alternative_service_info_vector; 10444 AlternativeServiceInfoVector alternative_service_info_vector;
10451 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10445 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10452 10446
10453 AlternativeService alternative_service1(QUIC, alternative1); 10447 AlternativeService alternative_service1(kProtoQUIC, alternative1);
10454 AlternativeServiceInfo alternative_service_info1(alternative_service1, 10448 AlternativeServiceInfo alternative_service_info1(alternative_service1,
10455 expiration); 10449 expiration);
10456 alternative_service_info_vector.push_back(alternative_service_info1); 10450 alternative_service_info_vector.push_back(alternative_service_info1);
10457 AlternativeService alternative_service2(QUIC, alternative2); 10451 AlternativeService alternative_service2(kProtoQUIC, alternative2);
10458 AlternativeServiceInfo alternative_service_info2(alternative_service2, 10452 AlternativeServiceInfo alternative_service_info2(alternative_service2,
10459 expiration); 10453 expiration);
10460 alternative_service_info_vector.push_back(alternative_service_info2); 10454 alternative_service_info_vector.push_back(alternative_service_info2);
10461 10455
10462 http_server_properties->SetAlternativeServices( 10456 http_server_properties->SetAlternativeServices(
10463 server, alternative_service_info_vector); 10457 server, alternative_service_info_vector);
10464 10458
10465 // Mark one of the QUIC alternative service as broken. 10459 // Mark one of the QUIC alternative service as broken.
10466 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); 10460 http_server_properties->MarkAlternativeServiceBroken(alternative_service1);
10467 10461
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
10504 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10498 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10505 10499
10506 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10500 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10507 10501
10508 HttpServerProperties* http_server_properties = 10502 HttpServerProperties* http_server_properties =
10509 session->http_server_properties(); 10503 session->http_server_properties();
10510 const url::SchemeHostPort server(request.url); 10504 const url::SchemeHostPort server(request.url);
10511 // Port must be < 1024, or the header will be ignored (since initial port was 10505 // Port must be < 1024, or the header will be ignored (since initial port was
10512 // port 80 (another restricted port). 10506 // port 80 (another restricted port).
10513 const AlternativeService alternative_service( 10507 const AlternativeService alternative_service(
10514 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", 10508 kProtoHTTP2, "www.example.org",
10515 666); // Port is ignored by MockConnect anyway. 10509 666); // Port is ignored by MockConnect anyway.
10516 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10510 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10517 http_server_properties->SetAlternativeService(server, alternative_service, 10511 http_server_properties->SetAlternativeService(server, alternative_service,
10518 expiration); 10512 expiration);
10519 10513
10520 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10514 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10521 TestCompletionCallback callback; 10515 TestCompletionCallback callback;
10522 10516
10523 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10517 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10524 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10518 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
10566 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10560 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10567 SSLSocketDataProvider ssl_http11(ASYNC, OK); 10561 SSLSocketDataProvider ssl_http11(ASYNC, OK);
10568 ssl_http11.next_proto = kProtoHTTP11; 10562 ssl_http11.next_proto = kProtoHTTP11;
10569 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 10563 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
10570 10564
10571 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10565 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10572 10566
10573 HttpServerProperties* http_server_properties = 10567 HttpServerProperties* http_server_properties =
10574 session->http_server_properties(); 10568 session->http_server_properties();
10575 const int kUnrestrictedAlternatePort = 1024; 10569 const int kUnrestrictedAlternatePort = 1024;
10576 AlternativeService alternative_service( 10570 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10577 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", 10571 kUnrestrictedAlternatePort);
10578 kUnrestrictedAlternatePort);
10579 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10572 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10580 http_server_properties->SetAlternativeService( 10573 http_server_properties->SetAlternativeService(
10581 url::SchemeHostPort(restricted_port_request.url), alternative_service, 10574 url::SchemeHostPort(restricted_port_request.url), alternative_service,
10582 expiration); 10575 expiration);
10583 10576
10584 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10577 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10585 TestCompletionCallback callback; 10578 TestCompletionCallback callback;
10586 10579
10587 int rv = trans.Start(&restricted_port_request, callback.callback(), 10580 int rv = trans.Start(&restricted_port_request, callback.callback(),
10588 NetLogWithSource()); 10581 NetLogWithSource());
(...skipping 28 matching lines...) Expand all
10617 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10610 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10618 SSLSocketDataProvider ssl_http11(ASYNC, OK); 10611 SSLSocketDataProvider ssl_http11(ASYNC, OK);
10619 ssl_http11.next_proto = kProtoHTTP11; 10612 ssl_http11.next_proto = kProtoHTTP11;
10620 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 10613 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
10621 10614
10622 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10615 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10623 10616
10624 HttpServerProperties* http_server_properties = 10617 HttpServerProperties* http_server_properties =
10625 session->http_server_properties(); 10618 session->http_server_properties();
10626 const int kUnrestrictedAlternatePort = 1024; 10619 const int kUnrestrictedAlternatePort = 1024;
10627 AlternativeService alternative_service( 10620 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10628 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", 10621 kUnrestrictedAlternatePort);
10629 kUnrestrictedAlternatePort);
10630 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10622 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10631 http_server_properties->SetAlternativeService( 10623 http_server_properties->SetAlternativeService(
10632 url::SchemeHostPort(restricted_port_request.url), alternative_service, 10624 url::SchemeHostPort(restricted_port_request.url), alternative_service,
10633 expiration); 10625 expiration);
10634 10626
10635 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10627 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10636 TestCompletionCallback callback; 10628 TestCompletionCallback callback;
10637 10629
10638 EXPECT_EQ(ERR_IO_PENDING, 10630 EXPECT_EQ(ERR_IO_PENDING,
10639 trans.Start(&restricted_port_request, callback.callback(), 10631 trans.Start(&restricted_port_request, callback.callback(),
(...skipping 27 matching lines...) Expand all
10667 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10659 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10668 10660
10669 SSLSocketDataProvider ssl(ASYNC, OK); 10661 SSLSocketDataProvider ssl(ASYNC, OK);
10670 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10662 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
10671 10663
10672 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10664 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10673 10665
10674 HttpServerProperties* http_server_properties = 10666 HttpServerProperties* http_server_properties =
10675 session->http_server_properties(); 10667 session->http_server_properties();
10676 const int kRestrictedAlternatePort = 80; 10668 const int kRestrictedAlternatePort = 80;
10677 AlternativeService alternative_service( 10669 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10678 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", 10670 kRestrictedAlternatePort);
10679 kRestrictedAlternatePort);
10680 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10671 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10681 http_server_properties->SetAlternativeService( 10672 http_server_properties->SetAlternativeService(
10682 url::SchemeHostPort(restricted_port_request.url), alternative_service, 10673 url::SchemeHostPort(restricted_port_request.url), alternative_service,
10683 expiration); 10674 expiration);
10684 10675
10685 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10676 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10686 TestCompletionCallback callback; 10677 TestCompletionCallback callback;
10687 10678
10688 int rv = trans.Start(&restricted_port_request, callback.callback(), 10679 int rv = trans.Start(&restricted_port_request, callback.callback(),
10689 NetLogWithSource()); 10680 NetLogWithSource());
(...skipping 27 matching lines...) Expand all
10717 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10708 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10718 SSLSocketDataProvider ssl_http11(ASYNC, OK); 10709 SSLSocketDataProvider ssl_http11(ASYNC, OK);
10719 ssl_http11.next_proto = kProtoHTTP11; 10710 ssl_http11.next_proto = kProtoHTTP11;
10720 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11); 10711 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_http11);
10721 10712
10722 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10713 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10723 10714
10724 HttpServerProperties* http_server_properties = 10715 HttpServerProperties* http_server_properties =
10725 session->http_server_properties(); 10716 session->http_server_properties();
10726 const int kRestrictedAlternatePort = 80; 10717 const int kRestrictedAlternatePort = 80;
10727 AlternativeService alternative_service( 10718 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10728 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", 10719 kRestrictedAlternatePort);
10729 kRestrictedAlternatePort);
10730 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10720 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10731 http_server_properties->SetAlternativeService( 10721 http_server_properties->SetAlternativeService(
10732 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, 10722 url::SchemeHostPort(unrestricted_port_request.url), alternative_service,
10733 expiration); 10723 expiration);
10734 10724
10735 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10725 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10736 TestCompletionCallback callback; 10726 TestCompletionCallback callback;
10737 10727
10738 int rv = trans.Start(&unrestricted_port_request, callback.callback(), 10728 int rv = trans.Start(&unrestricted_port_request, callback.callback(),
10739 NetLogWithSource()); 10729 NetLogWithSource());
(...skipping 27 matching lines...) Expand all
10767 session_deps_.socket_factory->AddSocketDataProvider(&second_data); 10757 session_deps_.socket_factory->AddSocketDataProvider(&second_data);
10768 10758
10769 SSLSocketDataProvider ssl(ASYNC, OK); 10759 SSLSocketDataProvider ssl(ASYNC, OK);
10770 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); 10760 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl);
10771 10761
10772 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10762 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10773 10763
10774 HttpServerProperties* http_server_properties = 10764 HttpServerProperties* http_server_properties =
10775 session->http_server_properties(); 10765 session->http_server_properties();
10776 const int kUnrestrictedAlternatePort = 1025; 10766 const int kUnrestrictedAlternatePort = 1025;
10777 AlternativeService alternative_service( 10767 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10778 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", 10768 kUnrestrictedAlternatePort);
10779 kUnrestrictedAlternatePort);
10780 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10769 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10781 http_server_properties->SetAlternativeService( 10770 http_server_properties->SetAlternativeService(
10782 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, 10771 url::SchemeHostPort(unrestricted_port_request.url), alternative_service,
10783 expiration); 10772 expiration);
10784 10773
10785 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10774 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10786 TestCompletionCallback callback; 10775 TestCompletionCallback callback;
10787 10776
10788 int rv = trans.Start(&unrestricted_port_request, callback.callback(), 10777 int rv = trans.Start(&unrestricted_port_request, callback.callback(),
10789 NetLogWithSource()); 10778 NetLogWithSource());
(...skipping 19 matching lines...) Expand all
10809 }; 10798 };
10810 StaticSocketDataProvider data( 10799 StaticSocketDataProvider data(
10811 data_reads, arraysize(data_reads), NULL, 0); 10800 data_reads, arraysize(data_reads), NULL, 0);
10812 session_deps_.socket_factory->AddSocketDataProvider(&data); 10801 session_deps_.socket_factory->AddSocketDataProvider(&data);
10813 10802
10814 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10803 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10815 10804
10816 HttpServerProperties* http_server_properties = 10805 HttpServerProperties* http_server_properties =
10817 session->http_server_properties(); 10806 session->http_server_properties();
10818 const int kUnsafePort = 7; 10807 const int kUnsafePort = 7;
10819 AlternativeService alternative_service( 10808 AlternativeService alternative_service(kProtoHTTP2, "www.example.org",
10820 AlternateProtocolFromNextProto(kProtoHTTP2), "www.example.org", 10809 kUnsafePort);
10821 kUnsafePort);
10822 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10810 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10823 http_server_properties->SetAlternativeService( 10811 http_server_properties->SetAlternativeService(
10824 url::SchemeHostPort(request.url), alternative_service, expiration); 10812 url::SchemeHostPort(request.url), alternative_service, expiration);
10825 10813
10826 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10814 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10827 TestCompletionCallback callback; 10815 TestCompletionCallback callback;
10828 10816
10829 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 10817 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
10830 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 10818 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
10831 // The HTTP request should succeed. 10819 // The HTTP request should succeed.
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
11169 11157
11170 session_deps_.net_log = &net_log; 11158 session_deps_.net_log = &net_log;
11171 11159
11172 // Configure alternative service with a hostname that is not bypassed by the 11160 // Configure alternative service with a hostname that is not bypassed by the
11173 // proxy. 11161 // proxy.
11174 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 11162 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
11175 HttpServerProperties* http_server_properties = 11163 HttpServerProperties* http_server_properties =
11176 session->http_server_properties(); 11164 session->http_server_properties();
11177 url::SchemeHostPort server("https", "www.example.org", 443); 11165 url::SchemeHostPort server("https", "www.example.org", 443);
11178 HostPortPair alternative("www.example.com", 443); 11166 HostPortPair alternative("www.example.com", 443);
11179 AlternativeService alternative_service( 11167 AlternativeService alternative_service(kProtoHTTP2, alternative);
11180 AlternateProtocolFromNextProto(kProtoHTTP2), alternative);
11181 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 11168 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
11182 http_server_properties->SetAlternativeService(server, alternative_service, 11169 http_server_properties->SetAlternativeService(server, alternative_service,
11183 expiration); 11170 expiration);
11184 11171
11185 // Non-alternative job should hang. 11172 // Non-alternative job should hang.
11186 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 11173 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
11187 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0, 11174 StaticSocketDataProvider hanging_alternate_protocol_socket(nullptr, 0,
11188 nullptr, 0); 11175 nullptr, 0);
11189 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect); 11176 hanging_alternate_protocol_socket.set_connect_data(never_finishing_connect);
11190 session_deps_.socket_factory->AddSocketDataProvider( 11177 session_deps_.socket_factory->AddSocketDataProvider(
(...skipping 2507 matching lines...) Expand 10 before | Expand all | Expand 10 after
13698 // negotiated. In order to test this, a failed connection to the server is 13685 // negotiated. In order to test this, a failed connection to the server is
13699 // mocked. This way the request relies on the alternate Job. 13686 // mocked. This way the request relies on the alternate Job.
13700 StaticSocketDataProvider data_refused; 13687 StaticSocketDataProvider data_refused;
13701 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 13688 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
13702 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); 13689 session_deps_.socket_factory->AddSocketDataProvider(&data_refused);
13703 13690
13704 // Set up alternative service for server. 13691 // Set up alternative service for server.
13705 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 13692 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13706 HttpServerProperties* http_server_properties = 13693 HttpServerProperties* http_server_properties =
13707 session->http_server_properties(); 13694 session->http_server_properties();
13708 AlternativeService alternative_service( 13695 AlternativeService alternative_service(kProtoHTTP2, alternative);
13709 AlternateProtocolFromNextProto(kProtoHTTP2), alternative);
13710 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 13696 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
13711 http_server_properties->SetAlternativeService(server, alternative_service, 13697 http_server_properties->SetAlternativeService(server, alternative_service,
13712 expiration); 13698 expiration);
13713 13699
13714 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 13700 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
13715 HttpRequestInfo request; 13701 HttpRequestInfo request;
13716 request.method = "GET"; 13702 request.method = "GET";
13717 request.url = GURL("https://www.example.org:443"); 13703 request.url = GURL("https://www.example.org:443");
13718 TestCompletionCallback callback; 13704 TestCompletionCallback callback;
13719 13705
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
13766 MockRead("another"), 13752 MockRead("another"),
13767 }; 13753 };
13768 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 13754 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
13769 http_writes, arraysize(http_writes)); 13755 http_writes, arraysize(http_writes));
13770 session_deps_.socket_factory->AddSocketDataProvider(&http_data); 13756 session_deps_.socket_factory->AddSocketDataProvider(&http_data);
13771 13757
13772 // Set up alternative service for server. 13758 // Set up alternative service for server.
13773 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 13759 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13774 HttpServerProperties* http_server_properties = 13760 HttpServerProperties* http_server_properties =
13775 session->http_server_properties(); 13761 session->http_server_properties();
13776 AlternativeService alternative_service( 13762 AlternativeService alternative_service(kProtoHTTP2, alternative);
13777 AlternateProtocolFromNextProto(kProtoHTTP2), alternative);
13778 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 13763 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
13779 http_server_properties->SetAlternativeService(server, alternative_service, 13764 http_server_properties->SetAlternativeService(server, alternative_service,
13780 expiration); 13765 expiration);
13781 13766
13782 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); 13767 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get());
13783 HttpRequestInfo request1; 13768 HttpRequestInfo request1;
13784 request1.method = "GET"; 13769 request1.method = "GET";
13785 request1.url = GURL("https://www.example.org:443"); 13770 request1.url = GURL("https://www.example.org:443");
13786 request1.load_flags = 0; 13771 request1.load_flags = 0;
13787 TestCompletionCallback callback1; 13772 TestCompletionCallback callback1;
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
13874 // existing HTTP/1.1 connection. In order to test this, a failed connection 13859 // existing HTTP/1.1 connection. In order to test this, a failed connection
13875 // to the server is mocked. This way |request2| relies on the alternate Job. 13860 // to the server is mocked. This way |request2| relies on the alternate Job.
13876 StaticSocketDataProvider data_refused; 13861 StaticSocketDataProvider data_refused;
13877 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); 13862 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED));
13878 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); 13863 session_deps_.socket_factory->AddSocketDataProvider(&data_refused);
13879 13864
13880 // Set up alternative service for server. 13865 // Set up alternative service for server.
13881 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 13866 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13882 HttpServerProperties* http_server_properties = 13867 HttpServerProperties* http_server_properties =
13883 session->http_server_properties(); 13868 session->http_server_properties();
13884 AlternativeService alternative_service( 13869 AlternativeService alternative_service(kProtoHTTP2, alternative);
13885 AlternateProtocolFromNextProto(kProtoHTTP2), alternative);
13886 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 13870 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
13887 http_server_properties->SetAlternativeService(server, alternative_service, 13871 http_server_properties->SetAlternativeService(server, alternative_service,
13888 expiration); 13872 expiration);
13889 13873
13890 // First transaction to alternative to open an HTTP/1.1 socket. 13874 // First transaction to alternative to open an HTTP/1.1 socket.
13891 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); 13875 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get());
13892 HttpRequestInfo request1; 13876 HttpRequestInfo request1;
13893 request1.method = "GET"; 13877 request1.method = "GET";
13894 request1.url = GURL(alternative_url); 13878 request1.url = GURL(alternative_url);
13895 request1.load_flags = 0; 13879 request1.load_flags = 0;
(...skipping 2500 matching lines...) Expand 10 before | Expand all | Expand 10 after
16396 base::RunLoop().RunUntilIdle(); 16380 base::RunLoop().RunUntilIdle();
16397 16381
16398 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 16382 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
16399 HttpRequestHeaders headers; 16383 HttpRequestHeaders headers;
16400 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 16384 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
16401 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 16385 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
16402 } 16386 }
16403 #endif // !defined(OS_IOS) 16387 #endif // !defined(OS_IOS)
16404 16388
16405 } // namespace net 16389 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_server_properties.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698