OLD | NEW |
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 #include <limits> | 10 #include <limits> |
(...skipping 8791 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8802 NextProto next_proto, | 8802 NextProto next_proto, |
8803 SpdySessionDependencies* session_deps_) { | 8803 SpdySessionDependencies* session_deps_) { |
8804 scoped_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 8804 scoped_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
8805 | 8805 |
8806 base::WeakPtr<HttpServerProperties> http_server_properties = | 8806 base::WeakPtr<HttpServerProperties> http_server_properties = |
8807 session->http_server_properties(); | 8807 session->http_server_properties(); |
8808 AlternativeService alternative_service( | 8808 AlternativeService alternative_service( |
8809 AlternateProtocolFromNextProto(next_proto), "", 443); | 8809 AlternateProtocolFromNextProto(next_proto), "", 443); |
8810 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 8810 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
8811 http_server_properties->SetAlternativeService( | 8811 http_server_properties->SetAlternativeService( |
8812 HostPortPair("host.with.alternate", 80), alternative_service, expiration); | 8812 HostPortPair("host.with.alternate", 80), alternative_service, 1.0, |
| 8813 expiration); |
8813 | 8814 |
8814 return session; | 8815 return session; |
8815 } | 8816 } |
8816 | 8817 |
8817 int GroupNameTransactionHelper(const std::string& url, | 8818 int GroupNameTransactionHelper(const std::string& url, |
8818 HttpNetworkSession* session) { | 8819 HttpNetworkSession* session) { |
8819 HttpRequestInfo request; | 8820 HttpRequestInfo request; |
8820 request.method = "GET"; | 8821 request.method = "GET"; |
8821 request.url = GURL(url); | 8822 request.url = GURL(url); |
8822 request.load_flags = 0; | 8823 request.load_flags = 0; |
(...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9729 session_deps_.parse_alternative_services = true; | 9730 session_deps_.parse_alternative_services = true; |
9730 session_deps_.enable_alternative_service_with_different_host = false; | 9731 session_deps_.enable_alternative_service_with_different_host = false; |
9731 | 9732 |
9732 // Set an alternative service for origin. | 9733 // Set an alternative service for origin. |
9733 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9734 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
9734 HttpServerProperties& http_server_properties = | 9735 HttpServerProperties& http_server_properties = |
9735 *session->http_server_properties(); | 9736 *session->http_server_properties(); |
9736 HostPortPair http_host_port_pair("www.example.org", 80); | 9737 HostPortPair http_host_port_pair("www.example.org", 80); |
9737 AlternativeService alternative_service(QUIC, "", 80); | 9738 AlternativeService alternative_service(QUIC, "", 80); |
9738 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9739 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
9739 http_server_properties.SetAlternativeService(http_host_port_pair, | 9740 http_server_properties.SetAlternativeService( |
9740 alternative_service, expiration); | 9741 http_host_port_pair, alternative_service, 1.0, expiration); |
9741 AlternativeServiceVector alternative_service_vector = | 9742 AlternativeServiceVector alternative_service_vector = |
9742 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9743 http_server_properties.GetAlternativeServices(http_host_port_pair); |
9743 EXPECT_EQ(1u, alternative_service_vector.size()); | 9744 EXPECT_EQ(1u, alternative_service_vector.size()); |
9744 | 9745 |
9745 // Send a clear header. | 9746 // Send a clear header. |
9746 MockRead data_reads[] = { | 9747 MockRead data_reads[] = { |
9747 MockRead("HTTP/1.1 200 OK\r\n"), | 9748 MockRead("HTTP/1.1 200 OK\r\n"), |
9748 MockRead("Alt-Svc: clear\r\n"), | 9749 MockRead("Alt-Svc: clear\r\n"), |
9749 MockRead("\r\n"), | 9750 MockRead("\r\n"), |
9750 MockRead("hello world"), | 9751 MockRead("hello world"), |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9991 | 9992 |
9992 TestCompletionCallback callback; | 9993 TestCompletionCallback callback; |
9993 | 9994 |
9994 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9995 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
9995 | 9996 |
9996 HostPortPair http_host_port_pair("www.example.org", 80); | 9997 HostPortPair http_host_port_pair("www.example.org", 80); |
9997 HttpServerProperties& http_server_properties = | 9998 HttpServerProperties& http_server_properties = |
9998 *session->http_server_properties(); | 9999 *session->http_server_properties(); |
9999 AlternativeService alternative_service(QUIC, "", 80); | 10000 AlternativeService alternative_service(QUIC, "", 80); |
10000 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10001 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10001 http_server_properties.SetAlternativeService(http_host_port_pair, | 10002 http_server_properties.SetAlternativeService( |
10002 alternative_service, expiration); | 10003 http_host_port_pair, alternative_service, 1.0, expiration); |
10003 | 10004 |
10004 AlternativeServiceVector alternative_service_vector = | 10005 AlternativeServiceVector alternative_service_vector = |
10005 http_server_properties.GetAlternativeServices(http_host_port_pair); | 10006 http_server_properties.GetAlternativeServices(http_host_port_pair); |
10006 ASSERT_EQ(1u, alternative_service_vector.size()); | 10007 ASSERT_EQ(1u, alternative_service_vector.size()); |
10007 EXPECT_EQ(QUIC, alternative_service_vector[0].protocol); | 10008 EXPECT_EQ(QUIC, alternative_service_vector[0].protocol); |
10008 | 10009 |
10009 scoped_ptr<HttpTransaction> trans( | 10010 scoped_ptr<HttpTransaction> trans( |
10010 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10011 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10011 | 10012 |
10012 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10013 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10122 | 10123 |
10123 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 10124 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
10124 | 10125 |
10125 base::WeakPtr<HttpServerProperties> http_server_properties = | 10126 base::WeakPtr<HttpServerProperties> http_server_properties = |
10126 session->http_server_properties(); | 10127 session->http_server_properties(); |
10127 AlternativeService alternative_service( | 10128 AlternativeService alternative_service( |
10128 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", | 10129 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", |
10129 80); | 10130 80); |
10130 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10131 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10131 http_server_properties->SetAlternativeService( | 10132 http_server_properties->SetAlternativeService( |
10132 HostPortPair::FromURL(request.url), alternative_service, expiration); | 10133 HostPortPair::FromURL(request.url), alternative_service, 1.0, expiration); |
10133 | 10134 |
10134 scoped_ptr<HttpTransaction> trans( | 10135 scoped_ptr<HttpTransaction> trans( |
10135 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10136 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10136 TestCompletionCallback callback; | 10137 TestCompletionCallback callback; |
10137 | 10138 |
10138 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10139 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
10139 // The connetion to origin was refused, and the alternative service should not | 10140 // The connetion to origin was refused, and the alternative service should not |
10140 // be used (even though mock data are there), therefore the request should | 10141 // be used (even though mock data are there), therefore the request should |
10141 // fail. | 10142 // fail. |
10142 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); | 10143 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10176 | 10177 |
10177 // Set up a QUIC alternative service for origin. | 10178 // Set up a QUIC alternative service for origin. |
10178 session_deps_.parse_alternative_services = true; | 10179 session_deps_.parse_alternative_services = true; |
10179 session_deps_.enable_alternative_service_with_different_host = false; | 10180 session_deps_.enable_alternative_service_with_different_host = false; |
10180 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10181 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10181 base::WeakPtr<HttpServerProperties> http_server_properties = | 10182 base::WeakPtr<HttpServerProperties> http_server_properties = |
10182 session->http_server_properties(); | 10183 session->http_server_properties(); |
10183 AlternativeService alternative_service(QUIC, alternative); | 10184 AlternativeService alternative_service(QUIC, alternative); |
10184 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10185 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10185 http_server_properties->SetAlternativeService(origin, alternative_service, | 10186 http_server_properties->SetAlternativeService(origin, alternative_service, |
10186 expiration); | 10187 1.0, expiration); |
10187 // Mark the QUIC alternative service as broken. | 10188 // Mark the QUIC alternative service as broken. |
10188 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10189 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
10189 | 10190 |
10190 scoped_ptr<HttpTransaction> trans( | 10191 scoped_ptr<HttpTransaction> trans( |
10191 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10192 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10192 HttpRequestInfo request; | 10193 HttpRequestInfo request; |
10193 request.method = "GET"; | 10194 request.method = "GET"; |
10194 request.url = GURL(origin_url); | 10195 request.url = GURL(origin_url); |
10195 request.load_flags = 0; | 10196 request.load_flags = 0; |
10196 TestCompletionCallback callback; | 10197 TestCompletionCallback callback; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10240 session_deps_.enable_alternative_service_with_different_host = true; | 10241 session_deps_.enable_alternative_service_with_different_host = true; |
10241 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10242 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10242 base::WeakPtr<HttpServerProperties> http_server_properties = | 10243 base::WeakPtr<HttpServerProperties> http_server_properties = |
10243 session->http_server_properties(); | 10244 session->http_server_properties(); |
10244 | 10245 |
10245 // Set up two QUIC alternative services for origin. | 10246 // Set up two QUIC alternative services for origin. |
10246 AlternativeServiceInfoVector alternative_service_info_vector; | 10247 AlternativeServiceInfoVector alternative_service_info_vector; |
10247 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10248 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10248 | 10249 |
10249 AlternativeService alternative_service1(QUIC, alternative1); | 10250 AlternativeService alternative_service1(QUIC, alternative1); |
10250 AlternativeServiceInfo alternative_service_info1(alternative_service1, | 10251 AlternativeServiceInfo alternative_service_info1(alternative_service1, 1.0, |
10251 expiration); | 10252 expiration); |
10252 alternative_service_info_vector.push_back(alternative_service_info1); | 10253 alternative_service_info_vector.push_back(alternative_service_info1); |
10253 AlternativeService alternative_service2(QUIC, alternative2); | 10254 AlternativeService alternative_service2(QUIC, alternative2); |
10254 AlternativeServiceInfo alternative_service_info2(alternative_service2, | 10255 AlternativeServiceInfo alternative_service_info2(alternative_service2, 1.0, |
10255 expiration); | 10256 expiration); |
10256 alternative_service_info_vector.push_back(alternative_service_info2); | 10257 alternative_service_info_vector.push_back(alternative_service_info2); |
10257 | 10258 |
10258 http_server_properties->SetAlternativeServices( | 10259 http_server_properties->SetAlternativeServices( |
10259 origin, alternative_service_info_vector); | 10260 origin, alternative_service_info_vector); |
10260 | 10261 |
10261 // Mark one of the QUIC alternative service as broken. | 10262 // Mark one of the QUIC alternative service as broken. |
10262 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); | 10263 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); |
10263 | 10264 |
10264 const AlternativeServiceVector alternative_service_vector = | 10265 const AlternativeServiceVector alternative_service_vector = |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10308 base::WeakPtr<HttpServerProperties> http_server_properties = | 10309 base::WeakPtr<HttpServerProperties> http_server_properties = |
10309 session->http_server_properties(); | 10310 session->http_server_properties(); |
10310 const HostPortPair host_port_pair = HostPortPair::FromURL(request.url); | 10311 const HostPortPair host_port_pair = HostPortPair::FromURL(request.url); |
10311 // Port must be < 1024, or the header will be ignored (since initial port was | 10312 // Port must be < 1024, or the header will be ignored (since initial port was |
10312 // port 80 (another restricted port). | 10313 // port 80 (another restricted port). |
10313 const AlternativeService alternative_service( | 10314 const AlternativeService alternative_service( |
10314 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10315 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10315 666); // Port is ignored by MockConnect anyway. | 10316 666); // Port is ignored by MockConnect anyway. |
10316 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10317 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10317 http_server_properties->SetAlternativeService( | 10318 http_server_properties->SetAlternativeService( |
10318 host_port_pair, alternative_service, expiration); | 10319 host_port_pair, alternative_service, 1.0, expiration); |
10319 | 10320 |
10320 scoped_ptr<HttpTransaction> trans( | 10321 scoped_ptr<HttpTransaction> trans( |
10321 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10322 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10322 TestCompletionCallback callback; | 10323 TestCompletionCallback callback; |
10323 | 10324 |
10324 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10325 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
10325 EXPECT_EQ(ERR_IO_PENDING, rv); | 10326 EXPECT_EQ(ERR_IO_PENDING, rv); |
10326 EXPECT_EQ(OK, callback.WaitForResult()); | 10327 EXPECT_EQ(OK, callback.WaitForResult()); |
10327 | 10328 |
10328 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10329 const HttpResponseInfo* response = trans->GetResponseInfo(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10374 | 10375 |
10375 base::WeakPtr<HttpServerProperties> http_server_properties = | 10376 base::WeakPtr<HttpServerProperties> http_server_properties = |
10376 session->http_server_properties(); | 10377 session->http_server_properties(); |
10377 const int kUnrestrictedAlternatePort = 1024; | 10378 const int kUnrestrictedAlternatePort = 1024; |
10378 AlternativeService alternative_service( | 10379 AlternativeService alternative_service( |
10379 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10380 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10380 kUnrestrictedAlternatePort); | 10381 kUnrestrictedAlternatePort); |
10381 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10382 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10382 http_server_properties->SetAlternativeService( | 10383 http_server_properties->SetAlternativeService( |
10383 HostPortPair::FromURL(restricted_port_request.url), alternative_service, | 10384 HostPortPair::FromURL(restricted_port_request.url), alternative_service, |
10384 expiration); | 10385 1.0, expiration); |
10385 | 10386 |
10386 scoped_ptr<HttpTransaction> trans( | 10387 scoped_ptr<HttpTransaction> trans( |
10387 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10388 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10388 TestCompletionCallback callback; | 10389 TestCompletionCallback callback; |
10389 | 10390 |
10390 int rv = trans->Start( | 10391 int rv = trans->Start( |
10391 &restricted_port_request, | 10392 &restricted_port_request, |
10392 callback.callback(), BoundNetLog()); | 10393 callback.callback(), BoundNetLog()); |
10393 EXPECT_EQ(ERR_IO_PENDING, rv); | 10394 EXPECT_EQ(ERR_IO_PENDING, rv); |
10394 // Invalid change to unrestricted port should fail. | 10395 // Invalid change to unrestricted port should fail. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10427 | 10428 |
10428 base::WeakPtr<HttpServerProperties> http_server_properties = | 10429 base::WeakPtr<HttpServerProperties> http_server_properties = |
10429 session->http_server_properties(); | 10430 session->http_server_properties(); |
10430 const int kUnrestrictedAlternatePort = 1024; | 10431 const int kUnrestrictedAlternatePort = 1024; |
10431 AlternativeService alternative_service( | 10432 AlternativeService alternative_service( |
10432 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10433 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10433 kUnrestrictedAlternatePort); | 10434 kUnrestrictedAlternatePort); |
10434 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10435 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10435 http_server_properties->SetAlternativeService( | 10436 http_server_properties->SetAlternativeService( |
10436 HostPortPair::FromURL(restricted_port_request.url), alternative_service, | 10437 HostPortPair::FromURL(restricted_port_request.url), alternative_service, |
10437 expiration); | 10438 1.0, expiration); |
10438 | 10439 |
10439 scoped_ptr<HttpTransaction> trans( | 10440 scoped_ptr<HttpTransaction> trans( |
10440 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10441 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10441 TestCompletionCallback callback; | 10442 TestCompletionCallback callback; |
10442 | 10443 |
10443 EXPECT_EQ(ERR_IO_PENDING, trans->Start( | 10444 EXPECT_EQ(ERR_IO_PENDING, trans->Start( |
10444 &restricted_port_request, | 10445 &restricted_port_request, |
10445 callback.callback(), BoundNetLog())); | 10446 callback.callback(), BoundNetLog())); |
10446 // Change to unrestricted port should succeed. | 10447 // Change to unrestricted port should succeed. |
10447 EXPECT_EQ(OK, callback.WaitForResult()); | 10448 EXPECT_EQ(OK, callback.WaitForResult()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10479 | 10480 |
10480 base::WeakPtr<HttpServerProperties> http_server_properties = | 10481 base::WeakPtr<HttpServerProperties> http_server_properties = |
10481 session->http_server_properties(); | 10482 session->http_server_properties(); |
10482 const int kRestrictedAlternatePort = 80; | 10483 const int kRestrictedAlternatePort = 80; |
10483 AlternativeService alternative_service( | 10484 AlternativeService alternative_service( |
10484 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10485 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10485 kRestrictedAlternatePort); | 10486 kRestrictedAlternatePort); |
10486 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10487 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10487 http_server_properties->SetAlternativeService( | 10488 http_server_properties->SetAlternativeService( |
10488 HostPortPair::FromURL(restricted_port_request.url), alternative_service, | 10489 HostPortPair::FromURL(restricted_port_request.url), alternative_service, |
10489 expiration); | 10490 1.0, expiration); |
10490 | 10491 |
10491 scoped_ptr<HttpTransaction> trans( | 10492 scoped_ptr<HttpTransaction> trans( |
10492 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10493 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10493 TestCompletionCallback callback; | 10494 TestCompletionCallback callback; |
10494 | 10495 |
10495 int rv = trans->Start( | 10496 int rv = trans->Start( |
10496 &restricted_port_request, | 10497 &restricted_port_request, |
10497 callback.callback(), BoundNetLog()); | 10498 callback.callback(), BoundNetLog()); |
10498 EXPECT_EQ(ERR_IO_PENDING, rv); | 10499 EXPECT_EQ(ERR_IO_PENDING, rv); |
10499 // Valid change to restricted port should pass. | 10500 // Valid change to restricted port should pass. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10532 | 10533 |
10533 base::WeakPtr<HttpServerProperties> http_server_properties = | 10534 base::WeakPtr<HttpServerProperties> http_server_properties = |
10534 session->http_server_properties(); | 10535 session->http_server_properties(); |
10535 const int kRestrictedAlternatePort = 80; | 10536 const int kRestrictedAlternatePort = 80; |
10536 AlternativeService alternative_service( | 10537 AlternativeService alternative_service( |
10537 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10538 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10538 kRestrictedAlternatePort); | 10539 kRestrictedAlternatePort); |
10539 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10540 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10540 http_server_properties->SetAlternativeService( | 10541 http_server_properties->SetAlternativeService( |
10541 HostPortPair::FromURL(unrestricted_port_request.url), alternative_service, | 10542 HostPortPair::FromURL(unrestricted_port_request.url), alternative_service, |
10542 expiration); | 10543 1.0, expiration); |
10543 | 10544 |
10544 scoped_ptr<HttpTransaction> trans( | 10545 scoped_ptr<HttpTransaction> trans( |
10545 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10546 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10546 TestCompletionCallback callback; | 10547 TestCompletionCallback callback; |
10547 | 10548 |
10548 int rv = trans->Start( | 10549 int rv = trans->Start( |
10549 &unrestricted_port_request, callback.callback(), BoundNetLog()); | 10550 &unrestricted_port_request, callback.callback(), BoundNetLog()); |
10550 EXPECT_EQ(ERR_IO_PENDING, rv); | 10551 EXPECT_EQ(ERR_IO_PENDING, rv); |
10551 // Valid change to restricted port should pass. | 10552 // Valid change to restricted port should pass. |
10552 EXPECT_EQ(OK, callback.WaitForResult()); | 10553 EXPECT_EQ(OK, callback.WaitForResult()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10584 | 10585 |
10585 base::WeakPtr<HttpServerProperties> http_server_properties = | 10586 base::WeakPtr<HttpServerProperties> http_server_properties = |
10586 session->http_server_properties(); | 10587 session->http_server_properties(); |
10587 const int kUnrestrictedAlternatePort = 1025; | 10588 const int kUnrestrictedAlternatePort = 1025; |
10588 AlternativeService alternative_service( | 10589 AlternativeService alternative_service( |
10589 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10590 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10590 kUnrestrictedAlternatePort); | 10591 kUnrestrictedAlternatePort); |
10591 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10592 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10592 http_server_properties->SetAlternativeService( | 10593 http_server_properties->SetAlternativeService( |
10593 HostPortPair::FromURL(unrestricted_port_request.url), alternative_service, | 10594 HostPortPair::FromURL(unrestricted_port_request.url), alternative_service, |
10594 expiration); | 10595 1.0, expiration); |
10595 | 10596 |
10596 scoped_ptr<HttpTransaction> trans( | 10597 scoped_ptr<HttpTransaction> trans( |
10597 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10598 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10598 TestCompletionCallback callback; | 10599 TestCompletionCallback callback; |
10599 | 10600 |
10600 int rv = trans->Start( | 10601 int rv = trans->Start( |
10601 &unrestricted_port_request, callback.callback(), BoundNetLog()); | 10602 &unrestricted_port_request, callback.callback(), BoundNetLog()); |
10602 EXPECT_EQ(ERR_IO_PENDING, rv); | 10603 EXPECT_EQ(ERR_IO_PENDING, rv); |
10603 // Valid change to an unrestricted port should pass. | 10604 // Valid change to an unrestricted port should pass. |
10604 EXPECT_EQ(OK, callback.WaitForResult()); | 10605 EXPECT_EQ(OK, callback.WaitForResult()); |
(...skipping 25 matching lines...) Expand all Loading... |
10630 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10631 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10631 | 10632 |
10632 base::WeakPtr<HttpServerProperties> http_server_properties = | 10633 base::WeakPtr<HttpServerProperties> http_server_properties = |
10633 session->http_server_properties(); | 10634 session->http_server_properties(); |
10634 const int kUnsafePort = 7; | 10635 const int kUnsafePort = 7; |
10635 AlternativeService alternative_service( | 10636 AlternativeService alternative_service( |
10636 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10637 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10637 kUnsafePort); | 10638 kUnsafePort); |
10638 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10639 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10639 http_server_properties->SetAlternativeService( | 10640 http_server_properties->SetAlternativeService( |
10640 HostPortPair::FromURL(request.url), alternative_service, expiration); | 10641 HostPortPair::FromURL(request.url), alternative_service, 1.0, expiration); |
10641 | 10642 |
10642 scoped_ptr<HttpTransaction> trans( | 10643 scoped_ptr<HttpTransaction> trans( |
10643 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10644 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10644 TestCompletionCallback callback; | 10645 TestCompletionCallback callback; |
10645 | 10646 |
10646 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10647 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
10647 EXPECT_EQ(ERR_IO_PENDING, rv); | 10648 EXPECT_EQ(ERR_IO_PENDING, rv); |
10648 // The HTTP request should succeed. | 10649 // The HTTP request should succeed. |
10649 EXPECT_EQ(OK, callback.WaitForResult()); | 10650 EXPECT_EQ(OK, callback.WaitForResult()); |
10650 | 10651 |
(...skipping 2711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13362 | 13363 |
13363 session_deps_.parse_alternative_services = true; | 13364 session_deps_.parse_alternative_services = true; |
13364 session_deps_.enable_alternative_service_with_different_host = true; | 13365 session_deps_.enable_alternative_service_with_different_host = true; |
13365 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13366 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13366 base::WeakPtr<HttpServerProperties> http_server_properties = | 13367 base::WeakPtr<HttpServerProperties> http_server_properties = |
13367 session->http_server_properties(); | 13368 session->http_server_properties(); |
13368 AlternativeService alternative_service( | 13369 AlternativeService alternative_service( |
13369 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13370 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13370 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13371 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13371 http_server_properties->SetAlternativeService(origin, alternative_service, | 13372 http_server_properties->SetAlternativeService(origin, alternative_service, |
13372 expiration); | 13373 1.0, expiration); |
13373 | 13374 |
13374 // First request to alternative. | 13375 // First request to alternative. |
13375 if (pooling) { | 13376 if (pooling) { |
13376 scoped_ptr<HttpTransaction> trans0( | 13377 scoped_ptr<HttpTransaction> trans0( |
13377 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13378 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
13378 HttpRequestInfo request0; | 13379 HttpRequestInfo request0; |
13379 request0.method = "GET"; | 13380 request0.method = "GET"; |
13380 request0.url = GURL(url0); | 13381 request0.url = GURL(url0); |
13381 request0.load_flags = 0; | 13382 request0.load_flags = 0; |
13382 TestCompletionCallback callback0; | 13383 TestCompletionCallback callback0; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13467 // Set up alternative service for origin. | 13468 // Set up alternative service for origin. |
13468 session_deps_.parse_alternative_services = true; | 13469 session_deps_.parse_alternative_services = true; |
13469 session_deps_.enable_alternative_service_with_different_host = true; | 13470 session_deps_.enable_alternative_service_with_different_host = true; |
13470 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13471 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13471 base::WeakPtr<HttpServerProperties> http_server_properties = | 13472 base::WeakPtr<HttpServerProperties> http_server_properties = |
13472 session->http_server_properties(); | 13473 session->http_server_properties(); |
13473 AlternativeService alternative_service( | 13474 AlternativeService alternative_service( |
13474 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13475 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13475 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13476 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13476 http_server_properties->SetAlternativeService(origin, alternative_service, | 13477 http_server_properties->SetAlternativeService(origin, alternative_service, |
13477 expiration); | 13478 1.0, expiration); |
13478 | 13479 |
13479 scoped_ptr<HttpTransaction> trans( | 13480 scoped_ptr<HttpTransaction> trans( |
13480 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13481 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
13481 HttpRequestInfo request; | 13482 HttpRequestInfo request; |
13482 request.method = "GET"; | 13483 request.method = "GET"; |
13483 request.url = GURL("https://origin.example.org:443"); | 13484 request.url = GURL("https://origin.example.org:443"); |
13484 request.load_flags = 0; | 13485 request.load_flags = 0; |
13485 TestCompletionCallback callback; | 13486 TestCompletionCallback callback; |
13486 | 13487 |
13487 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is | 13488 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13541 // Set up alternative service for origin. | 13542 // Set up alternative service for origin. |
13542 session_deps_.parse_alternative_services = true; | 13543 session_deps_.parse_alternative_services = true; |
13543 session_deps_.enable_alternative_service_with_different_host = true; | 13544 session_deps_.enable_alternative_service_with_different_host = true; |
13544 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13545 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13545 base::WeakPtr<HttpServerProperties> http_server_properties = | 13546 base::WeakPtr<HttpServerProperties> http_server_properties = |
13546 session->http_server_properties(); | 13547 session->http_server_properties(); |
13547 AlternativeService alternative_service( | 13548 AlternativeService alternative_service( |
13548 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13549 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13549 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13550 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13550 http_server_properties->SetAlternativeService(origin, alternative_service, | 13551 http_server_properties->SetAlternativeService(origin, alternative_service, |
13551 expiration); | 13552 1.0, expiration); |
13552 | 13553 |
13553 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 13554 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
13554 HttpRequestInfo request1; | 13555 HttpRequestInfo request1; |
13555 request1.method = "GET"; | 13556 request1.method = "GET"; |
13556 request1.url = GURL("https://origin.example.org:443"); | 13557 request1.url = GURL("https://origin.example.org:443"); |
13557 request1.load_flags = 0; | 13558 request1.load_flags = 0; |
13558 TestCompletionCallback callback1; | 13559 TestCompletionCallback callback1; |
13559 | 13560 |
13560 int rv = trans1.Start(&request1, callback1.callback(), BoundNetLog()); | 13561 int rv = trans1.Start(&request1, callback1.callback(), BoundNetLog()); |
13561 rv = callback1.GetResult(rv); | 13562 rv = callback1.GetResult(rv); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13651 // Set up alternative service for origin. | 13652 // Set up alternative service for origin. |
13652 session_deps_.parse_alternative_services = true; | 13653 session_deps_.parse_alternative_services = true; |
13653 session_deps_.enable_alternative_service_with_different_host = false; | 13654 session_deps_.enable_alternative_service_with_different_host = false; |
13654 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13655 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13655 base::WeakPtr<HttpServerProperties> http_server_properties = | 13656 base::WeakPtr<HttpServerProperties> http_server_properties = |
13656 session->http_server_properties(); | 13657 session->http_server_properties(); |
13657 AlternativeService alternative_service( | 13658 AlternativeService alternative_service( |
13658 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13659 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13659 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13660 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13660 http_server_properties->SetAlternativeService(origin, alternative_service, | 13661 http_server_properties->SetAlternativeService(origin, alternative_service, |
13661 expiration); | 13662 1.0, expiration); |
13662 | 13663 |
13663 // First transaction to alternative to open an HTTP/1.1 socket. | 13664 // First transaction to alternative to open an HTTP/1.1 socket. |
13664 scoped_ptr<HttpTransaction> trans1( | 13665 scoped_ptr<HttpTransaction> trans1( |
13665 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13666 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
13666 HttpRequestInfo request1; | 13667 HttpRequestInfo request1; |
13667 request1.method = "GET"; | 13668 request1.method = "GET"; |
13668 request1.url = GURL(alternative_url); | 13669 request1.url = GURL(alternative_url); |
13669 request1.load_flags = 0; | 13670 request1.load_flags = 0; |
13670 TestCompletionCallback callback1; | 13671 TestCompletionCallback callback1; |
13671 | 13672 |
(...skipping 2286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
15958 base::MessageLoop::current()->RunUntilIdle(); | 15959 base::MessageLoop::current()->RunUntilIdle(); |
15959 | 15960 |
15960 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 15961 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
15961 HttpRequestHeaders headers; | 15962 HttpRequestHeaders headers; |
15962 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 15963 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
15963 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 15964 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
15964 } | 15965 } |
15965 #endif // !defined(OS_IOS) | 15966 #endif // !defined(OS_IOS) |
15966 | 15967 |
15967 } // namespace net | 15968 } // namespace net |
OLD | NEW |