OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <memory> | 5 #include <memory> |
6 #include <ostream> | 6 #include <ostream> |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
618 url::SchemeHostPort server(request_.url); | 618 url::SchemeHostPort server(request_.url); |
619 AlternativeService alternative_service(kProtoQUIC, alternative.host(), | 619 AlternativeService alternative_service(kProtoQUIC, alternative.host(), |
620 alternative.port()); | 620 alternative.port()); |
621 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 621 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
622 http_server_properties_.SetAlternativeService(server, alternative_service, | 622 http_server_properties_.SetAlternativeService(server, alternative_service, |
623 expiration); | 623 expiration); |
624 } | 624 } |
625 | 625 |
626 void ExpectBrokenAlternateProtocolMapping() { | 626 void ExpectBrokenAlternateProtocolMapping() { |
627 const url::SchemeHostPort server(request_.url); | 627 const url::SchemeHostPort server(request_.url); |
628 const AlternativeServiceVector alternative_service_vector = | 628 const AlternativeServiceInfoVector alternative_service_info_vector = |
629 http_server_properties_.GetAlternativeServices(server); | 629 http_server_properties_.GetAlternativeServiceInfos(server); |
630 EXPECT_EQ(1u, alternative_service_vector.size()); | 630 EXPECT_EQ(1u, alternative_service_info_vector.size()); |
631 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( | 631 EXPECT_TRUE(http_server_properties_.IsAlternativeServiceBroken( |
632 alternative_service_vector[0])); | 632 alternative_service_info_vector[0].alternative_service)); |
633 } | 633 } |
634 | 634 |
635 void ExpectQuicAlternateProtocolMapping() { | 635 void ExpectQuicAlternateProtocolMapping() { |
636 const url::SchemeHostPort server(request_.url); | 636 const url::SchemeHostPort server(request_.url); |
637 const AlternativeServiceVector alternative_service_vector = | 637 const AlternativeServiceInfoVector alternative_service_info_vector = |
638 http_server_properties_.GetAlternativeServices(server); | 638 http_server_properties_.GetAlternativeServiceInfos(server); |
639 EXPECT_EQ(1u, alternative_service_vector.size()); | 639 EXPECT_EQ(1u, alternative_service_info_vector.size()); |
640 EXPECT_EQ(kProtoQUIC, alternative_service_vector[0].protocol); | 640 EXPECT_EQ(kProtoQUIC, |
| 641 alternative_service_info_vector[0].alternative_service.protocol); |
641 EXPECT_FALSE(http_server_properties_.IsAlternativeServiceBroken( | 642 EXPECT_FALSE(http_server_properties_.IsAlternativeServiceBroken( |
642 alternative_service_vector[0])); | 643 alternative_service_info_vector[0].alternative_service)); |
643 } | 644 } |
644 | 645 |
645 void AddHangingNonAlternateProtocolSocketData() { | 646 void AddHangingNonAlternateProtocolSocketData() { |
646 std::unique_ptr<StaticSocketDataProvider> hanging_data; | 647 std::unique_ptr<StaticSocketDataProvider> hanging_data; |
647 hanging_data.reset(new StaticSocketDataProvider()); | 648 hanging_data.reset(new StaticSocketDataProvider()); |
648 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); | 649 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); |
649 hanging_data->set_connect_data(hanging_connect); | 650 hanging_data->set_connect_data(hanging_connect); |
650 hanging_data_.push_back(std::move(hanging_data)); | 651 hanging_data_.push_back(std::move(hanging_data)); |
651 socket_factory_.AddSocketDataProvider(hanging_data_.back().get()); | 652 socket_factory_.AddSocketDataProvider(hanging_data_.back().get()); |
652 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | 653 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); |
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1288 // Send https request, ignore alternative service advertising if response | 1289 // Send https request, ignore alternative service advertising if response |
1289 // header advertises alternative service for mail.example.org. | 1290 // header advertises alternative service for mail.example.org. |
1290 request_.url = GURL("https://mail.example.org:443"); | 1291 request_.url = GURL("https://mail.example.org:443"); |
1291 SendRequestAndExpectHttpResponse("hello world"); | 1292 SendRequestAndExpectHttpResponse("hello world"); |
1292 HttpServerProperties* http_server_properties = | 1293 HttpServerProperties* http_server_properties = |
1293 session_->http_server_properties(); | 1294 session_->http_server_properties(); |
1294 url::SchemeHostPort http_server("http", "mail.example.org", 443); | 1295 url::SchemeHostPort http_server("http", "mail.example.org", 443); |
1295 url::SchemeHostPort https_server("https", "mail.example.org", 443); | 1296 url::SchemeHostPort https_server("https", "mail.example.org", 443); |
1296 // Check alternative service is set for the correct origin. | 1297 // Check alternative service is set for the correct origin. |
1297 EXPECT_EQ( | 1298 EXPECT_EQ( |
1298 2u, http_server_properties->GetAlternativeServices(https_server).size()); | 1299 2u, |
| 1300 http_server_properties->GetAlternativeServiceInfos(https_server).size()); |
1299 EXPECT_TRUE( | 1301 EXPECT_TRUE( |
1300 http_server_properties->GetAlternativeServices(http_server).empty()); | 1302 http_server_properties->GetAlternativeServiceInfos(http_server).empty()); |
1301 } | 1303 } |
1302 | 1304 |
1303 TEST_P(QuicNetworkTransactionTest, DoNotGetAltSvcForDifferentOrigin) { | 1305 TEST_P(QuicNetworkTransactionTest, DoNotGetAltSvcForDifferentOrigin) { |
1304 MockRead http_reads[] = { | 1306 MockRead http_reads[] = { |
1305 MockRead("HTTP/1.1 200 OK\r\n"), | 1307 MockRead("HTTP/1.1 200 OK\r\n"), |
1306 MockRead("Alt-Svc: quic=\"foo.example.org:443\", quic=\":444\"\r\n\r\n"), | 1308 MockRead("Alt-Svc: quic=\"foo.example.org:443\", quic=\":444\"\r\n\r\n"), |
1307 MockRead("hello world"), | 1309 MockRead("hello world"), |
1308 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1310 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
1309 MockRead(ASYNC, OK)}; | 1311 MockRead(ASYNC, OK)}; |
1310 | 1312 |
1311 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 1313 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
1312 0); | 1314 0); |
1313 | 1315 |
1314 socket_factory_.AddSocketDataProvider(&http_data); | 1316 socket_factory_.AddSocketDataProvider(&http_data); |
1315 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | 1317 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); |
1316 socket_factory_.AddSocketDataProvider(&http_data); | 1318 socket_factory_.AddSocketDataProvider(&http_data); |
1317 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | 1319 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); |
1318 | 1320 |
1319 CreateSession(); | 1321 CreateSession(); |
1320 | 1322 |
1321 // Send https request and set alternative services if response header | 1323 // Send https request and set alternative services if response header |
1322 // advertises alternative service for mail.example.org. | 1324 // advertises alternative service for mail.example.org. |
1323 SendRequestAndExpectHttpResponse("hello world"); | 1325 SendRequestAndExpectHttpResponse("hello world"); |
1324 HttpServerProperties* http_server_properties = | 1326 HttpServerProperties* http_server_properties = |
1325 session_->http_server_properties(); | 1327 session_->http_server_properties(); |
1326 | 1328 |
1327 const url::SchemeHostPort https_server(request_.url); | 1329 const url::SchemeHostPort https_server(request_.url); |
1328 // Check alternative service is set. | 1330 // Check alternative service is set. |
1329 AlternativeServiceVector alternative_service_vector = | 1331 EXPECT_EQ( |
1330 http_server_properties->GetAlternativeServices(https_server); | 1332 2u, |
1331 EXPECT_EQ(2u, alternative_service_vector.size()); | 1333 http_server_properties->GetAlternativeServiceInfos(https_server).size()); |
1332 | 1334 |
1333 // Send http request to the same origin but with diffrent scheme, should not | 1335 // Send http request to the same origin but with diffrent scheme, should not |
1334 // use QUIC. | 1336 // use QUIC. |
1335 request_.url = GURL("http://mail.example.org:443"); | 1337 request_.url = GURL("http://mail.example.org:443"); |
1336 SendRequestAndExpectHttpResponse("hello world"); | 1338 SendRequestAndExpectHttpResponse("hello world"); |
1337 } | 1339 } |
1338 | 1340 |
1339 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) { | 1341 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) { |
1340 std::string altsvc_header = | 1342 std::string altsvc_header = |
1341 base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_); | 1343 base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_); |
(...skipping 1533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2875 0); | 2877 0); |
2876 socket_factory_.AddSocketDataProvider(&http_data); | 2878 socket_factory_.AddSocketDataProvider(&http_data); |
2877 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | 2879 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); |
2878 | 2880 |
2879 AddHangingNonAlternateProtocolSocketData(); | 2881 AddHangingNonAlternateProtocolSocketData(); |
2880 CreateSession(); | 2882 CreateSession(); |
2881 | 2883 |
2882 SendRequestAndExpectHttpResponse("hello world"); | 2884 SendRequestAndExpectHttpResponse("hello world"); |
2883 | 2885 |
2884 url::SchemeHostPort http_server("https", kDefaultServerHostName, 443); | 2886 url::SchemeHostPort http_server("https", kDefaultServerHostName, 443); |
2885 AlternativeServiceVector alternative_service_vector = | 2887 AlternativeServiceInfoVector alternative_service_info_vector = |
2886 http_server_properties_.GetAlternativeServices(http_server); | 2888 http_server_properties_.GetAlternativeServiceInfos(http_server); |
2887 ASSERT_EQ(1u, alternative_service_vector.size()); | 2889 ASSERT_EQ(1u, alternative_service_info_vector.size()); |
2888 const AlternativeService alternative_service = alternative_service_vector[0]; | 2890 const AlternativeService alternative_service = |
2889 EXPECT_EQ(kProtoQUIC, alternative_service_vector[0].protocol); | 2891 alternative_service_info_vector[0].alternative_service; |
2890 EXPECT_EQ(kDefaultServerHostName, alternative_service_vector[0].host); | 2892 EXPECT_EQ(kProtoQUIC, alternative_service.protocol); |
2891 EXPECT_EQ(137, alternative_service_vector[0].port); | 2893 EXPECT_EQ(kDefaultServerHostName, alternative_service.host); |
| 2894 EXPECT_EQ(137, alternative_service.port); |
2892 } | 2895 } |
2893 | 2896 |
2894 TEST_P(QuicNetworkTransactionTest, ConfirmAlternativeService) { | 2897 TEST_P(QuicNetworkTransactionTest, ConfirmAlternativeService) { |
2895 MockRead http_reads[] = { | 2898 MockRead http_reads[] = { |
2896 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), | 2899 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(kQuicAlternativeServiceHeader), |
2897 MockRead("hello world"), | 2900 MockRead("hello world"), |
2898 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 2901 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
2899 MockRead(ASYNC, OK)}; | 2902 MockRead(ASYNC, OK)}; |
2900 | 2903 |
2901 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 2904 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
(...skipping 1784 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4686 | 4689 |
4687 request_.url = GURL("https://mail.example.org/pushed.jpg"); | 4690 request_.url = GURL("https://mail.example.org/pushed.jpg"); |
4688 ChunkedUploadDataStream upload_data(0); | 4691 ChunkedUploadDataStream upload_data(0); |
4689 upload_data.AppendData("1", 1, true); | 4692 upload_data.AppendData("1", 1, true); |
4690 request_.upload_data_stream = &upload_data; | 4693 request_.upload_data_stream = &upload_data; |
4691 SendRequestAndExpectQuicResponse("and hello!"); | 4694 SendRequestAndExpectQuicResponse("and hello!"); |
4692 } | 4695 } |
4693 | 4696 |
4694 } // namespace test | 4697 } // namespace test |
4695 } // namespace net | 4698 } // namespace net |
OLD | NEW |