| 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 8789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8800 NextProto next_proto, | 8800 NextProto next_proto, |
| 8801 SpdySessionDependencies* session_deps_) { | 8801 SpdySessionDependencies* session_deps_) { |
| 8802 scoped_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 8802 scoped_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
| 8803 | 8803 |
| 8804 base::WeakPtr<HttpServerProperties> http_server_properties = | 8804 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 8805 session->http_server_properties(); | 8805 session->http_server_properties(); |
| 8806 AlternativeService alternative_service( | 8806 AlternativeService alternative_service( |
| 8807 AlternateProtocolFromNextProto(next_proto), "", 443); | 8807 AlternateProtocolFromNextProto(next_proto), "", 443); |
| 8808 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 8808 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 8809 http_server_properties->SetAlternativeService( | 8809 http_server_properties->SetAlternativeService( |
| 8810 HostPortPair("host.with.alternate", 80), alternative_service, expiration); | 8810 url::SchemeHostPort("http", "host.with.alternate", 80), |
| 8811 alternative_service, expiration); |
| 8811 | 8812 |
| 8812 return session; | 8813 return session; |
| 8813 } | 8814 } |
| 8814 | 8815 |
| 8815 int GroupNameTransactionHelper(const std::string& url, | 8816 int GroupNameTransactionHelper(const std::string& url, |
| 8816 HttpNetworkSession* session) { | 8817 HttpNetworkSession* session) { |
| 8817 HttpRequestInfo request; | 8818 HttpRequestInfo request; |
| 8818 request.method = "GET"; | 8819 request.method = "GET"; |
| 8819 request.url = GURL(url); | 8820 request.url = GURL(url); |
| 8820 request.load_flags = 0; | 8821 request.load_flags = 0; |
| (...skipping 866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9687 | 9688 |
| 9688 TestCompletionCallback callback; | 9689 TestCompletionCallback callback; |
| 9689 | 9690 |
| 9690 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9691 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9691 scoped_ptr<HttpTransaction> trans( | 9692 scoped_ptr<HttpTransaction> trans( |
| 9692 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 9693 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 9693 | 9694 |
| 9694 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 9695 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 9695 EXPECT_EQ(ERR_IO_PENDING, rv); | 9696 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9696 | 9697 |
| 9697 HostPortPair http_host_port_pair("www.example.org", 80); | 9698 url::SchemeHostPort http_origin("http", "www.example.org", 80); |
| 9698 HttpServerProperties& http_server_properties = | 9699 HttpServerProperties& http_server_properties = |
| 9699 *session->http_server_properties(); | 9700 *session->http_server_properties(); |
| 9700 AlternativeServiceVector alternative_service_vector = | 9701 AlternativeServiceVector alternative_service_vector = |
| 9701 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9702 http_server_properties.GetAlternativeServices(http_origin); |
| 9702 EXPECT_TRUE(alternative_service_vector.empty()); | 9703 EXPECT_TRUE(alternative_service_vector.empty()); |
| 9703 | 9704 |
| 9704 EXPECT_EQ(OK, callback.WaitForResult()); | 9705 EXPECT_EQ(OK, callback.WaitForResult()); |
| 9705 | 9706 |
| 9706 const HttpResponseInfo* response = trans->GetResponseInfo(); | 9707 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 9707 ASSERT_TRUE(response != NULL); | 9708 ASSERT_TRUE(response != NULL); |
| 9708 ASSERT_TRUE(response->headers.get() != NULL); | 9709 ASSERT_TRUE(response->headers.get() != NULL); |
| 9709 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9710 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9710 EXPECT_FALSE(response->was_fetched_via_spdy); | 9711 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 9711 EXPECT_FALSE(response->was_npn_negotiated); | 9712 EXPECT_FALSE(response->was_npn_negotiated); |
| 9712 | 9713 |
| 9713 std::string response_data; | 9714 std::string response_data; |
| 9714 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 9715 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 9715 EXPECT_EQ("hello world", response_data); | 9716 EXPECT_EQ("hello world", response_data); |
| 9716 | 9717 |
| 9717 alternative_service_vector = | 9718 alternative_service_vector = |
| 9718 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9719 http_server_properties.GetAlternativeServices(http_origin); |
| 9719 ASSERT_EQ(1u, alternative_service_vector.size()); | 9720 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 9720 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 9721 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 9721 alternative_service_vector[0].protocol); | 9722 alternative_service_vector[0].protocol); |
| 9722 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); | 9723 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); |
| 9723 EXPECT_EQ(443, alternative_service_vector[0].port); | 9724 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 9724 } | 9725 } |
| 9725 | 9726 |
| 9726 TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { | 9727 TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { |
| 9727 session_deps_.parse_alternative_services = true; | 9728 session_deps_.parse_alternative_services = true; |
| 9728 session_deps_.enable_alternative_service_with_different_host = false; | 9729 session_deps_.enable_alternative_service_with_different_host = false; |
| 9729 | 9730 |
| 9730 // Set an alternative service for origin. | 9731 // Set an alternative service for origin. |
| 9731 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9732 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9732 HttpServerProperties& http_server_properties = | 9733 HttpServerProperties& http_server_properties = |
| 9733 *session->http_server_properties(); | 9734 *session->http_server_properties(); |
| 9734 HostPortPair http_host_port_pair("www.example.org", 80); | 9735 url::SchemeHostPort http_origin("http", "www.example.org", 80); |
| 9735 AlternativeService alternative_service(QUIC, "", 80); | 9736 AlternativeService alternative_service(QUIC, "", 80); |
| 9736 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9737 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 9737 http_server_properties.SetAlternativeService(http_host_port_pair, | 9738 http_server_properties.SetAlternativeService(http_origin, alternative_service, |
| 9738 alternative_service, expiration); | 9739 expiration); |
| 9739 AlternativeServiceVector alternative_service_vector = | 9740 AlternativeServiceVector alternative_service_vector = |
| 9740 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9741 http_server_properties.GetAlternativeServices(http_origin); |
| 9741 EXPECT_EQ(1u, alternative_service_vector.size()); | 9742 EXPECT_EQ(1u, alternative_service_vector.size()); |
| 9742 | 9743 |
| 9743 // Send a clear header. | 9744 // Send a clear header. |
| 9744 MockRead data_reads[] = { | 9745 MockRead data_reads[] = { |
| 9745 MockRead("HTTP/1.1 200 OK\r\n"), | 9746 MockRead("HTTP/1.1 200 OK\r\n"), |
| 9746 MockRead("Alt-Svc: clear\r\n"), | 9747 MockRead("Alt-Svc: clear\r\n"), |
| 9747 MockRead("\r\n"), | 9748 MockRead("\r\n"), |
| 9748 MockRead("hello world"), | 9749 MockRead("hello world"), |
| 9749 MockRead(SYNCHRONOUS, OK), | 9750 MockRead(SYNCHRONOUS, OK), |
| 9750 }; | 9751 }; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 9769 ASSERT_TRUE(response->headers.get() != nullptr); | 9770 ASSERT_TRUE(response->headers.get() != nullptr); |
| 9770 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9771 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9771 EXPECT_FALSE(response->was_fetched_via_spdy); | 9772 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 9772 EXPECT_FALSE(response->was_npn_negotiated); | 9773 EXPECT_FALSE(response->was_npn_negotiated); |
| 9773 | 9774 |
| 9774 std::string response_data; | 9775 std::string response_data; |
| 9775 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 9776 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 9776 EXPECT_EQ("hello world", response_data); | 9777 EXPECT_EQ("hello world", response_data); |
| 9777 | 9778 |
| 9778 alternative_service_vector = | 9779 alternative_service_vector = |
| 9779 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9780 http_server_properties.GetAlternativeServices(http_origin); |
| 9780 EXPECT_TRUE(alternative_service_vector.empty()); | 9781 EXPECT_TRUE(alternative_service_vector.empty()); |
| 9781 } | 9782 } |
| 9782 | 9783 |
| 9783 // Alternative Service headers must be ignored when | 9784 // Alternative Service headers must be ignored when |
| 9784 // |parse_alternative_services| is false. | 9785 // |parse_alternative_services| is false. |
| 9785 TEST_P(HttpNetworkTransactionTest, DoNotHonorAlternativeServiceHeader) { | 9786 TEST_P(HttpNetworkTransactionTest, DoNotHonorAlternativeServiceHeader) { |
| 9786 session_deps_.parse_alternative_services = false; | 9787 session_deps_.parse_alternative_services = false; |
| 9787 | 9788 |
| 9788 std::string alternative_service_http_header = | 9789 std::string alternative_service_http_header = |
| 9789 GetAlternativeServiceHttpHeader(); | 9790 GetAlternativeServiceHttpHeader(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 9807 | 9808 |
| 9808 TestCompletionCallback callback; | 9809 TestCompletionCallback callback; |
| 9809 | 9810 |
| 9810 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 9811 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 9811 scoped_ptr<HttpTransaction> trans( | 9812 scoped_ptr<HttpTransaction> trans( |
| 9812 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 9813 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 9813 | 9814 |
| 9814 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 9815 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 9815 EXPECT_EQ(ERR_IO_PENDING, rv); | 9816 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9816 | 9817 |
| 9817 HostPortPair http_host_port_pair("www.example.org", 80); | 9818 url::SchemeHostPort http_origin("http", "www.example.org", 80); |
| 9818 HttpServerProperties& http_server_properties = | 9819 HttpServerProperties& http_server_properties = |
| 9819 *session->http_server_properties(); | 9820 *session->http_server_properties(); |
| 9820 AlternativeServiceVector alternative_service_vector = | 9821 AlternativeServiceVector alternative_service_vector = |
| 9821 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9822 http_server_properties.GetAlternativeServices(http_origin); |
| 9822 EXPECT_TRUE(alternative_service_vector.empty()); | 9823 EXPECT_TRUE(alternative_service_vector.empty()); |
| 9823 | 9824 |
| 9824 EXPECT_EQ(OK, callback.WaitForResult()); | 9825 EXPECT_EQ(OK, callback.WaitForResult()); |
| 9825 | 9826 |
| 9826 const HttpResponseInfo* response = trans->GetResponseInfo(); | 9827 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 9827 ASSERT_TRUE(response != nullptr); | 9828 ASSERT_TRUE(response != nullptr); |
| 9828 ASSERT_TRUE(response->headers.get() != nullptr); | 9829 ASSERT_TRUE(response->headers.get() != nullptr); |
| 9829 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9830 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9830 EXPECT_FALSE(response->was_fetched_via_spdy); | 9831 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 9831 EXPECT_FALSE(response->was_npn_negotiated); | 9832 EXPECT_FALSE(response->was_npn_negotiated); |
| 9832 | 9833 |
| 9833 std::string response_data; | 9834 std::string response_data; |
| 9834 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 9835 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 9835 EXPECT_EQ("hello world", response_data); | 9836 EXPECT_EQ("hello world", response_data); |
| 9836 | 9837 |
| 9837 alternative_service_vector = | 9838 alternative_service_vector = |
| 9838 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9839 http_server_properties.GetAlternativeServices(http_origin); |
| 9839 EXPECT_TRUE(alternative_service_vector.empty()); | 9840 EXPECT_TRUE(alternative_service_vector.empty()); |
| 9840 } | 9841 } |
| 9841 | 9842 |
| 9842 TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeader) { | 9843 TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeader) { |
| 9843 session_deps_.parse_alternative_services = true; | 9844 session_deps_.parse_alternative_services = true; |
| 9844 session_deps_.enable_alternative_service_with_different_host = false; | 9845 session_deps_.enable_alternative_service_with_different_host = false; |
| 9845 | 9846 |
| 9846 MockRead data_reads[] = { | 9847 MockRead data_reads[] = { |
| 9847 MockRead("HTTP/1.1 200 OK\r\n"), | 9848 MockRead("HTTP/1.1 200 OK\r\n"), |
| 9848 MockRead("Alt-Svc: "), | 9849 MockRead("Alt-Svc: "), |
| (...skipping 16 matching lines...) Expand all Loading... |
| 9865 | 9866 |
| 9866 TestCompletionCallback callback; | 9867 TestCompletionCallback callback; |
| 9867 | 9868 |
| 9868 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9869 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9869 scoped_ptr<HttpTransaction> trans( | 9870 scoped_ptr<HttpTransaction> trans( |
| 9870 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 9871 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 9871 | 9872 |
| 9872 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 9873 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 9873 EXPECT_EQ(ERR_IO_PENDING, rv); | 9874 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9874 | 9875 |
| 9875 HostPortPair http_host_port_pair("www.example.org", 80); | 9876 url::SchemeHostPort http_origin("http", "www.example.org", 80); |
| 9876 HttpServerProperties& http_server_properties = | 9877 HttpServerProperties& http_server_properties = |
| 9877 *session->http_server_properties(); | 9878 *session->http_server_properties(); |
| 9878 AlternativeServiceVector alternative_service_vector = | 9879 AlternativeServiceVector alternative_service_vector = |
| 9879 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9880 http_server_properties.GetAlternativeServices(http_origin); |
| 9880 EXPECT_TRUE(alternative_service_vector.empty()); | 9881 EXPECT_TRUE(alternative_service_vector.empty()); |
| 9881 | 9882 |
| 9882 EXPECT_EQ(OK, callback.WaitForResult()); | 9883 EXPECT_EQ(OK, callback.WaitForResult()); |
| 9883 | 9884 |
| 9884 const HttpResponseInfo* response = trans->GetResponseInfo(); | 9885 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 9885 ASSERT_TRUE(response != NULL); | 9886 ASSERT_TRUE(response != NULL); |
| 9886 ASSERT_TRUE(response->headers.get() != NULL); | 9887 ASSERT_TRUE(response->headers.get() != NULL); |
| 9887 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9888 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9888 EXPECT_FALSE(response->was_fetched_via_spdy); | 9889 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 9889 EXPECT_FALSE(response->was_npn_negotiated); | 9890 EXPECT_FALSE(response->was_npn_negotiated); |
| 9890 | 9891 |
| 9891 std::string response_data; | 9892 std::string response_data; |
| 9892 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 9893 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 9893 EXPECT_EQ("hello world", response_data); | 9894 EXPECT_EQ("hello world", response_data); |
| 9894 | 9895 |
| 9895 alternative_service_vector = | 9896 alternative_service_vector = |
| 9896 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9897 http_server_properties.GetAlternativeServices(http_origin); |
| 9897 ASSERT_EQ(2u, alternative_service_vector.size()); | 9898 ASSERT_EQ(2u, alternative_service_vector.size()); |
| 9898 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 9899 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 9899 alternative_service_vector[0].protocol); | 9900 alternative_service_vector[0].protocol); |
| 9900 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); | 9901 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); |
| 9901 EXPECT_EQ(443, alternative_service_vector[0].port); | 9902 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 9902 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 9903 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 9903 alternative_service_vector[1].protocol); | 9904 alternative_service_vector[1].protocol); |
| 9904 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); | 9905 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); |
| 9905 EXPECT_EQ(1234, alternative_service_vector[1].port); | 9906 EXPECT_EQ(1234, alternative_service_vector[1].port); |
| 9906 } | 9907 } |
| (...skipping 25 matching lines...) Expand all Loading... |
| 9932 | 9933 |
| 9933 TestCompletionCallback callback; | 9934 TestCompletionCallback callback; |
| 9934 | 9935 |
| 9935 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9936 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9936 scoped_ptr<HttpTransaction> trans( | 9937 scoped_ptr<HttpTransaction> trans( |
| 9937 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 9938 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 9938 | 9939 |
| 9939 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 9940 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 9940 EXPECT_EQ(ERR_IO_PENDING, rv); | 9941 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9941 | 9942 |
| 9942 HostPortPair http_host_port_pair("www.example.org", 80); | 9943 url::SchemeHostPort http_origin("http", "www.example.org", 80); |
| 9943 HttpServerProperties& http_server_properties = | 9944 HttpServerProperties& http_server_properties = |
| 9944 *session->http_server_properties(); | 9945 *session->http_server_properties(); |
| 9945 AlternativeServiceVector alternative_service_vector = | 9946 AlternativeServiceVector alternative_service_vector = |
| 9946 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9947 http_server_properties.GetAlternativeServices(http_origin); |
| 9947 EXPECT_TRUE(alternative_service_vector.empty()); | 9948 EXPECT_TRUE(alternative_service_vector.empty()); |
| 9948 | 9949 |
| 9949 EXPECT_EQ(OK, callback.WaitForResult()); | 9950 EXPECT_EQ(OK, callback.WaitForResult()); |
| 9950 | 9951 |
| 9951 const HttpResponseInfo* response = trans->GetResponseInfo(); | 9952 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 9952 ASSERT_TRUE(response != NULL); | 9953 ASSERT_TRUE(response != NULL); |
| 9953 ASSERT_TRUE(response->headers.get() != NULL); | 9954 ASSERT_TRUE(response->headers.get() != NULL); |
| 9954 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9955 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9955 EXPECT_FALSE(response->was_fetched_via_spdy); | 9956 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 9956 EXPECT_FALSE(response->was_npn_negotiated); | 9957 EXPECT_FALSE(response->was_npn_negotiated); |
| 9957 | 9958 |
| 9958 std::string response_data; | 9959 std::string response_data; |
| 9959 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 9960 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 9960 EXPECT_EQ("hello world", response_data); | 9961 EXPECT_EQ("hello world", response_data); |
| 9961 | 9962 |
| 9962 alternative_service_vector = | 9963 alternative_service_vector = |
| 9963 http_server_properties.GetAlternativeServices(http_host_port_pair); | 9964 http_server_properties.GetAlternativeServices(http_origin); |
| 9964 ASSERT_EQ(1u, alternative_service_vector.size()); | 9965 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 9965 EXPECT_EQ(443, alternative_service_vector[0].port); | 9966 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 9966 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 9967 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 9967 alternative_service_vector[0].protocol); | 9968 alternative_service_vector[0].protocol); |
| 9968 } | 9969 } |
| 9969 | 9970 |
| 9970 TEST_P(HttpNetworkTransactionTest, EmptyAlternateProtocolHeader) { | 9971 TEST_P(HttpNetworkTransactionTest, EmptyAlternateProtocolHeader) { |
| 9971 session_deps_.parse_alternative_services = false; | 9972 session_deps_.parse_alternative_services = false; |
| 9972 session_deps_.enable_alternative_service_with_different_host = false; | 9973 session_deps_.enable_alternative_service_with_different_host = false; |
| 9973 | 9974 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 9984 request.load_flags = 0; | 9985 request.load_flags = 0; |
| 9985 | 9986 |
| 9986 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 9987 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 9987 | 9988 |
| 9988 session_deps_.socket_factory->AddSocketDataProvider(&data); | 9989 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 9989 | 9990 |
| 9990 TestCompletionCallback callback; | 9991 TestCompletionCallback callback; |
| 9991 | 9992 |
| 9992 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9993 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9993 | 9994 |
| 9994 HostPortPair http_host_port_pair("www.example.org", 80); | 9995 url::SchemeHostPort http_origin("http", "www.example.org", 80); |
| 9995 HttpServerProperties& http_server_properties = | 9996 HttpServerProperties& http_server_properties = |
| 9996 *session->http_server_properties(); | 9997 *session->http_server_properties(); |
| 9997 AlternativeService alternative_service(QUIC, "", 80); | 9998 AlternativeService alternative_service(QUIC, "", 80); |
| 9998 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9999 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 9999 http_server_properties.SetAlternativeService(http_host_port_pair, | 10000 http_server_properties.SetAlternativeService(http_origin, alternative_service, |
| 10000 alternative_service, expiration); | 10001 expiration); |
| 10001 | 10002 |
| 10002 AlternativeServiceVector alternative_service_vector = | 10003 AlternativeServiceVector alternative_service_vector = |
| 10003 http_server_properties.GetAlternativeServices(http_host_port_pair); | 10004 http_server_properties.GetAlternativeServices(http_origin); |
| 10004 ASSERT_EQ(1u, alternative_service_vector.size()); | 10005 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 10005 EXPECT_EQ(QUIC, alternative_service_vector[0].protocol); | 10006 EXPECT_EQ(QUIC, alternative_service_vector[0].protocol); |
| 10006 | 10007 |
| 10007 scoped_ptr<HttpTransaction> trans( | 10008 scoped_ptr<HttpTransaction> trans( |
| 10008 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10009 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10009 | 10010 |
| 10010 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10011 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10011 EXPECT_EQ(ERR_IO_PENDING, rv); | 10012 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10012 | 10013 |
| 10013 EXPECT_EQ(OK, callback.WaitForResult()); | 10014 EXPECT_EQ(OK, callback.WaitForResult()); |
| 10014 | 10015 |
| 10015 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10016 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 10016 ASSERT_TRUE(response != NULL); | 10017 ASSERT_TRUE(response != NULL); |
| 10017 ASSERT_TRUE(response->headers.get() != NULL); | 10018 ASSERT_TRUE(response->headers.get() != NULL); |
| 10018 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10019 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 10019 EXPECT_FALSE(response->was_fetched_via_spdy); | 10020 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 10020 EXPECT_FALSE(response->was_npn_negotiated); | 10021 EXPECT_FALSE(response->was_npn_negotiated); |
| 10021 | 10022 |
| 10022 std::string response_data; | 10023 std::string response_data; |
| 10023 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10024 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 10024 EXPECT_EQ("hello world", response_data); | 10025 EXPECT_EQ("hello world", response_data); |
| 10025 | 10026 |
| 10026 alternative_service_vector = | 10027 alternative_service_vector = |
| 10027 http_server_properties.GetAlternativeServices(http_host_port_pair); | 10028 http_server_properties.GetAlternativeServices(http_origin); |
| 10028 EXPECT_TRUE(alternative_service_vector.empty()); | 10029 EXPECT_TRUE(alternative_service_vector.empty()); |
| 10029 } | 10030 } |
| 10030 | 10031 |
| 10031 // When |session_deps_.parse_alternative_services = true| and the response has | 10032 // When |session_deps_.parse_alternative_services = true| and the response has |
| 10032 // an Alt-Svc header, then the Alternate-Protocol header is not parsed. | 10033 // an Alt-Svc header, then the Alternate-Protocol header is not parsed. |
| 10033 TEST_P(HttpNetworkTransactionTest, AltSvcOverwritesAlternateProtocol) { | 10034 TEST_P(HttpNetworkTransactionTest, AltSvcOverwritesAlternateProtocol) { |
| 10034 session_deps_.parse_alternative_services = true; | 10035 session_deps_.parse_alternative_services = true; |
| 10035 session_deps_.enable_alternative_service_with_different_host = false; | 10036 session_deps_.enable_alternative_service_with_different_host = false; |
| 10036 | 10037 |
| 10037 std::string alternative_service_http_header = | 10038 std::string alternative_service_http_header = |
| (...skipping 20 matching lines...) Expand all Loading... |
| 10058 | 10059 |
| 10059 TestCompletionCallback callback; | 10060 TestCompletionCallback callback; |
| 10060 | 10061 |
| 10061 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10062 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10062 scoped_ptr<HttpTransaction> trans( | 10063 scoped_ptr<HttpTransaction> trans( |
| 10063 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10064 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10064 | 10065 |
| 10065 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10066 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10066 EXPECT_EQ(ERR_IO_PENDING, rv); | 10067 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10067 | 10068 |
| 10068 HostPortPair http_host_port_pair("www.example.org", 80); | 10069 url::SchemeHostPort http_origin("http", "www.example.org", 80); |
| 10069 HttpServerProperties& http_server_properties = | 10070 HttpServerProperties& http_server_properties = |
| 10070 *session->http_server_properties(); | 10071 *session->http_server_properties(); |
| 10071 AlternativeServiceVector alternative_service_vector = | 10072 AlternativeServiceVector alternative_service_vector = |
| 10072 http_server_properties.GetAlternativeServices(http_host_port_pair); | 10073 http_server_properties.GetAlternativeServices(http_origin); |
| 10073 EXPECT_TRUE(alternative_service_vector.empty()); | 10074 EXPECT_TRUE(alternative_service_vector.empty()); |
| 10074 | 10075 |
| 10075 EXPECT_EQ(OK, callback.WaitForResult()); | 10076 EXPECT_EQ(OK, callback.WaitForResult()); |
| 10076 | 10077 |
| 10077 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10078 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 10078 ASSERT_TRUE(response != NULL); | 10079 ASSERT_TRUE(response != NULL); |
| 10079 ASSERT_TRUE(response->headers.get() != NULL); | 10080 ASSERT_TRUE(response->headers.get() != NULL); |
| 10080 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10081 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 10081 EXPECT_FALSE(response->was_fetched_via_spdy); | 10082 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 10082 EXPECT_FALSE(response->was_npn_negotiated); | 10083 EXPECT_FALSE(response->was_npn_negotiated); |
| 10083 | 10084 |
| 10084 std::string response_data; | 10085 std::string response_data; |
| 10085 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10086 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 10086 EXPECT_EQ("hello world", response_data); | 10087 EXPECT_EQ("hello world", response_data); |
| 10087 | 10088 |
| 10088 alternative_service_vector = | 10089 alternative_service_vector = |
| 10089 http_server_properties.GetAlternativeServices(http_host_port_pair); | 10090 http_server_properties.GetAlternativeServices(http_origin); |
| 10090 ASSERT_EQ(1u, alternative_service_vector.size()); | 10091 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 10091 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 10092 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 10092 alternative_service_vector[0].protocol); | 10093 alternative_service_vector[0].protocol); |
| 10093 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); | 10094 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); |
| 10094 EXPECT_EQ(443, alternative_service_vector[0].port); | 10095 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 10095 } | 10096 } |
| 10096 | 10097 |
| 10097 // When |enable_alternative_service_with_different_host| is false, do not | 10098 // When |enable_alternative_service_with_different_host| is false, do not |
| 10098 // observe alternative service entries that point to a different host. | 10099 // observe alternative service entries that point to a different host. |
| 10099 TEST_P(HttpNetworkTransactionTest, DisableAlternativeServiceToDifferentHost) { | 10100 TEST_P(HttpNetworkTransactionTest, DisableAlternativeServiceToDifferentHost) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 10120 | 10121 |
| 10121 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 10122 scoped_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 10122 | 10123 |
| 10123 base::WeakPtr<HttpServerProperties> http_server_properties = | 10124 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10124 session->http_server_properties(); | 10125 session->http_server_properties(); |
| 10125 AlternativeService alternative_service( | 10126 AlternativeService alternative_service( |
| 10126 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", | 10127 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", |
| 10127 80); | 10128 80); |
| 10128 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10129 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10129 http_server_properties->SetAlternativeService( | 10130 http_server_properties->SetAlternativeService( |
| 10130 HostPortPair::FromURL(request.url), alternative_service, expiration); | 10131 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10131 | 10132 |
| 10132 scoped_ptr<HttpTransaction> trans( | 10133 scoped_ptr<HttpTransaction> trans( |
| 10133 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10134 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10134 TestCompletionCallback callback; | 10135 TestCompletionCallback callback; |
| 10135 | 10136 |
| 10136 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10137 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10137 // The connetion to origin was refused, and the alternative service should not | 10138 // The connetion to origin was refused, and the alternative service should not |
| 10138 // be used (even though mock data are there), therefore the request should | 10139 // be used (even though mock data are there), therefore the request should |
| 10139 // fail. | 10140 // fail. |
| 10140 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); | 10141 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10173 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10174 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 10174 | 10175 |
| 10175 // Set up a QUIC alternative service for origin. | 10176 // Set up a QUIC alternative service for origin. |
| 10176 session_deps_.parse_alternative_services = true; | 10177 session_deps_.parse_alternative_services = true; |
| 10177 session_deps_.enable_alternative_service_with_different_host = false; | 10178 session_deps_.enable_alternative_service_with_different_host = false; |
| 10178 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10179 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10179 base::WeakPtr<HttpServerProperties> http_server_properties = | 10180 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10180 session->http_server_properties(); | 10181 session->http_server_properties(); |
| 10181 AlternativeService alternative_service(QUIC, alternative); | 10182 AlternativeService alternative_service(QUIC, alternative); |
| 10182 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10183 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10183 http_server_properties->SetAlternativeService(origin, alternative_service, | 10184 http_server_properties->SetAlternativeService( |
| 10184 expiration); | 10185 url::SchemeHostPort("https", "origin.example.org", 443), |
| 10186 alternative_service, expiration); |
| 10185 // Mark the QUIC alternative service as broken. | 10187 // Mark the QUIC alternative service as broken. |
| 10186 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10188 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
| 10187 | 10189 |
| 10188 scoped_ptr<HttpTransaction> trans( | 10190 scoped_ptr<HttpTransaction> trans( |
| 10189 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10191 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10190 HttpRequestInfo request; | 10192 HttpRequestInfo request; |
| 10191 request.method = "GET"; | 10193 request.method = "GET"; |
| 10192 request.url = GURL(origin_url); | 10194 request.url = GURL(origin_url); |
| 10193 request.load_flags = 0; | 10195 request.load_flags = 0; |
| 10194 TestCompletionCallback callback; | 10196 TestCompletionCallback callback; |
| 10195 NetErrorDetails details; | 10197 NetErrorDetails details; |
| 10196 EXPECT_FALSE(details.quic_broken); | 10198 EXPECT_FALSE(details.quic_broken); |
| 10197 | 10199 |
| 10198 trans->Start(&request, callback.callback(), BoundNetLog()); | 10200 trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10199 trans->PopulateNetErrorDetails(&details); | 10201 trans->PopulateNetErrorDetails(&details); |
| 10200 EXPECT_TRUE(details.quic_broken); | 10202 EXPECT_TRUE(details.quic_broken); |
| 10201 } | 10203 } |
| 10202 | 10204 |
| 10203 TEST_P(HttpNetworkTransactionTest, IdentifyQuicNotBroken) { | 10205 TEST_P(HttpNetworkTransactionTest, IdentifyQuicNotBroken) { |
| 10204 HostPortPair origin("origin.example.org", 443); | 10206 HostPortPair origin("origin.example.org", 443); |
| 10207 url::SchemeHostPort scheme_origin("https", "origin.example.org", 443); |
| 10205 HostPortPair alternative1("alternative1.example.org", 443); | 10208 HostPortPair alternative1("alternative1.example.org", 443); |
| 10206 HostPortPair alternative2("alternative2.example.org", 443); | 10209 HostPortPair alternative2("alternative2.example.org", 443); |
| 10207 std::string origin_url = "https://origin.example.org:443"; | 10210 std::string origin_url = "https://origin.example.org:443"; |
| 10208 std::string alternative_url1 = "https://alternative1.example.org:443"; | 10211 std::string alternative_url1 = "https://alternative1.example.org:443"; |
| 10209 std::string alternative_url2 = "https://alternative2.example.org:443"; | 10212 std::string alternative_url2 = "https://alternative2.example.org:443"; |
| 10210 | 10213 |
| 10211 // Negotiate HTTP/1.1 with alternative1.example.org. | 10214 // Negotiate HTTP/1.1 with alternative1.example.org. |
| 10212 SSLSocketDataProvider ssl(ASYNC, OK); | 10215 SSLSocketDataProvider ssl(ASYNC, OK); |
| 10213 ssl.SetNextProto(kProtoHTTP11); | 10216 ssl.SetNextProto(kProtoHTTP11); |
| 10214 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | 10217 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10247 AlternativeService alternative_service1(QUIC, alternative1); | 10250 AlternativeService alternative_service1(QUIC, alternative1); |
| 10248 AlternativeServiceInfo alternative_service_info1(alternative_service1, | 10251 AlternativeServiceInfo alternative_service_info1(alternative_service1, |
| 10249 expiration); | 10252 expiration); |
| 10250 alternative_service_info_vector.push_back(alternative_service_info1); | 10253 alternative_service_info_vector.push_back(alternative_service_info1); |
| 10251 AlternativeService alternative_service2(QUIC, alternative2); | 10254 AlternativeService alternative_service2(QUIC, alternative2); |
| 10252 AlternativeServiceInfo alternative_service_info2(alternative_service2, | 10255 AlternativeServiceInfo alternative_service_info2(alternative_service2, |
| 10253 expiration); | 10256 expiration); |
| 10254 alternative_service_info_vector.push_back(alternative_service_info2); | 10257 alternative_service_info_vector.push_back(alternative_service_info2); |
| 10255 | 10258 |
| 10256 http_server_properties->SetAlternativeServices( | 10259 http_server_properties->SetAlternativeServices( |
| 10257 origin, alternative_service_info_vector); | 10260 scheme_origin, alternative_service_info_vector); |
| 10258 | 10261 |
| 10259 // Mark one of the QUIC alternative service as broken. | 10262 // Mark one of the QUIC alternative service as broken. |
| 10260 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); | 10263 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); |
| 10261 | 10264 |
| 10262 const AlternativeServiceVector alternative_service_vector = | 10265 const AlternativeServiceVector alternative_service_vector = |
| 10263 http_server_properties->GetAlternativeServices(origin); | 10266 http_server_properties->GetAlternativeServices(scheme_origin); |
| 10264 | 10267 |
| 10265 scoped_ptr<HttpTransaction> trans( | 10268 scoped_ptr<HttpTransaction> trans( |
| 10266 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10269 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10267 HttpRequestInfo request; | 10270 HttpRequestInfo request; |
| 10268 request.method = "GET"; | 10271 request.method = "GET"; |
| 10269 request.url = GURL(origin_url); | 10272 request.url = GURL(origin_url); |
| 10270 request.load_flags = 0; | 10273 request.load_flags = 0; |
| 10271 TestCompletionCallback callback; | 10274 TestCompletionCallback callback; |
| 10272 NetErrorDetails details; | 10275 NetErrorDetails details; |
| 10273 EXPECT_FALSE(details.quic_broken); | 10276 EXPECT_FALSE(details.quic_broken); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 10298 MockRead(ASYNC, OK), | 10301 MockRead(ASYNC, OK), |
| 10299 }; | 10302 }; |
| 10300 StaticSocketDataProvider second_data( | 10303 StaticSocketDataProvider second_data( |
| 10301 data_reads, arraysize(data_reads), NULL, 0); | 10304 data_reads, arraysize(data_reads), NULL, 0); |
| 10302 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10305 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10303 | 10306 |
| 10304 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10307 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10305 | 10308 |
| 10306 base::WeakPtr<HttpServerProperties> http_server_properties = | 10309 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10307 session->http_server_properties(); | 10310 session->http_server_properties(); |
| 10308 const HostPortPair host_port_pair = HostPortPair::FromURL(request.url); | 10311 url::SchemeHostPort scheme_origin(request.url); |
| 10312 |
| 10309 // Port must be < 1024, or the header will be ignored (since initial port was | 10313 // Port must be < 1024, or the header will be ignored (since initial port was |
| 10310 // port 80 (another restricted port). | 10314 // port 80 (another restricted port). |
| 10311 const AlternativeService alternative_service( | 10315 const AlternativeService alternative_service( |
| 10312 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10316 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10313 666); // Port is ignored by MockConnect anyway. | 10317 666); // Port is ignored by MockConnect anyway. |
| 10314 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10318 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10315 http_server_properties->SetAlternativeService( | 10319 http_server_properties->SetAlternativeService( |
| 10316 host_port_pair, alternative_service, expiration); | 10320 scheme_origin, alternative_service, expiration); |
| 10317 | 10321 |
| 10318 scoped_ptr<HttpTransaction> trans( | 10322 scoped_ptr<HttpTransaction> trans( |
| 10319 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10323 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10320 TestCompletionCallback callback; | 10324 TestCompletionCallback callback; |
| 10321 | 10325 |
| 10322 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10326 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10323 EXPECT_EQ(ERR_IO_PENDING, rv); | 10327 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10324 EXPECT_EQ(OK, callback.WaitForResult()); | 10328 EXPECT_EQ(OK, callback.WaitForResult()); |
| 10325 | 10329 |
| 10326 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10330 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 10327 ASSERT_TRUE(response != NULL); | 10331 ASSERT_TRUE(response != NULL); |
| 10328 ASSERT_TRUE(response->headers.get() != NULL); | 10332 ASSERT_TRUE(response->headers.get() != NULL); |
| 10329 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10333 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 10330 | 10334 |
| 10331 std::string response_data; | 10335 std::string response_data; |
| 10332 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10336 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 10333 EXPECT_EQ("hello world", response_data); | 10337 EXPECT_EQ("hello world", response_data); |
| 10334 | 10338 |
| 10335 const AlternativeServiceVector alternative_service_vector = | 10339 const AlternativeServiceVector alternative_service_vector = |
| 10336 http_server_properties->GetAlternativeServices(host_port_pair); | 10340 http_server_properties->GetAlternativeServices(scheme_origin); |
| 10337 ASSERT_EQ(1u, alternative_service_vector.size()); | 10341 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 10338 EXPECT_EQ(alternative_service, alternative_service_vector[0]); | 10342 EXPECT_EQ(alternative_service, alternative_service_vector[0]); |
| 10339 EXPECT_TRUE(http_server_properties->IsAlternativeServiceBroken( | 10343 EXPECT_TRUE(http_server_properties->IsAlternativeServiceBroken( |
| 10340 alternative_service_vector[0])); | 10344 alternative_service_vector[0])); |
| 10341 } | 10345 } |
| 10342 | 10346 |
| 10343 // Ensure that we are not allowed to redirect traffic via an alternate protocol | 10347 // Ensure that we are not allowed to redirect traffic via an alternate protocol |
| 10344 // to an unrestricted (port >= 1024) when the original traffic was on a | 10348 // to an unrestricted (port >= 1024) when the original traffic was on a |
| 10345 // restricted port (port < 1024). Ensure that we can redirect in all other | 10349 // restricted port (port < 1024). Ensure that we can redirect in all other |
| 10346 // cases. | 10350 // cases. |
| (...skipping 24 matching lines...) Expand all Loading... |
| 10371 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10375 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10372 | 10376 |
| 10373 base::WeakPtr<HttpServerProperties> http_server_properties = | 10377 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10374 session->http_server_properties(); | 10378 session->http_server_properties(); |
| 10375 const int kUnrestrictedAlternatePort = 1024; | 10379 const int kUnrestrictedAlternatePort = 1024; |
| 10376 AlternativeService alternative_service( | 10380 AlternativeService alternative_service( |
| 10377 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10381 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10378 kUnrestrictedAlternatePort); | 10382 kUnrestrictedAlternatePort); |
| 10379 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10383 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10380 http_server_properties->SetAlternativeService( | 10384 http_server_properties->SetAlternativeService( |
| 10381 HostPortPair::FromURL(restricted_port_request.url), alternative_service, | 10385 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10382 expiration); | 10386 expiration); |
| 10383 | 10387 |
| 10384 scoped_ptr<HttpTransaction> trans( | 10388 scoped_ptr<HttpTransaction> trans( |
| 10385 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10389 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10386 TestCompletionCallback callback; | 10390 TestCompletionCallback callback; |
| 10387 | 10391 |
| 10388 int rv = trans->Start( | 10392 int rv = trans->Start( |
| 10389 &restricted_port_request, | 10393 &restricted_port_request, |
| 10390 callback.callback(), BoundNetLog()); | 10394 callback.callback(), BoundNetLog()); |
| 10391 EXPECT_EQ(ERR_IO_PENDING, rv); | 10395 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10424 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10428 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10425 | 10429 |
| 10426 base::WeakPtr<HttpServerProperties> http_server_properties = | 10430 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10427 session->http_server_properties(); | 10431 session->http_server_properties(); |
| 10428 const int kUnrestrictedAlternatePort = 1024; | 10432 const int kUnrestrictedAlternatePort = 1024; |
| 10429 AlternativeService alternative_service( | 10433 AlternativeService alternative_service( |
| 10430 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10434 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10431 kUnrestrictedAlternatePort); | 10435 kUnrestrictedAlternatePort); |
| 10432 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10436 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10433 http_server_properties->SetAlternativeService( | 10437 http_server_properties->SetAlternativeService( |
| 10434 HostPortPair::FromURL(restricted_port_request.url), alternative_service, | 10438 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10435 expiration); | 10439 expiration); |
| 10436 | 10440 |
| 10437 scoped_ptr<HttpTransaction> trans( | 10441 scoped_ptr<HttpTransaction> trans( |
| 10438 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10442 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10439 TestCompletionCallback callback; | 10443 TestCompletionCallback callback; |
| 10440 | 10444 |
| 10441 EXPECT_EQ(ERR_IO_PENDING, trans->Start( | 10445 EXPECT_EQ(ERR_IO_PENDING, trans->Start( |
| 10442 &restricted_port_request, | 10446 &restricted_port_request, |
| 10443 callback.callback(), BoundNetLog())); | 10447 callback.callback(), BoundNetLog())); |
| 10444 // Change to unrestricted port should succeed. | 10448 // Change to unrestricted port should succeed. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10476 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10480 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10477 | 10481 |
| 10478 base::WeakPtr<HttpServerProperties> http_server_properties = | 10482 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10479 session->http_server_properties(); | 10483 session->http_server_properties(); |
| 10480 const int kRestrictedAlternatePort = 80; | 10484 const int kRestrictedAlternatePort = 80; |
| 10481 AlternativeService alternative_service( | 10485 AlternativeService alternative_service( |
| 10482 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10486 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10483 kRestrictedAlternatePort); | 10487 kRestrictedAlternatePort); |
| 10484 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10488 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10485 http_server_properties->SetAlternativeService( | 10489 http_server_properties->SetAlternativeService( |
| 10486 HostPortPair::FromURL(restricted_port_request.url), alternative_service, | 10490 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10487 expiration); | 10491 expiration); |
| 10488 | 10492 |
| 10489 scoped_ptr<HttpTransaction> trans( | 10493 scoped_ptr<HttpTransaction> trans( |
| 10490 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10494 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10491 TestCompletionCallback callback; | 10495 TestCompletionCallback callback; |
| 10492 | 10496 |
| 10493 int rv = trans->Start( | 10497 int rv = trans->Start( |
| 10494 &restricted_port_request, | 10498 &restricted_port_request, |
| 10495 callback.callback(), BoundNetLog()); | 10499 callback.callback(), BoundNetLog()); |
| 10496 EXPECT_EQ(ERR_IO_PENDING, rv); | 10500 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10529 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10533 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10530 | 10534 |
| 10531 base::WeakPtr<HttpServerProperties> http_server_properties = | 10535 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10532 session->http_server_properties(); | 10536 session->http_server_properties(); |
| 10533 const int kRestrictedAlternatePort = 80; | 10537 const int kRestrictedAlternatePort = 80; |
| 10534 AlternativeService alternative_service( | 10538 AlternativeService alternative_service( |
| 10535 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10539 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10536 kRestrictedAlternatePort); | 10540 kRestrictedAlternatePort); |
| 10537 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10541 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10538 http_server_properties->SetAlternativeService( | 10542 http_server_properties->SetAlternativeService( |
| 10539 HostPortPair::FromURL(unrestricted_port_request.url), alternative_service, | 10543 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10540 expiration); | 10544 expiration); |
| 10541 | 10545 |
| 10542 scoped_ptr<HttpTransaction> trans( | 10546 scoped_ptr<HttpTransaction> trans( |
| 10543 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10547 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10544 TestCompletionCallback callback; | 10548 TestCompletionCallback callback; |
| 10545 | 10549 |
| 10546 int rv = trans->Start( | 10550 int rv = trans->Start( |
| 10547 &unrestricted_port_request, callback.callback(), BoundNetLog()); | 10551 &unrestricted_port_request, callback.callback(), BoundNetLog()); |
| 10548 EXPECT_EQ(ERR_IO_PENDING, rv); | 10552 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10549 // Valid change to restricted port should pass. | 10553 // Valid change to restricted port should pass. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10581 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10585 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10582 | 10586 |
| 10583 base::WeakPtr<HttpServerProperties> http_server_properties = | 10587 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10584 session->http_server_properties(); | 10588 session->http_server_properties(); |
| 10585 const int kUnrestrictedAlternatePort = 1025; | 10589 const int kUnrestrictedAlternatePort = 1025; |
| 10586 AlternativeService alternative_service( | 10590 AlternativeService alternative_service( |
| 10587 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10591 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10588 kUnrestrictedAlternatePort); | 10592 kUnrestrictedAlternatePort); |
| 10589 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10593 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10590 http_server_properties->SetAlternativeService( | 10594 http_server_properties->SetAlternativeService( |
| 10591 HostPortPair::FromURL(unrestricted_port_request.url), alternative_service, | 10595 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10592 expiration); | 10596 expiration); |
| 10593 | 10597 |
| 10594 scoped_ptr<HttpTransaction> trans( | 10598 scoped_ptr<HttpTransaction> trans( |
| 10595 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10599 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10596 TestCompletionCallback callback; | 10600 TestCompletionCallback callback; |
| 10597 | 10601 |
| 10598 int rv = trans->Start( | 10602 int rv = trans->Start( |
| 10599 &unrestricted_port_request, callback.callback(), BoundNetLog()); | 10603 &unrestricted_port_request, callback.callback(), BoundNetLog()); |
| 10600 EXPECT_EQ(ERR_IO_PENDING, rv); | 10604 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10601 // Valid change to an unrestricted port should pass. | 10605 // Valid change to an unrestricted port should pass. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 10628 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10632 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10629 | 10633 |
| 10630 base::WeakPtr<HttpServerProperties> http_server_properties = | 10634 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 10631 session->http_server_properties(); | 10635 session->http_server_properties(); |
| 10632 const int kUnsafePort = 7; | 10636 const int kUnsafePort = 7; |
| 10633 AlternativeService alternative_service( | 10637 AlternativeService alternative_service( |
| 10634 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10638 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10635 kUnsafePort); | 10639 kUnsafePort); |
| 10636 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10640 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10637 http_server_properties->SetAlternativeService( | 10641 http_server_properties->SetAlternativeService( |
| 10638 HostPortPair::FromURL(request.url), alternative_service, expiration); | 10642 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10639 | 10643 |
| 10640 scoped_ptr<HttpTransaction> trans( | 10644 scoped_ptr<HttpTransaction> trans( |
| 10641 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10645 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10642 TestCompletionCallback callback; | 10646 TestCompletionCallback callback; |
| 10643 | 10647 |
| 10644 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10648 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10645 EXPECT_EQ(ERR_IO_PENDING, rv); | 10649 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10646 // The HTTP request should succeed. | 10650 // The HTTP request should succeed. |
| 10647 EXPECT_EQ(OK, callback.WaitForResult()); | 10651 EXPECT_EQ(OK, callback.WaitForResult()); |
| 10648 | 10652 |
| (...skipping 2706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13355 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13359 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 13356 | 13360 |
| 13357 session_deps_.parse_alternative_services = true; | 13361 session_deps_.parse_alternative_services = true; |
| 13358 session_deps_.enable_alternative_service_with_different_host = true; | 13362 session_deps_.enable_alternative_service_with_different_host = true; |
| 13359 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13363 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13360 base::WeakPtr<HttpServerProperties> http_server_properties = | 13364 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 13361 session->http_server_properties(); | 13365 session->http_server_properties(); |
| 13362 AlternativeService alternative_service( | 13366 AlternativeService alternative_service( |
| 13363 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13367 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13364 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13368 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13365 http_server_properties->SetAlternativeService(origin, alternative_service, | 13369 http_server_properties->SetAlternativeService( |
| 13366 expiration); | 13370 url::SchemeHostPort("https", origin.host(), origin.port()), |
| 13371 alternative_service, expiration); |
| 13367 | 13372 |
| 13368 // First request to alternative. | 13373 // First request to alternative. |
| 13369 if (pooling) { | 13374 if (pooling) { |
| 13370 scoped_ptr<HttpTransaction> trans0( | 13375 scoped_ptr<HttpTransaction> trans0( |
| 13371 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13376 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 13372 HttpRequestInfo request0; | 13377 HttpRequestInfo request0; |
| 13373 request0.method = "GET"; | 13378 request0.method = "GET"; |
| 13374 request0.url = GURL(url0); | 13379 request0.url = GURL(url0); |
| 13375 request0.load_flags = 0; | 13380 request0.load_flags = 0; |
| 13376 TestCompletionCallback callback0; | 13381 TestCompletionCallback callback0; |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13460 | 13465 |
| 13461 // Set up alternative service for origin. | 13466 // Set up alternative service for origin. |
| 13462 session_deps_.parse_alternative_services = true; | 13467 session_deps_.parse_alternative_services = true; |
| 13463 session_deps_.enable_alternative_service_with_different_host = true; | 13468 session_deps_.enable_alternative_service_with_different_host = true; |
| 13464 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13469 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13465 base::WeakPtr<HttpServerProperties> http_server_properties = | 13470 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 13466 session->http_server_properties(); | 13471 session->http_server_properties(); |
| 13467 AlternativeService alternative_service( | 13472 AlternativeService alternative_service( |
| 13468 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13473 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13469 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13474 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13470 http_server_properties->SetAlternativeService(origin, alternative_service, | 13475 http_server_properties->SetAlternativeService( |
| 13471 expiration); | 13476 url::SchemeHostPort("https", "origin.example.org", 443), |
| 13477 alternative_service, expiration); |
| 13472 | 13478 |
| 13473 scoped_ptr<HttpTransaction> trans( | 13479 scoped_ptr<HttpTransaction> trans( |
| 13474 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13480 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 13475 HttpRequestInfo request; | 13481 HttpRequestInfo request; |
| 13476 request.method = "GET"; | 13482 request.method = "GET"; |
| 13477 request.url = GURL("https://origin.example.org:443"); | 13483 request.url = GURL("https://origin.example.org:443"); |
| 13478 request.load_flags = 0; | 13484 request.load_flags = 0; |
| 13479 TestCompletionCallback callback; | 13485 TestCompletionCallback callback; |
| 13480 | 13486 |
| 13481 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is | 13487 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13534 | 13540 |
| 13535 // Set up alternative service for origin. | 13541 // Set up alternative service for origin. |
| 13536 session_deps_.parse_alternative_services = true; | 13542 session_deps_.parse_alternative_services = true; |
| 13537 session_deps_.enable_alternative_service_with_different_host = true; | 13543 session_deps_.enable_alternative_service_with_different_host = true; |
| 13538 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13544 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13539 base::WeakPtr<HttpServerProperties> http_server_properties = | 13545 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 13540 session->http_server_properties(); | 13546 session->http_server_properties(); |
| 13541 AlternativeService alternative_service( | 13547 AlternativeService alternative_service( |
| 13542 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13548 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13543 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13549 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13544 http_server_properties->SetAlternativeService(origin, alternative_service, | 13550 http_server_properties->SetAlternativeService( |
| 13545 expiration); | 13551 url::SchemeHostPort("https", "origin.example.org", 443), |
| 13552 alternative_service, expiration); |
| 13546 | 13553 |
| 13547 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 13554 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 13548 HttpRequestInfo request1; | 13555 HttpRequestInfo request1; |
| 13549 request1.method = "GET"; | 13556 request1.method = "GET"; |
| 13550 request1.url = GURL("https://origin.example.org:443"); | 13557 request1.url = GURL("https://origin.example.org:443"); |
| 13551 request1.load_flags = 0; | 13558 request1.load_flags = 0; |
| 13552 TestCompletionCallback callback1; | 13559 TestCompletionCallback callback1; |
| 13553 | 13560 |
| 13554 int rv = trans1.Start(&request1, callback1.callback(), BoundNetLog()); | 13561 int rv = trans1.Start(&request1, callback1.callback(), BoundNetLog()); |
| 13555 rv = callback1.GetResult(rv); | 13562 rv = callback1.GetResult(rv); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13644 | 13651 |
| 13645 // Set up alternative service for origin. | 13652 // Set up alternative service for origin. |
| 13646 session_deps_.parse_alternative_services = true; | 13653 session_deps_.parse_alternative_services = true; |
| 13647 session_deps_.enable_alternative_service_with_different_host = false; | 13654 session_deps_.enable_alternative_service_with_different_host = false; |
| 13648 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13655 scoped_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13649 base::WeakPtr<HttpServerProperties> http_server_properties = | 13656 base::WeakPtr<HttpServerProperties> http_server_properties = |
| 13650 session->http_server_properties(); | 13657 session->http_server_properties(); |
| 13651 AlternativeService alternative_service( | 13658 AlternativeService alternative_service( |
| 13652 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13659 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13653 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13660 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13654 http_server_properties->SetAlternativeService(origin, alternative_service, | 13661 http_server_properties->SetAlternativeService( |
| 13655 expiration); | 13662 url::SchemeHostPort("https", "origin.example.org", 443), |
| 13663 alternative_service, expiration); |
| 13656 | 13664 |
| 13657 // First transaction to alternative to open an HTTP/1.1 socket. | 13665 // First transaction to alternative to open an HTTP/1.1 socket. |
| 13658 scoped_ptr<HttpTransaction> trans1( | 13666 scoped_ptr<HttpTransaction> trans1( |
| 13659 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13667 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 13660 HttpRequestInfo request1; | 13668 HttpRequestInfo request1; |
| 13661 request1.method = "GET"; | 13669 request1.method = "GET"; |
| 13662 request1.url = GURL(alternative_url); | 13670 request1.url = GURL(alternative_url); |
| 13663 request1.load_flags = 0; | 13671 request1.load_flags = 0; |
| 13664 TestCompletionCallback callback1; | 13672 TestCompletionCallback callback1; |
| 13665 | 13673 |
| (...skipping 2286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15952 base::MessageLoop::current()->RunUntilIdle(); | 15960 base::MessageLoop::current()->RunUntilIdle(); |
| 15953 | 15961 |
| 15954 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 15962 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
| 15955 HttpRequestHeaders headers; | 15963 HttpRequestHeaders headers; |
| 15956 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 15964 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
| 15957 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 15965 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
| 15958 } | 15966 } |
| 15959 #endif // !defined(OS_IOS) | 15967 #endif // !defined(OS_IOS) |
| 15960 | 15968 |
| 15961 } // namespace net | 15969 } // namespace net |
| OLD | NEW |