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 | 10 |
(...skipping 9075 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9086 std::string url; | 9086 std::string url; |
9087 std::string expected_group_name; | 9087 std::string expected_group_name; |
9088 bool ssl; | 9088 bool ssl; |
9089 }; | 9089 }; |
9090 | 9090 |
9091 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( | 9091 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( |
9092 NextProto next_proto, | 9092 NextProto next_proto, |
9093 SpdySessionDependencies* session_deps_) { | 9093 SpdySessionDependencies* session_deps_) { |
9094 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 9094 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
9095 | 9095 |
9096 base::WeakPtr<HttpServerProperties> http_server_properties = | 9096 HttpServerProperties* http_server_properties = |
9097 session->http_server_properties(); | 9097 session->http_server_properties(); |
9098 AlternativeService alternative_service( | 9098 AlternativeService alternative_service( |
9099 AlternateProtocolFromNextProto(next_proto), "", 443); | 9099 AlternateProtocolFromNextProto(next_proto), "", 443); |
9100 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9100 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
9101 http_server_properties->SetAlternativeService( | 9101 http_server_properties->SetAlternativeService( |
9102 url::SchemeHostPort("http", "host.with.alternate", 80), | 9102 url::SchemeHostPort("http", "host.with.alternate", 80), |
9103 alternative_service, expiration); | 9103 alternative_service, expiration); |
9104 | 9104 |
9105 return session; | 9105 return session; |
9106 } | 9106 } |
(...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9977 TestCompletionCallback callback; | 9977 TestCompletionCallback callback; |
9978 | 9978 |
9979 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9979 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
9980 std::unique_ptr<HttpTransaction> trans( | 9980 std::unique_ptr<HttpTransaction> trans( |
9981 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 9981 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
9982 | 9982 |
9983 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 9983 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
9984 EXPECT_EQ(ERR_IO_PENDING, rv); | 9984 EXPECT_EQ(ERR_IO_PENDING, rv); |
9985 | 9985 |
9986 url::SchemeHostPort test_server("http", "www.example.org", 80); | 9986 url::SchemeHostPort test_server("http", "www.example.org", 80); |
9987 HttpServerProperties& http_server_properties = | 9987 HttpServerProperties* http_server_properties = |
9988 *session->http_server_properties(); | 9988 session->http_server_properties(); |
9989 AlternativeServiceVector alternative_service_vector = | 9989 AlternativeServiceVector alternative_service_vector = |
9990 http_server_properties.GetAlternativeServices(test_server); | 9990 http_server_properties->GetAlternativeServices(test_server); |
9991 EXPECT_TRUE(alternative_service_vector.empty()); | 9991 EXPECT_TRUE(alternative_service_vector.empty()); |
9992 | 9992 |
9993 EXPECT_EQ(OK, callback.WaitForResult()); | 9993 EXPECT_EQ(OK, callback.WaitForResult()); |
9994 | 9994 |
9995 const HttpResponseInfo* response = trans->GetResponseInfo(); | 9995 const HttpResponseInfo* response = trans->GetResponseInfo(); |
9996 ASSERT_TRUE(response); | 9996 ASSERT_TRUE(response); |
9997 ASSERT_TRUE(response->headers); | 9997 ASSERT_TRUE(response->headers); |
9998 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9998 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
9999 EXPECT_FALSE(response->was_fetched_via_spdy); | 9999 EXPECT_FALSE(response->was_fetched_via_spdy); |
10000 EXPECT_FALSE(response->was_npn_negotiated); | 10000 EXPECT_FALSE(response->was_npn_negotiated); |
10001 | 10001 |
10002 std::string response_data; | 10002 std::string response_data; |
10003 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10003 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
10004 EXPECT_EQ("hello world", response_data); | 10004 EXPECT_EQ("hello world", response_data); |
10005 | 10005 |
10006 alternative_service_vector = | 10006 alternative_service_vector = |
10007 http_server_properties.GetAlternativeServices(test_server); | 10007 http_server_properties->GetAlternativeServices(test_server); |
10008 ASSERT_EQ(1u, alternative_service_vector.size()); | 10008 ASSERT_EQ(1u, alternative_service_vector.size()); |
10009 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 10009 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
10010 alternative_service_vector[0].protocol); | 10010 alternative_service_vector[0].protocol); |
10011 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); | 10011 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); |
10012 EXPECT_EQ(443, alternative_service_vector[0].port); | 10012 EXPECT_EQ(443, alternative_service_vector[0].port); |
10013 } | 10013 } |
10014 | 10014 |
10015 // Regression test for https://crbug.com/615497. | 10015 // Regression test for https://crbug.com/615497. |
10016 TEST_P(HttpNetworkTransactionTest, | 10016 TEST_P(HttpNetworkTransactionTest, |
10017 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { | 10017 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { |
(...skipping 18 matching lines...) Expand all Loading... |
10036 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 10036 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
10037 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10037 session_deps_.socket_factory->AddSocketDataProvider(&data); |
10038 | 10038 |
10039 TestCompletionCallback callback; | 10039 TestCompletionCallback callback; |
10040 | 10040 |
10041 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10041 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10042 std::unique_ptr<HttpTransaction> trans( | 10042 std::unique_ptr<HttpTransaction> trans( |
10043 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10043 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10044 | 10044 |
10045 url::SchemeHostPort test_server(request.url); | 10045 url::SchemeHostPort test_server(request.url); |
10046 HttpServerProperties& http_server_properties = | 10046 HttpServerProperties* http_server_properties = |
10047 *session->http_server_properties(); | 10047 session->http_server_properties(); |
10048 AlternativeServiceVector alternative_service_vector = | 10048 AlternativeServiceVector alternative_service_vector = |
10049 http_server_properties.GetAlternativeServices(test_server); | 10049 http_server_properties->GetAlternativeServices(test_server); |
10050 EXPECT_TRUE(alternative_service_vector.empty()); | 10050 EXPECT_TRUE(alternative_service_vector.empty()); |
10051 | 10051 |
10052 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10052 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
10053 EXPECT_EQ(ERR_IO_PENDING, rv); | 10053 EXPECT_EQ(ERR_IO_PENDING, rv); |
10054 EXPECT_EQ(OK, callback.WaitForResult()); | 10054 EXPECT_EQ(OK, callback.WaitForResult()); |
10055 | 10055 |
10056 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10056 const HttpResponseInfo* response = trans->GetResponseInfo(); |
10057 ASSERT_TRUE(response); | 10057 ASSERT_TRUE(response); |
10058 ASSERT_TRUE(response->headers); | 10058 ASSERT_TRUE(response->headers); |
10059 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10059 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10060 EXPECT_FALSE(response->was_fetched_via_spdy); | 10060 EXPECT_FALSE(response->was_fetched_via_spdy); |
10061 EXPECT_FALSE(response->was_npn_negotiated); | 10061 EXPECT_FALSE(response->was_npn_negotiated); |
10062 | 10062 |
10063 std::string response_data; | 10063 std::string response_data; |
10064 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10064 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
10065 EXPECT_EQ("hello world", response_data); | 10065 EXPECT_EQ("hello world", response_data); |
10066 | 10066 |
10067 alternative_service_vector = | 10067 alternative_service_vector = |
10068 http_server_properties.GetAlternativeServices(test_server); | 10068 http_server_properties->GetAlternativeServices(test_server); |
10069 EXPECT_TRUE(alternative_service_vector.empty()); | 10069 EXPECT_TRUE(alternative_service_vector.empty()); |
10070 } | 10070 } |
10071 | 10071 |
10072 // HTTP/2 Alternative Services should be disabled if alternative service | 10072 // HTTP/2 Alternative Services should be disabled if alternative service |
10073 // hostname is different from that of origin. | 10073 // hostname is different from that of origin. |
10074 // TODO(bnc): Remove when https://crbug.com/615413 is fixed. | 10074 // TODO(bnc): Remove when https://crbug.com/615413 is fixed. |
10075 TEST_P(HttpNetworkTransactionTest, | 10075 TEST_P(HttpNetworkTransactionTest, |
10076 DisableHTTP2AlternativeServicesWithDifferentHost) { | 10076 DisableHTTP2AlternativeServicesWithDifferentHost) { |
10077 session_deps_.enable_alternative_service_with_different_host = true; | 10077 session_deps_.enable_alternative_service_with_different_host = true; |
10078 | 10078 |
(...skipping 10 matching lines...) Expand all Loading... |
10089 MockRead data_reads[] = { | 10089 MockRead data_reads[] = { |
10090 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 10090 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
10091 MockRead(ASYNC, OK), | 10091 MockRead(ASYNC, OK), |
10092 }; | 10092 }; |
10093 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, | 10093 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
10094 0); | 10094 0); |
10095 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10095 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10096 | 10096 |
10097 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10097 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10098 | 10098 |
10099 base::WeakPtr<HttpServerProperties> http_server_properties = | 10099 HttpServerProperties* http_server_properties = |
10100 session->http_server_properties(); | 10100 session->http_server_properties(); |
10101 AlternativeService alternative_service( | 10101 AlternativeService alternative_service( |
10102 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", | 10102 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", |
10103 444); | 10103 444); |
10104 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10104 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10105 http_server_properties->SetAlternativeService( | 10105 http_server_properties->SetAlternativeService( |
10106 url::SchemeHostPort(request.url), alternative_service, expiration); | 10106 url::SchemeHostPort(request.url), alternative_service, expiration); |
10107 | 10107 |
10108 std::unique_ptr<HttpTransaction> trans( | 10108 std::unique_ptr<HttpTransaction> trans( |
10109 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10109 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
(...skipping 23 matching lines...) Expand all Loading... |
10133 MockRead data_reads[] = { | 10133 MockRead data_reads[] = { |
10134 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 10134 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
10135 MockRead(ASYNC, OK), | 10135 MockRead(ASYNC, OK), |
10136 }; | 10136 }; |
10137 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, | 10137 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
10138 0); | 10138 0); |
10139 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10139 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10140 | 10140 |
10141 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10141 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10142 | 10142 |
10143 base::WeakPtr<HttpServerProperties> http_server_properties = | 10143 HttpServerProperties* http_server_properties = |
10144 session->http_server_properties(); | 10144 session->http_server_properties(); |
10145 AlternativeService alternative_service( | 10145 AlternativeService alternative_service( |
10146 AlternateProtocolFromNextProto(GetProtocol()), "", 444); | 10146 AlternateProtocolFromNextProto(GetProtocol()), "", 444); |
10147 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10147 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10148 http_server_properties->SetAlternativeService( | 10148 http_server_properties->SetAlternativeService( |
10149 url::SchemeHostPort(request.url), alternative_service, expiration); | 10149 url::SchemeHostPort(request.url), alternative_service, expiration); |
10150 | 10150 |
10151 std::unique_ptr<HttpTransaction> trans( | 10151 std::unique_ptr<HttpTransaction> trans( |
10152 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10152 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10153 TestCompletionCallback callback; | 10153 TestCompletionCallback callback; |
10154 | 10154 |
10155 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10155 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
10156 // Alternative service is not used, request fails. | 10156 // Alternative service is not used, request fails. |
10157 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); | 10157 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); |
10158 } | 10158 } |
10159 | 10159 |
10160 TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10160 TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { |
10161 session_deps_.enable_alternative_service_with_different_host = false; | 10161 session_deps_.enable_alternative_service_with_different_host = false; |
10162 | 10162 |
10163 // Set an alternative service for origin. | 10163 // Set an alternative service for origin. |
10164 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10164 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10165 HttpServerProperties& http_server_properties = | 10165 HttpServerProperties* http_server_properties = |
10166 *session->http_server_properties(); | 10166 session->http_server_properties(); |
10167 url::SchemeHostPort test_server("http", "www.example.org", 80); | 10167 url::SchemeHostPort test_server("http", "www.example.org", 80); |
10168 AlternativeService alternative_service(QUIC, "", 80); | 10168 AlternativeService alternative_service(QUIC, "", 80); |
10169 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10169 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10170 http_server_properties.SetAlternativeService(test_server, alternative_service, | 10170 http_server_properties->SetAlternativeService( |
10171 expiration); | 10171 test_server, alternative_service, expiration); |
10172 AlternativeServiceVector alternative_service_vector = | 10172 AlternativeServiceVector alternative_service_vector = |
10173 http_server_properties.GetAlternativeServices(test_server); | 10173 http_server_properties->GetAlternativeServices(test_server); |
10174 EXPECT_EQ(1u, alternative_service_vector.size()); | 10174 EXPECT_EQ(1u, alternative_service_vector.size()); |
10175 | 10175 |
10176 // Send a clear header. | 10176 // Send a clear header. |
10177 MockRead data_reads[] = { | 10177 MockRead data_reads[] = { |
10178 MockRead("HTTP/1.1 200 OK\r\n"), | 10178 MockRead("HTTP/1.1 200 OK\r\n"), |
10179 MockRead("Alt-Svc: clear\r\n"), | 10179 MockRead("Alt-Svc: clear\r\n"), |
10180 MockRead("\r\n"), | 10180 MockRead("\r\n"), |
10181 MockRead("hello world"), | 10181 MockRead("hello world"), |
10182 MockRead(SYNCHRONOUS, OK), | 10182 MockRead(SYNCHRONOUS, OK), |
10183 }; | 10183 }; |
(...skipping 18 matching lines...) Expand all Loading... |
10202 ASSERT_TRUE(response->headers); | 10202 ASSERT_TRUE(response->headers); |
10203 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10203 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10204 EXPECT_FALSE(response->was_fetched_via_spdy); | 10204 EXPECT_FALSE(response->was_fetched_via_spdy); |
10205 EXPECT_FALSE(response->was_npn_negotiated); | 10205 EXPECT_FALSE(response->was_npn_negotiated); |
10206 | 10206 |
10207 std::string response_data; | 10207 std::string response_data; |
10208 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10208 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
10209 EXPECT_EQ("hello world", response_data); | 10209 EXPECT_EQ("hello world", response_data); |
10210 | 10210 |
10211 alternative_service_vector = | 10211 alternative_service_vector = |
10212 http_server_properties.GetAlternativeServices(test_server); | 10212 http_server_properties->GetAlternativeServices(test_server); |
10213 EXPECT_TRUE(alternative_service_vector.empty()); | 10213 EXPECT_TRUE(alternative_service_vector.empty()); |
10214 } | 10214 } |
10215 | 10215 |
10216 TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeader) { | 10216 TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeader) { |
10217 session_deps_.enable_alternative_service_with_different_host = false; | 10217 session_deps_.enable_alternative_service_with_different_host = false; |
10218 | 10218 |
10219 MockRead data_reads[] = { | 10219 MockRead data_reads[] = { |
10220 MockRead("HTTP/1.1 200 OK\r\n"), | 10220 MockRead("HTTP/1.1 200 OK\r\n"), |
10221 MockRead("Alt-Svc: "), | 10221 MockRead("Alt-Svc: "), |
10222 MockRead(GetAlternateProtocolFromParam()), | 10222 MockRead(GetAlternateProtocolFromParam()), |
(...skipping 16 matching lines...) Expand all Loading... |
10239 TestCompletionCallback callback; | 10239 TestCompletionCallback callback; |
10240 | 10240 |
10241 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10241 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10242 std::unique_ptr<HttpTransaction> trans( | 10242 std::unique_ptr<HttpTransaction> trans( |
10243 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10243 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
10244 | 10244 |
10245 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10245 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
10246 EXPECT_EQ(ERR_IO_PENDING, rv); | 10246 EXPECT_EQ(ERR_IO_PENDING, rv); |
10247 | 10247 |
10248 url::SchemeHostPort test_server("http", "www.example.org", 80); | 10248 url::SchemeHostPort test_server("http", "www.example.org", 80); |
10249 HttpServerProperties& http_server_properties = | 10249 HttpServerProperties* http_server_properties = |
10250 *session->http_server_properties(); | 10250 session->http_server_properties(); |
10251 AlternativeServiceVector alternative_service_vector = | 10251 AlternativeServiceVector alternative_service_vector = |
10252 http_server_properties.GetAlternativeServices(test_server); | 10252 http_server_properties->GetAlternativeServices(test_server); |
10253 EXPECT_TRUE(alternative_service_vector.empty()); | 10253 EXPECT_TRUE(alternative_service_vector.empty()); |
10254 | 10254 |
10255 EXPECT_EQ(OK, callback.WaitForResult()); | 10255 EXPECT_EQ(OK, callback.WaitForResult()); |
10256 | 10256 |
10257 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10257 const HttpResponseInfo* response = trans->GetResponseInfo(); |
10258 ASSERT_TRUE(response); | 10258 ASSERT_TRUE(response); |
10259 ASSERT_TRUE(response->headers); | 10259 ASSERT_TRUE(response->headers); |
10260 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10260 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
10261 EXPECT_FALSE(response->was_fetched_via_spdy); | 10261 EXPECT_FALSE(response->was_fetched_via_spdy); |
10262 EXPECT_FALSE(response->was_npn_negotiated); | 10262 EXPECT_FALSE(response->was_npn_negotiated); |
10263 | 10263 |
10264 std::string response_data; | 10264 std::string response_data; |
10265 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10265 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
10266 EXPECT_EQ("hello world", response_data); | 10266 EXPECT_EQ("hello world", response_data); |
10267 | 10267 |
10268 alternative_service_vector = | 10268 alternative_service_vector = |
10269 http_server_properties.GetAlternativeServices(test_server); | 10269 http_server_properties->GetAlternativeServices(test_server); |
10270 ASSERT_EQ(2u, alternative_service_vector.size()); | 10270 ASSERT_EQ(2u, alternative_service_vector.size()); |
10271 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 10271 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
10272 alternative_service_vector[0].protocol); | 10272 alternative_service_vector[0].protocol); |
10273 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); | 10273 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); |
10274 EXPECT_EQ(443, alternative_service_vector[0].port); | 10274 EXPECT_EQ(443, alternative_service_vector[0].port); |
10275 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 10275 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
10276 alternative_service_vector[1].protocol); | 10276 alternative_service_vector[1].protocol); |
10277 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); | 10277 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); |
10278 EXPECT_EQ(1234, alternative_service_vector[1].port); | 10278 EXPECT_EQ(1234, alternative_service_vector[1].port); |
10279 } | 10279 } |
(...skipping 16 matching lines...) Expand all Loading... |
10296 MockRead data_reads[] = { | 10296 MockRead data_reads[] = { |
10297 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 10297 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
10298 MockRead(ASYNC, OK), | 10298 MockRead(ASYNC, OK), |
10299 }; | 10299 }; |
10300 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), | 10300 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), |
10301 nullptr, 0); | 10301 nullptr, 0); |
10302 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10302 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10303 | 10303 |
10304 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 10304 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
10305 | 10305 |
10306 base::WeakPtr<HttpServerProperties> http_server_properties = | 10306 HttpServerProperties* http_server_properties = |
10307 session->http_server_properties(); | 10307 session->http_server_properties(); |
10308 AlternativeService alternative_service( | 10308 AlternativeService alternative_service( |
10309 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", | 10309 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", |
10310 80); | 10310 80); |
10311 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10311 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10312 http_server_properties->SetAlternativeService( | 10312 http_server_properties->SetAlternativeService( |
10313 url::SchemeHostPort(request.url), alternative_service, expiration); | 10313 url::SchemeHostPort(request.url), alternative_service, expiration); |
10314 | 10314 |
10315 std::unique_ptr<HttpTransaction> trans( | 10315 std::unique_ptr<HttpTransaction> trans( |
10316 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10316 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10351 http_writes, arraysize(http_writes)); | 10351 http_writes, arraysize(http_writes)); |
10352 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 10352 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
10353 | 10353 |
10354 StaticSocketDataProvider data_refused; | 10354 StaticSocketDataProvider data_refused; |
10355 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10355 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
10356 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10356 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
10357 | 10357 |
10358 // Set up a QUIC alternative service for server. | 10358 // Set up a QUIC alternative service for server. |
10359 session_deps_.enable_alternative_service_with_different_host = false; | 10359 session_deps_.enable_alternative_service_with_different_host = false; |
10360 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10360 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10361 base::WeakPtr<HttpServerProperties> http_server_properties = | 10361 HttpServerProperties* http_server_properties = |
10362 session->http_server_properties(); | 10362 session->http_server_properties(); |
10363 AlternativeService alternative_service(QUIC, alternative); | 10363 AlternativeService alternative_service(QUIC, alternative); |
10364 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10364 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10365 http_server_properties->SetAlternativeService(server, alternative_service, | 10365 http_server_properties->SetAlternativeService(server, alternative_service, |
10366 expiration); | 10366 expiration); |
10367 // Mark the QUIC alternative service as broken. | 10367 // Mark the QUIC alternative service as broken. |
10368 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10368 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
10369 | 10369 |
10370 std::unique_ptr<HttpTransaction> trans( | 10370 std::unique_ptr<HttpTransaction> trans( |
10371 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10371 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10411 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 10411 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
10412 http_writes, arraysize(http_writes)); | 10412 http_writes, arraysize(http_writes)); |
10413 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 10413 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
10414 | 10414 |
10415 StaticSocketDataProvider data_refused; | 10415 StaticSocketDataProvider data_refused; |
10416 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10416 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
10417 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10417 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
10418 | 10418 |
10419 session_deps_.enable_alternative_service_with_different_host = true; | 10419 session_deps_.enable_alternative_service_with_different_host = true; |
10420 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10420 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10421 base::WeakPtr<HttpServerProperties> http_server_properties = | 10421 HttpServerProperties* http_server_properties = |
10422 session->http_server_properties(); | 10422 session->http_server_properties(); |
10423 | 10423 |
10424 // Set up two QUIC alternative services for server. | 10424 // Set up two QUIC alternative services for server. |
10425 AlternativeServiceInfoVector alternative_service_info_vector; | 10425 AlternativeServiceInfoVector alternative_service_info_vector; |
10426 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10426 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10427 | 10427 |
10428 AlternativeService alternative_service1(QUIC, alternative1); | 10428 AlternativeService alternative_service1(QUIC, alternative1); |
10429 AlternativeServiceInfo alternative_service_info1(alternative_service1, | 10429 AlternativeServiceInfo alternative_service_info1(alternative_service1, |
10430 expiration); | 10430 expiration); |
10431 alternative_service_info_vector.push_back(alternative_service_info1); | 10431 alternative_service_info_vector.push_back(alternative_service_info1); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10476 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10476 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
10477 MockRead("hello world"), | 10477 MockRead("hello world"), |
10478 MockRead(ASYNC, OK), | 10478 MockRead(ASYNC, OK), |
10479 }; | 10479 }; |
10480 StaticSocketDataProvider second_data( | 10480 StaticSocketDataProvider second_data( |
10481 data_reads, arraysize(data_reads), NULL, 0); | 10481 data_reads, arraysize(data_reads), NULL, 0); |
10482 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10482 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10483 | 10483 |
10484 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10484 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10485 | 10485 |
10486 base::WeakPtr<HttpServerProperties> http_server_properties = | 10486 HttpServerProperties* http_server_properties = |
10487 session->http_server_properties(); | 10487 session->http_server_properties(); |
10488 const url::SchemeHostPort server(request.url); | 10488 const url::SchemeHostPort server(request.url); |
10489 // Port must be < 1024, or the header will be ignored (since initial port was | 10489 // Port must be < 1024, or the header will be ignored (since initial port was |
10490 // port 80 (another restricted port). | 10490 // port 80 (another restricted port). |
10491 const AlternativeService alternative_service( | 10491 const AlternativeService alternative_service( |
10492 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10492 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10493 666); // Port is ignored by MockConnect anyway. | 10493 666); // Port is ignored by MockConnect anyway. |
10494 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10494 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10495 http_server_properties->SetAlternativeService(server, alternative_service, | 10495 http_server_properties->SetAlternativeService(server, alternative_service, |
10496 expiration); | 10496 expiration); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10542 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10542 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
10543 MockRead("hello world"), | 10543 MockRead("hello world"), |
10544 MockRead(ASYNC, OK), | 10544 MockRead(ASYNC, OK), |
10545 }; | 10545 }; |
10546 StaticSocketDataProvider second_data( | 10546 StaticSocketDataProvider second_data( |
10547 data_reads, arraysize(data_reads), NULL, 0); | 10547 data_reads, arraysize(data_reads), NULL, 0); |
10548 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10548 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10549 | 10549 |
10550 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10550 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10551 | 10551 |
10552 base::WeakPtr<HttpServerProperties> http_server_properties = | 10552 HttpServerProperties* http_server_properties = |
10553 session->http_server_properties(); | 10553 session->http_server_properties(); |
10554 const int kUnrestrictedAlternatePort = 1024; | 10554 const int kUnrestrictedAlternatePort = 1024; |
10555 AlternativeService alternative_service( | 10555 AlternativeService alternative_service( |
10556 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10556 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10557 kUnrestrictedAlternatePort); | 10557 kUnrestrictedAlternatePort); |
10558 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10558 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10559 http_server_properties->SetAlternativeService( | 10559 http_server_properties->SetAlternativeService( |
10560 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10560 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10561 expiration); | 10561 expiration); |
10562 | 10562 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10594 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10594 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
10595 MockRead("hello world"), | 10595 MockRead("hello world"), |
10596 MockRead(ASYNC, OK), | 10596 MockRead(ASYNC, OK), |
10597 }; | 10597 }; |
10598 StaticSocketDataProvider second_data( | 10598 StaticSocketDataProvider second_data( |
10599 data_reads, arraysize(data_reads), NULL, 0); | 10599 data_reads, arraysize(data_reads), NULL, 0); |
10600 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10600 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10601 | 10601 |
10602 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10602 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10603 | 10603 |
10604 base::WeakPtr<HttpServerProperties> http_server_properties = | 10604 HttpServerProperties* http_server_properties = |
10605 session->http_server_properties(); | 10605 session->http_server_properties(); |
10606 const int kUnrestrictedAlternatePort = 1024; | 10606 const int kUnrestrictedAlternatePort = 1024; |
10607 AlternativeService alternative_service( | 10607 AlternativeService alternative_service( |
10608 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10608 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10609 kUnrestrictedAlternatePort); | 10609 kUnrestrictedAlternatePort); |
10610 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10610 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10611 http_server_properties->SetAlternativeService( | 10611 http_server_properties->SetAlternativeService( |
10612 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10612 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10613 expiration); | 10613 expiration); |
10614 | 10614 |
(...skipping 30 matching lines...) Expand all Loading... |
10645 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10645 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
10646 MockRead("hello world"), | 10646 MockRead("hello world"), |
10647 MockRead(ASYNC, OK), | 10647 MockRead(ASYNC, OK), |
10648 }; | 10648 }; |
10649 StaticSocketDataProvider second_data( | 10649 StaticSocketDataProvider second_data( |
10650 data_reads, arraysize(data_reads), NULL, 0); | 10650 data_reads, arraysize(data_reads), NULL, 0); |
10651 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10651 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10652 | 10652 |
10653 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10653 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10654 | 10654 |
10655 base::WeakPtr<HttpServerProperties> http_server_properties = | 10655 HttpServerProperties* http_server_properties = |
10656 session->http_server_properties(); | 10656 session->http_server_properties(); |
10657 const int kRestrictedAlternatePort = 80; | 10657 const int kRestrictedAlternatePort = 80; |
10658 AlternativeService alternative_service( | 10658 AlternativeService alternative_service( |
10659 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10659 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10660 kRestrictedAlternatePort); | 10660 kRestrictedAlternatePort); |
10661 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10661 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10662 http_server_properties->SetAlternativeService( | 10662 http_server_properties->SetAlternativeService( |
10663 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10663 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
10664 expiration); | 10664 expiration); |
10665 | 10665 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10697 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10697 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
10698 MockRead("hello world"), | 10698 MockRead("hello world"), |
10699 MockRead(ASYNC, OK), | 10699 MockRead(ASYNC, OK), |
10700 }; | 10700 }; |
10701 StaticSocketDataProvider second_data( | 10701 StaticSocketDataProvider second_data( |
10702 data_reads, arraysize(data_reads), NULL, 0); | 10702 data_reads, arraysize(data_reads), NULL, 0); |
10703 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10703 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10704 | 10704 |
10705 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10705 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10706 | 10706 |
10707 base::WeakPtr<HttpServerProperties> http_server_properties = | 10707 HttpServerProperties* http_server_properties = |
10708 session->http_server_properties(); | 10708 session->http_server_properties(); |
10709 const int kRestrictedAlternatePort = 80; | 10709 const int kRestrictedAlternatePort = 80; |
10710 AlternativeService alternative_service( | 10710 AlternativeService alternative_service( |
10711 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10711 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10712 kRestrictedAlternatePort); | 10712 kRestrictedAlternatePort); |
10713 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10713 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10714 http_server_properties->SetAlternativeService( | 10714 http_server_properties->SetAlternativeService( |
10715 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10715 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
10716 expiration); | 10716 expiration); |
10717 | 10717 |
(...skipping 30 matching lines...) Expand all Loading... |
10748 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10748 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
10749 MockRead("hello world"), | 10749 MockRead("hello world"), |
10750 MockRead(ASYNC, OK), | 10750 MockRead(ASYNC, OK), |
10751 }; | 10751 }; |
10752 StaticSocketDataProvider second_data( | 10752 StaticSocketDataProvider second_data( |
10753 data_reads, arraysize(data_reads), NULL, 0); | 10753 data_reads, arraysize(data_reads), NULL, 0); |
10754 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10754 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
10755 | 10755 |
10756 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10756 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10757 | 10757 |
10758 base::WeakPtr<HttpServerProperties> http_server_properties = | 10758 HttpServerProperties* http_server_properties = |
10759 session->http_server_properties(); | 10759 session->http_server_properties(); |
10760 const int kUnrestrictedAlternatePort = 1025; | 10760 const int kUnrestrictedAlternatePort = 1025; |
10761 AlternativeService alternative_service( | 10761 AlternativeService alternative_service( |
10762 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10762 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10763 kUnrestrictedAlternatePort); | 10763 kUnrestrictedAlternatePort); |
10764 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10764 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10765 http_server_properties->SetAlternativeService( | 10765 http_server_properties->SetAlternativeService( |
10766 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10766 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
10767 expiration); | 10767 expiration); |
10768 | 10768 |
(...skipping 25 matching lines...) Expand all Loading... |
10794 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10794 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
10795 MockRead("hello world"), | 10795 MockRead("hello world"), |
10796 MockRead(ASYNC, OK), | 10796 MockRead(ASYNC, OK), |
10797 }; | 10797 }; |
10798 StaticSocketDataProvider data( | 10798 StaticSocketDataProvider data( |
10799 data_reads, arraysize(data_reads), NULL, 0); | 10799 data_reads, arraysize(data_reads), NULL, 0); |
10800 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10800 session_deps_.socket_factory->AddSocketDataProvider(&data); |
10801 | 10801 |
10802 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10802 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
10803 | 10803 |
10804 base::WeakPtr<HttpServerProperties> http_server_properties = | 10804 HttpServerProperties* http_server_properties = |
10805 session->http_server_properties(); | 10805 session->http_server_properties(); |
10806 const int kUnsafePort = 7; | 10806 const int kUnsafePort = 7; |
10807 AlternativeService alternative_service( | 10807 AlternativeService alternative_service( |
10808 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10808 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
10809 kUnsafePort); | 10809 kUnsafePort); |
10810 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10810 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
10811 http_server_properties->SetAlternativeService( | 10811 http_server_properties->SetAlternativeService( |
10812 url::SchemeHostPort(request.url), alternative_service, expiration); | 10812 url::SchemeHostPort(request.url), alternative_service, expiration); |
10813 | 10813 |
10814 std::unique_ptr<HttpTransaction> trans( | 10814 std::unique_ptr<HttpTransaction> trans( |
(...skipping 2719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13534 session_deps_.socket_factory->AddSocketDataProvider(&data); | 13534 session_deps_.socket_factory->AddSocketDataProvider(&data); |
13535 | 13535 |
13536 // Connection to the server fails. | 13536 // Connection to the server fails. |
13537 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 13537 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
13538 StaticSocketDataProvider data_refused; | 13538 StaticSocketDataProvider data_refused; |
13539 data_refused.set_connect_data(mock_connect); | 13539 data_refused.set_connect_data(mock_connect); |
13540 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13540 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
13541 | 13541 |
13542 session_deps_.enable_alternative_service_with_different_host = true; | 13542 session_deps_.enable_alternative_service_with_different_host = true; |
13543 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13543 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13544 base::WeakPtr<HttpServerProperties> http_server_properties = | 13544 HttpServerProperties* http_server_properties = |
13545 session->http_server_properties(); | 13545 session->http_server_properties(); |
13546 AlternativeService alternative_service( | 13546 AlternativeService alternative_service( |
13547 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13547 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13548 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13548 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13549 http_server_properties->SetAlternativeService(server, alternative_service, | 13549 http_server_properties->SetAlternativeService(server, alternative_service, |
13550 expiration); | 13550 expiration); |
13551 | 13551 |
13552 // First request to alternative. | 13552 // First request to alternative. |
13553 if (pooling) { | 13553 if (pooling) { |
13554 std::unique_ptr<HttpTransaction> trans0( | 13554 std::unique_ptr<HttpTransaction> trans0( |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13639 // This test documents that an alternate Job should not be used if HTTP/1.1 is | 13639 // This test documents that an alternate Job should not be used if HTTP/1.1 is |
13640 // negotiated. In order to test this, a failed connection to the server is | 13640 // negotiated. In order to test this, a failed connection to the server is |
13641 // mocked. This way the request relies on the alternate Job. | 13641 // mocked. This way the request relies on the alternate Job. |
13642 StaticSocketDataProvider data_refused; | 13642 StaticSocketDataProvider data_refused; |
13643 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 13643 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
13644 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13644 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
13645 | 13645 |
13646 // Set up alternative service for server. | 13646 // Set up alternative service for server. |
13647 session_deps_.enable_alternative_service_with_different_host = true; | 13647 session_deps_.enable_alternative_service_with_different_host = true; |
13648 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13648 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13649 base::WeakPtr<HttpServerProperties> http_server_properties = | 13649 HttpServerProperties* http_server_properties = |
13650 session->http_server_properties(); | 13650 session->http_server_properties(); |
13651 AlternativeService alternative_service( | 13651 AlternativeService alternative_service( |
13652 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13652 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13653 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13653 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13654 http_server_properties->SetAlternativeService(server, alternative_service, | 13654 http_server_properties->SetAlternativeService(server, alternative_service, |
13655 expiration); | 13655 expiration); |
13656 | 13656 |
13657 std::unique_ptr<HttpTransaction> trans( | 13657 std::unique_ptr<HttpTransaction> trans( |
13658 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13658 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
13659 HttpRequestInfo request; | 13659 HttpRequestInfo request; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13710 MockRead("Content-Length: 7\r\n\r\n"), | 13710 MockRead("Content-Length: 7\r\n\r\n"), |
13711 MockRead("another"), | 13711 MockRead("another"), |
13712 }; | 13712 }; |
13713 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 13713 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
13714 http_writes, arraysize(http_writes)); | 13714 http_writes, arraysize(http_writes)); |
13715 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 13715 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
13716 | 13716 |
13717 // Set up alternative service for server. | 13717 // Set up alternative service for server. |
13718 session_deps_.enable_alternative_service_with_different_host = true; | 13718 session_deps_.enable_alternative_service_with_different_host = true; |
13719 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13719 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13720 base::WeakPtr<HttpServerProperties> http_server_properties = | 13720 HttpServerProperties* http_server_properties = |
13721 session->http_server_properties(); | 13721 session->http_server_properties(); |
13722 AlternativeService alternative_service( | 13722 AlternativeService alternative_service( |
13723 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13723 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13724 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13724 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13725 http_server_properties->SetAlternativeService(server, alternative_service, | 13725 http_server_properties->SetAlternativeService(server, alternative_service, |
13726 expiration); | 13726 expiration); |
13727 | 13727 |
13728 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 13728 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
13729 HttpRequestInfo request1; | 13729 HttpRequestInfo request1; |
13730 request1.method = "GET"; | 13730 request1.method = "GET"; |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13819 // This test documents that an alternate Job should not pool to an already | 13819 // This test documents that an alternate Job should not pool to an already |
13820 // existing HTTP/1.1 connection. In order to test this, a failed connection | 13820 // existing HTTP/1.1 connection. In order to test this, a failed connection |
13821 // to the server is mocked. This way |request2| relies on the alternate Job. | 13821 // to the server is mocked. This way |request2| relies on the alternate Job. |
13822 StaticSocketDataProvider data_refused; | 13822 StaticSocketDataProvider data_refused; |
13823 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 13823 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
13824 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13824 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
13825 | 13825 |
13826 // Set up alternative service for server. | 13826 // Set up alternative service for server. |
13827 session_deps_.enable_alternative_service_with_different_host = false; | 13827 session_deps_.enable_alternative_service_with_different_host = false; |
13828 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13828 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
13829 base::WeakPtr<HttpServerProperties> http_server_properties = | 13829 HttpServerProperties* http_server_properties = |
13830 session->http_server_properties(); | 13830 session->http_server_properties(); |
13831 AlternativeService alternative_service( | 13831 AlternativeService alternative_service( |
13832 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13832 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
13833 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13833 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
13834 http_server_properties->SetAlternativeService(server, alternative_service, | 13834 http_server_properties->SetAlternativeService(server, alternative_service, |
13835 expiration); | 13835 expiration); |
13836 | 13836 |
13837 // First transaction to alternative to open an HTTP/1.1 socket. | 13837 // First transaction to alternative to open an HTTP/1.1 socket. |
13838 std::unique_ptr<HttpTransaction> trans1( | 13838 std::unique_ptr<HttpTransaction> trans1( |
13839 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13839 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
(...skipping 2304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
16144 base::RunLoop().RunUntilIdle(); | 16144 base::RunLoop().RunUntilIdle(); |
16145 | 16145 |
16146 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 16146 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
16147 HttpRequestHeaders headers; | 16147 HttpRequestHeaders headers; |
16148 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 16148 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
16149 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 16149 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
16150 } | 16150 } |
16151 #endif // !defined(OS_IOS) | 16151 #endif // !defined(OS_IOS) |
16152 | 16152 |
16153 } // namespace net | 16153 } // namespace net |
OLD | NEW |