| 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 |