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

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

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