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

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

Issue 1824903002: Change the AlternativeServiceMap with SchemeOriginPair key. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_server_properties.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <limits> 10 #include <limits>
(...skipping 8789 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_server_properties.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698