| 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 <string> |      9 #include <string> | 
|     10 #include <vector> |     10 #include <vector> | 
| (...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    738                                               arraysize(data_reads)); |    738                                               arraysize(data_reads)); | 
|    739   EXPECT_EQ(OK, out.rv); |    739   EXPECT_EQ(OK, out.rv); | 
|    740   EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); |    740   EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); | 
|    741   EXPECT_EQ("", out.response_data); |    741   EXPECT_EQ("", out.response_data); | 
|    742   int64 reads_size = ReadsSize(data_reads, arraysize(data_reads)); |    742   int64 reads_size = ReadsSize(data_reads, arraysize(data_reads)); | 
|    743   int64 response_size = reads_size - strlen(junk); |    743   int64 response_size = reads_size - strlen(junk); | 
|    744   EXPECT_EQ(response_size, out.totalReceivedBytes); |    744   EXPECT_EQ(response_size, out.totalReceivedBytes); | 
|    745 } |    745 } | 
|    746  |    746  | 
|    747 // A simple request using chunked encoding with some extra data after. |    747 // A simple request using chunked encoding with some extra data after. | 
|    748 // (Like might be seen in a pipelined response.) |  | 
|    749 TEST_P(HttpNetworkTransactionTest, ChunkedEncoding) { |    748 TEST_P(HttpNetworkTransactionTest, ChunkedEncoding) { | 
|    750   std::string final_chunk = "0\r\n\r\n"; |    749   std::string final_chunk = "0\r\n\r\n"; | 
|    751   std::string extra_data = "HTTP/1.1 200 OK\r\n"; |    750   std::string extra_data = "HTTP/1.1 200 OK\r\n"; | 
|    752   std::string last_read = final_chunk + extra_data; |    751   std::string last_read = final_chunk + extra_data; | 
|    753   MockRead data_reads[] = { |    752   MockRead data_reads[] = { | 
|    754     MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), |    753     MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), | 
|    755     MockRead("5\r\nHello\r\n"), |    754     MockRead("5\r\nHello\r\n"), | 
|    756     MockRead("1\r\n"), |    755     MockRead("1\r\n"), | 
|    757     MockRead(" \r\n"), |    756     MockRead(" \r\n"), | 
|    758     MockRead("5\r\nworld\r\n"), |    757     MockRead("5\r\nworld\r\n"), | 
| (...skipping 10419 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  11178   ASSERT_TRUE(response->headers.get() != NULL); |  11177   ASSERT_TRUE(response->headers.get() != NULL); | 
|  11179   EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |  11178   EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 
|  11180   EXPECT_TRUE(response->was_fetched_via_spdy); |  11179   EXPECT_TRUE(response->was_fetched_via_spdy); | 
|  11181   EXPECT_TRUE(response->was_npn_negotiated); |  11180   EXPECT_TRUE(response->was_npn_negotiated); | 
|  11182   ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |  11181   ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 
|  11183   EXPECT_EQ("hello!", response_data); |  11182   EXPECT_EQ("hello!", response_data); | 
|  11184 #endif |  11183 #endif | 
|  11185 } |  11184 } | 
|  11186 #undef MAYBE_UseIPConnectionPoolingWithHostCacheExpiration |  11185 #undef MAYBE_UseIPConnectionPoolingWithHostCacheExpiration | 
|  11187  |  11186  | 
|  11188 TEST_P(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { |  | 
|  11189   MockRead data_reads1[] = { |  | 
|  11190     MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |  | 
|  11191   }; |  | 
|  11192   MockRead data_reads2[] = { |  | 
|  11193     MockRead("HTTP/1.0 200 OK\r\n\r\n"), |  | 
|  11194     MockRead("hello world"), |  | 
|  11195     MockRead(SYNCHRONOUS, OK), |  | 
|  11196   }; |  | 
|  11197   StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); |  | 
|  11198   StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); |  | 
|  11199   StaticSocketDataProvider* data[] = { &data1, &data2 }; |  | 
|  11200  |  | 
|  11201   SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |  | 
|  11202  |  | 
|  11203   EXPECT_EQ(OK, out.rv); |  | 
|  11204   EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |  | 
|  11205   EXPECT_EQ("hello world", out.response_data); |  | 
|  11206 } |  | 
|  11207  |  | 
|  11208 TEST_P(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { |  | 
|  11209   MockWrite data_writes1[] = { |  | 
|  11210     MockWrite(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |  | 
|  11211   }; |  | 
|  11212   MockWrite data_writes2[] = { |  | 
|  11213     MockWrite("GET / HTTP/1.1\r\n" |  | 
|  11214               "Host: www.google.com\r\n" |  | 
|  11215               "Connection: keep-alive\r\n\r\n"), |  | 
|  11216   }; |  | 
|  11217   MockRead data_reads2[] = { |  | 
|  11218     MockRead("HTTP/1.0 200 OK\r\n\r\n"), |  | 
|  11219     MockRead("hello world"), |  | 
|  11220     MockRead(SYNCHRONOUS, OK), |  | 
|  11221   }; |  | 
|  11222   StaticSocketDataProvider data1(NULL, 0, |  | 
|  11223                                  data_writes1, arraysize(data_writes1)); |  | 
|  11224   StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |  | 
|  11225                                  data_writes2, arraysize(data_writes2)); |  | 
|  11226   StaticSocketDataProvider* data[] = { &data1, &data2 }; |  | 
|  11227  |  | 
|  11228   SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |  | 
|  11229  |  | 
|  11230   EXPECT_EQ(OK, out.rv); |  | 
|  11231   EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |  | 
|  11232   EXPECT_EQ("hello world", out.response_data); |  | 
|  11233 } |  | 
|  11234  |  | 
|  11235 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { |  11187 TEST_P(HttpNetworkTransactionTest, DoNotUseSpdySessionForHttp) { | 
|  11236   const std::string https_url = "https://www.google.com/"; |  11188   const std::string https_url = "https://www.google.com/"; | 
|  11237   const std::string http_url = "http://www.google.com:443/"; |  11189   const std::string http_url = "http://www.google.com:443/"; | 
|  11238  |  11190  | 
|  11239   // SPDY GET for HTTPS URL |  11191   // SPDY GET for HTTPS URL | 
|  11240   scoped_ptr<SpdyFrame> req1( |  11192   scoped_ptr<SpdyFrame> req1( | 
|  11241       spdy_util_.ConstructSpdyGet(https_url.c_str(), false, 1, LOWEST)); |  11193       spdy_util_.ConstructSpdyGet(https_url.c_str(), false, 1, LOWEST)); | 
|  11242  |  11194  | 
|  11243   MockWrite writes1[] = { |  11195   MockWrite writes1[] = { | 
|  11244     CreateMockWrite(*req1, 0), |  11196     CreateMockWrite(*req1, 0), | 
| (...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  12336   } |  12288   } | 
|  12337  |  12289  | 
|  12338   virtual void PreconnectStreams(int num_streams, |  12290   virtual void PreconnectStreams(int num_streams, | 
|  12339                                  const HttpRequestInfo& info, |  12291                                  const HttpRequestInfo& info, | 
|  12340                                  RequestPriority priority, |  12292                                  RequestPriority priority, | 
|  12341                                  const SSLConfig& server_ssl_config, |  12293                                  const SSLConfig& server_ssl_config, | 
|  12342                                  const SSLConfig& proxy_ssl_config) OVERRIDE { |  12294                                  const SSLConfig& proxy_ssl_config) OVERRIDE { | 
|  12343     ADD_FAILURE(); |  12295     ADD_FAILURE(); | 
|  12344   } |  12296   } | 
|  12345  |  12297  | 
|  12346   virtual base::Value* PipelineInfoToValue() const OVERRIDE { |  | 
|  12347     ADD_FAILURE(); |  | 
|  12348     return NULL; |  | 
|  12349   } |  | 
|  12350  |  | 
|  12351   virtual const HostMappingRules* GetHostMappingRules() const OVERRIDE { |  12298   virtual const HostMappingRules* GetHostMappingRules() const OVERRIDE { | 
|  12352     ADD_FAILURE(); |  12299     ADD_FAILURE(); | 
|  12353     return NULL; |  12300     return NULL; | 
|  12354   } |  12301   } | 
|  12355  |  12302  | 
|  12356  private: |  12303  private: | 
|  12357   base::WeakPtr<FakeStreamRequest> last_stream_request_; |  12304   base::WeakPtr<FakeStreamRequest> last_stream_request_; | 
|  12358  |  12305  | 
|  12359   DISALLOW_COPY_AND_ASSIGN(FakeStreamFactory); |  12306   DISALLOW_COPY_AND_ASSIGN(FakeStreamFactory); | 
|  12360 }; |  12307 }; | 
| (...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  13136   EXPECT_EQ(ERR_IO_PENDING, rv); |  13083   EXPECT_EQ(ERR_IO_PENDING, rv); | 
|  13137  |  13084  | 
|  13138   rv = callback.WaitForResult(); |  13085   rv = callback.WaitForResult(); | 
|  13139   EXPECT_EQ(ERR_CONNECTION_RESET, rv); |  13086   EXPECT_EQ(ERR_CONNECTION_RESET, rv); | 
|  13140  |  13087  | 
|  13141   const HttpResponseInfo* response = trans->GetResponseInfo(); |  13088   const HttpResponseInfo* response = trans->GetResponseInfo(); | 
|  13142   EXPECT_TRUE(response == NULL); |  13089   EXPECT_TRUE(response == NULL); | 
|  13143 } |  13090 } | 
|  13144  |  13091  | 
|  13145 }  // namespace net |  13092 }  // namespace net | 
| OLD | NEW |