| 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 9053 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9064 std::string url; | 9064 std::string url; |
| 9065 std::string expected_group_name; | 9065 std::string expected_group_name; |
| 9066 bool ssl; | 9066 bool ssl; |
| 9067 }; | 9067 }; |
| 9068 | 9068 |
| 9069 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( | 9069 std::unique_ptr<HttpNetworkSession> SetupSessionForGroupNameTests( |
| 9070 NextProto next_proto, | 9070 NextProto next_proto, |
| 9071 SpdySessionDependencies* session_deps_) { | 9071 SpdySessionDependencies* session_deps_) { |
| 9072 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); | 9072 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps_)); |
| 9073 | 9073 |
| 9074 base::WeakPtr<HttpServerProperties> http_server_properties = | 9074 HttpServerProperties* http_server_properties = |
| 9075 session->http_server_properties(); | 9075 session->http_server_properties(); |
| 9076 AlternativeService alternative_service( | 9076 AlternativeService alternative_service( |
| 9077 AlternateProtocolFromNextProto(next_proto), "", 443); | 9077 AlternateProtocolFromNextProto(next_proto), "", 443); |
| 9078 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 9078 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 9079 http_server_properties->SetAlternativeService( | 9079 http_server_properties->SetAlternativeService( |
| 9080 url::SchemeHostPort("http", "host.with.alternate", 80), | 9080 url::SchemeHostPort("http", "host.with.alternate", 80), |
| 9081 alternative_service, expiration); | 9081 alternative_service, expiration); |
| 9082 | 9082 |
| 9083 return session; | 9083 return session; |
| 9084 } | 9084 } |
| (...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9955 TestCompletionCallback callback; | 9955 TestCompletionCallback callback; |
| 9956 | 9956 |
| 9957 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 9957 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 9958 std::unique_ptr<HttpTransaction> trans( | 9958 std::unique_ptr<HttpTransaction> trans( |
| 9959 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 9959 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 9960 | 9960 |
| 9961 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 9961 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 9962 EXPECT_EQ(ERR_IO_PENDING, rv); | 9962 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 9963 | 9963 |
| 9964 url::SchemeHostPort test_server("http", "www.example.org", 80); | 9964 url::SchemeHostPort test_server("http", "www.example.org", 80); |
| 9965 HttpServerProperties& http_server_properties = | 9965 HttpServerProperties* http_server_properties = |
| 9966 *session->http_server_properties(); | 9966 session->http_server_properties(); |
| 9967 AlternativeServiceVector alternative_service_vector = | 9967 AlternativeServiceVector alternative_service_vector = |
| 9968 http_server_properties.GetAlternativeServices(test_server); | 9968 http_server_properties->GetAlternativeServices(test_server); |
| 9969 EXPECT_TRUE(alternative_service_vector.empty()); | 9969 EXPECT_TRUE(alternative_service_vector.empty()); |
| 9970 | 9970 |
| 9971 EXPECT_EQ(OK, callback.WaitForResult()); | 9971 EXPECT_EQ(OK, callback.WaitForResult()); |
| 9972 | 9972 |
| 9973 const HttpResponseInfo* response = trans->GetResponseInfo(); | 9973 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 9974 ASSERT_TRUE(response); | 9974 ASSERT_TRUE(response); |
| 9975 ASSERT_TRUE(response->headers); | 9975 ASSERT_TRUE(response->headers); |
| 9976 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 9976 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 9977 EXPECT_FALSE(response->was_fetched_via_spdy); | 9977 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 9978 EXPECT_FALSE(response->was_npn_negotiated); | 9978 EXPECT_FALSE(response->was_npn_negotiated); |
| 9979 | 9979 |
| 9980 std::string response_data; | 9980 std::string response_data; |
| 9981 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 9981 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 9982 EXPECT_EQ("hello world", response_data); | 9982 EXPECT_EQ("hello world", response_data); |
| 9983 | 9983 |
| 9984 alternative_service_vector = | 9984 alternative_service_vector = |
| 9985 http_server_properties.GetAlternativeServices(test_server); | 9985 http_server_properties->GetAlternativeServices(test_server); |
| 9986 ASSERT_EQ(1u, alternative_service_vector.size()); | 9986 ASSERT_EQ(1u, alternative_service_vector.size()); |
| 9987 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 9987 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 9988 alternative_service_vector[0].protocol); | 9988 alternative_service_vector[0].protocol); |
| 9989 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); | 9989 EXPECT_EQ("www.example.org", alternative_service_vector[0].host); |
| 9990 EXPECT_EQ(443, alternative_service_vector[0].port); | 9990 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 9991 } | 9991 } |
| 9992 | 9992 |
| 9993 // Regression test for https://crbug.com/615497. | 9993 // Regression test for https://crbug.com/615497. |
| 9994 TEST_P(HttpNetworkTransactionTest, | 9994 TEST_P(HttpNetworkTransactionTest, |
| 9995 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { | 9995 DoNotParseAlternativeServiceHeaderOnInsecureRequest) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 10014 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 10014 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 10015 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10015 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 10016 | 10016 |
| 10017 TestCompletionCallback callback; | 10017 TestCompletionCallback callback; |
| 10018 | 10018 |
| 10019 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10019 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10020 std::unique_ptr<HttpTransaction> trans( | 10020 std::unique_ptr<HttpTransaction> trans( |
| 10021 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10021 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10022 | 10022 |
| 10023 url::SchemeHostPort test_server(request.url); | 10023 url::SchemeHostPort test_server(request.url); |
| 10024 HttpServerProperties& http_server_properties = | 10024 HttpServerProperties* http_server_properties = |
| 10025 *session->http_server_properties(); | 10025 session->http_server_properties(); |
| 10026 AlternativeServiceVector alternative_service_vector = | 10026 AlternativeServiceVector alternative_service_vector = |
| 10027 http_server_properties.GetAlternativeServices(test_server); | 10027 http_server_properties->GetAlternativeServices(test_server); |
| 10028 EXPECT_TRUE(alternative_service_vector.empty()); | 10028 EXPECT_TRUE(alternative_service_vector.empty()); |
| 10029 | 10029 |
| 10030 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10030 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10031 EXPECT_EQ(ERR_IO_PENDING, rv); | 10031 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10032 EXPECT_EQ(OK, callback.WaitForResult()); | 10032 EXPECT_EQ(OK, callback.WaitForResult()); |
| 10033 | 10033 |
| 10034 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10034 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 10035 ASSERT_TRUE(response); | 10035 ASSERT_TRUE(response); |
| 10036 ASSERT_TRUE(response->headers); | 10036 ASSERT_TRUE(response->headers); |
| 10037 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10037 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 10038 EXPECT_FALSE(response->was_fetched_via_spdy); | 10038 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 10039 EXPECT_FALSE(response->was_npn_negotiated); | 10039 EXPECT_FALSE(response->was_npn_negotiated); |
| 10040 | 10040 |
| 10041 std::string response_data; | 10041 std::string response_data; |
| 10042 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10042 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 10043 EXPECT_EQ("hello world", response_data); | 10043 EXPECT_EQ("hello world", response_data); |
| 10044 | 10044 |
| 10045 alternative_service_vector = | 10045 alternative_service_vector = |
| 10046 http_server_properties.GetAlternativeServices(test_server); | 10046 http_server_properties->GetAlternativeServices(test_server); |
| 10047 EXPECT_TRUE(alternative_service_vector.empty()); | 10047 EXPECT_TRUE(alternative_service_vector.empty()); |
| 10048 } | 10048 } |
| 10049 | 10049 |
| 10050 // HTTP/2 Alternative Services should be disabled if alternative service | 10050 // HTTP/2 Alternative Services should be disabled if alternative service |
| 10051 // hostname is different from that of origin. | 10051 // hostname is different from that of origin. |
| 10052 // TODO(bnc): Remove when https://crbug.com/615413 is fixed. | 10052 // TODO(bnc): Remove when https://crbug.com/615413 is fixed. |
| 10053 TEST_P(HttpNetworkTransactionTest, | 10053 TEST_P(HttpNetworkTransactionTest, |
| 10054 DisableHTTP2AlternativeServicesWithDifferentHost) { | 10054 DisableHTTP2AlternativeServicesWithDifferentHost) { |
| 10055 session_deps_.enable_alternative_service_with_different_host = true; | 10055 session_deps_.enable_alternative_service_with_different_host = true; |
| 10056 | 10056 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 10067 MockRead data_reads[] = { | 10067 MockRead data_reads[] = { |
| 10068 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 10068 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
| 10069 MockRead(ASYNC, OK), | 10069 MockRead(ASYNC, OK), |
| 10070 }; | 10070 }; |
| 10071 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, | 10071 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
| 10072 0); | 10072 0); |
| 10073 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10073 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10074 | 10074 |
| 10075 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10075 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10076 | 10076 |
| 10077 base::WeakPtr<HttpServerProperties> http_server_properties = | 10077 HttpServerProperties* http_server_properties = |
| 10078 session->http_server_properties(); | 10078 session->http_server_properties(); |
| 10079 AlternativeService alternative_service( | 10079 AlternativeService alternative_service( |
| 10080 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", | 10080 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", |
| 10081 444); | 10081 444); |
| 10082 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10082 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10083 http_server_properties->SetAlternativeService( | 10083 http_server_properties->SetAlternativeService( |
| 10084 url::SchemeHostPort(request.url), alternative_service, expiration); | 10084 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10085 | 10085 |
| 10086 std::unique_ptr<HttpTransaction> trans( | 10086 std::unique_ptr<HttpTransaction> trans( |
| 10087 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10087 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 10111 MockRead data_reads[] = { | 10111 MockRead data_reads[] = { |
| 10112 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 10112 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
| 10113 MockRead(ASYNC, OK), | 10113 MockRead(ASYNC, OK), |
| 10114 }; | 10114 }; |
| 10115 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, | 10115 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
| 10116 0); | 10116 0); |
| 10117 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10117 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10118 | 10118 |
| 10119 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10119 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10120 | 10120 |
| 10121 base::WeakPtr<HttpServerProperties> http_server_properties = | 10121 HttpServerProperties* http_server_properties = |
| 10122 session->http_server_properties(); | 10122 session->http_server_properties(); |
| 10123 AlternativeService alternative_service( | 10123 AlternativeService alternative_service( |
| 10124 AlternateProtocolFromNextProto(GetProtocol()), "", 444); | 10124 AlternateProtocolFromNextProto(GetProtocol()), "", 444); |
| 10125 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10125 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10126 http_server_properties->SetAlternativeService( | 10126 http_server_properties->SetAlternativeService( |
| 10127 url::SchemeHostPort(request.url), alternative_service, expiration); | 10127 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10128 | 10128 |
| 10129 std::unique_ptr<HttpTransaction> trans( | 10129 std::unique_ptr<HttpTransaction> trans( |
| 10130 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10130 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10131 TestCompletionCallback callback; | 10131 TestCompletionCallback callback; |
| 10132 | 10132 |
| 10133 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10133 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10134 // Alternative service is not used, request fails. | 10134 // Alternative service is not used, request fails. |
| 10135 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); | 10135 EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); |
| 10136 } | 10136 } |
| 10137 | 10137 |
| 10138 TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { | 10138 TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { |
| 10139 session_deps_.enable_alternative_service_with_different_host = false; | 10139 session_deps_.enable_alternative_service_with_different_host = false; |
| 10140 | 10140 |
| 10141 // Set an alternative service for origin. | 10141 // Set an alternative service for origin. |
| 10142 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10142 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10143 HttpServerProperties& http_server_properties = | 10143 HttpServerProperties* http_server_properties = |
| 10144 *session->http_server_properties(); | 10144 session->http_server_properties(); |
| 10145 url::SchemeHostPort test_server("http", "www.example.org", 80); | 10145 url::SchemeHostPort test_server("http", "www.example.org", 80); |
| 10146 AlternativeService alternative_service(QUIC, "", 80); | 10146 AlternativeService alternative_service(QUIC, "", 80); |
| 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(test_server, alternative_service, | 10148 http_server_properties->SetAlternativeService( |
| 10149 expiration); | 10149 test_server, alternative_service, expiration); |
| 10150 AlternativeServiceVector alternative_service_vector = | 10150 AlternativeServiceVector alternative_service_vector = |
| 10151 http_server_properties.GetAlternativeServices(test_server); | 10151 http_server_properties->GetAlternativeServices(test_server); |
| 10152 EXPECT_EQ(1u, alternative_service_vector.size()); | 10152 EXPECT_EQ(1u, alternative_service_vector.size()); |
| 10153 | 10153 |
| 10154 // Send a clear header. | 10154 // Send a clear header. |
| 10155 MockRead data_reads[] = { | 10155 MockRead data_reads[] = { |
| 10156 MockRead("HTTP/1.1 200 OK\r\n"), | 10156 MockRead("HTTP/1.1 200 OK\r\n"), |
| 10157 MockRead("Alt-Svc: clear\r\n"), | 10157 MockRead("Alt-Svc: clear\r\n"), |
| 10158 MockRead("\r\n"), | 10158 MockRead("\r\n"), |
| 10159 MockRead("hello world"), | 10159 MockRead("hello world"), |
| 10160 MockRead(SYNCHRONOUS, OK), | 10160 MockRead(SYNCHRONOUS, OK), |
| 10161 }; | 10161 }; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 10180 ASSERT_TRUE(response->headers); | 10180 ASSERT_TRUE(response->headers); |
| 10181 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10181 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 10182 EXPECT_FALSE(response->was_fetched_via_spdy); | 10182 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 10183 EXPECT_FALSE(response->was_npn_negotiated); | 10183 EXPECT_FALSE(response->was_npn_negotiated); |
| 10184 | 10184 |
| 10185 std::string response_data; | 10185 std::string response_data; |
| 10186 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10186 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 10187 EXPECT_EQ("hello world", response_data); | 10187 EXPECT_EQ("hello world", response_data); |
| 10188 | 10188 |
| 10189 alternative_service_vector = | 10189 alternative_service_vector = |
| 10190 http_server_properties.GetAlternativeServices(test_server); | 10190 http_server_properties->GetAlternativeServices(test_server); |
| 10191 EXPECT_TRUE(alternative_service_vector.empty()); | 10191 EXPECT_TRUE(alternative_service_vector.empty()); |
| 10192 } | 10192 } |
| 10193 | 10193 |
| 10194 TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeader) { | 10194 TEST_P(HttpNetworkTransactionTest, HonorMultipleAlternativeServiceHeader) { |
| 10195 session_deps_.enable_alternative_service_with_different_host = false; | 10195 session_deps_.enable_alternative_service_with_different_host = false; |
| 10196 | 10196 |
| 10197 MockRead data_reads[] = { | 10197 MockRead data_reads[] = { |
| 10198 MockRead("HTTP/1.1 200 OK\r\n"), | 10198 MockRead("HTTP/1.1 200 OK\r\n"), |
| 10199 MockRead("Alt-Svc: "), | 10199 MockRead("Alt-Svc: "), |
| 10200 MockRead(GetAlternateProtocolFromParam()), | 10200 MockRead(GetAlternateProtocolFromParam()), |
| (...skipping 16 matching lines...) Expand all Loading... |
| 10217 TestCompletionCallback callback; | 10217 TestCompletionCallback callback; |
| 10218 | 10218 |
| 10219 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10219 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10220 std::unique_ptr<HttpTransaction> trans( | 10220 std::unique_ptr<HttpTransaction> trans( |
| 10221 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10221 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 10222 | 10222 |
| 10223 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 10223 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 10224 EXPECT_EQ(ERR_IO_PENDING, rv); | 10224 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 10225 | 10225 |
| 10226 url::SchemeHostPort test_server("http", "www.example.org", 80); | 10226 url::SchemeHostPort test_server("http", "www.example.org", 80); |
| 10227 HttpServerProperties& http_server_properties = | 10227 HttpServerProperties* http_server_properties = |
| 10228 *session->http_server_properties(); | 10228 session->http_server_properties(); |
| 10229 AlternativeServiceVector alternative_service_vector = | 10229 AlternativeServiceVector alternative_service_vector = |
| 10230 http_server_properties.GetAlternativeServices(test_server); | 10230 http_server_properties->GetAlternativeServices(test_server); |
| 10231 EXPECT_TRUE(alternative_service_vector.empty()); | 10231 EXPECT_TRUE(alternative_service_vector.empty()); |
| 10232 | 10232 |
| 10233 EXPECT_EQ(OK, callback.WaitForResult()); | 10233 EXPECT_EQ(OK, callback.WaitForResult()); |
| 10234 | 10234 |
| 10235 const HttpResponseInfo* response = trans->GetResponseInfo(); | 10235 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 10236 ASSERT_TRUE(response); | 10236 ASSERT_TRUE(response); |
| 10237 ASSERT_TRUE(response->headers); | 10237 ASSERT_TRUE(response->headers); |
| 10238 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 10238 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 10239 EXPECT_FALSE(response->was_fetched_via_spdy); | 10239 EXPECT_FALSE(response->was_fetched_via_spdy); |
| 10240 EXPECT_FALSE(response->was_npn_negotiated); | 10240 EXPECT_FALSE(response->was_npn_negotiated); |
| 10241 | 10241 |
| 10242 std::string response_data; | 10242 std::string response_data; |
| 10243 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); | 10243 ASSERT_EQ(OK, ReadTransaction(trans.get(), &response_data)); |
| 10244 EXPECT_EQ("hello world", response_data); | 10244 EXPECT_EQ("hello world", response_data); |
| 10245 | 10245 |
| 10246 alternative_service_vector = | 10246 alternative_service_vector = |
| 10247 http_server_properties.GetAlternativeServices(test_server); | 10247 http_server_properties->GetAlternativeServices(test_server); |
| 10248 ASSERT_EQ(2u, alternative_service_vector.size()); | 10248 ASSERT_EQ(2u, alternative_service_vector.size()); |
| 10249 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 10249 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 10250 alternative_service_vector[0].protocol); | 10250 alternative_service_vector[0].protocol); |
| 10251 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); | 10251 EXPECT_EQ("www.example.com", alternative_service_vector[0].host); |
| 10252 EXPECT_EQ(443, alternative_service_vector[0].port); | 10252 EXPECT_EQ(443, alternative_service_vector[0].port); |
| 10253 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), | 10253 EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| 10254 alternative_service_vector[1].protocol); | 10254 alternative_service_vector[1].protocol); |
| 10255 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); | 10255 EXPECT_EQ("www.example.org", alternative_service_vector[1].host); |
| 10256 EXPECT_EQ(1234, alternative_service_vector[1].port); | 10256 EXPECT_EQ(1234, alternative_service_vector[1].port); |
| 10257 } | 10257 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 10274 MockRead data_reads[] = { | 10274 MockRead data_reads[] = { |
| 10275 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), | 10275 MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
| 10276 MockRead(ASYNC, OK), | 10276 MockRead(ASYNC, OK), |
| 10277 }; | 10277 }; |
| 10278 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), | 10278 StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), |
| 10279 nullptr, 0); | 10279 nullptr, 0); |
| 10280 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10280 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10281 | 10281 |
| 10282 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); | 10282 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 10283 | 10283 |
| 10284 base::WeakPtr<HttpServerProperties> http_server_properties = | 10284 HttpServerProperties* http_server_properties = |
| 10285 session->http_server_properties(); | 10285 session->http_server_properties(); |
| 10286 AlternativeService alternative_service( | 10286 AlternativeService alternative_service( |
| 10287 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", | 10287 AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", |
| 10288 80); | 10288 80); |
| 10289 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10289 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10290 http_server_properties->SetAlternativeService( | 10290 http_server_properties->SetAlternativeService( |
| 10291 url::SchemeHostPort(request.url), alternative_service, expiration); | 10291 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10292 | 10292 |
| 10293 std::unique_ptr<HttpTransaction> trans( | 10293 std::unique_ptr<HttpTransaction> trans( |
| 10294 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10294 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10329 http_writes, arraysize(http_writes)); | 10329 http_writes, arraysize(http_writes)); |
| 10330 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 10330 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 10331 | 10331 |
| 10332 StaticSocketDataProvider data_refused; | 10332 StaticSocketDataProvider data_refused; |
| 10333 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10333 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 10334 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10334 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 10335 | 10335 |
| 10336 // Set up a QUIC alternative service for server. | 10336 // Set up a QUIC alternative service for server. |
| 10337 session_deps_.enable_alternative_service_with_different_host = false; | 10337 session_deps_.enable_alternative_service_with_different_host = false; |
| 10338 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10338 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10339 base::WeakPtr<HttpServerProperties> http_server_properties = | 10339 HttpServerProperties* http_server_properties = |
| 10340 session->http_server_properties(); | 10340 session->http_server_properties(); |
| 10341 AlternativeService alternative_service(QUIC, alternative); | 10341 AlternativeService alternative_service(QUIC, alternative); |
| 10342 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10342 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10343 http_server_properties->SetAlternativeService(server, alternative_service, | 10343 http_server_properties->SetAlternativeService(server, alternative_service, |
| 10344 expiration); | 10344 expiration); |
| 10345 // Mark the QUIC alternative service as broken. | 10345 // Mark the QUIC alternative service as broken. |
| 10346 http_server_properties->MarkAlternativeServiceBroken(alternative_service); | 10346 http_server_properties->MarkAlternativeServiceBroken(alternative_service); |
| 10347 | 10347 |
| 10348 std::unique_ptr<HttpTransaction> trans( | 10348 std::unique_ptr<HttpTransaction> trans( |
| 10349 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 10349 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10389 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 10389 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
| 10390 http_writes, arraysize(http_writes)); | 10390 http_writes, arraysize(http_writes)); |
| 10391 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 10391 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 10392 | 10392 |
| 10393 StaticSocketDataProvider data_refused; | 10393 StaticSocketDataProvider data_refused; |
| 10394 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 10394 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 10395 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 10395 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 10396 | 10396 |
| 10397 session_deps_.enable_alternative_service_with_different_host = true; | 10397 session_deps_.enable_alternative_service_with_different_host = true; |
| 10398 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10398 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10399 base::WeakPtr<HttpServerProperties> http_server_properties = | 10399 HttpServerProperties* http_server_properties = |
| 10400 session->http_server_properties(); | 10400 session->http_server_properties(); |
| 10401 | 10401 |
| 10402 // Set up two QUIC alternative services for server. | 10402 // Set up two QUIC alternative services for server. |
| 10403 AlternativeServiceInfoVector alternative_service_info_vector; | 10403 AlternativeServiceInfoVector alternative_service_info_vector; |
| 10404 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10404 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10405 | 10405 |
| 10406 AlternativeService alternative_service1(QUIC, alternative1); | 10406 AlternativeService alternative_service1(QUIC, alternative1); |
| 10407 AlternativeServiceInfo alternative_service_info1(alternative_service1, | 10407 AlternativeServiceInfo alternative_service_info1(alternative_service1, |
| 10408 expiration); | 10408 expiration); |
| 10409 alternative_service_info_vector.push_back(alternative_service_info1); | 10409 alternative_service_info_vector.push_back(alternative_service_info1); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10454 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10454 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 10455 MockRead("hello world"), | 10455 MockRead("hello world"), |
| 10456 MockRead(ASYNC, OK), | 10456 MockRead(ASYNC, OK), |
| 10457 }; | 10457 }; |
| 10458 StaticSocketDataProvider second_data( | 10458 StaticSocketDataProvider second_data( |
| 10459 data_reads, arraysize(data_reads), NULL, 0); | 10459 data_reads, arraysize(data_reads), NULL, 0); |
| 10460 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10460 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10461 | 10461 |
| 10462 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10462 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10463 | 10463 |
| 10464 base::WeakPtr<HttpServerProperties> http_server_properties = | 10464 HttpServerProperties* http_server_properties = |
| 10465 session->http_server_properties(); | 10465 session->http_server_properties(); |
| 10466 const url::SchemeHostPort server(request.url); | 10466 const url::SchemeHostPort server(request.url); |
| 10467 // Port must be < 1024, or the header will be ignored (since initial port was | 10467 // Port must be < 1024, or the header will be ignored (since initial port was |
| 10468 // port 80 (another restricted port). | 10468 // port 80 (another restricted port). |
| 10469 const AlternativeService alternative_service( | 10469 const AlternativeService alternative_service( |
| 10470 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10470 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10471 666); // Port is ignored by MockConnect anyway. | 10471 666); // Port is ignored by MockConnect anyway. |
| 10472 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10472 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10473 http_server_properties->SetAlternativeService(server, alternative_service, | 10473 http_server_properties->SetAlternativeService(server, alternative_service, |
| 10474 expiration); | 10474 expiration); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10520 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10520 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 10521 MockRead("hello world"), | 10521 MockRead("hello world"), |
| 10522 MockRead(ASYNC, OK), | 10522 MockRead(ASYNC, OK), |
| 10523 }; | 10523 }; |
| 10524 StaticSocketDataProvider second_data( | 10524 StaticSocketDataProvider second_data( |
| 10525 data_reads, arraysize(data_reads), NULL, 0); | 10525 data_reads, arraysize(data_reads), NULL, 0); |
| 10526 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10526 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10527 | 10527 |
| 10528 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10528 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10529 | 10529 |
| 10530 base::WeakPtr<HttpServerProperties> http_server_properties = | 10530 HttpServerProperties* http_server_properties = |
| 10531 session->http_server_properties(); | 10531 session->http_server_properties(); |
| 10532 const int kUnrestrictedAlternatePort = 1024; | 10532 const int kUnrestrictedAlternatePort = 1024; |
| 10533 AlternativeService alternative_service( | 10533 AlternativeService alternative_service( |
| 10534 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10534 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10535 kUnrestrictedAlternatePort); | 10535 kUnrestrictedAlternatePort); |
| 10536 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10536 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10537 http_server_properties->SetAlternativeService( | 10537 http_server_properties->SetAlternativeService( |
| 10538 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10538 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10539 expiration); | 10539 expiration); |
| 10540 | 10540 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10572 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10572 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 10573 MockRead("hello world"), | 10573 MockRead("hello world"), |
| 10574 MockRead(ASYNC, OK), | 10574 MockRead(ASYNC, OK), |
| 10575 }; | 10575 }; |
| 10576 StaticSocketDataProvider second_data( | 10576 StaticSocketDataProvider second_data( |
| 10577 data_reads, arraysize(data_reads), NULL, 0); | 10577 data_reads, arraysize(data_reads), NULL, 0); |
| 10578 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10578 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10579 | 10579 |
| 10580 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10580 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10581 | 10581 |
| 10582 base::WeakPtr<HttpServerProperties> http_server_properties = | 10582 HttpServerProperties* http_server_properties = |
| 10583 session->http_server_properties(); | 10583 session->http_server_properties(); |
| 10584 const int kUnrestrictedAlternatePort = 1024; | 10584 const int kUnrestrictedAlternatePort = 1024; |
| 10585 AlternativeService alternative_service( | 10585 AlternativeService alternative_service( |
| 10586 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10586 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10587 kUnrestrictedAlternatePort); | 10587 kUnrestrictedAlternatePort); |
| 10588 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10588 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10589 http_server_properties->SetAlternativeService( | 10589 http_server_properties->SetAlternativeService( |
| 10590 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10590 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10591 expiration); | 10591 expiration); |
| 10592 | 10592 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 10623 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10623 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 10624 MockRead("hello world"), | 10624 MockRead("hello world"), |
| 10625 MockRead(ASYNC, OK), | 10625 MockRead(ASYNC, OK), |
| 10626 }; | 10626 }; |
| 10627 StaticSocketDataProvider second_data( | 10627 StaticSocketDataProvider second_data( |
| 10628 data_reads, arraysize(data_reads), NULL, 0); | 10628 data_reads, arraysize(data_reads), NULL, 0); |
| 10629 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10629 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10630 | 10630 |
| 10631 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10631 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10632 | 10632 |
| 10633 base::WeakPtr<HttpServerProperties> http_server_properties = | 10633 HttpServerProperties* http_server_properties = |
| 10634 session->http_server_properties(); | 10634 session->http_server_properties(); |
| 10635 const int kRestrictedAlternatePort = 80; | 10635 const int kRestrictedAlternatePort = 80; |
| 10636 AlternativeService alternative_service( | 10636 AlternativeService alternative_service( |
| 10637 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10637 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10638 kRestrictedAlternatePort); | 10638 kRestrictedAlternatePort); |
| 10639 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10639 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10640 http_server_properties->SetAlternativeService( | 10640 http_server_properties->SetAlternativeService( |
| 10641 url::SchemeHostPort(restricted_port_request.url), alternative_service, | 10641 url::SchemeHostPort(restricted_port_request.url), alternative_service, |
| 10642 expiration); | 10642 expiration); |
| 10643 | 10643 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10675 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10675 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 10676 MockRead("hello world"), | 10676 MockRead("hello world"), |
| 10677 MockRead(ASYNC, OK), | 10677 MockRead(ASYNC, OK), |
| 10678 }; | 10678 }; |
| 10679 StaticSocketDataProvider second_data( | 10679 StaticSocketDataProvider second_data( |
| 10680 data_reads, arraysize(data_reads), NULL, 0); | 10680 data_reads, arraysize(data_reads), NULL, 0); |
| 10681 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10681 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10682 | 10682 |
| 10683 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10683 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10684 | 10684 |
| 10685 base::WeakPtr<HttpServerProperties> http_server_properties = | 10685 HttpServerProperties* http_server_properties = |
| 10686 session->http_server_properties(); | 10686 session->http_server_properties(); |
| 10687 const int kRestrictedAlternatePort = 80; | 10687 const int kRestrictedAlternatePort = 80; |
| 10688 AlternativeService alternative_service( | 10688 AlternativeService alternative_service( |
| 10689 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10689 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10690 kRestrictedAlternatePort); | 10690 kRestrictedAlternatePort); |
| 10691 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10691 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10692 http_server_properties->SetAlternativeService( | 10692 http_server_properties->SetAlternativeService( |
| 10693 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10693 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10694 expiration); | 10694 expiration); |
| 10695 | 10695 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 10726 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10726 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 10727 MockRead("hello world"), | 10727 MockRead("hello world"), |
| 10728 MockRead(ASYNC, OK), | 10728 MockRead(ASYNC, OK), |
| 10729 }; | 10729 }; |
| 10730 StaticSocketDataProvider second_data( | 10730 StaticSocketDataProvider second_data( |
| 10731 data_reads, arraysize(data_reads), NULL, 0); | 10731 data_reads, arraysize(data_reads), NULL, 0); |
| 10732 session_deps_.socket_factory->AddSocketDataProvider(&second_data); | 10732 session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| 10733 | 10733 |
| 10734 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10734 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10735 | 10735 |
| 10736 base::WeakPtr<HttpServerProperties> http_server_properties = | 10736 HttpServerProperties* http_server_properties = |
| 10737 session->http_server_properties(); | 10737 session->http_server_properties(); |
| 10738 const int kUnrestrictedAlternatePort = 1025; | 10738 const int kUnrestrictedAlternatePort = 1025; |
| 10739 AlternativeService alternative_service( | 10739 AlternativeService alternative_service( |
| 10740 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10740 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10741 kUnrestrictedAlternatePort); | 10741 kUnrestrictedAlternatePort); |
| 10742 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10742 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10743 http_server_properties->SetAlternativeService( | 10743 http_server_properties->SetAlternativeService( |
| 10744 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, | 10744 url::SchemeHostPort(unrestricted_port_request.url), alternative_service, |
| 10745 expiration); | 10745 expiration); |
| 10746 | 10746 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 10772 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 10772 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 10773 MockRead("hello world"), | 10773 MockRead("hello world"), |
| 10774 MockRead(ASYNC, OK), | 10774 MockRead(ASYNC, OK), |
| 10775 }; | 10775 }; |
| 10776 StaticSocketDataProvider data( | 10776 StaticSocketDataProvider data( |
| 10777 data_reads, arraysize(data_reads), NULL, 0); | 10777 data_reads, arraysize(data_reads), NULL, 0); |
| 10778 session_deps_.socket_factory->AddSocketDataProvider(&data); | 10778 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 10779 | 10779 |
| 10780 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 10780 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 10781 | 10781 |
| 10782 base::WeakPtr<HttpServerProperties> http_server_properties = | 10782 HttpServerProperties* http_server_properties = |
| 10783 session->http_server_properties(); | 10783 session->http_server_properties(); |
| 10784 const int kUnsafePort = 7; | 10784 const int kUnsafePort = 7; |
| 10785 AlternativeService alternative_service( | 10785 AlternativeService alternative_service( |
| 10786 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", | 10786 AlternateProtocolFromNextProto(GetProtocol()), "www.example.org", |
| 10787 kUnsafePort); | 10787 kUnsafePort); |
| 10788 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 10788 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 10789 http_server_properties->SetAlternativeService( | 10789 http_server_properties->SetAlternativeService( |
| 10790 url::SchemeHostPort(request.url), alternative_service, expiration); | 10790 url::SchemeHostPort(request.url), alternative_service, expiration); |
| 10791 | 10791 |
| 10792 std::unique_ptr<HttpTransaction> trans( | 10792 std::unique_ptr<HttpTransaction> trans( |
| (...skipping 2711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13504 session_deps_.socket_factory->AddSocketDataProvider(&data); | 13504 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 13505 | 13505 |
| 13506 // Connection to the server fails. | 13506 // Connection to the server fails. |
| 13507 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 13507 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 13508 StaticSocketDataProvider data_refused; | 13508 StaticSocketDataProvider data_refused; |
| 13509 data_refused.set_connect_data(mock_connect); | 13509 data_refused.set_connect_data(mock_connect); |
| 13510 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13510 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 13511 | 13511 |
| 13512 session_deps_.enable_alternative_service_with_different_host = true; | 13512 session_deps_.enable_alternative_service_with_different_host = true; |
| 13513 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13513 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13514 base::WeakPtr<HttpServerProperties> http_server_properties = | 13514 HttpServerProperties* http_server_properties = |
| 13515 session->http_server_properties(); | 13515 session->http_server_properties(); |
| 13516 AlternativeService alternative_service( | 13516 AlternativeService alternative_service( |
| 13517 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13517 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13518 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13518 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13519 http_server_properties->SetAlternativeService(server, alternative_service, | 13519 http_server_properties->SetAlternativeService(server, alternative_service, |
| 13520 expiration); | 13520 expiration); |
| 13521 | 13521 |
| 13522 // First request to alternative. | 13522 // First request to alternative. |
| 13523 if (pooling) { | 13523 if (pooling) { |
| 13524 std::unique_ptr<HttpTransaction> trans0( | 13524 std::unique_ptr<HttpTransaction> trans0( |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13609 // This test documents that an alternate Job should not be used if HTTP/1.1 is | 13609 // This test documents that an alternate Job should not be used if HTTP/1.1 is |
| 13610 // negotiated. In order to test this, a failed connection to the server is | 13610 // negotiated. In order to test this, a failed connection to the server is |
| 13611 // mocked. This way the request relies on the alternate Job. | 13611 // mocked. This way the request relies on the alternate Job. |
| 13612 StaticSocketDataProvider data_refused; | 13612 StaticSocketDataProvider data_refused; |
| 13613 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 13613 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 13614 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13614 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 13615 | 13615 |
| 13616 // Set up alternative service for server. | 13616 // Set up alternative service for server. |
| 13617 session_deps_.enable_alternative_service_with_different_host = true; | 13617 session_deps_.enable_alternative_service_with_different_host = true; |
| 13618 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13618 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13619 base::WeakPtr<HttpServerProperties> http_server_properties = | 13619 HttpServerProperties* http_server_properties = |
| 13620 session->http_server_properties(); | 13620 session->http_server_properties(); |
| 13621 AlternativeService alternative_service( | 13621 AlternativeService alternative_service( |
| 13622 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13622 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13623 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13623 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13624 http_server_properties->SetAlternativeService(server, alternative_service, | 13624 http_server_properties->SetAlternativeService(server, alternative_service, |
| 13625 expiration); | 13625 expiration); |
| 13626 | 13626 |
| 13627 std::unique_ptr<HttpTransaction> trans( | 13627 std::unique_ptr<HttpTransaction> trans( |
| 13628 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13628 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 13629 HttpRequestInfo request; | 13629 HttpRequestInfo request; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13680 MockRead("Content-Length: 7\r\n\r\n"), | 13680 MockRead("Content-Length: 7\r\n\r\n"), |
| 13681 MockRead("another"), | 13681 MockRead("another"), |
| 13682 }; | 13682 }; |
| 13683 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), | 13683 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), |
| 13684 http_writes, arraysize(http_writes)); | 13684 http_writes, arraysize(http_writes)); |
| 13685 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 13685 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 13686 | 13686 |
| 13687 // Set up alternative service for server. | 13687 // Set up alternative service for server. |
| 13688 session_deps_.enable_alternative_service_with_different_host = true; | 13688 session_deps_.enable_alternative_service_with_different_host = true; |
| 13689 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13689 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13690 base::WeakPtr<HttpServerProperties> http_server_properties = | 13690 HttpServerProperties* http_server_properties = |
| 13691 session->http_server_properties(); | 13691 session->http_server_properties(); |
| 13692 AlternativeService alternative_service( | 13692 AlternativeService alternative_service( |
| 13693 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13693 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13694 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13694 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13695 http_server_properties->SetAlternativeService(server, alternative_service, | 13695 http_server_properties->SetAlternativeService(server, alternative_service, |
| 13696 expiration); | 13696 expiration); |
| 13697 | 13697 |
| 13698 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); | 13698 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| 13699 HttpRequestInfo request1; | 13699 HttpRequestInfo request1; |
| 13700 request1.method = "GET"; | 13700 request1.method = "GET"; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13789 // This test documents that an alternate Job should not pool to an already | 13789 // This test documents that an alternate Job should not pool to an already |
| 13790 // existing HTTP/1.1 connection. In order to test this, a failed connection | 13790 // existing HTTP/1.1 connection. In order to test this, a failed connection |
| 13791 // to the server is mocked. This way |request2| relies on the alternate Job. | 13791 // to the server is mocked. This way |request2| relies on the alternate Job. |
| 13792 StaticSocketDataProvider data_refused; | 13792 StaticSocketDataProvider data_refused; |
| 13793 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); | 13793 data_refused.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_REFUSED)); |
| 13794 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); | 13794 session_deps_.socket_factory->AddSocketDataProvider(&data_refused); |
| 13795 | 13795 |
| 13796 // Set up alternative service for server. | 13796 // Set up alternative service for server. |
| 13797 session_deps_.enable_alternative_service_with_different_host = false; | 13797 session_deps_.enable_alternative_service_with_different_host = false; |
| 13798 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); | 13798 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| 13799 base::WeakPtr<HttpServerProperties> http_server_properties = | 13799 HttpServerProperties* http_server_properties = |
| 13800 session->http_server_properties(); | 13800 session->http_server_properties(); |
| 13801 AlternativeService alternative_service( | 13801 AlternativeService alternative_service( |
| 13802 AlternateProtocolFromNextProto(GetProtocol()), alternative); | 13802 AlternateProtocolFromNextProto(GetProtocol()), alternative); |
| 13803 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); | 13803 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| 13804 http_server_properties->SetAlternativeService(server, alternative_service, | 13804 http_server_properties->SetAlternativeService(server, alternative_service, |
| 13805 expiration); | 13805 expiration); |
| 13806 | 13806 |
| 13807 // First transaction to alternative to open an HTTP/1.1 socket. | 13807 // First transaction to alternative to open an HTTP/1.1 socket. |
| 13808 std::unique_ptr<HttpTransaction> trans1( | 13808 std::unique_ptr<HttpTransaction> trans1( |
| 13809 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); | 13809 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| (...skipping 2304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16114 base::MessageLoop::current()->RunUntilIdle(); | 16114 base::MessageLoop::current()->RunUntilIdle(); |
| 16115 | 16115 |
| 16116 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 16116 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
| 16117 HttpRequestHeaders headers; | 16117 HttpRequestHeaders headers; |
| 16118 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 16118 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
| 16119 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 16119 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
| 16120 } | 16120 } |
| 16121 #endif // !defined(OS_IOS) | 16121 #endif // !defined(OS_IOS) |
| 16122 | 16122 |
| 16123 } // namespace net | 16123 } // namespace net |
| OLD | NEW |