Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(736)

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 582020: Add bounds checking to StaticSocketDataProvider, to make tests more reliable (Closed)
Patch Set: Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/http/http_network_layer_unittest.cc ('k') | net/socket/socket_test_util.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 <math.h> // ceil 5 #include <math.h> // ceil
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 84
85 protected: 85 protected:
86 void KeepAliveConnectionResendRequestTest(const MockRead& read_failure); 86 void KeepAliveConnectionResendRequestTest(const MockRead& read_failure);
87 87
88 struct SimpleGetHelperResult { 88 struct SimpleGetHelperResult {
89 int rv; 89 int rv;
90 std::string status_line; 90 std::string status_line;
91 std::string response_data; 91 std::string response_data;
92 }; 92 };
93 93
94 SimpleGetHelperResult SimpleGetHelper(MockRead data_reads[]) { 94 SimpleGetHelperResult SimpleGetHelper(MockRead data_reads[],
95 size_t reads_count) {
95 SimpleGetHelperResult out; 96 SimpleGetHelperResult out;
96 97
97 SessionDependencies session_deps; 98 SessionDependencies session_deps;
98 scoped_ptr<HttpTransaction> trans( 99 scoped_ptr<HttpTransaction> trans(
99 new HttpNetworkTransaction(CreateSession(&session_deps))); 100 new HttpNetworkTransaction(CreateSession(&session_deps)));
100 101
101 HttpRequestInfo request; 102 HttpRequestInfo request;
102 request.method = "GET"; 103 request.method = "GET";
103 request.url = GURL("http://www.google.com/"); 104 request.url = GURL("http://www.google.com/");
104 request.load_flags = 0; 105 request.load_flags = 0;
105 106
106 StaticSocketDataProvider data(data_reads, NULL); 107 StaticSocketDataProvider data(data_reads, reads_count, NULL, 0);
107 session_deps.socket_factory.AddSocketDataProvider(&data); 108 session_deps.socket_factory.AddSocketDataProvider(&data);
108 109
109 TestCompletionCallback callback; 110 TestCompletionCallback callback;
110 111
111 int rv = trans->Start(&request, &callback, NULL); 112 int rv = trans->Start(&request, &callback, NULL);
112 EXPECT_EQ(ERR_IO_PENDING, rv); 113 EXPECT_EQ(ERR_IO_PENDING, rv);
113 114
114 out.rv = callback.WaitForResult(); 115 out.rv = callback.WaitForResult();
115 if (out.rv != OK) 116 if (out.rv != OK)
116 return out; 117 return out;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 scoped_ptr<HttpTransaction> trans( 224 scoped_ptr<HttpTransaction> trans(
224 new HttpNetworkTransaction(CreateSession(&session_deps))); 225 new HttpNetworkTransaction(CreateSession(&session_deps)));
225 } 226 }
226 227
227 TEST_F(HttpNetworkTransactionTest, SimpleGET) { 228 TEST_F(HttpNetworkTransactionTest, SimpleGET) {
228 MockRead data_reads[] = { 229 MockRead data_reads[] = {
229 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 230 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
230 MockRead("hello world"), 231 MockRead("hello world"),
231 MockRead(false, OK), 232 MockRead(false, OK),
232 }; 233 };
233 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 234 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
235 arraysize(data_reads));
234 EXPECT_EQ(OK, out.rv); 236 EXPECT_EQ(OK, out.rv);
235 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 237 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
236 EXPECT_EQ("hello world", out.response_data); 238 EXPECT_EQ("hello world", out.response_data);
237 } 239 }
238 240
239 // Response with no status line. 241 // Response with no status line.
240 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeaders) { 242 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeaders) {
241 MockRead data_reads[] = { 243 MockRead data_reads[] = {
242 MockRead("hello world"), 244 MockRead("hello world"),
243 MockRead(false, OK), 245 MockRead(false, OK),
244 }; 246 };
245 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 247 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
248 arraysize(data_reads));
246 EXPECT_EQ(OK, out.rv); 249 EXPECT_EQ(OK, out.rv);
247 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); 250 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line);
248 EXPECT_EQ("hello world", out.response_data); 251 EXPECT_EQ("hello world", out.response_data);
249 } 252 }
250 253
251 // Allow up to 4 bytes of junk to precede status line. 254 // Allow up to 4 bytes of junk to precede status line.
252 TEST_F(HttpNetworkTransactionTest, StatusLineJunk2Bytes) { 255 TEST_F(HttpNetworkTransactionTest, StatusLineJunk2Bytes) {
253 MockRead data_reads[] = { 256 MockRead data_reads[] = {
254 MockRead("xxxHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), 257 MockRead("xxxHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"),
255 MockRead(false, OK), 258 MockRead(false, OK),
256 }; 259 };
257 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 260 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
261 arraysize(data_reads));
258 EXPECT_EQ(OK, out.rv); 262 EXPECT_EQ(OK, out.rv);
259 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); 263 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line);
260 EXPECT_EQ("DATA", out.response_data); 264 EXPECT_EQ("DATA", out.response_data);
261 } 265 }
262 266
263 // Allow up to 4 bytes of junk to precede status line. 267 // Allow up to 4 bytes of junk to precede status line.
264 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes) { 268 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes) {
265 MockRead data_reads[] = { 269 MockRead data_reads[] = {
266 MockRead("\n\nQJHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), 270 MockRead("\n\nQJHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"),
267 MockRead(false, OK), 271 MockRead(false, OK),
268 }; 272 };
269 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 273 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
274 arraysize(data_reads));
270 EXPECT_EQ(OK, out.rv); 275 EXPECT_EQ(OK, out.rv);
271 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); 276 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line);
272 EXPECT_EQ("DATA", out.response_data); 277 EXPECT_EQ("DATA", out.response_data);
273 } 278 }
274 279
275 // Beyond 4 bytes of slop and it should fail to find a status line. 280 // Beyond 4 bytes of slop and it should fail to find a status line.
276 TEST_F(HttpNetworkTransactionTest, StatusLineJunk5Bytes) { 281 TEST_F(HttpNetworkTransactionTest, StatusLineJunk5Bytes) {
277 MockRead data_reads[] = { 282 MockRead data_reads[] = {
278 MockRead("xxxxxHTTP/1.1 404 Not Found\nServer: blah"), 283 MockRead("xxxxxHTTP/1.1 404 Not Found\nServer: blah"),
279 MockRead(false, OK), 284 MockRead(false, OK),
280 }; 285 };
281 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 286 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
287 arraysize(data_reads));
282 EXPECT_EQ(OK, out.rv); 288 EXPECT_EQ(OK, out.rv);
283 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); 289 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line);
284 EXPECT_EQ("xxxxxHTTP/1.1 404 Not Found\nServer: blah", out.response_data); 290 EXPECT_EQ("xxxxxHTTP/1.1 404 Not Found\nServer: blah", out.response_data);
285 } 291 }
286 292
287 // Same as StatusLineJunk4Bytes, except the read chunks are smaller. 293 // Same as StatusLineJunk4Bytes, except the read chunks are smaller.
288 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) { 294 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) {
289 MockRead data_reads[] = { 295 MockRead data_reads[] = {
290 MockRead("\n"), 296 MockRead("\n"),
291 MockRead("\n"), 297 MockRead("\n"),
292 MockRead("Q"), 298 MockRead("Q"),
293 MockRead("J"), 299 MockRead("J"),
294 MockRead("HTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), 300 MockRead("HTTP/1.0 404 Not Found\nServer: blah\n\nDATA"),
295 MockRead(false, OK), 301 MockRead(false, OK),
296 }; 302 };
297 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 303 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
304 arraysize(data_reads));
298 EXPECT_EQ(OK, out.rv); 305 EXPECT_EQ(OK, out.rv);
299 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); 306 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line);
300 EXPECT_EQ("DATA", out.response_data); 307 EXPECT_EQ("DATA", out.response_data);
301 } 308 }
302 309
303 // Close the connection before enough bytes to have a status line. 310 // Close the connection before enough bytes to have a status line.
304 TEST_F(HttpNetworkTransactionTest, StatusLinePartial) { 311 TEST_F(HttpNetworkTransactionTest, StatusLinePartial) {
305 MockRead data_reads[] = { 312 MockRead data_reads[] = {
306 MockRead("HTT"), 313 MockRead("HTT"),
307 MockRead(false, OK), 314 MockRead(false, OK),
308 }; 315 };
309 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 316 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
317 arraysize(data_reads));
310 EXPECT_EQ(OK, out.rv); 318 EXPECT_EQ(OK, out.rv);
311 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); 319 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line);
312 EXPECT_EQ("HTT", out.response_data); 320 EXPECT_EQ("HTT", out.response_data);
313 } 321 }
314 322
315 // Simulate a 204 response, lacking a Content-Length header, sent over a 323 // Simulate a 204 response, lacking a Content-Length header, sent over a
316 // persistent connection. The response should still terminate since a 204 324 // persistent connection. The response should still terminate since a 204
317 // cannot have a response body. 325 // cannot have a response body.
318 TEST_F(HttpNetworkTransactionTest, StopsReading204) { 326 TEST_F(HttpNetworkTransactionTest, StopsReading204) {
319 MockRead data_reads[] = { 327 MockRead data_reads[] = {
320 MockRead("HTTP/1.1 204 No Content\r\n\r\n"), 328 MockRead("HTTP/1.1 204 No Content\r\n\r\n"),
321 MockRead("junk"), // Should not be read!! 329 MockRead("junk"), // Should not be read!!
322 MockRead(false, OK), 330 MockRead(false, OK),
323 }; 331 };
324 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 332 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
333 arraysize(data_reads));
325 EXPECT_EQ(OK, out.rv); 334 EXPECT_EQ(OK, out.rv);
326 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); 335 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line);
327 EXPECT_EQ("", out.response_data); 336 EXPECT_EQ("", out.response_data);
328 } 337 }
329 338
330 // A simple request using chunked encoding with some extra data after. 339 // A simple request using chunked encoding with some extra data after.
331 // (Like might be seen in a pipelined response.) 340 // (Like might be seen in a pipelined response.)
332 TEST_F(HttpNetworkTransactionTest, ChunkedEncoding) { 341 TEST_F(HttpNetworkTransactionTest, ChunkedEncoding) {
333 MockRead data_reads[] = { 342 MockRead data_reads[] = {
334 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), 343 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"),
335 MockRead("5\r\nHello\r\n"), 344 MockRead("5\r\nHello\r\n"),
336 MockRead("1\r\n"), 345 MockRead("1\r\n"),
337 MockRead(" \r\n"), 346 MockRead(" \r\n"),
338 MockRead("5\r\nworld\r\n"), 347 MockRead("5\r\nworld\r\n"),
339 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"), 348 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"),
340 MockRead(false, OK), 349 MockRead(false, OK),
341 }; 350 };
342 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 351 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
352 arraysize(data_reads));
343 EXPECT_EQ(OK, out.rv); 353 EXPECT_EQ(OK, out.rv);
344 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); 354 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line);
345 EXPECT_EQ("Hello world", out.response_data); 355 EXPECT_EQ("Hello world", out.response_data);
346 } 356 }
347 357
348 // Do a request using the HEAD method. Verify that we don't try to read the 358 // Do a request using the HEAD method. Verify that we don't try to read the
349 // message body (since HEAD has none). 359 // message body (since HEAD has none).
350 TEST_F(HttpNetworkTransactionTest, Head) { 360 TEST_F(HttpNetworkTransactionTest, Head) {
351 SessionDependencies session_deps; 361 SessionDependencies session_deps;
352 scoped_ptr<HttpTransaction> trans( 362 scoped_ptr<HttpTransaction> trans(
(...skipping 12 matching lines...) Expand all
365 }; 375 };
366 MockRead data_reads1[] = { 376 MockRead data_reads1[] = {
367 MockRead("HTTP/1.1 404 Not Found\r\n"), 377 MockRead("HTTP/1.1 404 Not Found\r\n"),
368 MockRead("Server: Blah\r\n"), 378 MockRead("Server: Blah\r\n"),
369 MockRead("Content-Length: 1234\r\n\r\n"), 379 MockRead("Content-Length: 1234\r\n\r\n"),
370 380
371 // No response body because the test stops reading here. 381 // No response body because the test stops reading here.
372 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 382 MockRead(false, ERR_UNEXPECTED), // Should not be reached.
373 }; 383 };
374 384
375 StaticSocketDataProvider data1(data_reads1, data_writes1); 385 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
386 data_writes1, arraysize(data_writes1));
376 session_deps.socket_factory.AddSocketDataProvider(&data1); 387 session_deps.socket_factory.AddSocketDataProvider(&data1);
377 388
378 TestCompletionCallback callback1; 389 TestCompletionCallback callback1;
379 390
380 int rv = trans->Start(&request, &callback1, NULL); 391 int rv = trans->Start(&request, &callback1, NULL);
381 EXPECT_EQ(ERR_IO_PENDING, rv); 392 EXPECT_EQ(ERR_IO_PENDING, rv);
382 393
383 rv = callback1.WaitForResult(); 394 rv = callback1.WaitForResult();
384 EXPECT_EQ(OK, rv); 395 EXPECT_EQ(OK, rv);
385 396
(...skipping 24 matching lines...) Expand all
410 SessionDependencies session_deps; 421 SessionDependencies session_deps;
411 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps); 422 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps);
412 423
413 MockRead data_reads[] = { 424 MockRead data_reads[] = {
414 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 425 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
415 MockRead("hello"), 426 MockRead("hello"),
416 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 427 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
417 MockRead("world"), 428 MockRead("world"),
418 MockRead(false, OK), 429 MockRead(false, OK),
419 }; 430 };
420 StaticSocketDataProvider data(data_reads, NULL); 431 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
421 session_deps.socket_factory.AddSocketDataProvider(&data); 432 session_deps.socket_factory.AddSocketDataProvider(&data);
422 433
423 const char* kExpectedResponseData[] = { 434 const char* kExpectedResponseData[] = {
424 "hello", "world" 435 "hello", "world"
425 }; 436 };
426 437
427 for (int i = 0; i < 2; ++i) { 438 for (int i = 0; i < 2; ++i) {
428 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 439 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
429 440
430 HttpRequestInfo request; 441 HttpRequestInfo request;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 request.upload_data = new UploadData; 475 request.upload_data = new UploadData;
465 request.upload_data->AppendBytes("foo", 3); 476 request.upload_data->AppendBytes("foo", 3);
466 request.load_flags = 0; 477 request.load_flags = 0;
467 478
468 MockRead data_reads[] = { 479 MockRead data_reads[] = {
469 MockRead("HTTP/1.0 100 Continue\r\n\r\n"), 480 MockRead("HTTP/1.0 100 Continue\r\n\r\n"),
470 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 481 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
471 MockRead("hello world"), 482 MockRead("hello world"),
472 MockRead(false, OK), 483 MockRead(false, OK),
473 }; 484 };
474 StaticSocketDataProvider data(data_reads, NULL); 485 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
475 session_deps.socket_factory.AddSocketDataProvider(&data); 486 session_deps.socket_factory.AddSocketDataProvider(&data);
476 487
477 TestCompletionCallback callback; 488 TestCompletionCallback callback;
478 489
479 int rv = trans->Start(&request, &callback, NULL); 490 int rv = trans->Start(&request, &callback, NULL);
480 EXPECT_EQ(ERR_IO_PENDING, rv); 491 EXPECT_EQ(ERR_IO_PENDING, rv);
481 492
482 rv = callback.WaitForResult(); 493 rv = callback.WaitForResult();
483 EXPECT_EQ(OK, rv); 494 EXPECT_EQ(OK, rv);
484 495
(...skipping 21 matching lines...) Expand all
506 request.method = "GET"; 517 request.method = "GET";
507 request.url = GURL("http://www.foo.com/"); 518 request.url = GURL("http://www.foo.com/");
508 request.load_flags = 0; 519 request.load_flags = 0;
509 520
510 MockRead data_reads[] = { 521 MockRead data_reads[] = {
511 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n" 522 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n"
512 "HTTP/1.1 200 OK\r\n\r\n"), 523 "HTTP/1.1 200 OK\r\n\r\n"),
513 MockRead("hello world"), 524 MockRead("hello world"),
514 MockRead(false, OK), 525 MockRead(false, OK),
515 }; 526 };
516 StaticSocketDataProvider data(data_reads, NULL); 527 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
517 session_deps.socket_factory.AddSocketDataProvider(&data); 528 session_deps.socket_factory.AddSocketDataProvider(&data);
518 529
519 TestCompletionCallback callback; 530 TestCompletionCallback callback;
520 531
521 int rv = trans->Start(&request, &callback, NULL); 532 int rv = trans->Start(&request, &callback, NULL);
522 EXPECT_EQ(ERR_IO_PENDING, rv); 533 EXPECT_EQ(ERR_IO_PENDING, rv);
523 534
524 rv = callback.WaitForResult(); 535 rv = callback.WaitForResult();
525 EXPECT_EQ(OK, rv); 536 EXPECT_EQ(OK, rv);
526 537
(...skipping 16 matching lines...) Expand all
543 554
544 HttpRequestInfo request; 555 HttpRequestInfo request;
545 request.method = "POST"; 556 request.method = "POST";
546 request.url = GURL("http://www.foo.com/"); 557 request.url = GURL("http://www.foo.com/");
547 request.load_flags = 0; 558 request.load_flags = 0;
548 559
549 MockRead data_reads[] = { 560 MockRead data_reads[] = {
550 MockRead(false, "HTTP/1.0 100 Continue\r\n"), 561 MockRead(false, "HTTP/1.0 100 Continue\r\n"),
551 MockRead(true, 0), 562 MockRead(true, 0),
552 }; 563 };
553 StaticSocketDataProvider data(data_reads, NULL); 564 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
554 session_deps.socket_factory.AddSocketDataProvider(&data); 565 session_deps.socket_factory.AddSocketDataProvider(&data);
555 566
556 TestCompletionCallback callback; 567 TestCompletionCallback callback;
557 568
558 int rv = trans->Start(&request, &callback, NULL); 569 int rv = trans->Start(&request, &callback, NULL);
559 EXPECT_EQ(ERR_IO_PENDING, rv); 570 EXPECT_EQ(ERR_IO_PENDING, rv);
560 571
561 rv = callback.WaitForResult(); 572 rv = callback.WaitForResult();
562 EXPECT_EQ(OK, rv); 573 EXPECT_EQ(OK, rv);
563 574
564 std::string response_data; 575 std::string response_data;
565 rv = ReadTransaction(trans.get(), &response_data); 576 rv = ReadTransaction(trans.get(), &response_data);
566 EXPECT_EQ(OK, rv); 577 EXPECT_EQ(OK, rv);
567 EXPECT_EQ("", response_data); 578 EXPECT_EQ("", response_data);
568 } 579 }
569 580
570 TEST_F(HttpNetworkTransactionTest, EmptyResponse) { 581 TEST_F(HttpNetworkTransactionTest, EmptyResponse) {
571 SessionDependencies session_deps; 582 SessionDependencies session_deps;
572 scoped_ptr<HttpTransaction> trans( 583 scoped_ptr<HttpTransaction> trans(
573 new HttpNetworkTransaction(CreateSession(&session_deps))); 584 new HttpNetworkTransaction(CreateSession(&session_deps)));
574 585
575 HttpRequestInfo request; 586 HttpRequestInfo request;
576 request.method = "POST"; 587 request.method = "POST";
577 request.url = GURL("http://www.foo.com/"); 588 request.url = GURL("http://www.foo.com/");
578 request.load_flags = 0; 589 request.load_flags = 0;
579 590
580 MockRead data_reads[] = { 591 MockRead data_reads[] = {
581 MockRead(true, 0), 592 MockRead(true, 0),
582 }; 593 };
583 StaticSocketDataProvider data(data_reads, NULL); 594 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
584 session_deps.socket_factory.AddSocketDataProvider(&data); 595 session_deps.socket_factory.AddSocketDataProvider(&data);
585 596
586 TestCompletionCallback callback; 597 TestCompletionCallback callback;
587 598
588 int rv = trans->Start(&request, &callback, NULL); 599 int rv = trans->Start(&request, &callback, NULL);
589 EXPECT_EQ(ERR_IO_PENDING, rv); 600 EXPECT_EQ(ERR_IO_PENDING, rv);
590 601
591 rv = callback.WaitForResult(); 602 rv = callback.WaitForResult();
592 EXPECT_EQ(ERR_EMPTY_RESPONSE, rv); 603 EXPECT_EQ(ERR_EMPTY_RESPONSE, rv);
593 } 604 }
594 605
595 // read_failure specifies a read failure that should cause the network 606 // read_failure specifies a read failure that should cause the network
596 // transaction to resend the request. 607 // transaction to resend the request.
597 void HttpNetworkTransactionTest::KeepAliveConnectionResendRequestTest( 608 void HttpNetworkTransactionTest::KeepAliveConnectionResendRequestTest(
598 const MockRead& read_failure) { 609 const MockRead& read_failure) {
599 SessionDependencies session_deps; 610 SessionDependencies session_deps;
600 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps); 611 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps);
601 612
602 HttpRequestInfo request; 613 HttpRequestInfo request;
603 request.method = "GET"; 614 request.method = "GET";
604 request.url = GURL("http://www.foo.com/"); 615 request.url = GURL("http://www.foo.com/");
605 request.load_flags = 0; 616 request.load_flags = 0;
606 617
607 MockRead data1_reads[] = { 618 MockRead data1_reads[] = {
608 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 619 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
609 MockRead("hello"), 620 MockRead("hello"),
610 read_failure, // Now, we reuse the connection and fail the first read. 621 read_failure, // Now, we reuse the connection and fail the first read.
611 }; 622 };
612 StaticSocketDataProvider data1(data1_reads, NULL); 623 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), NULL, 0);
613 session_deps.socket_factory.AddSocketDataProvider(&data1); 624 session_deps.socket_factory.AddSocketDataProvider(&data1);
614 625
615 MockRead data2_reads[] = { 626 MockRead data2_reads[] = {
616 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 627 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
617 MockRead("world"), 628 MockRead("world"),
618 MockRead(true, OK), 629 MockRead(true, OK),
619 }; 630 };
620 StaticSocketDataProvider data2(data2_reads, NULL); 631 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0);
621 session_deps.socket_factory.AddSocketDataProvider(&data2); 632 session_deps.socket_factory.AddSocketDataProvider(&data2);
622 633
623 const char* kExpectedResponseData[] = { 634 const char* kExpectedResponseData[] = {
624 "hello", "world" 635 "hello", "world"
625 }; 636 };
626 637
627 for (int i = 0; i < 2; ++i) { 638 for (int i = 0; i < 2; ++i) {
628 TestCompletionCallback callback; 639 TestCompletionCallback callback;
629 640
630 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 641 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 request.method = "GET"; 678 request.method = "GET";
668 request.url = GURL("http://www.google.com/"); 679 request.url = GURL("http://www.google.com/");
669 request.load_flags = 0; 680 request.load_flags = 0;
670 681
671 MockRead data_reads[] = { 682 MockRead data_reads[] = {
672 MockRead(true, ERR_CONNECTION_RESET), 683 MockRead(true, ERR_CONNECTION_RESET),
673 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used 684 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used
674 MockRead("hello world"), 685 MockRead("hello world"),
675 MockRead(false, OK), 686 MockRead(false, OK),
676 }; 687 };
677 StaticSocketDataProvider data(data_reads, NULL); 688 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
678 session_deps.socket_factory.AddSocketDataProvider(&data); 689 session_deps.socket_factory.AddSocketDataProvider(&data);
679 690
680 TestCompletionCallback callback; 691 TestCompletionCallback callback;
681 692
682 int rv = trans->Start(&request, &callback, NULL); 693 int rv = trans->Start(&request, &callback, NULL);
683 EXPECT_EQ(ERR_IO_PENDING, rv); 694 EXPECT_EQ(ERR_IO_PENDING, rv);
684 695
685 rv = callback.WaitForResult(); 696 rv = callback.WaitForResult();
686 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 697 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
687 698
(...skipping 10 matching lines...) Expand all
698 // Opera 9.52: after five attempts, blank page 709 // Opera 9.52: after five attempts, blank page
699 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE) 710 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE)
700 // Us: error page (EMPTY_RESPONSE) 711 // Us: error page (EMPTY_RESPONSE)
701 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) { 712 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) {
702 MockRead data_reads[] = { 713 MockRead data_reads[] = {
703 MockRead(false, OK), // EOF 714 MockRead(false, OK), // EOF
704 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used 715 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used
705 MockRead("hello world"), 716 MockRead("hello world"),
706 MockRead(false, OK), 717 MockRead(false, OK),
707 }; 718 };
708 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 719 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
720 arraysize(data_reads));
709 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv); 721 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv);
710 } 722 }
711 723
712 // Test the request-challenge-retry sequence for basic auth. 724 // Test the request-challenge-retry sequence for basic auth.
713 // (basic auth is the easiest to mock, because it has no randomness). 725 // (basic auth is the easiest to mock, because it has no randomness).
714 TEST_F(HttpNetworkTransactionTest, BasicAuth) { 726 TEST_F(HttpNetworkTransactionTest, BasicAuth) {
715 SessionDependencies session_deps; 727 SessionDependencies session_deps;
716 scoped_ptr<HttpTransaction> trans( 728 scoped_ptr<HttpTransaction> trans(
717 new HttpNetworkTransaction(CreateSession(&session_deps))); 729 new HttpNetworkTransaction(CreateSession(&session_deps)));
718 730
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 }; 762 };
751 763
752 // Lastly, the server responds with the actual content. 764 // Lastly, the server responds with the actual content.
753 MockRead data_reads2[] = { 765 MockRead data_reads2[] = {
754 MockRead("HTTP/1.0 200 OK\r\n"), 766 MockRead("HTTP/1.0 200 OK\r\n"),
755 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 767 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
756 MockRead("Content-Length: 100\r\n\r\n"), 768 MockRead("Content-Length: 100\r\n\r\n"),
757 MockRead(false, OK), 769 MockRead(false, OK),
758 }; 770 };
759 771
760 StaticSocketDataProvider data1(data_reads1, data_writes1); 772 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
761 StaticSocketDataProvider data2(data_reads2, data_writes2); 773 data_writes1, arraysize(data_writes1));
774 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
775 data_writes2, arraysize(data_writes2));
762 session_deps.socket_factory.AddSocketDataProvider(&data1); 776 session_deps.socket_factory.AddSocketDataProvider(&data1);
763 session_deps.socket_factory.AddSocketDataProvider(&data2); 777 session_deps.socket_factory.AddSocketDataProvider(&data2);
764 778
765 TestCompletionCallback callback1; 779 TestCompletionCallback callback1;
766 780
767 int rv = trans->Start(&request, &callback1, NULL); 781 int rv = trans->Start(&request, &callback1, NULL);
768 EXPECT_EQ(ERR_IO_PENDING, rv); 782 EXPECT_EQ(ERR_IO_PENDING, rv);
769 783
770 rv = callback1.WaitForResult(); 784 rv = callback1.WaitForResult();
771 EXPECT_EQ(OK, rv); 785 EXPECT_EQ(OK, rv);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 826
813 MockRead data_reads[] = { 827 MockRead data_reads[] = {
814 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 828 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
815 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 829 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
816 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 830 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
817 // Large content-length -- won't matter, as connection will be reset. 831 // Large content-length -- won't matter, as connection will be reset.
818 MockRead("Content-Length: 10000\r\n\r\n"), 832 MockRead("Content-Length: 10000\r\n\r\n"),
819 MockRead(false, ERR_FAILED), 833 MockRead(false, ERR_FAILED),
820 }; 834 };
821 835
822 StaticSocketDataProvider data(data_reads, data_writes); 836 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
837 data_writes, arraysize(data_writes));
823 session_deps.socket_factory.AddSocketDataProvider(&data); 838 session_deps.socket_factory.AddSocketDataProvider(&data);
824 TestCompletionCallback callback; 839 TestCompletionCallback callback;
825 840
826 int rv = trans->Start(&request, &callback, NULL); 841 int rv = trans->Start(&request, &callback, NULL);
827 EXPECT_EQ(ERR_IO_PENDING, rv); 842 EXPECT_EQ(ERR_IO_PENDING, rv);
828 843
829 rv = callback.WaitForResult(); 844 rv = callback.WaitForResult();
830 EXPECT_EQ(0, rv); 845 EXPECT_EQ(0, rv);
831 846
832 const HttpResponseInfo* response = trans->GetResponseInfo(); 847 const HttpResponseInfo* response = trans->GetResponseInfo();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 MockRead("Content-Length: 14\r\n\r\n"), 881 MockRead("Content-Length: 14\r\n\r\n"),
867 MockRead("Unauthorized\r\n"), 882 MockRead("Unauthorized\r\n"),
868 883
869 // Lastly, the server responds with the actual content. 884 // Lastly, the server responds with the actual content.
870 MockRead("HTTP/1.1 200 OK\r\n"), 885 MockRead("HTTP/1.1 200 OK\r\n"),
871 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 886 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
872 MockRead("Content-Length: 100\r\n\r\n"), 887 MockRead("Content-Length: 100\r\n\r\n"),
873 MockRead(false, OK), 888 MockRead(false, OK),
874 }; 889 };
875 890
876 StaticSocketDataProvider data1(data_reads1, data_writes1); 891 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
892 data_writes1, arraysize(data_writes1));
877 session_deps.socket_factory.AddSocketDataProvider(&data1); 893 session_deps.socket_factory.AddSocketDataProvider(&data1);
878 894
879 TestCompletionCallback callback1; 895 TestCompletionCallback callback1;
880 896
881 int rv = trans->Start(&request, &callback1, NULL); 897 int rv = trans->Start(&request, &callback1, NULL);
882 EXPECT_EQ(ERR_IO_PENDING, rv); 898 EXPECT_EQ(ERR_IO_PENDING, rv);
883 899
884 rv = callback1.WaitForResult(); 900 rv = callback1.WaitForResult();
885 EXPECT_EQ(OK, rv); 901 EXPECT_EQ(OK, rv);
886 902
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 954 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
939 MockRead("Content-Length: 0\r\n\r\n"), // No response body. 955 MockRead("Content-Length: 0\r\n\r\n"), // No response body.
940 956
941 // Lastly, the server responds with the actual content. 957 // Lastly, the server responds with the actual content.
942 MockRead("HTTP/1.1 200 OK\r\n"), 958 MockRead("HTTP/1.1 200 OK\r\n"),
943 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 959 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
944 MockRead("Content-Length: 100\r\n\r\n"), 960 MockRead("Content-Length: 100\r\n\r\n"),
945 MockRead(false, OK), 961 MockRead(false, OK),
946 }; 962 };
947 963
948 StaticSocketDataProvider data1(data_reads1, data_writes1); 964 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
965 data_writes1, arraysize(data_writes1));
949 session_deps.socket_factory.AddSocketDataProvider(&data1); 966 session_deps.socket_factory.AddSocketDataProvider(&data1);
950 967
951 TestCompletionCallback callback1; 968 TestCompletionCallback callback1;
952 969
953 int rv = trans->Start(&request, &callback1, NULL); 970 int rv = trans->Start(&request, &callback1, NULL);
954 EXPECT_EQ(ERR_IO_PENDING, rv); 971 EXPECT_EQ(ERR_IO_PENDING, rv);
955 972
956 rv = callback1.WaitForResult(); 973 rv = callback1.WaitForResult();
957 EXPECT_EQ(OK, rv); 974 EXPECT_EQ(OK, rv);
958 975
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 MockRead("Content-Length: 5134\r\n\r\n"), 1035 MockRead("Content-Length: 5134\r\n\r\n"),
1019 MockRead(true, large_body_string.data(), large_body_string.size()), 1036 MockRead(true, large_body_string.data(), large_body_string.size()),
1020 1037
1021 // Lastly, the server responds with the actual content. 1038 // Lastly, the server responds with the actual content.
1022 MockRead("HTTP/1.1 200 OK\r\n"), 1039 MockRead("HTTP/1.1 200 OK\r\n"),
1023 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1040 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1024 MockRead("Content-Length: 100\r\n\r\n"), 1041 MockRead("Content-Length: 100\r\n\r\n"),
1025 MockRead(false, OK), 1042 MockRead(false, OK),
1026 }; 1043 };
1027 1044
1028 StaticSocketDataProvider data1(data_reads1, data_writes1); 1045 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1046 data_writes1, arraysize(data_writes1));
1029 session_deps.socket_factory.AddSocketDataProvider(&data1); 1047 session_deps.socket_factory.AddSocketDataProvider(&data1);
1030 1048
1031 TestCompletionCallback callback1; 1049 TestCompletionCallback callback1;
1032 1050
1033 int rv = trans->Start(&request, &callback1, NULL); 1051 int rv = trans->Start(&request, &callback1, NULL);
1034 EXPECT_EQ(ERR_IO_PENDING, rv); 1052 EXPECT_EQ(ERR_IO_PENDING, rv);
1035 1053
1036 rv = callback1.WaitForResult(); 1054 rv = callback1.WaitForResult();
1037 EXPECT_EQ(OK, rv); 1055 EXPECT_EQ(OK, rv);
1038 1056
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1105 }; 1123 };
1106 1124
1107 // Lastly, the server responds with the actual content. 1125 // Lastly, the server responds with the actual content.
1108 MockRead data_reads2[] = { 1126 MockRead data_reads2[] = {
1109 MockRead("HTTP/1.1 200 OK\r\n"), 1127 MockRead("HTTP/1.1 200 OK\r\n"),
1110 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1128 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1111 MockRead("Content-Length: 100\r\n\r\n"), 1129 MockRead("Content-Length: 100\r\n\r\n"),
1112 MockRead(false, OK), 1130 MockRead(false, OK),
1113 }; 1131 };
1114 1132
1115 StaticSocketDataProvider data1(data_reads1, data_writes1); 1133 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1116 StaticSocketDataProvider data2(data_reads2, data_writes2); 1134 data_writes1, arraysize(data_writes1));
1135 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1136 data_writes2, arraysize(data_writes2));
1117 session_deps.socket_factory.AddSocketDataProvider(&data1); 1137 session_deps.socket_factory.AddSocketDataProvider(&data1);
1118 session_deps.socket_factory.AddSocketDataProvider(&data2); 1138 session_deps.socket_factory.AddSocketDataProvider(&data2);
1119 1139
1120 TestCompletionCallback callback1; 1140 TestCompletionCallback callback1;
1121 1141
1122 int rv = trans->Start(&request, &callback1, NULL); 1142 int rv = trans->Start(&request, &callback1, NULL);
1123 EXPECT_EQ(ERR_IO_PENDING, rv); 1143 EXPECT_EQ(ERR_IO_PENDING, rv);
1124 1144
1125 rv = callback1.WaitForResult(); 1145 rv = callback1.WaitForResult();
1126 EXPECT_EQ(OK, rv); 1146 EXPECT_EQ(OK, rv);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 MockRead("0123456789"), 1209 MockRead("0123456789"),
1190 1210
1191 // Wrong credentials (wrong password). 1211 // Wrong credentials (wrong password).
1192 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 1212 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
1193 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1213 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1194 MockRead("Content-Length: 10\r\n\r\n"), 1214 MockRead("Content-Length: 10\r\n\r\n"),
1195 // No response body because the test stops reading here. 1215 // No response body because the test stops reading here.
1196 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 1216 MockRead(false, ERR_UNEXPECTED), // Should not be reached.
1197 }; 1217 };
1198 1218
1199 StaticSocketDataProvider data1(data_reads1, data_writes1); 1219 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1220 data_writes1, arraysize(data_writes1));
1200 session_deps.socket_factory.AddSocketDataProvider(&data1); 1221 session_deps.socket_factory.AddSocketDataProvider(&data1);
1201 1222
1202 TestCompletionCallback callback1; 1223 TestCompletionCallback callback1;
1203 1224
1204 int rv = trans->Start(&request, &callback1, NULL); 1225 int rv = trans->Start(&request, &callback1, NULL);
1205 EXPECT_EQ(ERR_IO_PENDING, rv); 1226 EXPECT_EQ(ERR_IO_PENDING, rv);
1206 1227
1207 rv = callback1.WaitForResult(); 1228 rv = callback1.WaitForResult();
1208 EXPECT_EQ(OK, rv); 1229 EXPECT_EQ(OK, rv);
1209 1230
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 }; 1291 };
1271 1292
1272 // The proxy responds to the connect with a 407. 1293 // The proxy responds to the connect with a 407.
1273 MockRead data_reads[] = { 1294 MockRead data_reads[] = {
1274 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 1295 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
1275 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1296 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1276 MockRead("Content-Length: 10\r\n\r\n"), 1297 MockRead("Content-Length: 10\r\n\r\n"),
1277 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 1298 MockRead(false, ERR_UNEXPECTED), // Should not be reached.
1278 }; 1299 };
1279 1300
1280 StaticSocketDataProvider data(data_reads, data_writes); 1301 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
1302 data_writes, arraysize(data_writes));
1281 session_deps.socket_factory.AddSocketDataProvider(&data); 1303 session_deps.socket_factory.AddSocketDataProvider(&data);
1282 1304
1283 TestCompletionCallback callback; 1305 TestCompletionCallback callback;
1284 1306
1285 int rv = trans->Start(&request, &callback, NULL); 1307 int rv = trans->Start(&request, &callback, NULL);
1286 EXPECT_EQ(ERR_IO_PENDING, rv); 1308 EXPECT_EQ(ERR_IO_PENDING, rv);
1287 1309
1288 rv = callback.WaitForResult(); 1310 rv = callback.WaitForResult();
1289 EXPECT_EQ(OK, rv); 1311 EXPECT_EQ(OK, rv);
1290 1312
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1322 "Proxy-Connection: keep-alive\r\n\r\n"), 1344 "Proxy-Connection: keep-alive\r\n\r\n"),
1323 }; 1345 };
1324 1346
1325 MockRead data_reads[] = { 1347 MockRead data_reads[] = {
1326 status, 1348 status,
1327 MockRead("Content-Length: 10\r\n\r\n"), 1349 MockRead("Content-Length: 10\r\n\r\n"),
1328 // No response body because the test stops reading here. 1350 // No response body because the test stops reading here.
1329 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 1351 MockRead(false, ERR_UNEXPECTED), // Should not be reached.
1330 }; 1352 };
1331 1353
1332 StaticSocketDataProvider data(data_reads, data_writes); 1354 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
1355 data_writes, arraysize(data_writes));
1333 session_deps.socket_factory.AddSocketDataProvider(&data); 1356 session_deps.socket_factory.AddSocketDataProvider(&data);
1334 1357
1335 TestCompletionCallback callback; 1358 TestCompletionCallback callback;
1336 1359
1337 int rv = trans->Start(&request, &callback, NULL); 1360 int rv = trans->Start(&request, &callback, NULL);
1338 EXPECT_EQ(ERR_IO_PENDING, rv); 1361 EXPECT_EQ(ERR_IO_PENDING, rv);
1339 1362
1340 rv = callback.WaitForResult(); 1363 rv = callback.WaitForResult();
1341 EXPECT_EQ(expected_status, rv); 1364 EXPECT_EQ(expected_status, rv);
1342 } 1365 }
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1577 }; 1600 };
1578 1601
1579 // Lastly we get the desired content. 1602 // Lastly we get the desired content.
1580 MockRead data_reads3[] = { 1603 MockRead data_reads3[] = {
1581 MockRead("HTTP/1.0 200 OK\r\n"), 1604 MockRead("HTTP/1.0 200 OK\r\n"),
1582 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1605 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1583 MockRead("Content-Length: 100\r\n\r\n"), 1606 MockRead("Content-Length: 100\r\n\r\n"),
1584 MockRead(false, OK), 1607 MockRead(false, OK),
1585 }; 1608 };
1586 1609
1587 StaticSocketDataProvider data1(data_reads1, data_writes1); 1610 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1588 StaticSocketDataProvider data2(data_reads2, data_writes2); 1611 data_writes1, arraysize(data_writes1));
1589 StaticSocketDataProvider data3(data_reads3, data_writes3); 1612 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1613 data_writes2, arraysize(data_writes2));
1614 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
1615 data_writes3, arraysize(data_writes3));
1590 session_deps.socket_factory.AddSocketDataProvider(&data1); 1616 session_deps.socket_factory.AddSocketDataProvider(&data1);
1591 session_deps.socket_factory.AddSocketDataProvider(&data2); 1617 session_deps.socket_factory.AddSocketDataProvider(&data2);
1592 session_deps.socket_factory.AddSocketDataProvider(&data3); 1618 session_deps.socket_factory.AddSocketDataProvider(&data3);
1593 1619
1594 TestCompletionCallback callback1; 1620 TestCompletionCallback callback1;
1595 1621
1596 int rv = trans->Start(&request, &callback1, NULL); 1622 int rv = trans->Start(&request, &callback1, NULL);
1597 EXPECT_EQ(ERR_IO_PENDING, rv); 1623 EXPECT_EQ(ERR_IO_PENDING, rv);
1598 1624
1599 rv = callback1.WaitForResult(); 1625 rv = callback1.WaitForResult();
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1716 MockRead("You are not authorized to view this page\r\n"), 1742 MockRead("You are not authorized to view this page\r\n"),
1717 1743
1718 // Lastly we get the desired content. 1744 // Lastly we get the desired content.
1719 MockRead("HTTP/1.1 200 OK\r\n"), 1745 MockRead("HTTP/1.1 200 OK\r\n"),
1720 MockRead("Content-Type: text/html; charset=utf-8\r\n"), 1746 MockRead("Content-Type: text/html; charset=utf-8\r\n"),
1721 MockRead("Content-Length: 13\r\n\r\n"), 1747 MockRead("Content-Length: 13\r\n\r\n"),
1722 MockRead("Please Login\r\n"), 1748 MockRead("Please Login\r\n"),
1723 MockRead(false, OK), 1749 MockRead(false, OK),
1724 }; 1750 };
1725 1751
1726 StaticSocketDataProvider data1(data_reads1, data_writes1); 1752 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1727 StaticSocketDataProvider data2(data_reads2, data_writes2); 1753 data_writes1, arraysize(data_writes1));
1754 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1755 data_writes2, arraysize(data_writes2));
1728 session_deps.socket_factory.AddSocketDataProvider(&data1); 1756 session_deps.socket_factory.AddSocketDataProvider(&data1);
1729 session_deps.socket_factory.AddSocketDataProvider(&data2); 1757 session_deps.socket_factory.AddSocketDataProvider(&data2);
1730 1758
1731 TestCompletionCallback callback1; 1759 TestCompletionCallback callback1;
1732 1760
1733 int rv = trans->Start(&request, &callback1, NULL); 1761 int rv = trans->Start(&request, &callback1, NULL);
1734 EXPECT_EQ(ERR_IO_PENDING, rv); 1762 EXPECT_EQ(ERR_IO_PENDING, rv);
1735 1763
1736 rv = callback1.WaitForResult(); 1764 rv = callback1.WaitForResult();
1737 EXPECT_EQ(OK, rv); 1765 EXPECT_EQ(OK, rv);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1886 MockRead("You are not authorized to view this page\r\n"), 1914 MockRead("You are not authorized to view this page\r\n"),
1887 1915
1888 // Lastly we get the desired content. 1916 // Lastly we get the desired content.
1889 MockRead("HTTP/1.1 200 OK\r\n"), 1917 MockRead("HTTP/1.1 200 OK\r\n"),
1890 MockRead("Content-Type: text/html; charset=utf-8\r\n"), 1918 MockRead("Content-Type: text/html; charset=utf-8\r\n"),
1891 MockRead("Content-Length: 13\r\n\r\n"), 1919 MockRead("Content-Length: 13\r\n\r\n"),
1892 MockRead("Please Login\r\n"), 1920 MockRead("Please Login\r\n"),
1893 MockRead(false, OK), 1921 MockRead(false, OK),
1894 }; 1922 };
1895 1923
1896 StaticSocketDataProvider data1(data_reads1, data_writes1); 1924 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1897 StaticSocketDataProvider data2(data_reads2, data_writes2); 1925 data_writes1, arraysize(data_writes1));
1898 StaticSocketDataProvider data3(data_reads3, data_writes3); 1926 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1927 data_writes2, arraysize(data_writes2));
1928 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
1929 data_writes3, arraysize(data_writes3));
1899 session_deps.socket_factory.AddSocketDataProvider(&data1); 1930 session_deps.socket_factory.AddSocketDataProvider(&data1);
1900 session_deps.socket_factory.AddSocketDataProvider(&data2); 1931 session_deps.socket_factory.AddSocketDataProvider(&data2);
1901 session_deps.socket_factory.AddSocketDataProvider(&data3); 1932 session_deps.socket_factory.AddSocketDataProvider(&data3);
1902 1933
1903 TestCompletionCallback callback1; 1934 TestCompletionCallback callback1;
1904 1935
1905 int rv = trans->Start(&request, &callback1, NULL); 1936 int rv = trans->Start(&request, &callback1, NULL);
1906 EXPECT_EQ(ERR_IO_PENDING, rv); 1937 EXPECT_EQ(ERR_IO_PENDING, rv);
1907 1938
1908 rv = callback1.WaitForResult(); 1939 rv = callback1.WaitForResult();
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 // Respond with 300 kb of headers (we should fail after 256 kb). 2015 // Respond with 300 kb of headers (we should fail after 256 kb).
1985 std::string large_headers_string; 2016 std::string large_headers_string;
1986 FillLargeHeadersString(&large_headers_string, 300 * 1024); 2017 FillLargeHeadersString(&large_headers_string, 300 * 1024);
1987 2018
1988 MockRead data_reads[] = { 2019 MockRead data_reads[] = {
1989 MockRead("HTTP/1.0 200 OK\r\n"), 2020 MockRead("HTTP/1.0 200 OK\r\n"),
1990 MockRead(true, large_headers_string.data(), large_headers_string.size()), 2021 MockRead(true, large_headers_string.data(), large_headers_string.size()),
1991 MockRead("\r\nBODY"), 2022 MockRead("\r\nBODY"),
1992 MockRead(false, OK), 2023 MockRead(false, OK),
1993 }; 2024 };
1994 StaticSocketDataProvider data(data_reads, NULL); 2025 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
1995 session_deps.socket_factory.AddSocketDataProvider(&data); 2026 session_deps.socket_factory.AddSocketDataProvider(&data);
1996 2027
1997 TestCompletionCallback callback; 2028 TestCompletionCallback callback;
1998 2029
1999 int rv = trans->Start(&request, &callback, NULL); 2030 int rv = trans->Start(&request, &callback, NULL);
2000 EXPECT_EQ(ERR_IO_PENDING, rv); 2031 EXPECT_EQ(ERR_IO_PENDING, rv);
2001 2032
2002 rv = callback.WaitForResult(); 2033 rv = callback.WaitForResult();
2003 EXPECT_EQ(ERR_RESPONSE_HEADERS_TOO_BIG, rv); 2034 EXPECT_EQ(ERR_RESPONSE_HEADERS_TOO_BIG, rv);
2004 2035
(...skipping 26 matching lines...) Expand all
2031 2062
2032 // The proxy responds to the connect with a 404, using a persistent 2063 // The proxy responds to the connect with a 404, using a persistent
2033 // connection. Usually a proxy would return 501 (not implemented), 2064 // connection. Usually a proxy would return 501 (not implemented),
2034 // or 200 (tunnel established). 2065 // or 200 (tunnel established).
2035 MockRead data_reads1[] = { 2066 MockRead data_reads1[] = {
2036 MockRead("HTTP/1.1 404 Not Found\r\n"), 2067 MockRead("HTTP/1.1 404 Not Found\r\n"),
2037 MockRead("Content-Length: 10\r\n\r\n"), 2068 MockRead("Content-Length: 10\r\n\r\n"),
2038 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 2069 MockRead(false, ERR_UNEXPECTED), // Should not be reached.
2039 }; 2070 };
2040 2071
2041 StaticSocketDataProvider data1(data_reads1, data_writes1); 2072 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2073 data_writes1, arraysize(data_writes1));
2042 session_deps.socket_factory.AddSocketDataProvider(&data1); 2074 session_deps.socket_factory.AddSocketDataProvider(&data1);
2043 2075
2044 TestCompletionCallback callback1; 2076 TestCompletionCallback callback1;
2045 2077
2046 int rv = trans->Start(&request, &callback1, NULL); 2078 int rv = trans->Start(&request, &callback1, NULL);
2047 EXPECT_EQ(ERR_IO_PENDING, rv); 2079 EXPECT_EQ(ERR_IO_PENDING, rv);
2048 2080
2049 rv = callback1.WaitForResult(); 2081 rv = callback1.WaitForResult();
2050 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); 2082 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv);
2051 2083
(...skipping 28 matching lines...) Expand all
2080 MockRead data_reads[] = { 2112 MockRead data_reads[] = {
2081 // A part of the response body is received with the response headers. 2113 // A part of the response body is received with the response headers.
2082 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"), 2114 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"),
2083 // The rest of the response body is received in two parts. 2115 // The rest of the response body is received in two parts.
2084 MockRead("lo"), 2116 MockRead("lo"),
2085 MockRead(" world"), 2117 MockRead(" world"),
2086 MockRead("junk"), // Should not be read!! 2118 MockRead("junk"), // Should not be read!!
2087 MockRead(false, OK), 2119 MockRead(false, OK),
2088 }; 2120 };
2089 2121
2090 StaticSocketDataProvider data(data_reads, NULL); 2122 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
2091 session_deps.socket_factory.AddSocketDataProvider(&data); 2123 session_deps.socket_factory.AddSocketDataProvider(&data);
2092 2124
2093 TestCompletionCallback callback; 2125 TestCompletionCallback callback;
2094 2126
2095 int rv = trans->Start(&request, &callback, NULL); 2127 int rv = trans->Start(&request, &callback, NULL);
2096 EXPECT_EQ(ERR_IO_PENDING, rv); 2128 EXPECT_EQ(ERR_IO_PENDING, rv);
2097 2129
2098 rv = callback.WaitForResult(); 2130 rv = callback.WaitForResult();
2099 EXPECT_EQ(OK, rv); 2131 EXPECT_EQ(OK, rv);
2100 2132
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2137 request.load_flags = 0; 2169 request.load_flags = 0;
2138 2170
2139 MockRead data_reads[] = { 2171 MockRead data_reads[] = {
2140 MockRead("HTTP/1.1 204 No Content\r\n" 2172 MockRead("HTTP/1.1 204 No Content\r\n"
2141 "Content-Length: 0\r\n" 2173 "Content-Length: 0\r\n"
2142 "Content-Type: text/html\r\n\r\n"), 2174 "Content-Type: text/html\r\n\r\n"),
2143 MockRead("junk"), // Should not be read!! 2175 MockRead("junk"), // Should not be read!!
2144 MockRead(false, OK), 2176 MockRead(false, OK),
2145 }; 2177 };
2146 2178
2147 StaticSocketDataProvider data(data_reads, NULL); 2179 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
2148 session_deps.socket_factory.AddSocketDataProvider(&data); 2180 session_deps.socket_factory.AddSocketDataProvider(&data);
2149 2181
2150 TestCompletionCallback callback; 2182 TestCompletionCallback callback;
2151 2183
2152 int rv = trans->Start(&request, &callback, NULL); 2184 int rv = trans->Start(&request, &callback, NULL);
2153 EXPECT_EQ(ERR_IO_PENDING, rv); 2185 EXPECT_EQ(ERR_IO_PENDING, rv);
2154 2186
2155 rv = callback.WaitForResult(); 2187 rv = callback.WaitForResult();
2156 EXPECT_EQ(OK, rv); 2188 EXPECT_EQ(OK, rv);
2157 2189
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2206 MockRead("hello world"), 2238 MockRead("hello world"),
2207 MockRead(false, OK), 2239 MockRead(false, OK),
2208 }; 2240 };
2209 // The mock write results of transaction 1 and the first attempt of 2241 // The mock write results of transaction 1 and the first attempt of
2210 // transaction 2. 2242 // transaction 2.
2211 MockWrite data_writes1[] = { 2243 MockWrite data_writes1[] = {
2212 MockWrite(false, 64), // GET 2244 MockWrite(false, 64), // GET
2213 MockWrite(false, 93), // POST 2245 MockWrite(false, 93), // POST
2214 MockWrite(false, ERR_CONNECTION_ABORTED), // POST data 2246 MockWrite(false, ERR_CONNECTION_ABORTED), // POST data
2215 }; 2247 };
2216 StaticSocketDataProvider data1(data_reads1, data_writes1); 2248 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2249 data_writes1, arraysize(data_writes1));
2217 2250
2218 // The second socket is used for the second attempt of transaction 2. 2251 // The second socket is used for the second attempt of transaction 2.
2219 2252
2220 // The response of transaction 2. 2253 // The response of transaction 2.
2221 MockRead data_reads2[] = { 2254 MockRead data_reads2[] = {
2222 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"), 2255 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"),
2223 MockRead("welcome"), 2256 MockRead("welcome"),
2224 MockRead(false, OK), 2257 MockRead(false, OK),
2225 }; 2258 };
2226 // The mock write results of the second attempt of transaction 2. 2259 // The mock write results of the second attempt of transaction 2.
2227 MockWrite data_writes2[] = { 2260 MockWrite data_writes2[] = {
2228 MockWrite(false, 93), // POST 2261 MockWrite(false, 93), // POST
2229 MockWrite(false, 3), // POST data 2262 MockWrite(false, 3), // POST data
2230 }; 2263 };
2231 StaticSocketDataProvider data2(data_reads2, data_writes2); 2264 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2265 data_writes2, arraysize(data_writes2));
2232 2266
2233 session_deps.socket_factory.AddSocketDataProvider(&data1); 2267 session_deps.socket_factory.AddSocketDataProvider(&data1);
2234 session_deps.socket_factory.AddSocketDataProvider(&data2); 2268 session_deps.socket_factory.AddSocketDataProvider(&data2);
2235 2269
2236 const char* kExpectedResponseData[] = { 2270 const char* kExpectedResponseData[] = {
2237 "hello world", "welcome" 2271 "hello world", "welcome"
2238 }; 2272 };
2239 2273
2240 for (int i = 0; i < 2; ++i) { 2274 for (int i = 0; i < 2; ++i) {
2241 scoped_ptr<HttpTransaction> trans( 2275 scoped_ptr<HttpTransaction> trans(
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2302 "Connection: keep-alive\r\n" 2336 "Connection: keep-alive\r\n"
2303 "Authorization: Basic Zm9vOmJAcg==\r\n\r\n"), 2337 "Authorization: Basic Zm9vOmJAcg==\r\n\r\n"),
2304 }; 2338 };
2305 2339
2306 MockRead data_reads2[] = { 2340 MockRead data_reads2[] = {
2307 MockRead("HTTP/1.0 200 OK\r\n"), 2341 MockRead("HTTP/1.0 200 OK\r\n"),
2308 MockRead("Content-Length: 100\r\n\r\n"), 2342 MockRead("Content-Length: 100\r\n\r\n"),
2309 MockRead(false, OK), 2343 MockRead(false, OK),
2310 }; 2344 };
2311 2345
2312 StaticSocketDataProvider data1(data_reads1, data_writes1); 2346 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2313 StaticSocketDataProvider data2(data_reads2, data_writes2); 2347 data_writes1, arraysize(data_writes1));
2348 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2349 data_writes2, arraysize(data_writes2));
2314 session_deps.socket_factory.AddSocketDataProvider(&data1); 2350 session_deps.socket_factory.AddSocketDataProvider(&data1);
2315 session_deps.socket_factory.AddSocketDataProvider(&data2); 2351 session_deps.socket_factory.AddSocketDataProvider(&data2);
2316 2352
2317 TestCompletionCallback callback1; 2353 TestCompletionCallback callback1;
2318 2354
2319 int rv = trans->Start(&request, &callback1, NULL); 2355 int rv = trans->Start(&request, &callback1, NULL);
2320 EXPECT_EQ(ERR_IO_PENDING, rv); 2356 EXPECT_EQ(ERR_IO_PENDING, rv);
2321 2357
2322 rv = callback1.WaitForResult(); 2358 rv = callback1.WaitForResult();
2323 EXPECT_EQ(OK, rv); 2359 EXPECT_EQ(OK, rv);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
2395 "Connection: keep-alive\r\n" 2431 "Connection: keep-alive\r\n"
2396 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 2432 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
2397 }; 2433 };
2398 2434
2399 MockRead data_reads3[] = { 2435 MockRead data_reads3[] = {
2400 MockRead("HTTP/1.0 200 OK\r\n"), 2436 MockRead("HTTP/1.0 200 OK\r\n"),
2401 MockRead("Content-Length: 100\r\n\r\n"), 2437 MockRead("Content-Length: 100\r\n\r\n"),
2402 MockRead(false, OK), 2438 MockRead(false, OK),
2403 }; 2439 };
2404 2440
2405 StaticSocketDataProvider data1(data_reads1, data_writes1); 2441 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2406 StaticSocketDataProvider data2(data_reads2, data_writes2); 2442 data_writes1, arraysize(data_writes1));
2407 StaticSocketDataProvider data3(data_reads3, data_writes3); 2443 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2444 data_writes2, arraysize(data_writes2));
2445 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
2446 data_writes3, arraysize(data_writes3));
2408 session_deps.socket_factory.AddSocketDataProvider(&data1); 2447 session_deps.socket_factory.AddSocketDataProvider(&data1);
2409 session_deps.socket_factory.AddSocketDataProvider(&data2); 2448 session_deps.socket_factory.AddSocketDataProvider(&data2);
2410 session_deps.socket_factory.AddSocketDataProvider(&data3); 2449 session_deps.socket_factory.AddSocketDataProvider(&data3);
2411 2450
2412 TestCompletionCallback callback1; 2451 TestCompletionCallback callback1;
2413 2452
2414 int rv = trans->Start(&request, &callback1, NULL); 2453 int rv = trans->Start(&request, &callback1, NULL);
2415 EXPECT_EQ(ERR_IO_PENDING, rv); 2454 EXPECT_EQ(ERR_IO_PENDING, rv);
2416 2455
2417 rv = callback1.WaitForResult(); 2456 rv = callback1.WaitForResult();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
2488 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 2527 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
2489 }; 2528 };
2490 2529
2491 // Sever accepts the authorization. 2530 // Sever accepts the authorization.
2492 MockRead data_reads2[] = { 2531 MockRead data_reads2[] = {
2493 MockRead("HTTP/1.0 200 OK\r\n"), 2532 MockRead("HTTP/1.0 200 OK\r\n"),
2494 MockRead("Content-Length: 100\r\n\r\n"), 2533 MockRead("Content-Length: 100\r\n\r\n"),
2495 MockRead(false, OK), 2534 MockRead(false, OK),
2496 }; 2535 };
2497 2536
2498 StaticSocketDataProvider data1(data_reads1, data_writes1); 2537 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2499 StaticSocketDataProvider data2(data_reads2, data_writes2); 2538 data_writes1, arraysize(data_writes1));
2539 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2540 data_writes2, arraysize(data_writes2));
2500 session_deps.socket_factory.AddSocketDataProvider(&data1); 2541 session_deps.socket_factory.AddSocketDataProvider(&data1);
2501 session_deps.socket_factory.AddSocketDataProvider(&data2); 2542 session_deps.socket_factory.AddSocketDataProvider(&data2);
2502 2543
2503 TestCompletionCallback callback1; 2544 TestCompletionCallback callback1;
2504 2545
2505 int rv = trans->Start(&request, &callback1, NULL); 2546 int rv = trans->Start(&request, &callback1, NULL);
2506 EXPECT_EQ(ERR_IO_PENDING, rv); 2547 EXPECT_EQ(ERR_IO_PENDING, rv);
2507 2548
2508 rv = callback1.WaitForResult(); 2549 rv = callback1.WaitForResult();
2509 EXPECT_EQ(OK, rv); 2550 EXPECT_EQ(OK, rv);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2571 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), 2612 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"),
2572 }; 2613 };
2573 2614
2574 // Sever accepts the authorization. 2615 // Sever accepts the authorization.
2575 MockRead data_reads2[] = { 2616 MockRead data_reads2[] = {
2576 MockRead("HTTP/1.0 200 OK\r\n"), 2617 MockRead("HTTP/1.0 200 OK\r\n"),
2577 MockRead("Content-Length: 100\r\n\r\n"), 2618 MockRead("Content-Length: 100\r\n\r\n"),
2578 MockRead(false, OK), 2619 MockRead(false, OK),
2579 }; 2620 };
2580 2621
2581 StaticSocketDataProvider data1(data_reads1, data_writes1); 2622 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2582 StaticSocketDataProvider data2(data_reads2, data_writes2); 2623 data_writes1, arraysize(data_writes1));
2624 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2625 data_writes2, arraysize(data_writes2));
2583 session_deps.socket_factory.AddSocketDataProvider(&data1); 2626 session_deps.socket_factory.AddSocketDataProvider(&data1);
2584 session_deps.socket_factory.AddSocketDataProvider(&data2); 2627 session_deps.socket_factory.AddSocketDataProvider(&data2);
2585 2628
2586 TestCompletionCallback callback1; 2629 TestCompletionCallback callback1;
2587 2630
2588 int rv = trans->Start(&request, &callback1, NULL); 2631 int rv = trans->Start(&request, &callback1, NULL);
2589 EXPECT_EQ(ERR_IO_PENDING, rv); 2632 EXPECT_EQ(ERR_IO_PENDING, rv);
2590 2633
2591 rv = callback1.WaitForResult(); 2634 rv = callback1.WaitForResult();
2592 EXPECT_EQ(OK, rv); 2635 EXPECT_EQ(OK, rv);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2637 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 2680 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
2638 }; 2681 };
2639 2682
2640 // Sever accepts the preemptive authorization 2683 // Sever accepts the preemptive authorization
2641 MockRead data_reads1[] = { 2684 MockRead data_reads1[] = {
2642 MockRead("HTTP/1.0 200 OK\r\n"), 2685 MockRead("HTTP/1.0 200 OK\r\n"),
2643 MockRead("Content-Length: 100\r\n\r\n"), 2686 MockRead("Content-Length: 100\r\n\r\n"),
2644 MockRead(false, OK), 2687 MockRead(false, OK),
2645 }; 2688 };
2646 2689
2647 StaticSocketDataProvider data1(data_reads1, data_writes1); 2690 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2691 data_writes1, arraysize(data_writes1));
2648 session_deps.socket_factory.AddSocketDataProvider(&data1); 2692 session_deps.socket_factory.AddSocketDataProvider(&data1);
2649 2693
2650 TestCompletionCallback callback1; 2694 TestCompletionCallback callback1;
2651 2695
2652 int rv = trans->Start(&request, &callback1, NULL); 2696 int rv = trans->Start(&request, &callback1, NULL);
2653 EXPECT_EQ(ERR_IO_PENDING, rv); 2697 EXPECT_EQ(ERR_IO_PENDING, rv);
2654 2698
2655 rv = callback1.WaitForResult(); 2699 rv = callback1.WaitForResult();
2656 EXPECT_EQ(OK, rv); 2700 EXPECT_EQ(OK, rv);
2657 2701
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2695 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 2739 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
2696 }; 2740 };
2697 2741
2698 // Sever accepts the authorization. 2742 // Sever accepts the authorization.
2699 MockRead data_reads2[] = { 2743 MockRead data_reads2[] = {
2700 MockRead("HTTP/1.0 200 OK\r\n"), 2744 MockRead("HTTP/1.0 200 OK\r\n"),
2701 MockRead("Content-Length: 100\r\n\r\n"), 2745 MockRead("Content-Length: 100\r\n\r\n"),
2702 MockRead(false, OK), 2746 MockRead(false, OK),
2703 }; 2747 };
2704 2748
2705 StaticSocketDataProvider data1(data_reads1, data_writes1); 2749 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2706 StaticSocketDataProvider data2(data_reads2, data_writes2); 2750 data_writes1, arraysize(data_writes1));
2751 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2752 data_writes2, arraysize(data_writes2));
2707 session_deps.socket_factory.AddSocketDataProvider(&data1); 2753 session_deps.socket_factory.AddSocketDataProvider(&data1);
2708 session_deps.socket_factory.AddSocketDataProvider(&data2); 2754 session_deps.socket_factory.AddSocketDataProvider(&data2);
2709 2755
2710 TestCompletionCallback callback1; 2756 TestCompletionCallback callback1;
2711 2757
2712 int rv = trans->Start(&request, &callback1, NULL); 2758 int rv = trans->Start(&request, &callback1, NULL);
2713 EXPECT_EQ(ERR_IO_PENDING, rv); 2759 EXPECT_EQ(ERR_IO_PENDING, rv);
2714 2760
2715 rv = callback1.WaitForResult(); 2761 rv = callback1.WaitForResult();
2716 EXPECT_EQ(OK, rv); 2762 EXPECT_EQ(OK, rv);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2779 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"), 2825 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"),
2780 }; 2826 };
2781 2827
2782 // Sever accepts the authorization. 2828 // Sever accepts the authorization.
2783 MockRead data_reads3[] = { 2829 MockRead data_reads3[] = {
2784 MockRead("HTTP/1.0 200 OK\r\n"), 2830 MockRead("HTTP/1.0 200 OK\r\n"),
2785 MockRead("Content-Length: 100\r\n\r\n"), 2831 MockRead("Content-Length: 100\r\n\r\n"),
2786 MockRead(false, OK), 2832 MockRead(false, OK),
2787 }; 2833 };
2788 2834
2789 StaticSocketDataProvider data1(data_reads1, data_writes1); 2835 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2790 StaticSocketDataProvider data2(data_reads2, data_writes2); 2836 data_writes1, arraysize(data_writes1));
2791 StaticSocketDataProvider data3(data_reads3, data_writes3); 2837 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2838 data_writes2, arraysize(data_writes2));
2839 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
2840 data_writes3, arraysize(data_writes3));
2792 session_deps.socket_factory.AddSocketDataProvider(&data1); 2841 session_deps.socket_factory.AddSocketDataProvider(&data1);
2793 session_deps.socket_factory.AddSocketDataProvider(&data2); 2842 session_deps.socket_factory.AddSocketDataProvider(&data2);
2794 session_deps.socket_factory.AddSocketDataProvider(&data3); 2843 session_deps.socket_factory.AddSocketDataProvider(&data3);
2795 2844
2796 TestCompletionCallback callback1; 2845 TestCompletionCallback callback1;
2797 2846
2798 int rv = trans->Start(&request, &callback1, NULL); 2847 int rv = trans->Start(&request, &callback1, NULL);
2799 EXPECT_EQ(ERR_IO_PENDING, rv); 2848 EXPECT_EQ(ERR_IO_PENDING, rv);
2800 2849
2801 rv = callback1.WaitForResult(); 2850 rv = callback1.WaitForResult();
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
2895 }; 2944 };
2896 2945
2897 MockRead data_reads[] = { 2946 MockRead data_reads[] = {
2898 MockRead("HTTP/1.0 200 OK\r\n"), 2947 MockRead("HTTP/1.0 200 OK\r\n"),
2899 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2948 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2900 MockRead("Content-Length: 100\r\n\r\n"), 2949 MockRead("Content-Length: 100\r\n\r\n"),
2901 MockRead(false, OK), 2950 MockRead(false, OK),
2902 }; 2951 };
2903 2952
2904 StaticSocketDataProvider ssl_bad_certificate; 2953 StaticSocketDataProvider ssl_bad_certificate;
2905 StaticSocketDataProvider data(data_reads, data_writes); 2954 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
2955 data_writes, arraysize(data_writes));
2906 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 2956 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID);
2907 SSLSocketDataProvider ssl(true, OK); 2957 SSLSocketDataProvider ssl(true, OK);
2908 2958
2909 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 2959 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
2910 session_deps.socket_factory.AddSocketDataProvider(&data); 2960 session_deps.socket_factory.AddSocketDataProvider(&data);
2911 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 2961 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
2912 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2962 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2913 2963
2914 TestCompletionCallback callback; 2964 TestCompletionCallback callback;
2915 2965
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2962 }; 3012 };
2963 3013
2964 MockRead data_reads[] = { 3014 MockRead data_reads[] = {
2965 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 3015 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
2966 MockRead("HTTP/1.0 200 OK\r\n"), 3016 MockRead("HTTP/1.0 200 OK\r\n"),
2967 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3017 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2968 MockRead("Content-Length: 100\r\n\r\n"), 3018 MockRead("Content-Length: 100\r\n\r\n"),
2969 MockRead(false, OK), 3019 MockRead(false, OK),
2970 }; 3020 };
2971 3021
2972 StaticSocketDataProvider ssl_bad_certificate(proxy_reads, proxy_writes); 3022 StaticSocketDataProvider ssl_bad_certificate(
2973 StaticSocketDataProvider data(data_reads, data_writes); 3023 proxy_reads, arraysize(proxy_reads),
3024 proxy_writes, arraysize(proxy_writes));
3025 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3026 data_writes, arraysize(data_writes));
2974 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 3027 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID);
2975 SSLSocketDataProvider ssl(true, OK); 3028 SSLSocketDataProvider ssl(true, OK);
2976 3029
2977 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 3030 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
2978 session_deps.socket_factory.AddSocketDataProvider(&data); 3031 session_deps.socket_factory.AddSocketDataProvider(&data);
2979 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 3032 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
2980 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 3033 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2981 3034
2982 TestCompletionCallback callback; 3035 TestCompletionCallback callback;
2983 3036
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
3024 }; 3077 };
3025 3078
3026 // Lastly, the server responds with the actual content. 3079 // Lastly, the server responds with the actual content.
3027 MockRead data_reads[] = { 3080 MockRead data_reads[] = {
3028 MockRead("HTTP/1.0 200 OK\r\n"), 3081 MockRead("HTTP/1.0 200 OK\r\n"),
3029 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3082 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3030 MockRead("Content-Length: 100\r\n\r\n"), 3083 MockRead("Content-Length: 100\r\n\r\n"),
3031 MockRead(false, OK), 3084 MockRead(false, OK),
3032 }; 3085 };
3033 3086
3034 StaticSocketDataProvider data(data_reads, data_writes); 3087 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3088 data_writes, arraysize(data_writes));
3035 session_deps.socket_factory.AddSocketDataProvider(&data); 3089 session_deps.socket_factory.AddSocketDataProvider(&data);
3036 3090
3037 TestCompletionCallback callback; 3091 TestCompletionCallback callback;
3038 3092
3039 int rv = trans->Start(&request, &callback, NULL); 3093 int rv = trans->Start(&request, &callback, NULL);
3040 EXPECT_EQ(ERR_IO_PENDING, rv); 3094 EXPECT_EQ(ERR_IO_PENDING, rv);
3041 3095
3042 rv = callback.WaitForResult(); 3096 rv = callback.WaitForResult();
3043 EXPECT_EQ(OK, rv); 3097 EXPECT_EQ(OK, rv);
3044 } 3098 }
(...skipping 17 matching lines...) Expand all
3062 }; 3116 };
3063 3117
3064 // Lastly, the server responds with the actual content. 3118 // Lastly, the server responds with the actual content.
3065 MockRead data_reads[] = { 3119 MockRead data_reads[] = {
3066 MockRead("HTTP/1.0 200 OK\r\n"), 3120 MockRead("HTTP/1.0 200 OK\r\n"),
3067 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3121 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3068 MockRead("Content-Length: 100\r\n\r\n"), 3122 MockRead("Content-Length: 100\r\n\r\n"),
3069 MockRead(false, OK), 3123 MockRead(false, OK),
3070 }; 3124 };
3071 3125
3072 StaticSocketDataProvider data(data_reads, data_writes); 3126 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3127 data_writes, arraysize(data_writes));
3073 session_deps.socket_factory.AddSocketDataProvider(&data); 3128 session_deps.socket_factory.AddSocketDataProvider(&data);
3074 3129
3075 TestCompletionCallback callback; 3130 TestCompletionCallback callback;
3076 3131
3077 int rv = trans->Start(&request, &callback, NULL); 3132 int rv = trans->Start(&request, &callback, NULL);
3078 EXPECT_EQ(ERR_IO_PENDING, rv); 3133 EXPECT_EQ(ERR_IO_PENDING, rv);
3079 3134
3080 rv = callback.WaitForResult(); 3135 rv = callback.WaitForResult();
3081 EXPECT_EQ(OK, rv); 3136 EXPECT_EQ(OK, rv);
3082 } 3137 }
(...skipping 15 matching lines...) Expand all
3098 }; 3153 };
3099 3154
3100 // Lastly, the server responds with the actual content. 3155 // Lastly, the server responds with the actual content.
3101 MockRead data_reads[] = { 3156 MockRead data_reads[] = {
3102 MockRead("HTTP/1.0 200 OK\r\n"), 3157 MockRead("HTTP/1.0 200 OK\r\n"),
3103 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3158 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3104 MockRead("Content-Length: 100\r\n\r\n"), 3159 MockRead("Content-Length: 100\r\n\r\n"),
3105 MockRead(false, OK), 3160 MockRead(false, OK),
3106 }; 3161 };
3107 3162
3108 StaticSocketDataProvider data(data_reads, data_writes); 3163 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3164 data_writes, arraysize(data_writes));
3109 session_deps.socket_factory.AddSocketDataProvider(&data); 3165 session_deps.socket_factory.AddSocketDataProvider(&data);
3110 3166
3111 TestCompletionCallback callback; 3167 TestCompletionCallback callback;
3112 3168
3113 int rv = trans->Start(&request, &callback, NULL); 3169 int rv = trans->Start(&request, &callback, NULL);
3114 EXPECT_EQ(ERR_IO_PENDING, rv); 3170 EXPECT_EQ(ERR_IO_PENDING, rv);
3115 3171
3116 rv = callback.WaitForResult(); 3172 rv = callback.WaitForResult();
3117 EXPECT_EQ(OK, rv); 3173 EXPECT_EQ(OK, rv);
3118 } 3174 }
(...skipping 15 matching lines...) Expand all
3134 }; 3190 };
3135 3191
3136 // Lastly, the server responds with the actual content. 3192 // Lastly, the server responds with the actual content.
3137 MockRead data_reads[] = { 3193 MockRead data_reads[] = {
3138 MockRead("HTTP/1.0 200 OK\r\n"), 3194 MockRead("HTTP/1.0 200 OK\r\n"),
3139 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3195 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3140 MockRead("Content-Length: 100\r\n\r\n"), 3196 MockRead("Content-Length: 100\r\n\r\n"),
3141 MockRead(false, OK), 3197 MockRead(false, OK),
3142 }; 3198 };
3143 3199
3144 StaticSocketDataProvider data(data_reads, data_writes); 3200 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3201 data_writes, arraysize(data_writes));
3145 session_deps.socket_factory.AddSocketDataProvider(&data); 3202 session_deps.socket_factory.AddSocketDataProvider(&data);
3146 3203
3147 TestCompletionCallback callback; 3204 TestCompletionCallback callback;
3148 3205
3149 int rv = trans->Start(&request, &callback, NULL); 3206 int rv = trans->Start(&request, &callback, NULL);
3150 EXPECT_EQ(ERR_IO_PENDING, rv); 3207 EXPECT_EQ(ERR_IO_PENDING, rv);
3151 3208
3152 rv = callback.WaitForResult(); 3209 rv = callback.WaitForResult();
3153 EXPECT_EQ(OK, rv); 3210 EXPECT_EQ(OK, rv);
3154 } 3211 }
(...skipping 15 matching lines...) Expand all
3170 }; 3227 };
3171 3228
3172 // Lastly, the server responds with the actual content. 3229 // Lastly, the server responds with the actual content.
3173 MockRead data_reads[] = { 3230 MockRead data_reads[] = {
3174 MockRead("HTTP/1.0 200 OK\r\n"), 3231 MockRead("HTTP/1.0 200 OK\r\n"),
3175 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3232 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3176 MockRead("Content-Length: 100\r\n\r\n"), 3233 MockRead("Content-Length: 100\r\n\r\n"),
3177 MockRead(false, OK), 3234 MockRead(false, OK),
3178 }; 3235 };
3179 3236
3180 StaticSocketDataProvider data(data_reads, data_writes); 3237 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3238 data_writes, arraysize(data_writes));
3181 session_deps.socket_factory.AddSocketDataProvider(&data); 3239 session_deps.socket_factory.AddSocketDataProvider(&data);
3182 3240
3183 TestCompletionCallback callback; 3241 TestCompletionCallback callback;
3184 3242
3185 int rv = trans->Start(&request, &callback, NULL); 3243 int rv = trans->Start(&request, &callback, NULL);
3186 EXPECT_EQ(ERR_IO_PENDING, rv); 3244 EXPECT_EQ(ERR_IO_PENDING, rv);
3187 3245
3188 rv = callback.WaitForResult(); 3246 rv = callback.WaitForResult();
3189 EXPECT_EQ(OK, rv); 3247 EXPECT_EQ(OK, rv);
3190 } 3248 }
(...skipping 17 matching lines...) Expand all
3208 }; 3266 };
3209 3267
3210 // Lastly, the server responds with the actual content. 3268 // Lastly, the server responds with the actual content.
3211 MockRead data_reads[] = { 3269 MockRead data_reads[] = {
3212 MockRead("HTTP/1.0 200 OK\r\n"), 3270 MockRead("HTTP/1.0 200 OK\r\n"),
3213 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3271 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3214 MockRead("Content-Length: 100\r\n\r\n"), 3272 MockRead("Content-Length: 100\r\n\r\n"),
3215 MockRead(false, OK), 3273 MockRead(false, OK),
3216 }; 3274 };
3217 3275
3218 StaticSocketDataProvider data(data_reads, data_writes); 3276 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3277 data_writes, arraysize(data_writes));
3219 session_deps.socket_factory.AddSocketDataProvider(&data); 3278 session_deps.socket_factory.AddSocketDataProvider(&data);
3220 3279
3221 TestCompletionCallback callback; 3280 TestCompletionCallback callback;
3222 3281
3223 int rv = trans->Start(&request, &callback, NULL); 3282 int rv = trans->Start(&request, &callback, NULL);
3224 EXPECT_EQ(ERR_IO_PENDING, rv); 3283 EXPECT_EQ(ERR_IO_PENDING, rv);
3225 3284
3226 rv = callback.WaitForResult(); 3285 rv = callback.WaitForResult();
3227 EXPECT_EQ(OK, rv); 3286 EXPECT_EQ(OK, rv);
3228 } 3287 }
(...skipping 17 matching lines...) Expand all
3246 }; 3305 };
3247 3306
3248 // Lastly, the server responds with the actual content. 3307 // Lastly, the server responds with the actual content.
3249 MockRead data_reads[] = { 3308 MockRead data_reads[] = {
3250 MockRead("HTTP/1.0 200 OK\r\n"), 3309 MockRead("HTTP/1.0 200 OK\r\n"),
3251 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3310 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3252 MockRead("Content-Length: 100\r\n\r\n"), 3311 MockRead("Content-Length: 100\r\n\r\n"),
3253 MockRead(false, OK), 3312 MockRead(false, OK),
3254 }; 3313 };
3255 3314
3256 StaticSocketDataProvider data(data_reads, data_writes); 3315 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3316 data_writes, arraysize(data_writes));
3257 session_deps.socket_factory.AddSocketDataProvider(&data); 3317 session_deps.socket_factory.AddSocketDataProvider(&data);
3258 3318
3259 TestCompletionCallback callback; 3319 TestCompletionCallback callback;
3260 3320
3261 int rv = trans->Start(&request, &callback, NULL); 3321 int rv = trans->Start(&request, &callback, NULL);
3262 EXPECT_EQ(ERR_IO_PENDING, rv); 3322 EXPECT_EQ(ERR_IO_PENDING, rv);
3263 3323
3264 rv = callback.WaitForResult(); 3324 rv = callback.WaitForResult();
3265 EXPECT_EQ(OK, rv); 3325 EXPECT_EQ(OK, rv);
3266 } 3326 }
(...skipping 16 matching lines...) Expand all
3283 }; 3343 };
3284 3344
3285 // Lastly, the server responds with the actual content. 3345 // Lastly, the server responds with the actual content.
3286 MockRead data_reads[] = { 3346 MockRead data_reads[] = {
3287 MockRead("HTTP/1.0 200 OK\r\n"), 3347 MockRead("HTTP/1.0 200 OK\r\n"),
3288 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3348 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3289 MockRead("Content-Length: 100\r\n\r\n"), 3349 MockRead("Content-Length: 100\r\n\r\n"),
3290 MockRead(false, OK), 3350 MockRead(false, OK),
3291 }; 3351 };
3292 3352
3293 StaticSocketDataProvider data(data_reads, data_writes); 3353 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3354 data_writes, arraysize(data_writes));
3294 session_deps.socket_factory.AddSocketDataProvider(&data); 3355 session_deps.socket_factory.AddSocketDataProvider(&data);
3295 3356
3296 TestCompletionCallback callback; 3357 TestCompletionCallback callback;
3297 3358
3298 int rv = trans->Start(&request, &callback, NULL); 3359 int rv = trans->Start(&request, &callback, NULL);
3299 EXPECT_EQ(ERR_IO_PENDING, rv); 3360 EXPECT_EQ(ERR_IO_PENDING, rv);
3300 3361
3301 rv = callback.WaitForResult(); 3362 rv = callback.WaitForResult();
3302 EXPECT_EQ(OK, rv); 3363 EXPECT_EQ(OK, rv);
3303 } 3364 }
(...skipping 21 matching lines...) Expand all
3325 }; 3386 };
3326 3387
3327 MockRead data_reads[] = { 3388 MockRead data_reads[] = {
3328 MockRead(true, read_buffer, arraysize(read_buffer)), 3389 MockRead(true, read_buffer, arraysize(read_buffer)),
3329 MockRead("HTTP/1.0 200 OK\r\n"), 3390 MockRead("HTTP/1.0 200 OK\r\n"),
3330 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 3391 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
3331 MockRead("Payload"), 3392 MockRead("Payload"),
3332 MockRead(false, OK) 3393 MockRead(false, OK)
3333 }; 3394 };
3334 3395
3335 StaticSocketDataProvider data(data_reads, data_writes); 3396 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3397 data_writes, arraysize(data_writes));
3336 session_deps.socket_factory.AddSocketDataProvider(&data); 3398 session_deps.socket_factory.AddSocketDataProvider(&data);
3337 3399
3338 TestCompletionCallback callback; 3400 TestCompletionCallback callback;
3339 3401
3340 int rv = trans->Start(&request, &callback, NULL); 3402 int rv = trans->Start(&request, &callback, NULL);
3341 EXPECT_EQ(ERR_IO_PENDING, rv); 3403 EXPECT_EQ(ERR_IO_PENDING, rv);
3342 3404
3343 rv = callback.WaitForResult(); 3405 rv = callback.WaitForResult();
3344 EXPECT_EQ(OK, rv); 3406 EXPECT_EQ(OK, rv);
3345 3407
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3377 3439
3378 MockRead data_reads[] = { 3440 MockRead data_reads[] = {
3379 MockWrite(true, reinterpret_cast<char*>(read_buffer), 3441 MockWrite(true, reinterpret_cast<char*>(read_buffer),
3380 arraysize(read_buffer)), 3442 arraysize(read_buffer)),
3381 MockRead("HTTP/1.0 200 OK\r\n"), 3443 MockRead("HTTP/1.0 200 OK\r\n"),
3382 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 3444 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
3383 MockRead("Payload"), 3445 MockRead("Payload"),
3384 MockRead(false, OK) 3446 MockRead(false, OK)
3385 }; 3447 };
3386 3448
3387 StaticSocketDataProvider data(data_reads, data_writes); 3449 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3450 data_writes, arraysize(data_writes));
3388 session_deps.socket_factory.AddSocketDataProvider(&data); 3451 session_deps.socket_factory.AddSocketDataProvider(&data);
3389 3452
3390 SSLSocketDataProvider ssl(true, OK); 3453 SSLSocketDataProvider ssl(true, OK);
3391 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 3454 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
3392 3455
3393 TestCompletionCallback callback; 3456 TestCompletionCallback callback;
3394 3457
3395 int rv = trans->Start(&request, &callback, NULL); 3458 int rv = trans->Start(&request, &callback, NULL);
3396 EXPECT_EQ(ERR_IO_PENDING, rv); 3459 EXPECT_EQ(ERR_IO_PENDING, rv);
3397 3460
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3444 3507
3445 MockRead data_reads[] = { 3508 MockRead data_reads[] = {
3446 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), 3509 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)),
3447 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), 3510 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)),
3448 MockRead("HTTP/1.0 200 OK\r\n"), 3511 MockRead("HTTP/1.0 200 OK\r\n"),
3449 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 3512 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
3450 MockRead("Payload"), 3513 MockRead("Payload"),
3451 MockRead(false, OK) 3514 MockRead(false, OK)
3452 }; 3515 };
3453 3516
3454 StaticSocketDataProvider data(data_reads, data_writes); 3517 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3518 data_writes, arraysize(data_writes));
3455 session_deps.socket_factory.AddSocketDataProvider(&data); 3519 session_deps.socket_factory.AddSocketDataProvider(&data);
3456 3520
3457 TestCompletionCallback callback; 3521 TestCompletionCallback callback;
3458 3522
3459 int rv = trans->Start(&request, &callback, NULL); 3523 int rv = trans->Start(&request, &callback, NULL);
3460 EXPECT_EQ(ERR_IO_PENDING, rv); 3524 EXPECT_EQ(ERR_IO_PENDING, rv);
3461 3525
3462 rv = callback.WaitForResult(); 3526 rv = callback.WaitForResult();
3463 EXPECT_EQ(OK, rv); 3527 EXPECT_EQ(OK, rv);
3464 3528
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
3510 3574
3511 MockRead data_reads[] = { 3575 MockRead data_reads[] = {
3512 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), 3576 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)),
3513 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), 3577 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)),
3514 MockRead("HTTP/1.0 200 OK\r\n"), 3578 MockRead("HTTP/1.0 200 OK\r\n"),
3515 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 3579 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
3516 MockRead("Payload"), 3580 MockRead("Payload"),
3517 MockRead(false, OK) 3581 MockRead(false, OK)
3518 }; 3582 };
3519 3583
3520 StaticSocketDataProvider data(data_reads, data_writes); 3584 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3585 data_writes, arraysize(data_writes));
3521 session_deps.socket_factory.AddSocketDataProvider(&data); 3586 session_deps.socket_factory.AddSocketDataProvider(&data);
3522 3587
3523 SSLSocketDataProvider ssl(true, OK); 3588 SSLSocketDataProvider ssl(true, OK);
3524 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 3589 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
3525 3590
3526 TestCompletionCallback callback; 3591 TestCompletionCallback callback;
3527 3592
3528 int rv = trans->Start(&request, &callback, NULL); 3593 int rv = trans->Start(&request, &callback, NULL);
3529 EXPECT_EQ(ERR_IO_PENDING, rv); 3594 EXPECT_EQ(ERR_IO_PENDING, rv);
3530 3595
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
3682 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction( 3747 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(
3683 CreateSession(&session_deps))); 3748 CreateSession(&session_deps)));
3684 3749
3685 // Attach an observer to watch the host resolutions being made. 3750 // Attach an observer to watch the host resolutions being made.
3686 session_deps.host_resolver->AddObserver(&resolution_observer); 3751 session_deps.host_resolver->AddObserver(&resolution_observer);
3687 3752
3688 // Connect up a mock socket which will fail when reading. 3753 // Connect up a mock socket which will fail when reading.
3689 MockRead data_reads[] = { 3754 MockRead data_reads[] = {
3690 MockRead(false, ERR_FAILED), 3755 MockRead(false, ERR_FAILED),
3691 }; 3756 };
3692 StaticSocketDataProvider data(data_reads, NULL); 3757 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3693 session_deps.socket_factory.AddSocketDataProvider(&data); 3758 session_deps.socket_factory.AddSocketDataProvider(&data);
3694 3759
3695 // Issue a request, containing an HTTP referrer. 3760 // Issue a request, containing an HTTP referrer.
3696 HttpRequestInfo request; 3761 HttpRequestInfo request;
3697 request.method = "GET"; 3762 request.method = "GET";
3698 request.referrer = referrer; 3763 request.referrer = referrer;
3699 request.url = GURL("http://www.google.com/"); 3764 request.url = GURL("http://www.google.com/");
3700 3765
3701 // Run the request until it fails reading from the socket. 3766 // Run the request until it fails reading from the socket.
3702 TestCompletionCallback callback; 3767 TestCompletionCallback callback;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3737 ASSERT_EQ(OK, rv); 3802 ASSERT_EQ(OK, rv);
3738 3803
3739 // Inject a failure the next time that "www.google.com" is resolved. This way 3804 // Inject a failure the next time that "www.google.com" is resolved. This way
3740 // we can tell if the next lookup hit the cache, or the "network". 3805 // we can tell if the next lookup hit the cache, or the "network".
3741 // (cache --> success, "network" --> failure). 3806 // (cache --> success, "network" --> failure).
3742 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); 3807 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com");
3743 3808
3744 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the 3809 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the
3745 // first read -- this won't be reached as the host resolution will fail first. 3810 // first read -- this won't be reached as the host resolution will fail first.
3746 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; 3811 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) };
3747 StaticSocketDataProvider data(data_reads, NULL); 3812 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3748 session_deps.socket_factory.AddSocketDataProvider(&data); 3813 session_deps.socket_factory.AddSocketDataProvider(&data);
3749 3814
3750 // Issue a request, asking to bypass the cache(s). 3815 // Issue a request, asking to bypass the cache(s).
3751 HttpRequestInfo request; 3816 HttpRequestInfo request;
3752 request.method = "GET"; 3817 request.method = "GET";
3753 request.load_flags = LOAD_BYPASS_CACHE; 3818 request.load_flags = LOAD_BYPASS_CACHE;
3754 request.url = GURL("http://www.google.com/"); 3819 request.url = GURL("http://www.google.com/");
3755 3820
3756 // Run the request. 3821 // Run the request.
3757 TestCompletionCallback callback; 3822 TestCompletionCallback callback;
(...skipping 12 matching lines...) Expand all
3770 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps); 3835 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps);
3771 3836
3772 HttpRequestInfo request; 3837 HttpRequestInfo request;
3773 request.method = "GET"; 3838 request.method = "GET";
3774 request.url = GURL("http://www.foo.com/"); 3839 request.url = GURL("http://www.foo.com/");
3775 request.load_flags = 0; 3840 request.load_flags = 0;
3776 3841
3777 MockWrite write_failure[] = { 3842 MockWrite write_failure[] = {
3778 MockWrite(true, ERR_CONNECTION_RESET), 3843 MockWrite(true, ERR_CONNECTION_RESET),
3779 }; 3844 };
3780 StaticSocketDataProvider data(NULL, write_failure); 3845 StaticSocketDataProvider data(NULL, 0,
3846 write_failure, arraysize(write_failure));
3781 session_deps.socket_factory.AddSocketDataProvider(&data); 3847 session_deps.socket_factory.AddSocketDataProvider(&data);
3782 3848
3783 TestCompletionCallback callback; 3849 TestCompletionCallback callback;
3784 3850
3785 scoped_ptr<HttpTransaction> trans( 3851 scoped_ptr<HttpTransaction> trans(
3786 new HttpNetworkTransaction(CreateSession(&session_deps))); 3852 new HttpNetworkTransaction(CreateSession(&session_deps)));
3787 3853
3788 int rv = trans->Start(&request, &callback, NULL); 3854 int rv = trans->Start(&request, &callback, NULL);
3789 EXPECT_EQ(ERR_IO_PENDING, rv); 3855 EXPECT_EQ(ERR_IO_PENDING, rv);
3790 3856
3791 rv = callback.WaitForResult(); 3857 rv = callback.WaitForResult();
3792 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 3858 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
3793 } 3859 }
3794 3860
3795 // Check that a connection closed after the start of the headers finishes ok. 3861 // Check that a connection closed after the start of the headers finishes ok.
3796 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { 3862 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) {
3797 SessionDependencies session_deps; 3863 SessionDependencies session_deps;
3798 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps); 3864 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps);
3799 3865
3800 HttpRequestInfo request; 3866 HttpRequestInfo request;
3801 request.method = "GET"; 3867 request.method = "GET";
3802 request.url = GURL("http://www.foo.com/"); 3868 request.url = GURL("http://www.foo.com/");
3803 request.load_flags = 0; 3869 request.load_flags = 0;
3804 3870
3805 MockRead data_reads[] = { 3871 MockRead data_reads[] = {
3806 MockRead("HTTP/1."), 3872 MockRead("HTTP/1."),
3807 MockRead(false, OK), 3873 MockRead(false, OK),
3808 }; 3874 };
3809 3875
3810 StaticSocketDataProvider data(data_reads, NULL); 3876 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3811 session_deps.socket_factory.AddSocketDataProvider(&data); 3877 session_deps.socket_factory.AddSocketDataProvider(&data);
3812 3878
3813 TestCompletionCallback callback; 3879 TestCompletionCallback callback;
3814 3880
3815 scoped_ptr<HttpTransaction> trans( 3881 scoped_ptr<HttpTransaction> trans(
3816 new HttpNetworkTransaction(CreateSession(&session_deps))); 3882 new HttpNetworkTransaction(CreateSession(&session_deps)));
3817 3883
3818 int rv = trans->Start(&request, &callback, NULL); 3884 int rv = trans->Start(&request, &callback, NULL);
3819 EXPECT_EQ(ERR_IO_PENDING, rv); 3885 EXPECT_EQ(ERR_IO_PENDING, rv);
3820 3886
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
3853 3919
3854 MockRead data_reads1[] = { 3920 MockRead data_reads1[] = {
3855 MockRead("HTTP/1.1 401 Unauthorized\r\n"), 3921 MockRead("HTTP/1.1 401 Unauthorized\r\n"),
3856 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 3922 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
3857 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3923 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3858 MockRead("Content-Length: 14\r\n\r\n"), 3924 MockRead("Content-Length: 14\r\n\r\n"),
3859 MockRead("Unauth"), 3925 MockRead("Unauth"),
3860 MockRead(true, ERR_CONNECTION_RESET), 3926 MockRead(true, ERR_CONNECTION_RESET),
3861 }; 3927 };
3862 3928
3863 StaticSocketDataProvider data1(data_reads1, data_writes1); 3929 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3930 data_writes1, arraysize(data_writes1));
3864 session_deps.socket_factory.AddSocketDataProvider(&data1); 3931 session_deps.socket_factory.AddSocketDataProvider(&data1);
3865 3932
3866 // After calling trans->RestartWithAuth(), this is the request we should 3933 // After calling trans->RestartWithAuth(), this is the request we should
3867 // be issuing -- the final header line contains the credentials. 3934 // be issuing -- the final header line contains the credentials.
3868 MockWrite data_writes2[] = { 3935 MockWrite data_writes2[] = {
3869 MockWrite("GET / HTTP/1.1\r\n" 3936 MockWrite("GET / HTTP/1.1\r\n"
3870 "Host: www.google.com\r\n" 3937 "Host: www.google.com\r\n"
3871 "Connection: keep-alive\r\n" 3938 "Connection: keep-alive\r\n"
3872 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3939 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3873 }; 3940 };
3874 3941
3875 // Lastly, the server responds with the actual content. 3942 // Lastly, the server responds with the actual content.
3876 MockRead data_reads2[] = { 3943 MockRead data_reads2[] = {
3877 MockRead("HTTP/1.1 200 OK\r\n"), 3944 MockRead("HTTP/1.1 200 OK\r\n"),
3878 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 3945 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
3879 MockRead("Content-Length: 100\r\n\r\n"), 3946 MockRead("Content-Length: 100\r\n\r\n"),
3880 MockRead(false, OK), 3947 MockRead(false, OK),
3881 }; 3948 };
3882 3949
3883 StaticSocketDataProvider data2(data_reads2, data_writes2); 3950 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3951 data_writes2, arraysize(data_writes2));
3884 session_deps.socket_factory.AddSocketDataProvider(&data2); 3952 session_deps.socket_factory.AddSocketDataProvider(&data2);
3885 3953
3886 TestCompletionCallback callback1; 3954 TestCompletionCallback callback1;
3887 3955
3888 int rv = trans->Start(&request, &callback1, NULL); 3956 int rv = trans->Start(&request, &callback1, NULL);
3889 EXPECT_EQ(ERR_IO_PENDING, rv); 3957 EXPECT_EQ(ERR_IO_PENDING, rv);
3890 3958
3891 rv = callback1.WaitForResult(); 3959 rv = callback1.WaitForResult();
3892 EXPECT_EQ(OK, rv); 3960 EXPECT_EQ(OK, rv);
3893 3961
(...skipping 28 matching lines...) Expand all
3922 HttpRequestInfo request; 3990 HttpRequestInfo request;
3923 request.method = "GET"; 3991 request.method = "GET";
3924 request.url = GURL("https://www.google.com/"); 3992 request.url = GURL("https://www.google.com/");
3925 request.load_flags = 0; 3993 request.load_flags = 0;
3926 3994
3927 MockRead proxy_reads[] = { 3995 MockRead proxy_reads[] = {
3928 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), 3996 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"),
3929 MockRead(false, OK) 3997 MockRead(false, OK)
3930 }; 3998 };
3931 3999
3932 StaticSocketDataProvider data(proxy_reads, NULL); 4000 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0);
3933 SSLSocketDataProvider ssl(true, OK); 4001 SSLSocketDataProvider ssl(true, OK);
3934 4002
3935 session_deps.socket_factory.AddSocketDataProvider(&data); 4003 session_deps.socket_factory.AddSocketDataProvider(&data);
3936 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4004 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
3937 4005
3938 TestCompletionCallback callback; 4006 TestCompletionCallback callback;
3939 4007
3940 session_deps.socket_factory.ResetNextMockIndexes(); 4008 session_deps.socket_factory.ResetNextMockIndexes();
3941 4009
3942 scoped_ptr<HttpTransaction> trans( 4010 scoped_ptr<HttpTransaction> trans(
3943 new HttpNetworkTransaction(CreateSession(&session_deps))); 4011 new HttpNetworkTransaction(CreateSession(&session_deps)));
3944 4012
3945 int rv = trans->Start(&request, &callback, NULL); 4013 int rv = trans->Start(&request, &callback, NULL);
3946 EXPECT_EQ(ERR_IO_PENDING, rv); 4014 EXPECT_EQ(ERR_IO_PENDING, rv);
3947 4015
3948 rv = callback.WaitForResult(); 4016 rv = callback.WaitForResult();
3949 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); 4017 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv);
3950 } 4018 }
3951 4019
3952 TEST_F(HttpNetworkTransactionTest, LargeContentLengthThenClose) { 4020 TEST_F(HttpNetworkTransactionTest, LargeContentLengthThenClose) {
3953 MockRead data_reads[] = { 4021 MockRead data_reads[] = {
3954 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), 4022 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"),
3955 MockRead(false, OK), 4023 MockRead(false, OK),
3956 }; 4024 };
3957 SimpleGetHelperResult out = SimpleGetHelper(data_reads); 4025 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
4026 arraysize(data_reads));
3958 EXPECT_EQ(OK, out.rv); 4027 EXPECT_EQ(OK, out.rv);
3959 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 4028 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
3960 EXPECT_EQ("", out.response_data); 4029 EXPECT_EQ("", out.response_data);
3961 } 4030 }
3962 4031
3963 TEST_F(HttpNetworkTransactionTest, UploadFileSmallerThanLength) { 4032 TEST_F(HttpNetworkTransactionTest, UploadFileSmallerThanLength) {
3964 SessionDependencies session_deps; 4033 SessionDependencies session_deps;
3965 scoped_ptr<HttpTransaction> trans( 4034 scoped_ptr<HttpTransaction> trans(
3966 new HttpNetworkTransaction(CreateSession(&session_deps))); 4035 new HttpNetworkTransaction(CreateSession(&session_deps)));
3967 4036
(...skipping 13 matching lines...) Expand all
3981 element.SetContentLength(kFakeSize); 4050 element.SetContentLength(kFakeSize);
3982 elements.push_back(element); 4051 elements.push_back(element);
3983 request.upload_data->set_elements(elements); 4052 request.upload_data->set_elements(elements);
3984 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLength()); 4053 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLength());
3985 4054
3986 MockRead data_reads[] = { 4055 MockRead data_reads[] = {
3987 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 4056 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
3988 MockRead("hello world"), 4057 MockRead("hello world"),
3989 MockRead(false, OK), 4058 MockRead(false, OK),
3990 }; 4059 };
3991 StaticSocketDataProvider data(data_reads, NULL); 4060 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3992 session_deps.socket_factory.AddSocketDataProvider(&data); 4061 session_deps.socket_factory.AddSocketDataProvider(&data);
3993 4062
3994 TestCompletionCallback callback; 4063 TestCompletionCallback callback;
3995 4064
3996 int rv = trans->Start(&request, &callback, NULL); 4065 int rv = trans->Start(&request, &callback, NULL);
3997 EXPECT_EQ(ERR_IO_PENDING, rv); 4066 EXPECT_EQ(ERR_IO_PENDING, rv);
3998 4067
3999 rv = callback.WaitForResult(); 4068 rv = callback.WaitForResult();
4000 EXPECT_EQ(OK, rv); 4069 EXPECT_EQ(OK, rv);
4001 4070
4002 const HttpResponseInfo* response = trans->GetResponseInfo(); 4071 const HttpResponseInfo* response = trans->GetResponseInfo();
4003 EXPECT_TRUE(response != NULL); 4072 EXPECT_TRUE(response != NULL);
4004 4073
4005 EXPECT_TRUE(response->headers != NULL); 4074 EXPECT_TRUE(response->headers != NULL);
4006 EXPECT_EQ("HTTP/1.0 200 OK", response->headers->GetStatusLine()); 4075 EXPECT_EQ("HTTP/1.0 200 OK", response->headers->GetStatusLine());
4007 4076
4008 std::string response_data; 4077 std::string response_data;
4009 rv = ReadTransaction(trans.get(), &response_data); 4078 rv = ReadTransaction(trans.get(), &response_data);
4010 EXPECT_EQ(OK, rv); 4079 EXPECT_EQ(OK, rv);
4011 EXPECT_EQ("hello world", response_data); 4080 EXPECT_EQ("hello world", response_data);
4012 4081
4013 file_util::Delete(temp_file_path, false); 4082 file_util::Delete(temp_file_path, false);
4014 } 4083 }
4015 4084
4016 } // namespace net 4085 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_layer_unittest.cc ('k') | net/socket/socket_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698