OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <cmath> | 5 #include <cmath> |
6 #include <memory> | 6 #include <memory> |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 2087 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2098 base::Bind(&SpdyNetworkTransactionTest::DeleteSessionCallback, | 2098 base::Bind(&SpdyNetworkTransactionTest::DeleteSessionCallback, |
2099 base::Unretained(&helper))); | 2099 base::Unretained(&helper))); |
2100 ASSERT_THAT(rv, IsError(ERR_IO_PENDING)); | 2100 ASSERT_THAT(rv, IsError(ERR_IO_PENDING)); |
2101 data.Resume(); | 2101 data.Resume(); |
2102 | 2102 |
2103 // Finish running rest of tasks. | 2103 // Finish running rest of tasks. |
2104 base::RunLoop().RunUntilIdle(); | 2104 base::RunLoop().RunUntilIdle(); |
2105 helper.VerifyDataConsumed(); | 2105 helper.VerifyDataConsumed(); |
2106 } | 2106 } |
2107 | 2107 |
| 2108 TEST_F(SpdyNetworkTransactionTest, TestRawHeaderSizeSuccessfullRequest) { |
| 2109 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 2110 headers["user-agent"] = ""; |
| 2111 headers["accept-encoding"] = "gzip, deflate"; |
| 2112 |
| 2113 SpdySerializedFrame req( |
| 2114 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true)); |
| 2115 MockWrite writes[] = { |
| 2116 CreateMockWrite(req, 0), |
| 2117 }; |
| 2118 |
| 2119 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 2120 |
| 2121 SpdySerializedFrame response_body_frame( |
| 2122 spdy_util_.ConstructSpdyDataFrame(1, "should not include", 18, true)); |
| 2123 |
| 2124 MockRead response_headers(CreateMockRead(resp, 1)); |
| 2125 MockRead reads[] = { |
| 2126 response_headers, CreateMockRead(response_body_frame, 2), |
| 2127 MockRead(ASYNC, 0, 0, 3) // EOF |
| 2128 }; |
| 2129 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2130 |
| 2131 TestDelegate delegate; |
| 2132 SpdyURLRequestContext spdy_url_request_context; |
| 2133 TestNetworkDelegate network_delegate; |
| 2134 spdy_url_request_context.set_network_delegate(&network_delegate); |
| 2135 SSLSocketDataProvider ssl_data(ASYNC, OK); |
| 2136 ssl_data.next_proto = kProtoHTTP2; |
| 2137 |
| 2138 std::unique_ptr<URLRequest> request(spdy_url_request_context.CreateRequest( |
| 2139 GURL(kDefaultUrl), DEFAULT_PRIORITY, &delegate)); |
| 2140 spdy_url_request_context.socket_factory().AddSSLSocketDataProvider(&ssl_data); |
| 2141 spdy_url_request_context.socket_factory().AddSocketDataProvider(&data); |
| 2142 |
| 2143 request->Start(); |
| 2144 base::RunLoop().Run(); |
| 2145 |
| 2146 EXPECT_LT(0, request->GetTotalSentBytes()); |
| 2147 EXPECT_LT(0, request->GetTotalReceivedBytes()); |
| 2148 EXPECT_EQ(network_delegate.total_network_bytes_sent(), |
| 2149 request->GetTotalSentBytes()); |
| 2150 EXPECT_EQ(network_delegate.total_network_bytes_received(), |
| 2151 request->GetTotalReceivedBytes()); |
| 2152 EXPECT_EQ(response_headers.data_len, request->raw_header_size()); |
| 2153 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 2154 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 2155 } |
| 2156 |
| 2157 TEST_F(SpdyNetworkTransactionTest, |
| 2158 TestRawHeaderSizeSuccessfullPushHeadersFirst) { |
| 2159 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 2160 headers["user-agent"] = ""; |
| 2161 headers["accept-encoding"] = "gzip, deflate"; |
| 2162 |
| 2163 SpdySerializedFrame req( |
| 2164 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true)); |
| 2165 MockWrite writes[] = { |
| 2166 CreateMockWrite(req, 0), |
| 2167 }; |
| 2168 |
| 2169 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 2170 SpdySerializedFrame response_body_frame( |
| 2171 spdy_util_.ConstructSpdyDataFrame(1, "should not include", 18, true)); |
| 2172 |
| 2173 SpdyHeaderBlock push_headers; |
| 2174 spdy_util_.AddUrlToHeaderBlock(std::string(kDefaultUrl) + "b.dat", |
| 2175 &push_headers); |
| 2176 |
| 2177 SpdySerializedFrame push_init_frame( |
| 2178 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 2, 1)); |
| 2179 |
| 2180 SpdySerializedFrame push_headers_frame( |
| 2181 spdy_util_.ConstructSpdyPushHeaders(2, nullptr, 0)); |
| 2182 |
| 2183 SpdySerializedFrame push_body_frame(spdy_util_.ConstructSpdyDataFrame( |
| 2184 2, "should not include either", 25, false)); |
| 2185 |
| 2186 MockRead push_init_read(CreateMockRead(push_init_frame, 1)); |
| 2187 MockRead response_headers(CreateMockRead(resp, 4)); |
| 2188 // raw_header_size() will contain the size of the push promise frame |
| 2189 // initialization. |
| 2190 int expected_response_headers_size = |
| 2191 response_headers.data_len + push_init_read.data_len; |
| 2192 |
| 2193 MockRead reads[] = { |
| 2194 push_init_read, |
| 2195 CreateMockRead(push_headers_frame, 2), |
| 2196 CreateMockRead(push_body_frame, 3), |
| 2197 response_headers, |
| 2198 CreateMockRead(response_body_frame, 5), |
| 2199 MockRead(ASYNC, 0, 6) // EOF |
| 2200 }; |
| 2201 |
| 2202 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2203 |
| 2204 TestDelegate delegate; |
| 2205 SpdyURLRequestContext spdy_url_request_context; |
| 2206 TestNetworkDelegate network_delegate; |
| 2207 spdy_url_request_context.set_network_delegate(&network_delegate); |
| 2208 SSLSocketDataProvider ssl_data(ASYNC, OK); |
| 2209 ssl_data.next_proto = kProtoHTTP2; |
| 2210 |
| 2211 std::unique_ptr<URLRequest> request(spdy_url_request_context.CreateRequest( |
| 2212 GURL(kDefaultUrl), DEFAULT_PRIORITY, &delegate)); |
| 2213 spdy_url_request_context.socket_factory().AddSSLSocketDataProvider(&ssl_data); |
| 2214 spdy_url_request_context.socket_factory().AddSocketDataProvider(&data); |
| 2215 |
| 2216 request->Start(); |
| 2217 base::RunLoop().Run(); |
| 2218 |
| 2219 EXPECT_LT(0, request->GetTotalSentBytes()); |
| 2220 EXPECT_LT(0, request->GetTotalReceivedBytes()); |
| 2221 EXPECT_EQ(network_delegate.total_network_bytes_sent(), |
| 2222 request->GetTotalSentBytes()); |
| 2223 EXPECT_EQ(network_delegate.total_network_bytes_received(), |
| 2224 request->GetTotalReceivedBytes()); |
| 2225 EXPECT_EQ(expected_response_headers_size, request->raw_header_size()); |
| 2226 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 2227 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 2228 } |
| 2229 |
2108 // Send a spdy request to www.example.org that gets redirected to www.foo.com. | 2230 // Send a spdy request to www.example.org that gets redirected to www.foo.com. |
2109 TEST_F(SpdyNetworkTransactionTest, DISABLED_RedirectGetRequest) { | 2231 TEST_F(SpdyNetworkTransactionTest, DISABLED_RedirectGetRequest) { |
2110 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 2232 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
2111 headers["user-agent"] = ""; | 2233 headers["user-agent"] = ""; |
2112 headers["accept-encoding"] = "gzip, deflate"; | 2234 headers["accept-encoding"] = "gzip, deflate"; |
2113 | 2235 |
2114 // Setup writes/reads to www.example.org | 2236 // Setup writes/reads to www.example.org |
2115 SpdySerializedFrame req( | 2237 SpdySerializedFrame req( |
2116 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true)); | 2238 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true)); |
2117 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReplyRedirect(1)); | 2239 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReplyRedirect(1)); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2158 d.set_quit_on_redirect(true); | 2280 d.set_quit_on_redirect(true); |
2159 r->Start(); | 2281 r->Start(); |
2160 base::RunLoop().Run(); | 2282 base::RunLoop().Run(); |
2161 | 2283 |
2162 EXPECT_EQ(1, d.received_redirect_count()); | 2284 EXPECT_EQ(1, d.received_redirect_count()); |
2163 | 2285 |
2164 r->FollowDeferredRedirect(); | 2286 r->FollowDeferredRedirect(); |
2165 base::RunLoop().Run(); | 2287 base::RunLoop().Run(); |
2166 EXPECT_EQ(1, d.response_started_count()); | 2288 EXPECT_EQ(1, d.response_started_count()); |
2167 EXPECT_FALSE(d.received_data_before_response()); | 2289 EXPECT_FALSE(d.received_data_before_response()); |
2168 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 2290 EXPECT_EQ(OK, r->status().error()); |
2169 std::string contents("hello!"); | 2291 std::string contents("hello!"); |
2170 EXPECT_EQ(contents, d.data_received()); | 2292 EXPECT_EQ(contents, d.data_received()); |
2171 } | 2293 } |
2172 EXPECT_TRUE(data.AllReadDataConsumed()); | 2294 EXPECT_TRUE(data.AllReadDataConsumed()); |
2173 EXPECT_TRUE(data.AllWriteDataConsumed()); | 2295 EXPECT_TRUE(data.AllWriteDataConsumed()); |
2174 EXPECT_TRUE(data2.AllReadDataConsumed()); | 2296 EXPECT_TRUE(data2.AllReadDataConsumed()); |
2175 EXPECT_TRUE(data2.AllWriteDataConsumed()); | 2297 EXPECT_TRUE(data2.AllWriteDataConsumed()); |
2176 } | 2298 } |
2177 | 2299 |
2178 // Send a spdy request to www.example.org. Get a pushed stream that redirects to | 2300 // Send a spdy request to www.example.org. Get a pushed stream that redirects to |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2244 | 2366 |
2245 d2.set_quit_on_redirect(true); | 2367 d2.set_quit_on_redirect(true); |
2246 r2->Start(); | 2368 r2->Start(); |
2247 base::RunLoop().Run(); | 2369 base::RunLoop().Run(); |
2248 EXPECT_EQ(1, d2.received_redirect_count()); | 2370 EXPECT_EQ(1, d2.received_redirect_count()); |
2249 | 2371 |
2250 r2->FollowDeferredRedirect(); | 2372 r2->FollowDeferredRedirect(); |
2251 base::RunLoop().Run(); | 2373 base::RunLoop().Run(); |
2252 EXPECT_EQ(1, d2.response_started_count()); | 2374 EXPECT_EQ(1, d2.response_started_count()); |
2253 EXPECT_FALSE(d2.received_data_before_response()); | 2375 EXPECT_FALSE(d2.received_data_before_response()); |
2254 EXPECT_EQ(URLRequestStatus::SUCCESS, r2->status().status()); | 2376 EXPECT_EQ(OK, r2->status().error()); |
2255 std::string contents2("hello!"); | 2377 std::string contents2("hello!"); |
2256 EXPECT_EQ(contents2, d2.data_received()); | 2378 EXPECT_EQ(contents2, d2.data_received()); |
2257 } | 2379 } |
2258 EXPECT_TRUE(data.AllReadDataConsumed()); | 2380 EXPECT_TRUE(data.AllReadDataConsumed()); |
2259 EXPECT_TRUE(data.AllWriteDataConsumed()); | 2381 EXPECT_TRUE(data.AllWriteDataConsumed()); |
2260 EXPECT_TRUE(data2.AllReadDataConsumed()); | 2382 EXPECT_TRUE(data2.AllReadDataConsumed()); |
2261 EXPECT_TRUE(data2.AllWriteDataConsumed()); | 2383 EXPECT_TRUE(data2.AllWriteDataConsumed()); |
2262 } | 2384 } |
2263 | 2385 |
2264 TEST_F(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) { | 2386 TEST_F(SpdyNetworkTransactionTest, ServerPushSingleDataFrame) { |
(...skipping 3961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6226 TEST_F(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { | 6348 TEST_F(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { |
6227 std::unique_ptr<SSLSocketDataProvider> ssl_provider( | 6349 std::unique_ptr<SSLSocketDataProvider> ssl_provider( |
6228 new SSLSocketDataProvider(ASYNC, OK)); | 6350 new SSLSocketDataProvider(ASYNC, OK)); |
6229 // Set to TLS_RSA_WITH_NULL_MD5 | 6351 // Set to TLS_RSA_WITH_NULL_MD5 |
6230 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); | 6352 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); |
6231 | 6353 |
6232 RunTLSUsageCheckTest(std::move(ssl_provider)); | 6354 RunTLSUsageCheckTest(std::move(ssl_provider)); |
6233 } | 6355 } |
6234 | 6356 |
6235 } // namespace net | 6357 } // namespace net |
OLD | NEW |