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