OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/url_request/url_request_http_job.h" | 5 #include "net/url_request/url_request_http_job.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <cstddef> | 9 #include <cstddef> |
10 | 10 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 for (const std::string& token : | 80 for (const std::string& token : |
81 base::SplitString(encoding_headers, ", ", base::KEEP_WHITESPACE, | 81 base::SplitString(encoding_headers, ", ", base::KEEP_WHITESPACE, |
82 base::SPLIT_WANT_NONEMPTY)) { | 82 base::SPLIT_WANT_NONEMPTY)) { |
83 if (base::EqualsCaseInsensitiveASCII(token, "sdch")) | 83 if (base::EqualsCaseInsensitiveASCII(token, "sdch")) |
84 return true; | 84 return true; |
85 } | 85 } |
86 return false; | 86 return false; |
87 } | 87 } |
88 | 88 |
89 void EnableSdch() { | 89 void EnableSdch() { |
90 context_.SetSdchManager(scoped_ptr<SdchManager>(new SdchManager).Pass()); | 90 context_.SetSdchManager(scoped_ptr<SdchManager>(new SdchManager)); |
91 } | 91 } |
92 | 92 |
93 MockNetworkLayer network_layer_; | 93 MockNetworkLayer network_layer_; |
94 TestURLRequestContext context_; | 94 TestURLRequestContext context_; |
95 TestDelegate delegate_; | 95 TestDelegate delegate_; |
96 scoped_ptr<URLRequest> req_; | 96 scoped_ptr<URLRequest> req_; |
97 }; | 97 }; |
98 | 98 |
99 class URLRequestHttpJobWithMockSocketsTest : public ::testing::Test { | 99 class URLRequestHttpJobWithMockSocketsTest : public ::testing::Test { |
100 protected: | 100 protected: |
(...skipping 24 matching lines...) Expand all Loading... |
125 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; | 125 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; |
126 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" | 126 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" |
127 "Content-Length: 12\r\n\r\n"), | 127 "Content-Length: 12\r\n\r\n"), |
128 MockRead("Test Content")}; | 128 MockRead("Test Content")}; |
129 | 129 |
130 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 130 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
131 arraysize(writes)); | 131 arraysize(writes)); |
132 socket_factory_.AddSocketDataProvider(&socket_data); | 132 socket_factory_.AddSocketDataProvider(&socket_data); |
133 | 133 |
134 TestDelegate delegate; | 134 TestDelegate delegate; |
135 scoped_ptr<URLRequest> request = | 135 scoped_ptr<URLRequest> request = context_->CreateRequest( |
136 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 136 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
137 &delegate) | |
138 .Pass(); | |
139 | 137 |
140 request->Start(); | 138 request->Start(); |
141 ASSERT_TRUE(request->is_pending()); | 139 ASSERT_TRUE(request->is_pending()); |
142 base::RunLoop().Run(); | 140 base::RunLoop().Run(); |
143 | 141 |
144 EXPECT_TRUE(request->status().is_success()); | 142 EXPECT_TRUE(request->status().is_success()); |
145 EXPECT_EQ(12, request->received_response_content_length()); | 143 EXPECT_EQ(12, request->received_response_content_length()); |
146 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 144 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
147 request->GetTotalSentBytes()); | 145 request->GetTotalSentBytes()); |
148 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 146 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
149 request->GetTotalReceivedBytes()); | 147 request->GetTotalReceivedBytes()); |
150 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 148 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
151 network_delegate_.total_network_bytes_sent()); | 149 network_delegate_.total_network_bytes_sent()); |
152 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 150 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
153 network_delegate_.total_network_bytes_received()); | 151 network_delegate_.total_network_bytes_received()); |
154 } | 152 } |
155 | 153 |
156 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 154 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
157 TestContentLengthSuccessfulHttp09Request) { | 155 TestContentLengthSuccessfulHttp09Request) { |
158 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; | 156 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; |
159 MockRead reads[] = {MockRead("Test Content"), | 157 MockRead reads[] = {MockRead("Test Content"), |
160 MockRead(net::SYNCHRONOUS, net::OK)}; | 158 MockRead(net::SYNCHRONOUS, net::OK)}; |
161 | 159 |
162 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); | 160 StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 0); |
163 socket_factory_.AddSocketDataProvider(&socket_data); | 161 socket_factory_.AddSocketDataProvider(&socket_data); |
164 | 162 |
165 TestDelegate delegate; | 163 TestDelegate delegate; |
166 scoped_ptr<URLRequest> request = | 164 scoped_ptr<URLRequest> request = context_->CreateRequest( |
167 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 165 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
168 &delegate) | |
169 .Pass(); | |
170 | 166 |
171 request->Start(); | 167 request->Start(); |
172 ASSERT_TRUE(request->is_pending()); | 168 ASSERT_TRUE(request->is_pending()); |
173 base::RunLoop().Run(); | 169 base::RunLoop().Run(); |
174 | 170 |
175 EXPECT_TRUE(request->status().is_success()); | 171 EXPECT_TRUE(request->status().is_success()); |
176 EXPECT_EQ(12, request->received_response_content_length()); | 172 EXPECT_EQ(12, request->received_response_content_length()); |
177 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 173 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
178 request->GetTotalSentBytes()); | 174 request->GetTotalSentBytes()); |
179 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 175 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
180 request->GetTotalReceivedBytes()); | 176 request->GetTotalReceivedBytes()); |
181 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 177 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
182 network_delegate_.total_network_bytes_sent()); | 178 network_delegate_.total_network_bytes_sent()); |
183 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 179 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
184 network_delegate_.total_network_bytes_received()); | 180 network_delegate_.total_network_bytes_received()); |
185 } | 181 } |
186 | 182 |
187 TEST_F(URLRequestHttpJobWithMockSocketsTest, TestContentLengthFailedRequest) { | 183 TEST_F(URLRequestHttpJobWithMockSocketsTest, TestContentLengthFailedRequest) { |
188 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; | 184 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; |
189 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" | 185 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" |
190 "Content-Length: 20\r\n\r\n"), | 186 "Content-Length: 20\r\n\r\n"), |
191 MockRead("Test Content"), | 187 MockRead("Test Content"), |
192 MockRead(net::SYNCHRONOUS, net::ERR_FAILED)}; | 188 MockRead(net::SYNCHRONOUS, net::ERR_FAILED)}; |
193 | 189 |
194 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 190 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
195 arraysize(writes)); | 191 arraysize(writes)); |
196 socket_factory_.AddSocketDataProvider(&socket_data); | 192 socket_factory_.AddSocketDataProvider(&socket_data); |
197 | 193 |
198 TestDelegate delegate; | 194 TestDelegate delegate; |
199 scoped_ptr<URLRequest> request = | 195 scoped_ptr<URLRequest> request = context_->CreateRequest( |
200 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 196 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
201 &delegate) | |
202 .Pass(); | |
203 | 197 |
204 request->Start(); | 198 request->Start(); |
205 ASSERT_TRUE(request->is_pending()); | 199 ASSERT_TRUE(request->is_pending()); |
206 base::RunLoop().Run(); | 200 base::RunLoop().Run(); |
207 | 201 |
208 EXPECT_EQ(URLRequestStatus::FAILED, request->status().status()); | 202 EXPECT_EQ(URLRequestStatus::FAILED, request->status().status()); |
209 EXPECT_EQ(12, request->received_response_content_length()); | 203 EXPECT_EQ(12, request->received_response_content_length()); |
210 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 204 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
211 request->GetTotalSentBytes()); | 205 request->GetTotalSentBytes()); |
212 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 206 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
(...skipping 10 matching lines...) Expand all Loading... |
223 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" | 217 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n" |
224 "Content-Length: 20\r\n\r\n"), | 218 "Content-Length: 20\r\n\r\n"), |
225 MockRead("Test Content"), | 219 MockRead("Test Content"), |
226 MockRead(net::SYNCHRONOUS, net::ERR_IO_PENDING)}; | 220 MockRead(net::SYNCHRONOUS, net::ERR_IO_PENDING)}; |
227 | 221 |
228 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 222 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
229 arraysize(writes)); | 223 arraysize(writes)); |
230 socket_factory_.AddSocketDataProvider(&socket_data); | 224 socket_factory_.AddSocketDataProvider(&socket_data); |
231 | 225 |
232 TestDelegate delegate; | 226 TestDelegate delegate; |
233 scoped_ptr<URLRequest> request = | 227 scoped_ptr<URLRequest> request = context_->CreateRequest( |
234 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 228 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
235 &delegate) | |
236 .Pass(); | |
237 | 229 |
238 delegate.set_cancel_in_received_data(true); | 230 delegate.set_cancel_in_received_data(true); |
239 request->Start(); | 231 request->Start(); |
240 base::RunLoop().RunUntilIdle(); | 232 base::RunLoop().RunUntilIdle(); |
241 | 233 |
242 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); | 234 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); |
243 EXPECT_EQ(12, request->received_response_content_length()); | 235 EXPECT_EQ(12, request->received_response_content_length()); |
244 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 236 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
245 request->GetTotalSentBytes()); | 237 request->GetTotalSentBytes()); |
246 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 238 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
(...skipping 26 matching lines...) Expand all Loading... |
273 MockWrite final_writes[] = {MockWrite(kSimpleGetMockWrite)}; | 265 MockWrite final_writes[] = {MockWrite(kSimpleGetMockWrite)}; |
274 MockRead final_reads[] = {MockRead("HTTP/1.1 200 OK\r\n" | 266 MockRead final_reads[] = {MockRead("HTTP/1.1 200 OK\r\n" |
275 "Content-Length: 12\r\n\r\n"), | 267 "Content-Length: 12\r\n\r\n"), |
276 MockRead("Test Content")}; | 268 MockRead("Test Content")}; |
277 StaticSocketDataProvider final_socket_data( | 269 StaticSocketDataProvider final_socket_data( |
278 final_reads, arraysize(final_reads), final_writes, | 270 final_reads, arraysize(final_reads), final_writes, |
279 arraysize(final_writes)); | 271 arraysize(final_writes)); |
280 socket_factory_.AddSocketDataProvider(&final_socket_data); | 272 socket_factory_.AddSocketDataProvider(&final_socket_data); |
281 | 273 |
282 TestDelegate delegate; | 274 TestDelegate delegate; |
283 scoped_ptr<URLRequest> request = | 275 scoped_ptr<URLRequest> request = context_->CreateRequest( |
284 context_->CreateRequest(GURL("http://www.redirect.com"), DEFAULT_PRIORITY, | 276 GURL("http://www.redirect.com"), DEFAULT_PRIORITY, &delegate); |
285 &delegate) | |
286 .Pass(); | |
287 | 277 |
288 request->Start(); | 278 request->Start(); |
289 ASSERT_TRUE(request->is_pending()); | 279 ASSERT_TRUE(request->is_pending()); |
290 base::RunLoop().RunUntilIdle(); | 280 base::RunLoop().RunUntilIdle(); |
291 | 281 |
292 EXPECT_TRUE(request->status().is_success()); | 282 EXPECT_TRUE(request->status().is_success()); |
293 EXPECT_EQ(12, request->received_response_content_length()); | 283 EXPECT_EQ(12, request->received_response_content_length()); |
294 // Should not include the redirect. | 284 // Should not include the redirect. |
295 EXPECT_EQ(CountWriteBytes(final_writes, arraysize(final_writes)), | 285 EXPECT_EQ(CountWriteBytes(final_writes, arraysize(final_writes)), |
296 request->GetTotalSentBytes()); | 286 request->GetTotalSentBytes()); |
(...skipping 10 matching lines...) Expand all Loading... |
307 | 297 |
308 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 298 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
309 TestNetworkBytesCancelledAfterHeaders) { | 299 TestNetworkBytesCancelledAfterHeaders) { |
310 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; | 300 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; |
311 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n")}; | 301 MockRead reads[] = {MockRead("HTTP/1.1 200 OK\r\n\r\n")}; |
312 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 302 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
313 arraysize(writes)); | 303 arraysize(writes)); |
314 socket_factory_.AddSocketDataProvider(&socket_data); | 304 socket_factory_.AddSocketDataProvider(&socket_data); |
315 | 305 |
316 TestDelegate delegate; | 306 TestDelegate delegate; |
317 scoped_ptr<URLRequest> request = | 307 scoped_ptr<URLRequest> request = context_->CreateRequest( |
318 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 308 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
319 &delegate) | |
320 .Pass(); | |
321 | 309 |
322 delegate.set_cancel_in_response_started(true); | 310 delegate.set_cancel_in_response_started(true); |
323 request->Start(); | 311 request->Start(); |
324 base::RunLoop().RunUntilIdle(); | 312 base::RunLoop().RunUntilIdle(); |
325 | 313 |
326 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); | 314 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); |
327 EXPECT_EQ(0, request->received_response_content_length()); | 315 EXPECT_EQ(0, request->received_response_content_length()); |
328 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 316 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
329 request->GetTotalSentBytes()); | 317 request->GetTotalSentBytes()); |
330 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 318 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
331 request->GetTotalReceivedBytes()); | 319 request->GetTotalReceivedBytes()); |
332 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), | 320 EXPECT_EQ(CountWriteBytes(writes, arraysize(writes)), |
333 network_delegate_.total_network_bytes_sent()); | 321 network_delegate_.total_network_bytes_sent()); |
334 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), | 322 EXPECT_EQ(CountReadBytes(reads, arraysize(reads)), |
335 network_delegate_.total_network_bytes_received()); | 323 network_delegate_.total_network_bytes_received()); |
336 } | 324 } |
337 | 325 |
338 TEST_F(URLRequestHttpJobWithMockSocketsTest, | 326 TEST_F(URLRequestHttpJobWithMockSocketsTest, |
339 TestNetworkBytesCancelledImmediately) { | 327 TestNetworkBytesCancelledImmediately) { |
340 StaticSocketDataProvider socket_data(nullptr, 0, nullptr, 0); | 328 StaticSocketDataProvider socket_data(nullptr, 0, nullptr, 0); |
341 socket_factory_.AddSocketDataProvider(&socket_data); | 329 socket_factory_.AddSocketDataProvider(&socket_data); |
342 | 330 |
343 TestDelegate delegate; | 331 TestDelegate delegate; |
344 scoped_ptr<URLRequest> request = | 332 scoped_ptr<URLRequest> request = context_->CreateRequest( |
345 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 333 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
346 &delegate) | |
347 .Pass(); | |
348 | 334 |
349 request->Start(); | 335 request->Start(); |
350 request->Cancel(); | 336 request->Cancel(); |
351 base::RunLoop().RunUntilIdle(); | 337 base::RunLoop().RunUntilIdle(); |
352 | 338 |
353 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); | 339 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); |
354 EXPECT_EQ(0, request->received_response_content_length()); | 340 EXPECT_EQ(0, request->received_response_content_length()); |
355 EXPECT_EQ(0, request->GetTotalSentBytes()); | 341 EXPECT_EQ(0, request->GetTotalSentBytes()); |
356 EXPECT_EQ(0, request->GetTotalReceivedBytes()); | 342 EXPECT_EQ(0, request->GetTotalReceivedBytes()); |
357 EXPECT_EQ(0, network_delegate_.total_network_bytes_received()); | 343 EXPECT_EQ(0, network_delegate_.total_network_bytes_received()); |
(...skipping 11 matching lines...) Expand all Loading... |
369 ssl_socket_data_provider.SetNextProto(kProtoHTTP11); | 355 ssl_socket_data_provider.SetNextProto(kProtoHTTP11); |
370 ssl_socket_data_provider.cert = | 356 ssl_socket_data_provider.cert = |
371 ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der"); | 357 ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der"); |
372 socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider); | 358 socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider); |
373 | 359 |
374 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 360 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
375 arraysize(writes)); | 361 arraysize(writes)); |
376 socket_factory_.AddSocketDataProvider(&socket_data); | 362 socket_factory_.AddSocketDataProvider(&socket_data); |
377 | 363 |
378 TestDelegate delegate1; | 364 TestDelegate delegate1; |
379 scoped_ptr<URLRequest> request1 = | 365 scoped_ptr<URLRequest> request1 = context_->CreateRequest( |
380 context_->CreateRequest(GURL("https://www.example.com"), DEFAULT_PRIORITY, | 366 GURL("https://www.example.com"), DEFAULT_PRIORITY, &delegate1); |
381 &delegate1).Pass(); | |
382 | 367 |
383 request1->Start(); | 368 request1->Start(); |
384 ASSERT_TRUE(request1->is_pending()); | 369 ASSERT_TRUE(request1->is_pending()); |
385 base::RunLoop().Run(); | 370 base::RunLoop().Run(); |
386 | 371 |
387 EXPECT_TRUE(request1->status().is_success()); | 372 EXPECT_TRUE(request1->status().is_success()); |
388 EXPECT_EQ("test.html", delegate1.data_received()); | 373 EXPECT_EQ("test.html", delegate1.data_received()); |
389 EXPECT_EQ(1, delegate1.received_before_network_start_count()); | 374 EXPECT_EQ(1, delegate1.received_before_network_start_count()); |
390 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); | 375 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); |
391 | 376 |
392 // Issue another request, and backoff logic should apply. | 377 // Issue another request, and backoff logic should apply. |
393 TestDelegate delegate2; | 378 TestDelegate delegate2; |
394 scoped_ptr<URLRequest> request2 = | 379 scoped_ptr<URLRequest> request2 = context_->CreateRequest( |
395 context_->CreateRequest(GURL("https://www.example.com"), DEFAULT_PRIORITY, | 380 GURL("https://www.example.com"), DEFAULT_PRIORITY, &delegate2); |
396 &delegate2).Pass(); | |
397 | 381 |
398 request2->Start(); | 382 request2->Start(); |
399 ASSERT_TRUE(request2->is_pending()); | 383 ASSERT_TRUE(request2->is_pending()); |
400 base::RunLoop().Run(); | 384 base::RunLoop().Run(); |
401 | 385 |
402 EXPECT_FALSE(request2->status().is_success()); | 386 EXPECT_FALSE(request2->status().is_success()); |
403 EXPECT_EQ(ERR_TEMPORARY_BACKOFF, request2->status().error()); | 387 EXPECT_EQ(ERR_TEMPORARY_BACKOFF, request2->status().error()); |
404 EXPECT_EQ(0, delegate2.received_before_network_start_count()); | 388 EXPECT_EQ(0, delegate2.received_before_network_start_count()); |
405 } | 389 } |
406 | 390 |
(...skipping 27 matching lines...) Expand all Loading... |
434 ssl_socket_data_provider.SetNextProto(kProtoHTTP11); | 418 ssl_socket_data_provider.SetNextProto(kProtoHTTP11); |
435 ssl_socket_data_provider.cert = | 419 ssl_socket_data_provider.cert = |
436 ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der"); | 420 ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der"); |
437 socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider); | 421 socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider); |
438 | 422 |
439 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 423 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
440 arraysize(writes)); | 424 arraysize(writes)); |
441 socket_factory_.AddSocketDataProvider(&socket_data); | 425 socket_factory_.AddSocketDataProvider(&socket_data); |
442 | 426 |
443 TestDelegate delegate1; | 427 TestDelegate delegate1; |
444 scoped_ptr<URLRequest> request1 = | 428 scoped_ptr<URLRequest> request1 = context_->CreateRequest( |
445 context_->CreateRequest(GURL("https://www.example.com"), DEFAULT_PRIORITY, | 429 GURL("https://www.example.com"), DEFAULT_PRIORITY, &delegate1); |
446 &delegate1) | |
447 .Pass(); | |
448 | 430 |
449 request1->Start(); | 431 request1->Start(); |
450 ASSERT_TRUE(request1->is_pending()); | 432 ASSERT_TRUE(request1->is_pending()); |
451 base::RunLoop().Run(); | 433 base::RunLoop().Run(); |
452 | 434 |
453 EXPECT_TRUE(request1->status().is_success()); | 435 EXPECT_TRUE(request1->status().is_success()); |
454 EXPECT_EQ("test.html", delegate1.data_received()); | 436 EXPECT_EQ("test.html", delegate1.data_received()); |
455 EXPECT_EQ(1, delegate1.received_before_network_start_count()); | 437 EXPECT_EQ(1, delegate1.received_before_network_start_count()); |
456 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); | 438 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); |
457 | 439 |
458 // Issue a user-initiated request, backoff logic should not apply. | 440 // Issue a user-initiated request, backoff logic should not apply. |
459 TestDelegate delegate2; | 441 TestDelegate delegate2; |
460 scoped_ptr<URLRequest> request2 = | 442 scoped_ptr<URLRequest> request2 = context_->CreateRequest( |
461 context_->CreateRequest(GURL("https://www.example.com"), DEFAULT_PRIORITY, | 443 GURL("https://www.example.com"), DEFAULT_PRIORITY, &delegate2); |
462 &delegate2) | |
463 .Pass(); | |
464 request2->SetLoadFlags(request2->load_flags() | LOAD_MAYBE_USER_GESTURE); | 444 request2->SetLoadFlags(request2->load_flags() | LOAD_MAYBE_USER_GESTURE); |
465 | 445 |
466 request2->Start(); | 446 request2->Start(); |
467 ASSERT_TRUE(request2->is_pending()); | 447 ASSERT_TRUE(request2->is_pending()); |
468 base::RunLoop().Run(); | 448 base::RunLoop().Run(); |
469 | 449 |
470 EXPECT_NE(0, request2->load_flags() & LOAD_MAYBE_USER_GESTURE); | 450 EXPECT_NE(0, request2->load_flags() & LOAD_MAYBE_USER_GESTURE); |
471 EXPECT_TRUE(request2->status().is_success()); | 451 EXPECT_TRUE(request2->status().is_success()); |
472 EXPECT_EQ("test.html", delegate2.data_received()); | 452 EXPECT_EQ("test.html", delegate2.data_received()); |
473 EXPECT_EQ(1, delegate2.received_before_network_start_count()); | 453 EXPECT_EQ(1, delegate2.received_before_network_start_count()); |
474 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); | 454 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); |
475 } | 455 } |
476 | 456 |
477 TEST_F(URLRequestHttpJobWithMockSocketsTest, BackoffHeaderNotSecure) { | 457 TEST_F(URLRequestHttpJobWithMockSocketsTest, BackoffHeaderNotSecure) { |
478 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; | 458 MockWrite writes[] = {MockWrite(kSimpleGetMockWrite)}; |
479 MockRead reads[] = {MockRead( | 459 MockRead reads[] = {MockRead( |
480 "HTTP/1.1 200 OK\r\n" | 460 "HTTP/1.1 200 OK\r\n" |
481 "Backoff: 3600\r\n" | 461 "Backoff: 3600\r\n" |
482 "Content-Length: 9\r\n\r\n"), | 462 "Content-Length: 9\r\n\r\n"), |
483 MockRead("test.html")}; | 463 MockRead("test.html")}; |
484 | 464 |
485 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 465 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
486 arraysize(writes)); | 466 arraysize(writes)); |
487 socket_factory_.AddSocketDataProvider(&socket_data); | 467 socket_factory_.AddSocketDataProvider(&socket_data); |
488 | 468 |
489 TestDelegate delegate; | 469 TestDelegate delegate; |
490 scoped_ptr<URLRequest> request = | 470 scoped_ptr<URLRequest> request = context_->CreateRequest( |
491 context_->CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 471 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
492 &delegate).Pass(); | |
493 | 472 |
494 request->Start(); | 473 request->Start(); |
495 ASSERT_TRUE(request->is_pending()); | 474 ASSERT_TRUE(request->is_pending()); |
496 base::RunLoop().Run(); | 475 base::RunLoop().Run(); |
497 | 476 |
498 EXPECT_TRUE(request->status().is_success()); | 477 EXPECT_TRUE(request->status().is_success()); |
499 EXPECT_EQ("test.html", delegate.data_received()); | 478 EXPECT_EQ("test.html", delegate.data_received()); |
500 EXPECT_EQ(1, delegate.received_before_network_start_count()); | 479 EXPECT_EQ(1, delegate.received_before_network_start_count()); |
501 // Backoff logic does not apply to plain HTTP request. | 480 // Backoff logic does not apply to plain HTTP request. |
502 EXPECT_EQ(0, manager_.GetNumberOfEntriesForTests()); | 481 EXPECT_EQ(0, manager_.GetNumberOfEntriesForTests()); |
(...skipping 12 matching lines...) Expand all Loading... |
515 ssl_socket_data_provider.SetNextProto(kProtoHTTP11); | 494 ssl_socket_data_provider.SetNextProto(kProtoHTTP11); |
516 ssl_socket_data_provider.cert = | 495 ssl_socket_data_provider.cert = |
517 ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der"); | 496 ImportCertFromFile(GetTestCertsDirectory(), "unittest.selfsigned.der"); |
518 socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider); | 497 socket_factory_.AddSSLSocketDataProvider(&ssl_socket_data_provider); |
519 | 498 |
520 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, | 499 StaticSocketDataProvider socket_data(reads, arraysize(reads), writes, |
521 arraysize(writes)); | 500 arraysize(writes)); |
522 socket_factory_.AddSocketDataProvider(&socket_data); | 501 socket_factory_.AddSocketDataProvider(&socket_data); |
523 | 502 |
524 TestDelegate delegate1; | 503 TestDelegate delegate1; |
525 scoped_ptr<URLRequest> request1 = | 504 scoped_ptr<URLRequest> request1 = context_->CreateRequest( |
526 context_->CreateRequest(GURL("https://www.example.com"), DEFAULT_PRIORITY, | 505 GURL("https://www.example.com"), DEFAULT_PRIORITY, &delegate1); |
527 &delegate1).Pass(); | |
528 | 506 |
529 request1->Start(); | 507 request1->Start(); |
530 ASSERT_TRUE(request1->is_pending()); | 508 ASSERT_TRUE(request1->is_pending()); |
531 base::RunLoop().Run(); | 509 base::RunLoop().Run(); |
532 | 510 |
533 EXPECT_TRUE(request1->status().is_success()); | 511 EXPECT_TRUE(request1->status().is_success()); |
534 EXPECT_EQ("test.html", delegate1.data_received()); | 512 EXPECT_EQ("test.html", delegate1.data_received()); |
535 EXPECT_EQ(1, delegate1.received_before_network_start_count()); | 513 EXPECT_EQ(1, delegate1.received_before_network_start_count()); |
536 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); | 514 EXPECT_EQ(1, manager_.GetNumberOfEntriesForTests()); |
537 | 515 |
538 // Backoff logic does not apply to a second request, since it is fetched | 516 // Backoff logic does not apply to a second request, since it is fetched |
539 // from cache. | 517 // from cache. |
540 TestDelegate delegate2; | 518 TestDelegate delegate2; |
541 scoped_ptr<URLRequest> request2 = | 519 scoped_ptr<URLRequest> request2 = context_->CreateRequest( |
542 context_->CreateRequest(GURL("https://www.example.com"), DEFAULT_PRIORITY, | 520 GURL("https://www.example.com"), DEFAULT_PRIORITY, &delegate2); |
543 &delegate2).Pass(); | |
544 | 521 |
545 request2->Start(); | 522 request2->Start(); |
546 ASSERT_TRUE(request2->is_pending()); | 523 ASSERT_TRUE(request2->is_pending()); |
547 base::RunLoop().Run(); | 524 base::RunLoop().Run(); |
548 EXPECT_TRUE(request2->was_cached()); | 525 EXPECT_TRUE(request2->was_cached()); |
549 EXPECT_TRUE(request2->status().is_success()); | 526 EXPECT_TRUE(request2->status().is_success()); |
550 EXPECT_EQ(0, delegate2.received_before_network_start_count()); | 527 EXPECT_EQ(0, delegate2.received_before_network_start_count()); |
551 } | 528 } |
552 | 529 |
553 TEST_F(URLRequestHttpJobTest, TestCancelWhileReadingCookies) { | 530 TEST_F(URLRequestHttpJobTest, TestCancelWhileReadingCookies) { |
554 context_.set_cookie_store(new DelayedCookieMonster()); | 531 context_.set_cookie_store(new DelayedCookieMonster()); |
555 | 532 |
556 TestDelegate delegate; | 533 TestDelegate delegate; |
557 scoped_ptr<URLRequest> request = | 534 scoped_ptr<URLRequest> request = context_.CreateRequest( |
558 context_.CreateRequest(GURL("http://www.example.com"), DEFAULT_PRIORITY, | 535 GURL("http://www.example.com"), DEFAULT_PRIORITY, &delegate); |
559 &delegate) | |
560 .Pass(); | |
561 | 536 |
562 request->Start(); | 537 request->Start(); |
563 request->Cancel(); | 538 request->Cancel(); |
564 base::RunLoop().Run(); | 539 base::RunLoop().Run(); |
565 | 540 |
566 DCHECK_EQ(0, delegate.received_before_network_start_count()); | 541 DCHECK_EQ(0, delegate.received_before_network_start_count()); |
567 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); | 542 EXPECT_EQ(URLRequestStatus::CANCELED, request->status().status()); |
568 } | 543 } |
569 | 544 |
570 // Make sure that SetPriority actually sets the URLRequestHttpJob's | 545 // Make sure that SetPriority actually sets the URLRequestHttpJob's |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 req_->SetLoadFlags(LOAD_DISABLE_CACHE); | 766 req_->SetLoadFlags(LOAD_DISABLE_CACHE); |
792 job->Start(); | 767 job->Start(); |
793 base::RunLoop().RunUntilIdle(); | 768 base::RunLoop().RunUntilIdle(); |
794 EXPECT_EQ(URLRequestStatus::IO_PENDING, req_->status().status()); | 769 EXPECT_EQ(URLRequestStatus::IO_PENDING, req_->status().status()); |
795 EXPECT_TRUE(fake_handshake_stream->initialize_stream_was_called()); | 770 EXPECT_TRUE(fake_handshake_stream->initialize_stream_was_called()); |
796 } | 771 } |
797 | 772 |
798 } // namespace | 773 } // namespace |
799 | 774 |
800 } // namespace net | 775 } // namespace net |
OLD | NEW |