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

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

Issue 9425016: Change MockRead and MockWrite (et. al.) to take an IoMode enum, instead (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 TEST_F(HttpNetworkTransactionTest, Basic) { 424 TEST_F(HttpNetworkTransactionTest, Basic) {
425 SessionDependencies session_deps; 425 SessionDependencies session_deps;
426 scoped_ptr<HttpTransaction> trans( 426 scoped_ptr<HttpTransaction> trans(
427 new HttpNetworkTransaction(CreateSession(&session_deps))); 427 new HttpNetworkTransaction(CreateSession(&session_deps)));
428 } 428 }
429 429
430 TEST_F(HttpNetworkTransactionTest, SimpleGET) { 430 TEST_F(HttpNetworkTransactionTest, SimpleGET) {
431 MockRead data_reads[] = { 431 MockRead data_reads[] = {
432 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 432 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
433 MockRead("hello world"), 433 MockRead("hello world"),
434 MockRead(false, OK), 434 MockRead(SYNCHRONOUS, OK),
435 }; 435 };
436 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 436 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
437 arraysize(data_reads)); 437 arraysize(data_reads));
438 EXPECT_EQ(OK, out.rv); 438 EXPECT_EQ(OK, out.rv);
439 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 439 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
440 EXPECT_EQ("hello world", out.response_data); 440 EXPECT_EQ("hello world", out.response_data);
441 } 441 }
442 442
443 // Response with no status line. 443 // Response with no status line.
444 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeaders) { 444 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeaders) {
445 MockRead data_reads[] = { 445 MockRead data_reads[] = {
446 MockRead("hello world"), 446 MockRead("hello world"),
447 MockRead(false, OK), 447 MockRead(SYNCHRONOUS, OK),
448 }; 448 };
449 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 449 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
450 arraysize(data_reads)); 450 arraysize(data_reads));
451 EXPECT_EQ(OK, out.rv); 451 EXPECT_EQ(OK, out.rv);
452 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); 452 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line);
453 EXPECT_EQ("hello world", out.response_data); 453 EXPECT_EQ("hello world", out.response_data);
454 } 454 }
455 455
456 // Allow up to 4 bytes of junk to precede status line. 456 // Allow up to 4 bytes of junk to precede status line.
457 TEST_F(HttpNetworkTransactionTest, StatusLineJunk2Bytes) { 457 TEST_F(HttpNetworkTransactionTest, StatusLineJunk2Bytes) {
458 MockRead data_reads[] = { 458 MockRead data_reads[] = {
459 MockRead("xxxHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), 459 MockRead("xxxHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"),
460 MockRead(false, OK), 460 MockRead(SYNCHRONOUS, OK),
461 }; 461 };
462 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 462 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
463 arraysize(data_reads)); 463 arraysize(data_reads));
464 EXPECT_EQ(OK, out.rv); 464 EXPECT_EQ(OK, out.rv);
465 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); 465 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line);
466 EXPECT_EQ("DATA", out.response_data); 466 EXPECT_EQ("DATA", out.response_data);
467 } 467 }
468 468
469 // Allow up to 4 bytes of junk to precede status line. 469 // Allow up to 4 bytes of junk to precede status line.
470 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes) { 470 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes) {
471 MockRead data_reads[] = { 471 MockRead data_reads[] = {
472 MockRead("\n\nQJHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), 472 MockRead("\n\nQJHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"),
473 MockRead(false, OK), 473 MockRead(SYNCHRONOUS, OK),
474 }; 474 };
475 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 475 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
476 arraysize(data_reads)); 476 arraysize(data_reads));
477 EXPECT_EQ(OK, out.rv); 477 EXPECT_EQ(OK, out.rv);
478 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); 478 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line);
479 EXPECT_EQ("DATA", out.response_data); 479 EXPECT_EQ("DATA", out.response_data);
480 } 480 }
481 481
482 // Beyond 4 bytes of slop and it should fail to find a status line. 482 // Beyond 4 bytes of slop and it should fail to find a status line.
483 TEST_F(HttpNetworkTransactionTest, StatusLineJunk5Bytes) { 483 TEST_F(HttpNetworkTransactionTest, StatusLineJunk5Bytes) {
484 MockRead data_reads[] = { 484 MockRead data_reads[] = {
485 MockRead("xxxxxHTTP/1.1 404 Not Found\nServer: blah"), 485 MockRead("xxxxxHTTP/1.1 404 Not Found\nServer: blah"),
486 MockRead(false, OK), 486 MockRead(SYNCHRONOUS, OK),
487 }; 487 };
488 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 488 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
489 arraysize(data_reads)); 489 arraysize(data_reads));
490 EXPECT_EQ(OK, out.rv); 490 EXPECT_EQ(OK, out.rv);
491 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); 491 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line);
492 EXPECT_EQ("xxxxxHTTP/1.1 404 Not Found\nServer: blah", out.response_data); 492 EXPECT_EQ("xxxxxHTTP/1.1 404 Not Found\nServer: blah", out.response_data);
493 } 493 }
494 494
495 // Same as StatusLineJunk4Bytes, except the read chunks are smaller. 495 // Same as StatusLineJunk4Bytes, except the read chunks are smaller.
496 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) { 496 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) {
497 MockRead data_reads[] = { 497 MockRead data_reads[] = {
498 MockRead("\n"), 498 MockRead("\n"),
499 MockRead("\n"), 499 MockRead("\n"),
500 MockRead("Q"), 500 MockRead("Q"),
501 MockRead("J"), 501 MockRead("J"),
502 MockRead("HTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), 502 MockRead("HTTP/1.0 404 Not Found\nServer: blah\n\nDATA"),
503 MockRead(false, OK), 503 MockRead(SYNCHRONOUS, OK),
504 }; 504 };
505 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 505 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
506 arraysize(data_reads)); 506 arraysize(data_reads));
507 EXPECT_EQ(OK, out.rv); 507 EXPECT_EQ(OK, out.rv);
508 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); 508 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line);
509 EXPECT_EQ("DATA", out.response_data); 509 EXPECT_EQ("DATA", out.response_data);
510 } 510 }
511 511
512 // Close the connection before enough bytes to have a status line. 512 // Close the connection before enough bytes to have a status line.
513 TEST_F(HttpNetworkTransactionTest, StatusLinePartial) { 513 TEST_F(HttpNetworkTransactionTest, StatusLinePartial) {
514 MockRead data_reads[] = { 514 MockRead data_reads[] = {
515 MockRead("HTT"), 515 MockRead("HTT"),
516 MockRead(false, OK), 516 MockRead(SYNCHRONOUS, OK),
517 }; 517 };
518 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 518 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
519 arraysize(data_reads)); 519 arraysize(data_reads));
520 EXPECT_EQ(OK, out.rv); 520 EXPECT_EQ(OK, out.rv);
521 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); 521 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line);
522 EXPECT_EQ("HTT", out.response_data); 522 EXPECT_EQ("HTT", out.response_data);
523 } 523 }
524 524
525 // Simulate a 204 response, lacking a Content-Length header, sent over a 525 // Simulate a 204 response, lacking a Content-Length header, sent over a
526 // persistent connection. The response should still terminate since a 204 526 // persistent connection. The response should still terminate since a 204
527 // cannot have a response body. 527 // cannot have a response body.
528 TEST_F(HttpNetworkTransactionTest, StopsReading204) { 528 TEST_F(HttpNetworkTransactionTest, StopsReading204) {
529 MockRead data_reads[] = { 529 MockRead data_reads[] = {
530 MockRead("HTTP/1.1 204 No Content\r\n\r\n"), 530 MockRead("HTTP/1.1 204 No Content\r\n\r\n"),
531 MockRead("junk"), // Should not be read!! 531 MockRead("junk"), // Should not be read!!
532 MockRead(false, OK), 532 MockRead(SYNCHRONOUS, OK),
533 }; 533 };
534 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 534 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
535 arraysize(data_reads)); 535 arraysize(data_reads));
536 EXPECT_EQ(OK, out.rv); 536 EXPECT_EQ(OK, out.rv);
537 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); 537 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line);
538 EXPECT_EQ("", out.response_data); 538 EXPECT_EQ("", out.response_data);
539 } 539 }
540 540
541 // A simple request using chunked encoding with some extra data after. 541 // A simple request using chunked encoding with some extra data after.
542 // (Like might be seen in a pipelined response.) 542 // (Like might be seen in a pipelined response.)
543 TEST_F(HttpNetworkTransactionTest, ChunkedEncoding) { 543 TEST_F(HttpNetworkTransactionTest, ChunkedEncoding) {
544 MockRead data_reads[] = { 544 MockRead data_reads[] = {
545 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), 545 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"),
546 MockRead("5\r\nHello\r\n"), 546 MockRead("5\r\nHello\r\n"),
547 MockRead("1\r\n"), 547 MockRead("1\r\n"),
548 MockRead(" \r\n"), 548 MockRead(" \r\n"),
549 MockRead("5\r\nworld\r\n"), 549 MockRead("5\r\nworld\r\n"),
550 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"), 550 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"),
551 MockRead(false, OK), 551 MockRead(SYNCHRONOUS, OK),
552 }; 552 };
553 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 553 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
554 arraysize(data_reads)); 554 arraysize(data_reads));
555 EXPECT_EQ(OK, out.rv); 555 EXPECT_EQ(OK, out.rv);
556 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); 556 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line);
557 EXPECT_EQ("Hello world", out.response_data); 557 EXPECT_EQ("Hello world", out.response_data);
558 } 558 }
559 559
560 // Next tests deal with http://crbug.com/56344. 560 // Next tests deal with http://crbug.com/56344.
561 561
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 MockRead data_reads[] = { 637 MockRead data_reads[] = {
638 MockRead("HTTP/1.1 200 OK\r\n"), 638 MockRead("HTTP/1.1 200 OK\r\n"),
639 MockRead("Content-Length: 666\r\n"), 639 MockRead("Content-Length: 666\r\n"),
640 MockRead("Content-Length: 1337\r\n"), 640 MockRead("Content-Length: 1337\r\n"),
641 MockRead("Transfer-Encoding: chunked\r\n\r\n"), 641 MockRead("Transfer-Encoding: chunked\r\n\r\n"),
642 MockRead("5\r\nHello\r\n"), 642 MockRead("5\r\nHello\r\n"),
643 MockRead("1\r\n"), 643 MockRead("1\r\n"),
644 MockRead(" \r\n"), 644 MockRead(" \r\n"),
645 MockRead("5\r\nworld\r\n"), 645 MockRead("5\r\nworld\r\n"),
646 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"), 646 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"),
647 MockRead(false, OK), 647 MockRead(SYNCHRONOUS, OK),
648 }; 648 };
649 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 649 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
650 arraysize(data_reads)); 650 arraysize(data_reads));
651 EXPECT_EQ(OK, out.rv); 651 EXPECT_EQ(OK, out.rv);
652 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); 652 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line);
653 EXPECT_EQ("Hello world", out.response_data); 653 EXPECT_EQ("Hello world", out.response_data);
654 } 654 }
655 655
656 // Next tests deal with http://crbug.com/98895. 656 // Next tests deal with http://crbug.com/98895.
657 657
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 arraysize(data_reads)); 698 arraysize(data_reads));
699 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION, out.rv); 699 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION, out.rv);
700 } 700 }
701 701
702 // Checks the behavior of a single Location header. 702 // Checks the behavior of a single Location header.
703 TEST_F(HttpNetworkTransactionTest, SingleLocationHeader) { 703 TEST_F(HttpNetworkTransactionTest, SingleLocationHeader) {
704 MockRead data_reads[] = { 704 MockRead data_reads[] = {
705 MockRead("HTTP/1.1 302 Redirect\r\n"), 705 MockRead("HTTP/1.1 302 Redirect\r\n"),
706 MockRead("Location: http://good.com/\r\n"), 706 MockRead("Location: http://good.com/\r\n"),
707 MockRead("Content-Length: 0\r\n\r\n"), 707 MockRead("Content-Length: 0\r\n\r\n"),
708 MockRead(false, OK), 708 MockRead(SYNCHRONOUS, OK),
709 }; 709 };
710 710
711 HttpRequestInfo request; 711 HttpRequestInfo request;
712 request.method = "GET"; 712 request.method = "GET";
713 request.url = GURL("http://redirect.com/"); 713 request.url = GURL("http://redirect.com/");
714 request.load_flags = 0; 714 request.load_flags = 0;
715 715
716 SessionDependencies session_deps; 716 SessionDependencies session_deps;
717 scoped_ptr<HttpTransaction> trans( 717 scoped_ptr<HttpTransaction> trans(
718 new HttpNetworkTransaction(CreateSession(&session_deps))); 718 new HttpNetworkTransaction(CreateSession(&session_deps)));
(...skipping 16 matching lines...) Expand all
735 EXPECT_EQ("http://good.com/", url); 735 EXPECT_EQ("http://good.com/", url);
736 } 736 }
737 737
738 // Checks that two identical Location headers result in an error. 738 // Checks that two identical Location headers result in an error.
739 TEST_F(HttpNetworkTransactionTest, DuplicateIdenticalLocationHeaders) { 739 TEST_F(HttpNetworkTransactionTest, DuplicateIdenticalLocationHeaders) {
740 MockRead data_reads[] = { 740 MockRead data_reads[] = {
741 MockRead("HTTP/1.1 302 Redirect\r\n"), 741 MockRead("HTTP/1.1 302 Redirect\r\n"),
742 MockRead("Location: http://good.com/\r\n"), 742 MockRead("Location: http://good.com/\r\n"),
743 MockRead("Location: http://good.com/\r\n"), 743 MockRead("Location: http://good.com/\r\n"),
744 MockRead("Content-Length: 0\r\n\r\n"), 744 MockRead("Content-Length: 0\r\n\r\n"),
745 MockRead(false, OK), 745 MockRead(SYNCHRONOUS, OK),
746 }; 746 };
747 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 747 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
748 arraysize(data_reads)); 748 arraysize(data_reads));
749 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv); 749 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv);
750 } 750 }
751 751
752 // Checks that two distinct Location headers result in an error. 752 // Checks that two distinct Location headers result in an error.
753 TEST_F(HttpNetworkTransactionTest, DuplicateDistinctLocationHeaders) { 753 TEST_F(HttpNetworkTransactionTest, DuplicateDistinctLocationHeaders) {
754 MockRead data_reads[] = { 754 MockRead data_reads[] = {
755 MockRead("HTTP/1.1 302 Redirect\r\n"), 755 MockRead("HTTP/1.1 302 Redirect\r\n"),
756 MockRead("Location: http://good.com/\r\n"), 756 MockRead("Location: http://good.com/\r\n"),
757 MockRead("Location: http://evil.com/\r\n"), 757 MockRead("Location: http://evil.com/\r\n"),
758 MockRead("Content-Length: 0\r\n\r\n"), 758 MockRead("Content-Length: 0\r\n\r\n"),
759 MockRead(false, OK), 759 MockRead(SYNCHRONOUS, OK),
760 }; 760 };
761 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 761 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
762 arraysize(data_reads)); 762 arraysize(data_reads));
763 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv); 763 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv);
764 } 764 }
765 765
766 // Do a request using the HEAD method. Verify that we don't try to read the 766 // Do a request using the HEAD method. Verify that we don't try to read the
767 // message body (since HEAD has none). 767 // message body (since HEAD has none).
768 TEST_F(HttpNetworkTransactionTest, Head) { 768 TEST_F(HttpNetworkTransactionTest, Head) {
769 HttpRequestInfo request; 769 HttpRequestInfo request;
(...skipping 10 matching lines...) Expand all
780 "Host: www.google.com\r\n" 780 "Host: www.google.com\r\n"
781 "Connection: keep-alive\r\n" 781 "Connection: keep-alive\r\n"
782 "Content-Length: 0\r\n\r\n"), 782 "Content-Length: 0\r\n\r\n"),
783 }; 783 };
784 MockRead data_reads1[] = { 784 MockRead data_reads1[] = {
785 MockRead("HTTP/1.1 404 Not Found\r\n"), 785 MockRead("HTTP/1.1 404 Not Found\r\n"),
786 MockRead("Server: Blah\r\n"), 786 MockRead("Server: Blah\r\n"),
787 MockRead("Content-Length: 1234\r\n\r\n"), 787 MockRead("Content-Length: 1234\r\n\r\n"),
788 788
789 // No response body because the test stops reading here. 789 // No response body because the test stops reading here.
790 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 790 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
791 }; 791 };
792 792
793 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 793 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
794 data_writes1, arraysize(data_writes1)); 794 data_writes1, arraysize(data_writes1));
795 session_deps.socket_factory.AddSocketDataProvider(&data1); 795 session_deps.socket_factory.AddSocketDataProvider(&data1);
796 796
797 TestCompletionCallback callback1; 797 TestCompletionCallback callback1;
798 798
799 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 799 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
800 EXPECT_EQ(ERR_IO_PENDING, rv); 800 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 26 matching lines...) Expand all
827 827
828 TEST_F(HttpNetworkTransactionTest, ReuseConnection) { 828 TEST_F(HttpNetworkTransactionTest, ReuseConnection) {
829 SessionDependencies session_deps; 829 SessionDependencies session_deps;
830 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 830 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
831 831
832 MockRead data_reads[] = { 832 MockRead data_reads[] = {
833 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 833 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
834 MockRead("hello"), 834 MockRead("hello"),
835 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 835 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
836 MockRead("world"), 836 MockRead("world"),
837 MockRead(false, OK), 837 MockRead(SYNCHRONOUS, OK),
838 }; 838 };
839 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 839 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
840 session_deps.socket_factory.AddSocketDataProvider(&data); 840 session_deps.socket_factory.AddSocketDataProvider(&data);
841 841
842 const char* const kExpectedResponseData[] = { 842 const char* const kExpectedResponseData[] = {
843 "hello", "world" 843 "hello", "world"
844 }; 844 };
845 845
846 for (int i = 0; i < 2; ++i) { 846 for (int i = 0; i < 2; ++i) {
847 HttpRequestInfo request; 847 HttpRequestInfo request;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 request.load_flags = 0; 881 request.load_flags = 0;
882 882
883 SessionDependencies session_deps; 883 SessionDependencies session_deps;
884 scoped_ptr<HttpTransaction> trans( 884 scoped_ptr<HttpTransaction> trans(
885 new HttpNetworkTransaction(CreateSession(&session_deps))); 885 new HttpNetworkTransaction(CreateSession(&session_deps)));
886 886
887 MockRead data_reads[] = { 887 MockRead data_reads[] = {
888 MockRead("HTTP/1.0 100 Continue\r\n\r\n"), 888 MockRead("HTTP/1.0 100 Continue\r\n\r\n"),
889 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 889 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
890 MockRead("hello world"), 890 MockRead("hello world"),
891 MockRead(false, OK), 891 MockRead(SYNCHRONOUS, OK),
892 }; 892 };
893 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 893 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
894 session_deps.socket_factory.AddSocketDataProvider(&data); 894 session_deps.socket_factory.AddSocketDataProvider(&data);
895 895
896 TestCompletionCallback callback; 896 TestCompletionCallback callback;
897 897
898 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 898 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
899 EXPECT_EQ(ERR_IO_PENDING, rv); 899 EXPECT_EQ(ERR_IO_PENDING, rv);
900 900
901 rv = callback.WaitForResult(); 901 rv = callback.WaitForResult();
(...skipping 21 matching lines...) Expand all
923 request.load_flags = 0; 923 request.load_flags = 0;
924 924
925 SessionDependencies session_deps; 925 SessionDependencies session_deps;
926 scoped_ptr<HttpTransaction> trans( 926 scoped_ptr<HttpTransaction> trans(
927 new HttpNetworkTransaction(CreateSession(&session_deps))); 927 new HttpNetworkTransaction(CreateSession(&session_deps)));
928 928
929 MockRead data_reads[] = { 929 MockRead data_reads[] = {
930 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n" 930 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n"
931 "HTTP/1.1 200 OK\r\n\r\n"), 931 "HTTP/1.1 200 OK\r\n\r\n"),
932 MockRead("hello world"), 932 MockRead("hello world"),
933 MockRead(false, OK), 933 MockRead(SYNCHRONOUS, OK),
934 }; 934 };
935 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 935 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
936 session_deps.socket_factory.AddSocketDataProvider(&data); 936 session_deps.socket_factory.AddSocketDataProvider(&data);
937 937
938 TestCompletionCallback callback; 938 TestCompletionCallback callback;
939 939
940 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 940 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
941 EXPECT_EQ(ERR_IO_PENDING, rv); 941 EXPECT_EQ(ERR_IO_PENDING, rv);
942 942
943 rv = callback.WaitForResult(); 943 rv = callback.WaitForResult();
(...skipping 15 matching lines...) Expand all
959 HttpRequestInfo request; 959 HttpRequestInfo request;
960 request.method = "POST"; 960 request.method = "POST";
961 request.url = GURL("http://www.foo.com/"); 961 request.url = GURL("http://www.foo.com/");
962 request.load_flags = 0; 962 request.load_flags = 0;
963 963
964 SessionDependencies session_deps; 964 SessionDependencies session_deps;
965 scoped_ptr<HttpTransaction> trans( 965 scoped_ptr<HttpTransaction> trans(
966 new HttpNetworkTransaction(CreateSession(&session_deps))); 966 new HttpNetworkTransaction(CreateSession(&session_deps)));
967 967
968 MockRead data_reads[] = { 968 MockRead data_reads[] = {
969 MockRead(false, "HTTP/1.0 100 Continue\r\n"), 969 MockRead(SYNCHRONOUS, "HTTP/1.0 100 Continue\r\n"),
970 MockRead(true, 0), 970 MockRead(ASYNC, 0),
971 }; 971 };
972 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 972 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
973 session_deps.socket_factory.AddSocketDataProvider(&data); 973 session_deps.socket_factory.AddSocketDataProvider(&data);
974 974
975 TestCompletionCallback callback; 975 TestCompletionCallback callback;
976 976
977 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 977 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
978 EXPECT_EQ(ERR_IO_PENDING, rv); 978 EXPECT_EQ(ERR_IO_PENDING, rv);
979 979
980 rv = callback.WaitForResult(); 980 rv = callback.WaitForResult();
981 EXPECT_EQ(OK, rv); 981 EXPECT_EQ(OK, rv);
982 982
983 std::string response_data; 983 std::string response_data;
984 rv = ReadTransaction(trans.get(), &response_data); 984 rv = ReadTransaction(trans.get(), &response_data);
985 EXPECT_EQ(OK, rv); 985 EXPECT_EQ(OK, rv);
986 EXPECT_EQ("", response_data); 986 EXPECT_EQ("", response_data);
987 } 987 }
988 988
989 TEST_F(HttpNetworkTransactionTest, EmptyResponse) { 989 TEST_F(HttpNetworkTransactionTest, EmptyResponse) {
990 HttpRequestInfo request; 990 HttpRequestInfo request;
991 request.method = "POST"; 991 request.method = "POST";
992 request.url = GURL("http://www.foo.com/"); 992 request.url = GURL("http://www.foo.com/");
993 request.load_flags = 0; 993 request.load_flags = 0;
994 994
995 SessionDependencies session_deps; 995 SessionDependencies session_deps;
996 scoped_ptr<HttpTransaction> trans( 996 scoped_ptr<HttpTransaction> trans(
997 new HttpNetworkTransaction(CreateSession(&session_deps))); 997 new HttpNetworkTransaction(CreateSession(&session_deps)));
998 998
999 MockRead data_reads[] = { 999 MockRead data_reads[] = {
1000 MockRead(true, 0), 1000 MockRead(ASYNC, 0),
1001 }; 1001 };
1002 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 1002 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
1003 session_deps.socket_factory.AddSocketDataProvider(&data); 1003 session_deps.socket_factory.AddSocketDataProvider(&data);
1004 1004
1005 TestCompletionCallback callback; 1005 TestCompletionCallback callback;
1006 1006
1007 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1007 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
1008 EXPECT_EQ(ERR_IO_PENDING, rv); 1008 EXPECT_EQ(ERR_IO_PENDING, rv);
1009 1009
1010 rv = callback.WaitForResult(); 1010 rv = callback.WaitForResult();
(...skipping 18 matching lines...) Expand all
1029 "Connection: keep-alive\r\n\r\n"), 1029 "Connection: keep-alive\r\n\r\n"),
1030 MockWrite("GET / HTTP/1.1\r\n" 1030 MockWrite("GET / HTTP/1.1\r\n"
1031 "Host: www.foo.com\r\n" 1031 "Host: www.foo.com\r\n"
1032 "Connection: keep-alive\r\n\r\n") 1032 "Connection: keep-alive\r\n\r\n")
1033 }; 1033 };
1034 1034
1035 // Read results for the first request. 1035 // Read results for the first request.
1036 MockRead data1_reads[] = { 1036 MockRead data1_reads[] = {
1037 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 1037 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
1038 MockRead("hello"), 1038 MockRead("hello"),
1039 MockRead(true, OK), 1039 MockRead(ASYNC, OK),
1040 }; 1040 };
1041 1041
1042 if (write_failure) { 1042 if (write_failure) {
1043 ASSERT_TRUE(!read_failure); 1043 ASSERT_TRUE(!read_failure);
1044 data1_writes[1] = *write_failure; 1044 data1_writes[1] = *write_failure;
1045 } else { 1045 } else {
1046 ASSERT_TRUE(read_failure); 1046 ASSERT_TRUE(read_failure);
1047 data1_reads[2] = *read_failure; 1047 data1_reads[2] = *read_failure;
1048 } 1048 }
1049 1049
1050 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), 1050 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads),
1051 data1_writes, arraysize(data1_writes)); 1051 data1_writes, arraysize(data1_writes));
1052 session_deps.socket_factory.AddSocketDataProvider(&data1); 1052 session_deps.socket_factory.AddSocketDataProvider(&data1);
1053 1053
1054 MockRead data2_reads[] = { 1054 MockRead data2_reads[] = {
1055 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 1055 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
1056 MockRead("world"), 1056 MockRead("world"),
1057 MockRead(true, OK), 1057 MockRead(ASYNC, OK),
1058 }; 1058 };
1059 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0); 1059 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0);
1060 session_deps.socket_factory.AddSocketDataProvider(&data2); 1060 session_deps.socket_factory.AddSocketDataProvider(&data2);
1061 1061
1062 const char* kExpectedResponseData[] = { 1062 const char* kExpectedResponseData[] = {
1063 "hello", "world" 1063 "hello", "world"
1064 }; 1064 };
1065 1065
1066 for (int i = 0; i < 2; ++i) { 1066 for (int i = 0; i < 2; ++i) {
1067 TestCompletionCallback callback; 1067 TestCompletionCallback callback;
(...skipping 13 matching lines...) Expand all
1081 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); 1081 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine());
1082 1082
1083 std::string response_data; 1083 std::string response_data;
1084 rv = ReadTransaction(trans.get(), &response_data); 1084 rv = ReadTransaction(trans.get(), &response_data);
1085 EXPECT_EQ(OK, rv); 1085 EXPECT_EQ(OK, rv);
1086 EXPECT_EQ(kExpectedResponseData[i], response_data); 1086 EXPECT_EQ(kExpectedResponseData[i], response_data);
1087 } 1087 }
1088 } 1088 }
1089 1089
1090 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionNotConnectedOnWrite) { 1090 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionNotConnectedOnWrite) {
1091 MockWrite write_failure(true, ERR_SOCKET_NOT_CONNECTED); 1091 MockWrite write_failure(ASYNC, ERR_SOCKET_NOT_CONNECTED);
1092 KeepAliveConnectionResendRequestTest(&write_failure, NULL); 1092 KeepAliveConnectionResendRequestTest(&write_failure, NULL);
1093 } 1093 }
1094 1094
1095 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionReset) { 1095 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionReset) {
1096 MockRead read_failure(true, ERR_CONNECTION_RESET); 1096 MockRead read_failure(ASYNC, ERR_CONNECTION_RESET);
1097 KeepAliveConnectionResendRequestTest(NULL, &read_failure); 1097 KeepAliveConnectionResendRequestTest(NULL, &read_failure);
1098 } 1098 }
1099 1099
1100 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionEOF) { 1100 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionEOF) {
1101 MockRead read_failure(false, OK); // EOF 1101 MockRead read_failure(SYNCHRONOUS, OK); // EOF
1102 KeepAliveConnectionResendRequestTest(NULL, &read_failure); 1102 KeepAliveConnectionResendRequestTest(NULL, &read_failure);
1103 } 1103 }
1104 1104
1105 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) { 1105 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) {
1106 HttpRequestInfo request; 1106 HttpRequestInfo request;
1107 request.method = "GET"; 1107 request.method = "GET";
1108 request.url = GURL("http://www.google.com/"); 1108 request.url = GURL("http://www.google.com/");
1109 request.load_flags = 0; 1109 request.load_flags = 0;
1110 1110
1111 SessionDependencies session_deps; 1111 SessionDependencies session_deps;
1112 scoped_ptr<HttpTransaction> trans( 1112 scoped_ptr<HttpTransaction> trans(
1113 new HttpNetworkTransaction(CreateSession(&session_deps))); 1113 new HttpNetworkTransaction(CreateSession(&session_deps)));
1114 1114
1115 MockRead data_reads[] = { 1115 MockRead data_reads[] = {
1116 MockRead(true, ERR_CONNECTION_RESET), 1116 MockRead(ASYNC, ERR_CONNECTION_RESET),
1117 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used 1117 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used
1118 MockRead("hello world"), 1118 MockRead("hello world"),
1119 MockRead(false, OK), 1119 MockRead(SYNCHRONOUS, OK),
1120 }; 1120 };
1121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 1121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
1122 session_deps.socket_factory.AddSocketDataProvider(&data); 1122 session_deps.socket_factory.AddSocketDataProvider(&data);
1123 1123
1124 TestCompletionCallback callback; 1124 TestCompletionCallback callback;
1125 1125
1126 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1126 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
1127 EXPECT_EQ(ERR_IO_PENDING, rv); 1127 EXPECT_EQ(ERR_IO_PENDING, rv);
1128 1128
1129 rv = callback.WaitForResult(); 1129 rv = callback.WaitForResult();
1130 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 1130 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
1131 1131
1132 const HttpResponseInfo* response = trans->GetResponseInfo(); 1132 const HttpResponseInfo* response = trans->GetResponseInfo();
1133 EXPECT_TRUE(response == NULL); 1133 EXPECT_TRUE(response == NULL);
1134 } 1134 }
1135 1135
1136 // What do various browsers do when the server closes a non-keepalive 1136 // What do various browsers do when the server closes a non-keepalive
1137 // connection without sending any response header or body? 1137 // connection without sending any response header or body?
1138 // 1138 //
1139 // IE7: error page 1139 // IE7: error page
1140 // Safari 3.1.2 (Windows): error page 1140 // Safari 3.1.2 (Windows): error page
1141 // Firefox 3.0.1: blank page 1141 // Firefox 3.0.1: blank page
1142 // Opera 9.52: after five attempts, blank page 1142 // Opera 9.52: after five attempts, blank page
1143 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE) 1143 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE)
1144 // Us: error page (EMPTY_RESPONSE) 1144 // Us: error page (EMPTY_RESPONSE)
1145 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) { 1145 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) {
1146 MockRead data_reads[] = { 1146 MockRead data_reads[] = {
1147 MockRead(false, OK), // EOF 1147 MockRead(SYNCHRONOUS, OK), // EOF
1148 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used 1148 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used
1149 MockRead("hello world"), 1149 MockRead("hello world"),
1150 MockRead(false, OK), 1150 MockRead(SYNCHRONOUS, OK),
1151 }; 1151 };
1152 SimpleGetHelperResult out = SimpleGetHelper(data_reads, 1152 SimpleGetHelperResult out = SimpleGetHelper(data_reads,
1153 arraysize(data_reads)); 1153 arraysize(data_reads));
1154 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv); 1154 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv);
1155 } 1155 }
1156 1156
1157 // Test that we correctly reuse a keep-alive connection after not explicitly 1157 // Test that we correctly reuse a keep-alive connection after not explicitly
1158 // reading the body. 1158 // reading the body.
1159 TEST_F(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) { 1159 TEST_F(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) {
1160 HttpRequestInfo request; 1160 HttpRequestInfo request;
(...skipping 21 matching lines...) Expand all
1182 MockRead("HTTP/1.1 301 Moved Permanently\r\n" 1182 MockRead("HTTP/1.1 301 Moved Permanently\r\n"
1183 "Content-Length: 5\r\n\r\n" 1183 "Content-Length: 5\r\n\r\n"
1184 "hello"), 1184 "hello"),
1185 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), 1185 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"),
1186 MockRead("hello"), 1186 MockRead("hello"),
1187 }; 1187 };
1188 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), NULL, 0); 1188 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), NULL, 0);
1189 session_deps.socket_factory.AddSocketDataProvider(&data1); 1189 session_deps.socket_factory.AddSocketDataProvider(&data1);
1190 1190
1191 MockRead data2_reads[] = { 1191 MockRead data2_reads[] = {
1192 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 1192 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
1193 }; 1193 };
1194 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0); 1194 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0);
1195 session_deps.socket_factory.AddSocketDataProvider(&data2); 1195 session_deps.socket_factory.AddSocketDataProvider(&data2);
1196 1196
1197 const int kNumUnreadBodies = arraysize(data1_reads) - 2; 1197 const int kNumUnreadBodies = arraysize(data1_reads) - 2;
1198 std::string response_lines[kNumUnreadBodies]; 1198 std::string response_lines[kNumUnreadBodies];
1199 1199
1200 for (size_t i = 0; i < arraysize(data1_reads) - 2; ++i) { 1200 for (size_t i = 0; i < arraysize(data1_reads) - 2; ++i) {
1201 TestCompletionCallback callback; 1201 TestCompletionCallback callback;
1202 1202
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1270 MockRead data_reads1[] = { 1270 MockRead data_reads1[] = {
1271 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 1271 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
1272 // Give a couple authenticate options (only the middle one is actually 1272 // Give a couple authenticate options (only the middle one is actually
1273 // supported). 1273 // supported).
1274 MockRead("WWW-Authenticate: Basic invalid\r\n"), // Malformed. 1274 MockRead("WWW-Authenticate: Basic invalid\r\n"), // Malformed.
1275 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1275 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1276 MockRead("WWW-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), 1276 MockRead("WWW-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"),
1277 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1277 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1278 // Large content-length -- won't matter, as connection will be reset. 1278 // Large content-length -- won't matter, as connection will be reset.
1279 MockRead("Content-Length: 10000\r\n\r\n"), 1279 MockRead("Content-Length: 10000\r\n\r\n"),
1280 MockRead(false, ERR_FAILED), 1280 MockRead(SYNCHRONOUS, ERR_FAILED),
1281 }; 1281 };
1282 1282
1283 // After calling trans->RestartWithAuth(), this is the request we should 1283 // After calling trans->RestartWithAuth(), this is the request we should
1284 // be issuing -- the final header line contains the credentials. 1284 // be issuing -- the final header line contains the credentials.
1285 MockWrite data_writes2[] = { 1285 MockWrite data_writes2[] = {
1286 MockWrite("GET / HTTP/1.1\r\n" 1286 MockWrite("GET / HTTP/1.1\r\n"
1287 "Host: www.google.com\r\n" 1287 "Host: www.google.com\r\n"
1288 "Connection: keep-alive\r\n" 1288 "Connection: keep-alive\r\n"
1289 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 1289 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
1290 }; 1290 };
1291 1291
1292 // Lastly, the server responds with the actual content. 1292 // Lastly, the server responds with the actual content.
1293 MockRead data_reads2[] = { 1293 MockRead data_reads2[] = {
1294 MockRead("HTTP/1.0 200 OK\r\n"), 1294 MockRead("HTTP/1.0 200 OK\r\n"),
1295 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1295 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1296 MockRead("Content-Length: 100\r\n\r\n"), 1296 MockRead("Content-Length: 100\r\n\r\n"),
1297 MockRead(false, OK), 1297 MockRead(SYNCHRONOUS, OK),
1298 }; 1298 };
1299 1299
1300 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 1300 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1301 data_writes1, arraysize(data_writes1)); 1301 data_writes1, arraysize(data_writes1));
1302 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 1302 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1303 data_writes2, arraysize(data_writes2)); 1303 data_writes2, arraysize(data_writes2));
1304 session_deps.socket_factory.AddSocketDataProvider(&data1); 1304 session_deps.socket_factory.AddSocketDataProvider(&data1);
1305 session_deps.socket_factory.AddSocketDataProvider(&data2); 1305 session_deps.socket_factory.AddSocketDataProvider(&data2);
1306 1306
1307 TestCompletionCallback callback1; 1307 TestCompletionCallback callback1;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1346 "Host: www.google.com\r\n" 1346 "Host: www.google.com\r\n"
1347 "Connection: keep-alive\r\n\r\n"), 1347 "Connection: keep-alive\r\n\r\n"),
1348 }; 1348 };
1349 1349
1350 MockRead data_reads[] = { 1350 MockRead data_reads[] = {
1351 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 1351 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
1352 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1352 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1353 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1353 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1354 // Large content-length -- won't matter, as connection will be reset. 1354 // Large content-length -- won't matter, as connection will be reset.
1355 MockRead("Content-Length: 10000\r\n\r\n"), 1355 MockRead("Content-Length: 10000\r\n\r\n"),
1356 MockRead(false, ERR_FAILED), 1356 MockRead(SYNCHRONOUS, ERR_FAILED),
1357 }; 1357 };
1358 1358
1359 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 1359 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
1360 data_writes, arraysize(data_writes)); 1360 data_writes, arraysize(data_writes));
1361 session_deps.socket_factory.AddSocketDataProvider(&data); 1361 session_deps.socket_factory.AddSocketDataProvider(&data);
1362 TestCompletionCallback callback; 1362 TestCompletionCallback callback;
1363 1363
1364 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1364 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
1365 EXPECT_EQ(ERR_IO_PENDING, rv); 1365 EXPECT_EQ(ERR_IO_PENDING, rv);
1366 1366
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1406 // Lastly, the server responds with the actual content. 1406 // Lastly, the server responds with the actual content.
1407 MockRead("HTTP/1.1 200 OK\r\n"), 1407 MockRead("HTTP/1.1 200 OK\r\n"),
1408 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1408 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1409 MockRead("Content-Length: 5\r\n\r\n"), 1409 MockRead("Content-Length: 5\r\n\r\n"),
1410 MockRead("Hello"), 1410 MockRead("Hello"),
1411 }; 1411 };
1412 1412
1413 // If there is a regression where we disconnect a Keep-Alive 1413 // If there is a regression where we disconnect a Keep-Alive
1414 // connection during an auth roundtrip, we'll end up reading this. 1414 // connection during an auth roundtrip, we'll end up reading this.
1415 MockRead data_reads2[] = { 1415 MockRead data_reads2[] = {
1416 MockRead(false, ERR_FAILED), 1416 MockRead(SYNCHRONOUS, ERR_FAILED),
1417 }; 1417 };
1418 1418
1419 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 1419 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1420 data_writes1, arraysize(data_writes1)); 1420 data_writes1, arraysize(data_writes1));
1421 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 1421 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1422 NULL, 0); 1422 NULL, 0);
1423 session_deps.socket_factory.AddSocketDataProvider(&data1); 1423 session_deps.socket_factory.AddSocketDataProvider(&data1);
1424 session_deps.socket_factory.AddSocketDataProvider(&data2); 1424 session_deps.socket_factory.AddSocketDataProvider(&data2);
1425 1425
1426 TestCompletionCallback callback1; 1426 TestCompletionCallback callback1;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 1482
1483 // Lastly, the server responds with the actual content. 1483 // Lastly, the server responds with the actual content.
1484 MockRead("HTTP/1.1 200 OK\r\n"), 1484 MockRead("HTTP/1.1 200 OK\r\n"),
1485 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1485 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1486 MockRead("Content-Length: 5\r\n\r\n"), 1486 MockRead("Content-Length: 5\r\n\r\n"),
1487 MockRead("hello"), 1487 MockRead("hello"),
1488 }; 1488 };
1489 1489
1490 // An incorrect reconnect would cause this to be read. 1490 // An incorrect reconnect would cause this to be read.
1491 MockRead data_reads2[] = { 1491 MockRead data_reads2[] = {
1492 MockRead(false, ERR_FAILED), 1492 MockRead(SYNCHRONOUS, ERR_FAILED),
1493 }; 1493 };
1494 1494
1495 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 1495 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1496 data_writes1, arraysize(data_writes1)); 1496 data_writes1, arraysize(data_writes1));
1497 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 1497 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1498 NULL, 0); 1498 NULL, 0);
1499 session_deps.socket_factory.AddSocketDataProvider(&data1); 1499 session_deps.socket_factory.AddSocketDataProvider(&data1);
1500 session_deps.socket_factory.AddSocketDataProvider(&data2); 1500 session_deps.socket_factory.AddSocketDataProvider(&data2);
1501 1501
1502 TestCompletionCallback callback1; 1502 TestCompletionCallback callback1;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1555 std::string large_body_string("Unauthorized"); 1555 std::string large_body_string("Unauthorized");
1556 large_body_string.append(5 * 1024, ' '); 1556 large_body_string.append(5 * 1024, ' ');
1557 large_body_string.append("\r\n"); 1557 large_body_string.append("\r\n");
1558 1558
1559 MockRead data_reads1[] = { 1559 MockRead data_reads1[] = {
1560 MockRead("HTTP/1.1 401 Unauthorized\r\n"), 1560 MockRead("HTTP/1.1 401 Unauthorized\r\n"),
1561 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1561 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1562 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1562 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1563 // 5134 = 12 + 5 * 1024 + 2 1563 // 5134 = 12 + 5 * 1024 + 2
1564 MockRead("Content-Length: 5134\r\n\r\n"), 1564 MockRead("Content-Length: 5134\r\n\r\n"),
1565 MockRead(true, large_body_string.data(), large_body_string.size()), 1565 MockRead(ASYNC, large_body_string.data(), large_body_string.size()),
1566 1566
1567 // Lastly, the server responds with the actual content. 1567 // Lastly, the server responds with the actual content.
1568 MockRead("HTTP/1.1 200 OK\r\n"), 1568 MockRead("HTTP/1.1 200 OK\r\n"),
1569 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1569 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1570 MockRead("Content-Length: 5\r\n\r\n"), 1570 MockRead("Content-Length: 5\r\n\r\n"),
1571 MockRead("hello"), 1571 MockRead("hello"),
1572 }; 1572 };
1573 1573
1574 // An incorrect reconnect would cause this to be read. 1574 // An incorrect reconnect would cause this to be read.
1575 MockRead data_reads2[] = { 1575 MockRead data_reads2[] = {
1576 MockRead(false, ERR_FAILED), 1576 MockRead(SYNCHRONOUS, ERR_FAILED),
1577 }; 1577 };
1578 1578
1579 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 1579 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1580 data_writes1, arraysize(data_writes1)); 1580 data_writes1, arraysize(data_writes1));
1581 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 1581 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
1582 NULL, 0); 1582 NULL, 0);
1583 session_deps.socket_factory.AddSocketDataProvider(&data1); 1583 session_deps.socket_factory.AddSocketDataProvider(&data1);
1584 session_deps.socket_factory.AddSocketDataProvider(&data2); 1584 session_deps.socket_factory.AddSocketDataProvider(&data2);
1585 1585
1586 TestCompletionCallback callback1; 1586 TestCompletionCallback callback1;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1633 "Connection: keep-alive\r\n" 1633 "Connection: keep-alive\r\n"
1634 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 1634 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
1635 }; 1635 };
1636 1636
1637 MockRead data_reads1[] = { 1637 MockRead data_reads1[] = {
1638 MockRead("HTTP/1.1 401 Unauthorized\r\n"), 1638 MockRead("HTTP/1.1 401 Unauthorized\r\n"),
1639 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1639 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1640 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1640 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1641 MockRead("Content-Length: 14\r\n\r\n"), 1641 MockRead("Content-Length: 14\r\n\r\n"),
1642 // Tell MockTCPClientSocket to simulate the server closing the connection. 1642 // Tell MockTCPClientSocket to simulate the server closing the connection.
1643 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 1643 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
1644 MockRead("Unauthorized\r\n"), 1644 MockRead("Unauthorized\r\n"),
1645 MockRead(false, OK), // The server closes the connection. 1645 MockRead(SYNCHRONOUS, OK), // The server closes the connection.
1646 }; 1646 };
1647 1647
1648 // After calling trans->RestartWithAuth(), this is the request we should 1648 // After calling trans->RestartWithAuth(), this is the request we should
1649 // be issuing -- the final header line contains the credentials. 1649 // be issuing -- the final header line contains the credentials.
1650 MockWrite data_writes2[] = { 1650 MockWrite data_writes2[] = {
1651 MockWrite("GET / HTTP/1.1\r\n" 1651 MockWrite("GET / HTTP/1.1\r\n"
1652 "Host: www.google.com\r\n" 1652 "Host: www.google.com\r\n"
1653 "Connection: keep-alive\r\n" 1653 "Connection: keep-alive\r\n"
1654 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 1654 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
1655 }; 1655 };
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
1736 // No credentials. 1736 // No credentials.
1737 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 1737 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
1738 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1738 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1739 MockRead("Proxy-Connection: close\r\n\r\n"), 1739 MockRead("Proxy-Connection: close\r\n\r\n"),
1740 1740
1741 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 1741 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
1742 1742
1743 MockRead("HTTP/1.1 200 OK\r\n"), 1743 MockRead("HTTP/1.1 200 OK\r\n"),
1744 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 1744 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
1745 MockRead("Content-Length: 5\r\n\r\n"), 1745 MockRead("Content-Length: 5\r\n\r\n"),
1746 MockRead(false, "hello"), 1746 MockRead(SYNCHRONOUS, "hello"),
1747 }; 1747 };
1748 1748
1749 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 1749 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1750 data_writes1, arraysize(data_writes1)); 1750 data_writes1, arraysize(data_writes1));
1751 session_deps.socket_factory.AddSocketDataProvider(&data1); 1751 session_deps.socket_factory.AddSocketDataProvider(&data1);
1752 SSLSocketDataProvider ssl(true, OK); 1752 SSLSocketDataProvider ssl(ASYNC, OK);
1753 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 1753 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
1754 1754
1755 TestCompletionCallback callback1; 1755 TestCompletionCallback callback1;
1756 1756
1757 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 1757 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
1758 1758
1759 int rv = trans->Start(&request, callback1.callback(), log.bound()); 1759 int rv = trans->Start(&request, callback1.callback(), log.bound());
1760 EXPECT_EQ(ERR_IO_PENDING, rv); 1760 EXPECT_EQ(ERR_IO_PENDING, rv);
1761 1761
1762 rv = callback1.WaitForResult(); 1762 rv = callback1.WaitForResult();
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1841 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 1841 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
1842 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1842 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1843 MockRead("Content-Length: 10\r\n\r\n"), 1843 MockRead("Content-Length: 10\r\n\r\n"),
1844 MockRead("0123456789"), 1844 MockRead("0123456789"),
1845 1845
1846 // Wrong credentials (wrong password). 1846 // Wrong credentials (wrong password).
1847 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 1847 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
1848 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1848 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1849 MockRead("Content-Length: 10\r\n\r\n"), 1849 MockRead("Content-Length: 10\r\n\r\n"),
1850 // No response body because the test stops reading here. 1850 // No response body because the test stops reading here.
1851 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 1851 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
1852 }; 1852 };
1853 1853
1854 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 1854 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1855 data_writes1, arraysize(data_writes1)); 1855 data_writes1, arraysize(data_writes1));
1856 session_deps.socket_factory.AddSocketDataProvider(&data1); 1856 session_deps.socket_factory.AddSocketDataProvider(&data1);
1857 1857
1858 TestCompletionCallback callback1; 1858 TestCompletionCallback callback1;
1859 1859
1860 int rv = trans->Start(&request, callback1.callback(), log.bound()); 1860 int rv = trans->Start(&request, callback1.callback(), log.bound());
1861 EXPECT_EQ(ERR_IO_PENDING, rv); 1861 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1925 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 1925 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
1926 "Host: www.google.com\r\n" 1926 "Host: www.google.com\r\n"
1927 "Proxy-Connection: keep-alive\r\n\r\n"), 1927 "Proxy-Connection: keep-alive\r\n\r\n"),
1928 }; 1928 };
1929 1929
1930 // The proxy responds to the connect with a 407. 1930 // The proxy responds to the connect with a 407.
1931 MockRead data_reads[] = { 1931 MockRead data_reads[] = {
1932 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 1932 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
1933 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1933 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1934 MockRead("Content-Length: 10\r\n\r\n"), 1934 MockRead("Content-Length: 10\r\n\r\n"),
1935 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 1935 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
1936 }; 1936 };
1937 1937
1938 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 1938 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
1939 data_writes, arraysize(data_writes)); 1939 data_writes, arraysize(data_writes));
1940 session_deps.socket_factory.AddSocketDataProvider(&data); 1940 session_deps.socket_factory.AddSocketDataProvider(&data);
1941 1941
1942 TestCompletionCallback callback; 1942 TestCompletionCallback callback;
1943 1943
1944 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1944 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
1945 EXPECT_EQ(ERR_IO_PENDING, rv); 1945 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1980 MockWrite("GET / HTTP/1.1\r\n" 1980 MockWrite("GET / HTTP/1.1\r\n"
1981 "Host: www.google.com\r\n" 1981 "Host: www.google.com\r\n"
1982 "Connection: keep-alive\r\n\r\n"), 1982 "Connection: keep-alive\r\n\r\n"),
1983 }; 1983 };
1984 1984
1985 MockRead data_reads1[] = { 1985 MockRead data_reads1[] = {
1986 MockRead("HTTP/1.0 407 Proxy Auth required\r\n"), 1986 MockRead("HTTP/1.0 407 Proxy Auth required\r\n"),
1987 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 1987 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
1988 // Large content-length -- won't matter, as connection will be reset. 1988 // Large content-length -- won't matter, as connection will be reset.
1989 MockRead("Content-Length: 10000\r\n\r\n"), 1989 MockRead("Content-Length: 10000\r\n\r\n"),
1990 MockRead(false, ERR_FAILED), 1990 MockRead(SYNCHRONOUS, ERR_FAILED),
1991 }; 1991 };
1992 1992
1993 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 1993 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
1994 data_writes1, arraysize(data_writes1)); 1994 data_writes1, arraysize(data_writes1));
1995 session_deps.socket_factory.AddSocketDataProvider(&data1); 1995 session_deps.socket_factory.AddSocketDataProvider(&data1);
1996 1996
1997 TestCompletionCallback callback; 1997 TestCompletionCallback callback;
1998 1998
1999 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1999 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
2000 EXPECT_EQ(ERR_IO_PENDING, rv); 2000 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 29 matching lines...) Expand all
2030 "Host: www.google.com\r\n" 2030 "Host: www.google.com\r\n"
2031 "Connection: keep-alive\r\n\r\n"), 2031 "Connection: keep-alive\r\n\r\n"),
2032 }; 2032 };
2033 2033
2034 MockRead data_reads1[] = { 2034 MockRead data_reads1[] = {
2035 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 2035 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
2036 2036
2037 MockRead("HTTP/1.1 407 Unauthorized\r\n"), 2037 MockRead("HTTP/1.1 407 Unauthorized\r\n"),
2038 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 2038 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
2039 MockRead("\r\n"), 2039 MockRead("\r\n"),
2040 MockRead(false, OK), 2040 MockRead(SYNCHRONOUS, OK),
2041 }; 2041 };
2042 2042
2043 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 2043 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2044 data_writes1, arraysize(data_writes1)); 2044 data_writes1, arraysize(data_writes1));
2045 session_deps.socket_factory.AddSocketDataProvider(&data1); 2045 session_deps.socket_factory.AddSocketDataProvider(&data1);
2046 SSLSocketDataProvider ssl(true, OK); 2046 SSLSocketDataProvider ssl(ASYNC, OK);
2047 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2047 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2048 2048
2049 TestCompletionCallback callback1; 2049 TestCompletionCallback callback1;
2050 2050
2051 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2051 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2052 2052
2053 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2053 int rv = trans->Start(&request, callback1.callback(), log.bound());
2054 EXPECT_EQ(ERR_IO_PENDING, rv); 2054 EXPECT_EQ(ERR_IO_PENDING, rv);
2055 2055
2056 rv = callback1.WaitForResult(); 2056 rv = callback1.WaitForResult();
(...skipping 26 matching lines...) Expand all
2083 MockWrite data_writes1[] = { 2083 MockWrite data_writes1[] = {
2084 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 2084 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
2085 "Host: www.google.com\r\n" 2085 "Host: www.google.com\r\n"
2086 "Proxy-Connection: keep-alive\r\n\r\n"), 2086 "Proxy-Connection: keep-alive\r\n\r\n"),
2087 }; 2087 };
2088 2088
2089 MockRead data_reads1[] = { 2089 MockRead data_reads1[] = {
2090 MockRead("HTTP/1.1 200 OK\r\n"), 2090 MockRead("HTTP/1.1 200 OK\r\n"),
2091 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2091 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2092 MockRead("Content-Length: 100\r\n\r\n"), 2092 MockRead("Content-Length: 100\r\n\r\n"),
2093 MockRead(false, OK), 2093 MockRead(SYNCHRONOUS, OK),
2094 }; 2094 };
2095 2095
2096 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 2096 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2097 data_writes1, arraysize(data_writes1)); 2097 data_writes1, arraysize(data_writes1));
2098 session_deps.socket_factory.AddSocketDataProvider(&data1); 2098 session_deps.socket_factory.AddSocketDataProvider(&data1);
2099 SSLSocketDataProvider ssl(true, OK); 2099 SSLSocketDataProvider ssl(ASYNC, OK);
2100 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2100 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2101 2101
2102 TestCompletionCallback callback1; 2102 TestCompletionCallback callback1;
2103 2103
2104 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2104 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2105 2105
2106 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2106 int rv = trans->Start(&request, callback1.callback(), log.bound());
2107 EXPECT_EQ(ERR_IO_PENDING, rv); 2107 EXPECT_EQ(ERR_IO_PENDING, rv);
2108 2108
2109 rv = callback1.WaitForResult(); 2109 rv = callback1.WaitForResult();
(...skipping 28 matching lines...) Expand all
2138 // fetch http://www.google.com/ via SPDY 2138 // fetch http://www.google.com/ via SPDY
2139 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST, 2139 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST,
2140 false)); 2140 false));
2141 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 2141 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
2142 2142
2143 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 2143 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
2144 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 2144 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
2145 MockRead spdy_reads[] = { 2145 MockRead spdy_reads[] = {
2146 CreateMockRead(*resp), 2146 CreateMockRead(*resp),
2147 CreateMockRead(*data), 2147 CreateMockRead(*data),
2148 MockRead(true, 0, 0), 2148 MockRead(ASYNC, 0, 0),
2149 }; 2149 };
2150 2150
2151 scoped_ptr<DelayedSocketData> spdy_data( 2151 scoped_ptr<DelayedSocketData> spdy_data(
2152 new DelayedSocketData( 2152 new DelayedSocketData(
2153 1, // wait for one write to finish before reading. 2153 1, // wait for one write to finish before reading.
2154 spdy_reads, arraysize(spdy_reads), 2154 spdy_reads, arraysize(spdy_reads),
2155 spdy_writes, arraysize(spdy_writes))); 2155 spdy_writes, arraysize(spdy_writes)));
2156 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 2156 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
2157 2157
2158 SSLSocketDataProvider ssl(true, OK); 2158 SSLSocketDataProvider ssl(ASYNC, OK);
2159 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 2159 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
2160 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2160 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2161 2161
2162 TestCompletionCallback callback1; 2162 TestCompletionCallback callback1;
2163 2163
2164 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2164 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2165 2165
2166 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2166 int rv = trans->Start(&request, callback1.callback(), log.bound());
2167 EXPECT_EQ(ERR_IO_PENDING, rv); 2167 EXPECT_EQ(ERR_IO_PENDING, rv);
2168 2168
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2224 1)); 2224 1));
2225 scoped_ptr<spdy::SpdyFrame> body_authentication( 2225 scoped_ptr<spdy::SpdyFrame> body_authentication(
2226 ConstructSpdyBodyFrame(1, true)); 2226 ConstructSpdyBodyFrame(1, true));
2227 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); 2227 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3));
2228 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); 2228 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true));
2229 MockRead spdy_reads[] = { 2229 MockRead spdy_reads[] = {
2230 CreateMockRead(*resp_authentication, 2), 2230 CreateMockRead(*resp_authentication, 2),
2231 CreateMockRead(*body_authentication, 3), 2231 CreateMockRead(*body_authentication, 3),
2232 CreateMockRead(*resp_data, 5), 2232 CreateMockRead(*resp_data, 5),
2233 CreateMockRead(*body_data, 6), 2233 CreateMockRead(*body_data, 6),
2234 MockRead(true, 0, 7), 2234 MockRead(ASYNC, 0, 7),
2235 }; 2235 };
2236 2236
2237 scoped_ptr<OrderedSocketData> data( 2237 scoped_ptr<OrderedSocketData> data(
2238 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), 2238 new OrderedSocketData(spdy_reads, arraysize(spdy_reads),
2239 spdy_writes, arraysize(spdy_writes))); 2239 spdy_writes, arraysize(spdy_writes)));
2240 session_deps.socket_factory.AddSocketDataProvider(data.get()); 2240 session_deps.socket_factory.AddSocketDataProvider(data.get());
2241 2241
2242 SSLSocketDataProvider ssl(true, OK); 2242 SSLSocketDataProvider ssl(ASYNC, OK);
2243 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 2243 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
2244 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2244 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2245 2245
2246 TestCompletionCallback callback1; 2246 TestCompletionCallback callback1;
2247 2247
2248 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2248 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2249 2249
2250 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2250 int rv = trans->Start(&request, callback1.callback(), log.bound());
2251 EXPECT_EQ(ERR_IO_PENDING, rv); 2251 EXPECT_EQ(ERR_IO_PENDING, rv);
2252 2252
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
2314 scoped_ptr<spdy::SpdyFrame> window_update( 2314 scoped_ptr<spdy::SpdyFrame> window_update(
2315 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length())); 2315 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length()));
2316 2316
2317 MockWrite spdy_writes[] = { 2317 MockWrite spdy_writes[] = {
2318 CreateMockWrite(*connect, 1), 2318 CreateMockWrite(*connect, 1),
2319 CreateMockWrite(*wrapped_get, 3), 2319 CreateMockWrite(*wrapped_get, 3),
2320 CreateMockWrite(*window_update, 5) 2320 CreateMockWrite(*window_update, 5)
2321 }; 2321 };
2322 2322
2323 MockRead spdy_reads[] = { 2323 MockRead spdy_reads[] = {
2324 CreateMockRead(*conn_resp, 2, true), 2324 CreateMockRead(*conn_resp, 2, ASYNC),
2325 CreateMockRead(*wrapped_get_resp, 4, true), 2325 CreateMockRead(*wrapped_get_resp, 4, ASYNC),
2326 CreateMockRead(*wrapped_body, 6, true), 2326 CreateMockRead(*wrapped_body, 6, ASYNC),
2327 CreateMockRead(*wrapped_body, 7, true), 2327 CreateMockRead(*wrapped_body, 7, ASYNC),
2328 MockRead(true, 0, 8), 2328 MockRead(ASYNC, 0, 8),
2329 }; 2329 };
2330 2330
2331 scoped_ptr<OrderedSocketData> spdy_data( 2331 scoped_ptr<OrderedSocketData> spdy_data(
2332 new OrderedSocketData( 2332 new OrderedSocketData(
2333 spdy_reads, arraysize(spdy_reads), 2333 spdy_reads, arraysize(spdy_reads),
2334 spdy_writes, arraysize(spdy_writes))); 2334 spdy_writes, arraysize(spdy_writes)));
2335 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 2335 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
2336 2336
2337 SSLSocketDataProvider ssl(true, OK); 2337 SSLSocketDataProvider ssl(ASYNC, OK);
2338 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 2338 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
2339 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2339 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2340 SSLSocketDataProvider ssl2(true, OK); 2340 SSLSocketDataProvider ssl2(ASYNC, OK);
2341 ssl2.was_npn_negotiated = false; 2341 ssl2.was_npn_negotiated = false;
2342 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown; 2342 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown;
2343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 2343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
2344 2344
2345 TestCompletionCallback callback1; 2345 TestCompletionCallback callback1;
2346 2346
2347 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2347 int rv = trans->Start(&request, callback1.callback(), log.bound());
2348 EXPECT_EQ(ERR_IO_PENDING, rv); 2348 EXPECT_EQ(ERR_IO_PENDING, rv);
2349 2349
2350 rv = callback1.WaitForResult(); 2350 rv = callback1.WaitForResult();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2394 ConstructSpdyWindowUpdate(1, wrapped_body->length())); 2394 ConstructSpdyWindowUpdate(1, wrapped_body->length()));
2395 2395
2396 MockWrite spdy_writes[] = { 2396 MockWrite spdy_writes[] = {
2397 CreateMockWrite(*connect, 1), 2397 CreateMockWrite(*connect, 1),
2398 CreateMockWrite(*wrapped_get, 3), 2398 CreateMockWrite(*wrapped_get, 3),
2399 CreateMockWrite(*window_update_get_resp, 5), 2399 CreateMockWrite(*window_update_get_resp, 5),
2400 CreateMockWrite(*window_update_body, 7), 2400 CreateMockWrite(*window_update_body, 7),
2401 }; 2401 };
2402 2402
2403 MockRead spdy_reads[] = { 2403 MockRead spdy_reads[] = {
2404 CreateMockRead(*conn_resp, 2, true), 2404 CreateMockRead(*conn_resp, 2, ASYNC),
2405 CreateMockRead(*wrapped_get_resp, 4, true), 2405 CreateMockRead(*wrapped_get_resp, 4, ASYNC),
2406 CreateMockRead(*wrapped_body, 6, true), 2406 CreateMockRead(*wrapped_body, 6, ASYNC),
2407 MockRead(true, 0, 8), 2407 MockRead(ASYNC, 0, 8),
2408 }; 2408 };
2409 2409
2410 scoped_ptr<OrderedSocketData> spdy_data( 2410 scoped_ptr<OrderedSocketData> spdy_data(
2411 new OrderedSocketData( 2411 new OrderedSocketData(
2412 spdy_reads, arraysize(spdy_reads), 2412 spdy_reads, arraysize(spdy_reads),
2413 spdy_writes, arraysize(spdy_writes))); 2413 spdy_writes, arraysize(spdy_writes)));
2414 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 2414 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
2415 2415
2416 SSLSocketDataProvider ssl(true, OK); 2416 SSLSocketDataProvider ssl(ASYNC, OK);
2417 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 2417 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
2418 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2418 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2419 SSLSocketDataProvider ssl2(true, OK); 2419 SSLSocketDataProvider ssl2(ASYNC, OK);
2420 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21); 2420 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21);
2421 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2421 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2422 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 2422 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
2423 2423
2424 TestCompletionCallback callback1; 2424 TestCompletionCallback callback1;
2425 2425
2426 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2426 int rv = trans->Start(&request, callback1.callback(), log.bound());
2427 EXPECT_EQ(ERR_IO_PENDING, rv); 2427 EXPECT_EQ(ERR_IO_PENDING, rv);
2428 2428
2429 rv = callback1.WaitForResult(); 2429 rv = callback1.WaitForResult();
(...skipping 30 matching lines...) Expand all
2460 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL)); 2460 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL));
2461 2461
2462 MockWrite spdy_writes[] = { 2462 MockWrite spdy_writes[] = {
2463 CreateMockWrite(*connect, 1), 2463 CreateMockWrite(*connect, 1),
2464 CreateMockWrite(*get, 3), 2464 CreateMockWrite(*get, 3),
2465 }; 2465 };
2466 2466
2467 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1)); 2467 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1));
2468 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 2468 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
2469 MockRead spdy_reads[] = { 2469 MockRead spdy_reads[] = {
2470 CreateMockRead(*resp, 2, true), 2470 CreateMockRead(*resp, 2, ASYNC),
2471 MockRead(true, 0, 4), 2471 MockRead(ASYNC, 0, 4),
2472 }; 2472 };
2473 2473
2474 scoped_ptr<OrderedSocketData> spdy_data( 2474 scoped_ptr<OrderedSocketData> spdy_data(
2475 new OrderedSocketData( 2475 new OrderedSocketData(
2476 spdy_reads, arraysize(spdy_reads), 2476 spdy_reads, arraysize(spdy_reads),
2477 spdy_writes, arraysize(spdy_writes))); 2477 spdy_writes, arraysize(spdy_writes)));
2478 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 2478 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
2479 2479
2480 SSLSocketDataProvider ssl(true, OK); 2480 SSLSocketDataProvider ssl(ASYNC, OK);
2481 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 2481 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
2482 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2482 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2483 SSLSocketDataProvider ssl2(true, OK); 2483 SSLSocketDataProvider ssl2(ASYNC, OK);
2484 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21); 2484 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21);
2485 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 2485 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
2486 2486
2487 TestCompletionCallback callback1; 2487 TestCompletionCallback callback1;
2488 2488
2489 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2489 int rv = trans->Start(&request, callback1.callback(), log.bound());
2490 EXPECT_EQ(ERR_IO_PENDING, rv); 2490 EXPECT_EQ(ERR_IO_PENDING, rv);
2491 2491
2492 rv = callback1.WaitForResult(); 2492 rv = callback1.WaitForResult();
2493 EXPECT_EQ(OK, rv); 2493 EXPECT_EQ(OK, rv);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2531 MockRead data_reads1[] = { 2531 MockRead data_reads1[] = {
2532 // No credentials. 2532 // No credentials.
2533 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 2533 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
2534 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 2534 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
2535 MockRead("Proxy-Connection: keep-alive\r\n"), 2535 MockRead("Proxy-Connection: keep-alive\r\n"),
2536 MockRead("Content-Length: 0\r\n\r\n"), 2536 MockRead("Content-Length: 0\r\n\r\n"),
2537 2537
2538 MockRead("HTTP/1.1 200 OK\r\n"), 2538 MockRead("HTTP/1.1 200 OK\r\n"),
2539 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2539 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2540 MockRead("Content-Length: 100\r\n\r\n"), 2540 MockRead("Content-Length: 100\r\n\r\n"),
2541 MockRead(false, OK), 2541 MockRead(SYNCHRONOUS, OK),
2542 }; 2542 };
2543 2543
2544 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 2544 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2545 data_writes1, arraysize(data_writes1)); 2545 data_writes1, arraysize(data_writes1));
2546 session_deps.socket_factory.AddSocketDataProvider(&data1); 2546 session_deps.socket_factory.AddSocketDataProvider(&data1);
2547 SSLSocketDataProvider ssl(true, OK); 2547 SSLSocketDataProvider ssl(ASYNC, OK);
2548 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2548 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2549 2549
2550 TestCompletionCallback callback1; 2550 TestCompletionCallback callback1;
2551 2551
2552 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2552 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2553 2553
2554 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2554 int rv = trans->Start(&request, callback1.callback(), log.bound());
2555 EXPECT_EQ(ERR_IO_PENDING, rv); 2555 EXPECT_EQ(ERR_IO_PENDING, rv);
2556 2556
2557 rv = callback1.WaitForResult(); 2557 rv = callback1.WaitForResult();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2601 MockWrite data_writes[] = { 2601 MockWrite data_writes[] = {
2602 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 2602 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
2603 "Host: www.google.com\r\n" 2603 "Host: www.google.com\r\n"
2604 "Proxy-Connection: keep-alive\r\n\r\n"), 2604 "Proxy-Connection: keep-alive\r\n\r\n"),
2605 }; 2605 };
2606 2606
2607 MockRead data_reads[] = { 2607 MockRead data_reads[] = {
2608 status, 2608 status,
2609 MockRead("Content-Length: 10\r\n\r\n"), 2609 MockRead("Content-Length: 10\r\n\r\n"),
2610 // No response body because the test stops reading here. 2610 // No response body because the test stops reading here.
2611 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 2611 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
2612 }; 2612 };
2613 2613
2614 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 2614 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
2615 data_writes, arraysize(data_writes)); 2615 data_writes, arraysize(data_writes));
2616 session_deps.socket_factory.AddSocketDataProvider(&data); 2616 session_deps.socket_factory.AddSocketDataProvider(&data);
2617 2617
2618 TestCompletionCallback callback; 2618 TestCompletionCallback callback;
2619 2619
2620 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2620 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2621 2621
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
2819 MockRead data_reads1[] = { 2819 MockRead data_reads1[] = {
2820 MockRead("HTTP/1.0 407 Unauthorized\r\n"), 2820 MockRead("HTTP/1.0 407 Unauthorized\r\n"),
2821 // Give a couple authenticate options (only the middle one is actually 2821 // Give a couple authenticate options (only the middle one is actually
2822 // supported). 2822 // supported).
2823 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed. 2823 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed.
2824 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 2824 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
2825 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), 2825 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"),
2826 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2826 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2827 // Large content-length -- won't matter, as connection will be reset. 2827 // Large content-length -- won't matter, as connection will be reset.
2828 MockRead("Content-Length: 10000\r\n\r\n"), 2828 MockRead("Content-Length: 10000\r\n\r\n"),
2829 MockRead(false, ERR_FAILED), 2829 MockRead(SYNCHRONOUS, ERR_FAILED),
2830 }; 2830 };
2831 2831
2832 // After calling trans->RestartWithAuth() the first time, this is the 2832 // After calling trans->RestartWithAuth() the first time, this is the
2833 // request we should be issuing -- the final header line contains the 2833 // request we should be issuing -- the final header line contains the
2834 // proxy's credentials. 2834 // proxy's credentials.
2835 MockWrite data_writes2[] = { 2835 MockWrite data_writes2[] = {
2836 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 2836 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
2837 "Host: www.google.com\r\n" 2837 "Host: www.google.com\r\n"
2838 "Proxy-Connection: keep-alive\r\n" 2838 "Proxy-Connection: keep-alive\r\n"
2839 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 2839 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
2840 }; 2840 };
2841 2841
2842 // Now the proxy server lets the request pass through to origin server. 2842 // Now the proxy server lets the request pass through to origin server.
2843 // The origin server responds with a 401. 2843 // The origin server responds with a 401.
2844 MockRead data_reads2[] = { 2844 MockRead data_reads2[] = {
2845 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 2845 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
2846 // Note: We are using the same realm-name as the proxy server. This is 2846 // Note: We are using the same realm-name as the proxy server. This is
2847 // completely valid, as realms are unique across hosts. 2847 // completely valid, as realms are unique across hosts.
2848 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 2848 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
2849 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2849 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2850 MockRead("Content-Length: 2000\r\n\r\n"), 2850 MockRead("Content-Length: 2000\r\n\r\n"),
2851 MockRead(false, ERR_FAILED), // Won't be reached. 2851 MockRead(SYNCHRONOUS, ERR_FAILED), // Won't be reached.
2852 }; 2852 };
2853 2853
2854 // After calling trans->RestartWithAuth() the second time, we should send 2854 // After calling trans->RestartWithAuth() the second time, we should send
2855 // the credentials for both the proxy and origin server. 2855 // the credentials for both the proxy and origin server.
2856 MockWrite data_writes3[] = { 2856 MockWrite data_writes3[] = {
2857 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 2857 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
2858 "Host: www.google.com\r\n" 2858 "Host: www.google.com\r\n"
2859 "Proxy-Connection: keep-alive\r\n" 2859 "Proxy-Connection: keep-alive\r\n"
2860 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" 2860 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n"
2861 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), 2861 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"),
2862 }; 2862 };
2863 2863
2864 // Lastly we get the desired content. 2864 // Lastly we get the desired content.
2865 MockRead data_reads3[] = { 2865 MockRead data_reads3[] = {
2866 MockRead("HTTP/1.0 200 OK\r\n"), 2866 MockRead("HTTP/1.0 200 OK\r\n"),
2867 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2867 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2868 MockRead("Content-Length: 100\r\n\r\n"), 2868 MockRead("Content-Length: 100\r\n\r\n"),
2869 MockRead(false, OK), 2869 MockRead(SYNCHRONOUS, OK),
2870 }; 2870 };
2871 2871
2872 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 2872 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2873 data_writes1, arraysize(data_writes1)); 2873 data_writes1, arraysize(data_writes1));
2874 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 2874 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2875 data_writes2, arraysize(data_writes2)); 2875 data_writes2, arraysize(data_writes2));
2876 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), 2876 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
2877 data_writes3, arraysize(data_writes3)); 2877 data_writes3, arraysize(data_writes3));
2878 session_deps.socket_factory.AddSocketDataProvider(&data1); 2878 session_deps.socket_factory.AddSocketDataProvider(&data1);
2879 session_deps.socket_factory.AddSocketDataProvider(&data2); 2879 session_deps.socket_factory.AddSocketDataProvider(&data2);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2947 MockRead data_reads1[] = { 2947 MockRead data_reads1[] = {
2948 MockRead("HTTP/1.1 401 Access Denied\r\n"), 2948 MockRead("HTTP/1.1 401 Access Denied\r\n"),
2949 // Negotiate and NTLM are often requested together. However, we only want 2949 // Negotiate and NTLM are often requested together. However, we only want
2950 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip 2950 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip
2951 // the header that requests Negotiate for this test. 2951 // the header that requests Negotiate for this test.
2952 MockRead("WWW-Authenticate: NTLM\r\n"), 2952 MockRead("WWW-Authenticate: NTLM\r\n"),
2953 MockRead("Connection: close\r\n"), 2953 MockRead("Connection: close\r\n"),
2954 MockRead("Content-Length: 42\r\n"), 2954 MockRead("Content-Length: 42\r\n"),
2955 MockRead("Content-Type: text/html\r\n\r\n"), 2955 MockRead("Content-Type: text/html\r\n\r\n"),
2956 // Missing content -- won't matter, as connection will be reset. 2956 // Missing content -- won't matter, as connection will be reset.
2957 MockRead(false, ERR_UNEXPECTED), 2957 MockRead(SYNCHRONOUS, ERR_UNEXPECTED),
2958 }; 2958 };
2959 2959
2960 MockWrite data_writes2[] = { 2960 MockWrite data_writes2[] = {
2961 // After restarting with a null identity, this is the 2961 // After restarting with a null identity, this is the
2962 // request we should be issuing -- the final header line contains a Type 2962 // request we should be issuing -- the final header line contains a Type
2963 // 1 message. 2963 // 1 message.
2964 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 2964 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
2965 "Host: 172.22.68.17\r\n" 2965 "Host: 172.22.68.17\r\n"
2966 "Connection: keep-alive\r\n" 2966 "Connection: keep-alive\r\n"
2967 "Authorization: NTLM " 2967 "Authorization: NTLM "
(...skipping 25 matching lines...) Expand all
2993 "BtAAAAAAA=\r\n"), 2993 "BtAAAAAAA=\r\n"),
2994 MockRead("Content-Length: 42\r\n"), 2994 MockRead("Content-Length: 42\r\n"),
2995 MockRead("Content-Type: text/html\r\n\r\n"), 2995 MockRead("Content-Type: text/html\r\n\r\n"),
2996 MockRead("You are not authorized to view this page\r\n"), 2996 MockRead("You are not authorized to view this page\r\n"),
2997 2997
2998 // Lastly we get the desired content. 2998 // Lastly we get the desired content.
2999 MockRead("HTTP/1.1 200 OK\r\n"), 2999 MockRead("HTTP/1.1 200 OK\r\n"),
3000 MockRead("Content-Type: text/html; charset=utf-8\r\n"), 3000 MockRead("Content-Type: text/html; charset=utf-8\r\n"),
3001 MockRead("Content-Length: 13\r\n\r\n"), 3001 MockRead("Content-Length: 13\r\n\r\n"),
3002 MockRead("Please Login\r\n"), 3002 MockRead("Please Login\r\n"),
3003 MockRead(false, OK), 3003 MockRead(SYNCHRONOUS, OK),
3004 }; 3004 };
3005 3005
3006 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3006 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3007 data_writes1, arraysize(data_writes1)); 3007 data_writes1, arraysize(data_writes1));
3008 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3008 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3009 data_writes2, arraysize(data_writes2)); 3009 data_writes2, arraysize(data_writes2));
3010 session_deps.socket_factory.AddSocketDataProvider(&data1); 3010 session_deps.socket_factory.AddSocketDataProvider(&data1);
3011 session_deps.socket_factory.AddSocketDataProvider(&data2); 3011 session_deps.socket_factory.AddSocketDataProvider(&data2);
3012 3012
3013 TestCompletionCallback callback1; 3013 TestCompletionCallback callback1;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3076 MockRead data_reads1[] = { 3076 MockRead data_reads1[] = {
3077 MockRead("HTTP/1.1 401 Access Denied\r\n"), 3077 MockRead("HTTP/1.1 401 Access Denied\r\n"),
3078 // Negotiate and NTLM are often requested together. However, we only want 3078 // Negotiate and NTLM are often requested together. However, we only want
3079 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip 3079 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip
3080 // the header that requests Negotiate for this test. 3080 // the header that requests Negotiate for this test.
3081 MockRead("WWW-Authenticate: NTLM\r\n"), 3081 MockRead("WWW-Authenticate: NTLM\r\n"),
3082 MockRead("Connection: close\r\n"), 3082 MockRead("Connection: close\r\n"),
3083 MockRead("Content-Length: 42\r\n"), 3083 MockRead("Content-Length: 42\r\n"),
3084 MockRead("Content-Type: text/html\r\n\r\n"), 3084 MockRead("Content-Type: text/html\r\n\r\n"),
3085 // Missing content -- won't matter, as connection will be reset. 3085 // Missing content -- won't matter, as connection will be reset.
3086 MockRead(false, ERR_UNEXPECTED), 3086 MockRead(SYNCHRONOUS, ERR_UNEXPECTED),
3087 }; 3087 };
3088 3088
3089 MockWrite data_writes2[] = { 3089 MockWrite data_writes2[] = {
3090 // After restarting with a null identity, this is the 3090 // After restarting with a null identity, this is the
3091 // request we should be issuing -- the final header line contains a Type 3091 // request we should be issuing -- the final header line contains a Type
3092 // 1 message. 3092 // 1 message.
3093 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 3093 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
3094 "Host: 172.22.68.17\r\n" 3094 "Host: 172.22.68.17\r\n"
3095 "Connection: keep-alive\r\n" 3095 "Connection: keep-alive\r\n"
3096 "Authorization: NTLM " 3096 "Authorization: NTLM "
(...skipping 27 matching lines...) Expand all
3124 MockRead("Content-Type: text/html\r\n\r\n"), 3124 MockRead("Content-Type: text/html\r\n\r\n"),
3125 MockRead("You are not authorized to view this page\r\n"), 3125 MockRead("You are not authorized to view this page\r\n"),
3126 3126
3127 // Wrong password. 3127 // Wrong password.
3128 MockRead("HTTP/1.1 401 Access Denied\r\n"), 3128 MockRead("HTTP/1.1 401 Access Denied\r\n"),
3129 MockRead("WWW-Authenticate: NTLM\r\n"), 3129 MockRead("WWW-Authenticate: NTLM\r\n"),
3130 MockRead("Connection: close\r\n"), 3130 MockRead("Connection: close\r\n"),
3131 MockRead("Content-Length: 42\r\n"), 3131 MockRead("Content-Length: 42\r\n"),
3132 MockRead("Content-Type: text/html\r\n\r\n"), 3132 MockRead("Content-Type: text/html\r\n\r\n"),
3133 // Missing content -- won't matter, as connection will be reset. 3133 // Missing content -- won't matter, as connection will be reset.
3134 MockRead(false, ERR_UNEXPECTED), 3134 MockRead(SYNCHRONOUS, ERR_UNEXPECTED),
3135 }; 3135 };
3136 3136
3137 MockWrite data_writes3[] = { 3137 MockWrite data_writes3[] = {
3138 // After restarting with a null identity, this is the 3138 // After restarting with a null identity, this is the
3139 // request we should be issuing -- the final header line contains a Type 3139 // request we should be issuing -- the final header line contains a Type
3140 // 1 message. 3140 // 1 message.
3141 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 3141 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
3142 "Host: 172.22.68.17\r\n" 3142 "Host: 172.22.68.17\r\n"
3143 "Connection: keep-alive\r\n" 3143 "Connection: keep-alive\r\n"
3144 "Authorization: NTLM " 3144 "Authorization: NTLM "
(...skipping 25 matching lines...) Expand all
3170 "BtAAAAAAA=\r\n"), 3170 "BtAAAAAAA=\r\n"),
3171 MockRead("Content-Length: 42\r\n"), 3171 MockRead("Content-Length: 42\r\n"),
3172 MockRead("Content-Type: text/html\r\n\r\n"), 3172 MockRead("Content-Type: text/html\r\n\r\n"),
3173 MockRead("You are not authorized to view this page\r\n"), 3173 MockRead("You are not authorized to view this page\r\n"),
3174 3174
3175 // Lastly we get the desired content. 3175 // Lastly we get the desired content.
3176 MockRead("HTTP/1.1 200 OK\r\n"), 3176 MockRead("HTTP/1.1 200 OK\r\n"),
3177 MockRead("Content-Type: text/html; charset=utf-8\r\n"), 3177 MockRead("Content-Type: text/html; charset=utf-8\r\n"),
3178 MockRead("Content-Length: 13\r\n\r\n"), 3178 MockRead("Content-Length: 13\r\n\r\n"),
3179 MockRead("Please Login\r\n"), 3179 MockRead("Please Login\r\n"),
3180 MockRead(false, OK), 3180 MockRead(SYNCHRONOUS, OK),
3181 }; 3181 };
3182 3182
3183 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3183 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3184 data_writes1, arraysize(data_writes1)); 3184 data_writes1, arraysize(data_writes1));
3185 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3185 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3186 data_writes2, arraysize(data_writes2)); 3186 data_writes2, arraysize(data_writes2));
3187 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), 3187 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
3188 data_writes3, arraysize(data_writes3)); 3188 data_writes3, arraysize(data_writes3));
3189 session_deps.socket_factory.AddSocketDataProvider(&data1); 3189 session_deps.socket_factory.AddSocketDataProvider(&data1);
3190 session_deps.socket_factory.AddSocketDataProvider(&data2); 3190 session_deps.socket_factory.AddSocketDataProvider(&data2);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
3267 SessionDependencies session_deps; 3267 SessionDependencies session_deps;
3268 scoped_ptr<HttpTransaction> trans( 3268 scoped_ptr<HttpTransaction> trans(
3269 new HttpNetworkTransaction(CreateSession(&session_deps))); 3269 new HttpNetworkTransaction(CreateSession(&session_deps)));
3270 3270
3271 // Respond with 300 kb of headers (we should fail after 256 kb). 3271 // Respond with 300 kb of headers (we should fail after 256 kb).
3272 std::string large_headers_string; 3272 std::string large_headers_string;
3273 FillLargeHeadersString(&large_headers_string, 300 * 1024); 3273 FillLargeHeadersString(&large_headers_string, 300 * 1024);
3274 3274
3275 MockRead data_reads[] = { 3275 MockRead data_reads[] = {
3276 MockRead("HTTP/1.0 200 OK\r\n"), 3276 MockRead("HTTP/1.0 200 OK\r\n"),
3277 MockRead(true, large_headers_string.data(), large_headers_string.size()), 3277 MockRead(ASYNC, large_headers_string.data(), large_headers_string.size()),
3278 MockRead("\r\nBODY"), 3278 MockRead("\r\nBODY"),
3279 MockRead(false, OK), 3279 MockRead(SYNCHRONOUS, OK),
3280 }; 3280 };
3281 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 3281 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3282 session_deps.socket_factory.AddSocketDataProvider(&data); 3282 session_deps.socket_factory.AddSocketDataProvider(&data);
3283 3283
3284 TestCompletionCallback callback; 3284 TestCompletionCallback callback;
3285 3285
3286 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 3286 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
3287 EXPECT_EQ(ERR_IO_PENDING, rv); 3287 EXPECT_EQ(ERR_IO_PENDING, rv);
3288 3288
3289 rv = callback.WaitForResult(); 3289 rv = callback.WaitForResult();
(...skipping 25 matching lines...) Expand all
3315 "Host: www.google.com\r\n" 3315 "Host: www.google.com\r\n"
3316 "Proxy-Connection: keep-alive\r\n\r\n"), 3316 "Proxy-Connection: keep-alive\r\n\r\n"),
3317 }; 3317 };
3318 3318
3319 // The proxy responds to the connect with a 404, using a persistent 3319 // The proxy responds to the connect with a 404, using a persistent
3320 // connection. Usually a proxy would return 501 (not implemented), 3320 // connection. Usually a proxy would return 501 (not implemented),
3321 // or 200 (tunnel established). 3321 // or 200 (tunnel established).
3322 MockRead data_reads1[] = { 3322 MockRead data_reads1[] = {
3323 MockRead("HTTP/1.1 404 Not Found\r\n"), 3323 MockRead("HTTP/1.1 404 Not Found\r\n"),
3324 MockRead("Content-Length: 10\r\n\r\n"), 3324 MockRead("Content-Length: 10\r\n\r\n"),
3325 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 3325 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
3326 }; 3326 };
3327 3327
3328 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3328 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3329 data_writes1, arraysize(data_writes1)); 3329 data_writes1, arraysize(data_writes1));
3330 session_deps.socket_factory.AddSocketDataProvider(&data1); 3330 session_deps.socket_factory.AddSocketDataProvider(&data1);
3331 3331
3332 TestCompletionCallback callback1; 3332 TestCompletionCallback callback1;
3333 3333
3334 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 3334 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
3335 EXPECT_EQ(ERR_IO_PENDING, rv); 3335 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 29 matching lines...) Expand all
3365 3365
3366 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 3366 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
3367 3367
3368 MockRead data_reads[] = { 3368 MockRead data_reads[] = {
3369 // A part of the response body is received with the response headers. 3369 // A part of the response body is received with the response headers.
3370 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"), 3370 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"),
3371 // The rest of the response body is received in two parts. 3371 // The rest of the response body is received in two parts.
3372 MockRead("lo"), 3372 MockRead("lo"),
3373 MockRead(" world"), 3373 MockRead(" world"),
3374 MockRead("junk"), // Should not be read!! 3374 MockRead("junk"), // Should not be read!!
3375 MockRead(false, OK), 3375 MockRead(SYNCHRONOUS, OK),
3376 }; 3376 };
3377 3377
3378 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 3378 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3379 session_deps.socket_factory.AddSocketDataProvider(&data); 3379 session_deps.socket_factory.AddSocketDataProvider(&data);
3380 3380
3381 TestCompletionCallback callback; 3381 TestCompletionCallback callback;
3382 3382
3383 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 3383 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
3384 EXPECT_EQ(ERR_IO_PENDING, rv); 3384 EXPECT_EQ(ERR_IO_PENDING, rv);
3385 3385
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3420 MockWrite data_writes[] = { 3420 MockWrite data_writes[] = {
3421 MockWrite("GET / HTTP/1.1\r\n" 3421 MockWrite("GET / HTTP/1.1\r\n"
3422 "Host: www.google.com\r\n" 3422 "Host: www.google.com\r\n"
3423 "Connection: keep-alive\r\n\r\n"), 3423 "Connection: keep-alive\r\n\r\n"),
3424 }; 3424 };
3425 3425
3426 MockRead data_reads[] = { 3426 MockRead data_reads[] = {
3427 MockRead("HTTP/1.1 200 OK\r\n"), 3427 MockRead("HTTP/1.1 200 OK\r\n"),
3428 MockRead("Content-Length: 11\r\n\r\n"), 3428 MockRead("Content-Length: 11\r\n\r\n"),
3429 MockRead("hello world"), 3429 MockRead("hello world"),
3430 MockRead(false, OK), 3430 MockRead(SYNCHRONOUS, OK),
3431 }; 3431 };
3432 3432
3433 SSLSocketDataProvider ssl(true, OK); 3433 SSLSocketDataProvider ssl(ASYNC, OK);
3434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 3434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
3435 3435
3436 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 3436 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3437 data_writes, arraysize(data_writes)); 3437 data_writes, arraysize(data_writes));
3438 session_deps.socket_factory.AddSocketDataProvider(&data); 3438 session_deps.socket_factory.AddSocketDataProvider(&data);
3439 3439
3440 TestCompletionCallback callback; 3440 TestCompletionCallback callback;
3441 3441
3442 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 3442 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
3443 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 3443 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3481 "Host: www.google.com\r\n" 3481 "Host: www.google.com\r\n"
3482 "Connection: keep-alive\r\n\r\n"), 3482 "Connection: keep-alive\r\n\r\n"),
3483 MockWrite("GET / HTTP/1.1\r\n" 3483 MockWrite("GET / HTTP/1.1\r\n"
3484 "Host: www.google.com\r\n" 3484 "Host: www.google.com\r\n"
3485 "Connection: keep-alive\r\n\r\n"), 3485 "Connection: keep-alive\r\n\r\n"),
3486 }; 3486 };
3487 3487
3488 MockRead data_reads[] = { 3488 MockRead data_reads[] = {
3489 MockRead("HTTP/1.1 200 OK\r\n"), 3489 MockRead("HTTP/1.1 200 OK\r\n"),
3490 MockRead("Content-Length: 11\r\n\r\n"), 3490 MockRead("Content-Length: 11\r\n\r\n"),
3491 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 3491 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
3492 MockRead("hello world"), 3492 MockRead("hello world"),
3493 MockRead(true, 0, 0) // EOF 3493 MockRead(ASYNC, 0, 0) // EOF
3494 }; 3494 };
3495 3495
3496 SSLSocketDataProvider ssl(true, OK); 3496 SSLSocketDataProvider ssl(ASYNC, OK);
3497 SSLSocketDataProvider ssl2(true, OK); 3497 SSLSocketDataProvider ssl2(ASYNC, OK);
3498 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 3498 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
3499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 3499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
3500 3500
3501 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 3501 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3502 data_writes, arraysize(data_writes)); 3502 data_writes, arraysize(data_writes));
3503 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), 3503 StaticSocketDataProvider data2(data_reads, arraysize(data_reads),
3504 data_writes, arraysize(data_writes)); 3504 data_writes, arraysize(data_writes));
3505 session_deps.socket_factory.AddSocketDataProvider(&data); 3505 session_deps.socket_factory.AddSocketDataProvider(&data);
3506 session_deps.socket_factory.AddSocketDataProvider(&data2); 3506 session_deps.socket_factory.AddSocketDataProvider(&data2);
3507 3507
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
3576 SessionDependencies session_deps; 3576 SessionDependencies session_deps;
3577 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 3577 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
3578 3578
3579 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 3579 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
3580 3580
3581 MockRead data_reads[] = { 3581 MockRead data_reads[] = {
3582 MockRead("HTTP/1.1 204 No Content\r\n" 3582 MockRead("HTTP/1.1 204 No Content\r\n"
3583 "Content-Length: 0\r\n" 3583 "Content-Length: 0\r\n"
3584 "Content-Type: text/html\r\n\r\n"), 3584 "Content-Type: text/html\r\n\r\n"),
3585 MockRead("junk"), // Should not be read!! 3585 MockRead("junk"), // Should not be read!!
3586 MockRead(false, OK), 3586 MockRead(SYNCHRONOUS, OK),
3587 }; 3587 };
3588 3588
3589 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 3589 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3590 session_deps.socket_factory.AddSocketDataProvider(&data); 3590 session_deps.socket_factory.AddSocketDataProvider(&data);
3591 3591
3592 TestCompletionCallback callback; 3592 TestCompletionCallback callback;
3593 3593
3594 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 3594 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
3595 EXPECT_EQ(ERR_IO_PENDING, rv); 3595 EXPECT_EQ(ERR_IO_PENDING, rv);
3596 3596
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3639 SessionDependencies session_deps; 3639 SessionDependencies session_deps;
3640 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 3640 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
3641 3641
3642 // The first socket is used for transaction 1 and the first attempt of 3642 // The first socket is used for transaction 1 and the first attempt of
3643 // transaction 2. 3643 // transaction 2.
3644 3644
3645 // The response of transaction 1. 3645 // The response of transaction 1.
3646 MockRead data_reads1[] = { 3646 MockRead data_reads1[] = {
3647 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"), 3647 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"),
3648 MockRead("hello world"), 3648 MockRead("hello world"),
3649 MockRead(false, OK), 3649 MockRead(SYNCHRONOUS, OK),
3650 }; 3650 };
3651 // The mock write results of transaction 1 and the first attempt of 3651 // The mock write results of transaction 1 and the first attempt of
3652 // transaction 2. 3652 // transaction 2.
3653 MockWrite data_writes1[] = { 3653 MockWrite data_writes1[] = {
3654 MockWrite(false, 64), // GET 3654 MockWrite(SYNCHRONOUS, 64), // GET
3655 MockWrite(false, 93), // POST 3655 MockWrite(SYNCHRONOUS, 93), // POST
3656 MockWrite(false, ERR_CONNECTION_ABORTED), // POST data 3656 MockWrite(SYNCHRONOUS, ERR_CONNECTION_ABORTED), // POST data
3657 }; 3657 };
3658 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3658 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3659 data_writes1, arraysize(data_writes1)); 3659 data_writes1, arraysize(data_writes1));
3660 3660
3661 // The second socket is used for the second attempt of transaction 2. 3661 // The second socket is used for the second attempt of transaction 2.
3662 3662
3663 // The response of transaction 2. 3663 // The response of transaction 2.
3664 MockRead data_reads2[] = { 3664 MockRead data_reads2[] = {
3665 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"), 3665 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"),
3666 MockRead("welcome"), 3666 MockRead("welcome"),
3667 MockRead(false, OK), 3667 MockRead(SYNCHRONOUS, OK),
3668 }; 3668 };
3669 // The mock write results of the second attempt of transaction 2. 3669 // The mock write results of the second attempt of transaction 2.
3670 MockWrite data_writes2[] = { 3670 MockWrite data_writes2[] = {
3671 MockWrite(false, 93), // POST 3671 MockWrite(SYNCHRONOUS, 93), // POST
3672 MockWrite(false, 3), // POST data 3672 MockWrite(SYNCHRONOUS, 3), // POST data
3673 }; 3673 };
3674 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3674 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3675 data_writes2, arraysize(data_writes2)); 3675 data_writes2, arraysize(data_writes2));
3676 3676
3677 session_deps.socket_factory.AddSocketDataProvider(&data1); 3677 session_deps.socket_factory.AddSocketDataProvider(&data1);
3678 session_deps.socket_factory.AddSocketDataProvider(&data2); 3678 session_deps.socket_factory.AddSocketDataProvider(&data2);
3679 3679
3680 const char* kExpectedResponseData[] = { 3680 const char* kExpectedResponseData[] = {
3681 "hello world", "welcome" 3681 "hello world", "welcome"
3682 }; 3682 };
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3726 MockWrite data_writes1[] = { 3726 MockWrite data_writes1[] = {
3727 MockWrite("GET / HTTP/1.1\r\n" 3727 MockWrite("GET / HTTP/1.1\r\n"
3728 "Host: www.google.com\r\n" 3728 "Host: www.google.com\r\n"
3729 "Connection: keep-alive\r\n\r\n"), 3729 "Connection: keep-alive\r\n\r\n"),
3730 }; 3730 };
3731 3731
3732 MockRead data_reads1[] = { 3732 MockRead data_reads1[] = {
3733 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 3733 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
3734 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 3734 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
3735 MockRead("Content-Length: 10\r\n\r\n"), 3735 MockRead("Content-Length: 10\r\n\r\n"),
3736 MockRead(false, ERR_FAILED), 3736 MockRead(SYNCHRONOUS, ERR_FAILED),
3737 }; 3737 };
3738 3738
3739 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3739 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3740 data_writes1, arraysize(data_writes1)); 3740 data_writes1, arraysize(data_writes1));
3741 session_deps.socket_factory.AddSocketDataProvider(&data1); 3741 session_deps.socket_factory.AddSocketDataProvider(&data1);
3742 3742
3743 TestCompletionCallback callback1; 3743 TestCompletionCallback callback1;
3744 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 3744 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
3745 EXPECT_EQ(ERR_IO_PENDING, rv); 3745 EXPECT_EQ(ERR_IO_PENDING, rv);
3746 rv = callback1.WaitForResult(); 3746 rv = callback1.WaitForResult();
(...skipping 21 matching lines...) Expand all
3768 MockWrite data_writes1[] = { 3768 MockWrite data_writes1[] = {
3769 MockWrite("GET /x/y/z HTTP/1.1\r\n" 3769 MockWrite("GET /x/y/z HTTP/1.1\r\n"
3770 "Host: www.google.com\r\n" 3770 "Host: www.google.com\r\n"
3771 "Connection: keep-alive\r\n\r\n"), 3771 "Connection: keep-alive\r\n\r\n"),
3772 }; 3772 };
3773 3773
3774 MockRead data_reads1[] = { 3774 MockRead data_reads1[] = {
3775 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 3775 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
3776 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 3776 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
3777 MockRead("Content-Length: 10000\r\n\r\n"), 3777 MockRead("Content-Length: 10000\r\n\r\n"),
3778 MockRead(false, ERR_FAILED), 3778 MockRead(SYNCHRONOUS, ERR_FAILED),
3779 }; 3779 };
3780 3780
3781 // Resend with authorization (username=foo, password=bar) 3781 // Resend with authorization (username=foo, password=bar)
3782 MockWrite data_writes2[] = { 3782 MockWrite data_writes2[] = {
3783 MockWrite("GET /x/y/z HTTP/1.1\r\n" 3783 MockWrite("GET /x/y/z HTTP/1.1\r\n"
3784 "Host: www.google.com\r\n" 3784 "Host: www.google.com\r\n"
3785 "Connection: keep-alive\r\n" 3785 "Connection: keep-alive\r\n"
3786 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3786 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3787 }; 3787 };
3788 3788
3789 // Sever accepts the authorization. 3789 // Sever accepts the authorization.
3790 MockRead data_reads2[] = { 3790 MockRead data_reads2[] = {
3791 MockRead("HTTP/1.0 200 OK\r\n"), 3791 MockRead("HTTP/1.0 200 OK\r\n"),
3792 MockRead("Content-Length: 100\r\n\r\n"), 3792 MockRead("Content-Length: 100\r\n\r\n"),
3793 MockRead(false, OK), 3793 MockRead(SYNCHRONOUS, OK),
3794 }; 3794 };
3795 3795
3796 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3796 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3797 data_writes1, arraysize(data_writes1)); 3797 data_writes1, arraysize(data_writes1));
3798 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3798 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3799 data_writes2, arraysize(data_writes2)); 3799 data_writes2, arraysize(data_writes2));
3800 session_deps.socket_factory.AddSocketDataProvider(&data1); 3800 session_deps.socket_factory.AddSocketDataProvider(&data1);
3801 session_deps.socket_factory.AddSocketDataProvider(&data2); 3801 session_deps.socket_factory.AddSocketDataProvider(&data2);
3802 3802
3803 TestCompletionCallback callback1; 3803 TestCompletionCallback callback1;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3847 // Send preemptive authorization for MyRealm1 3847 // Send preemptive authorization for MyRealm1
3848 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3848 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3849 }; 3849 };
3850 3850
3851 // The server didn't like the preemptive authorization, and 3851 // The server didn't like the preemptive authorization, and
3852 // challenges us for a different realm (MyRealm2). 3852 // challenges us for a different realm (MyRealm2).
3853 MockRead data_reads1[] = { 3853 MockRead data_reads1[] = {
3854 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 3854 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
3855 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"), 3855 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"),
3856 MockRead("Content-Length: 10000\r\n\r\n"), 3856 MockRead("Content-Length: 10000\r\n\r\n"),
3857 MockRead(false, ERR_FAILED), 3857 MockRead(SYNCHRONOUS, ERR_FAILED),
3858 }; 3858 };
3859 3859
3860 // Resend with authorization for MyRealm2 (username=foo2, password=bar2) 3860 // Resend with authorization for MyRealm2 (username=foo2, password=bar2)
3861 MockWrite data_writes2[] = { 3861 MockWrite data_writes2[] = {
3862 MockWrite("GET /x/y/a/b HTTP/1.1\r\n" 3862 MockWrite("GET /x/y/a/b HTTP/1.1\r\n"
3863 "Host: www.google.com\r\n" 3863 "Host: www.google.com\r\n"
3864 "Connection: keep-alive\r\n" 3864 "Connection: keep-alive\r\n"
3865 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), 3865 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"),
3866 }; 3866 };
3867 3867
3868 // Sever accepts the authorization. 3868 // Sever accepts the authorization.
3869 MockRead data_reads2[] = { 3869 MockRead data_reads2[] = {
3870 MockRead("HTTP/1.0 200 OK\r\n"), 3870 MockRead("HTTP/1.0 200 OK\r\n"),
3871 MockRead("Content-Length: 100\r\n\r\n"), 3871 MockRead("Content-Length: 100\r\n\r\n"),
3872 MockRead(false, OK), 3872 MockRead(SYNCHRONOUS, OK),
3873 }; 3873 };
3874 3874
3875 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3875 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3876 data_writes1, arraysize(data_writes1)); 3876 data_writes1, arraysize(data_writes1));
3877 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3877 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3878 data_writes2, arraysize(data_writes2)); 3878 data_writes2, arraysize(data_writes2));
3879 session_deps.socket_factory.AddSocketDataProvider(&data1); 3879 session_deps.socket_factory.AddSocketDataProvider(&data1);
3880 session_deps.socket_factory.AddSocketDataProvider(&data2); 3880 session_deps.socket_factory.AddSocketDataProvider(&data2);
3881 3881
3882 TestCompletionCallback callback1; 3882 TestCompletionCallback callback1;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3929 "Connection: keep-alive\r\n" 3929 "Connection: keep-alive\r\n"
3930 // The authorization for MyRealm1 gets sent preemptively 3930 // The authorization for MyRealm1 gets sent preemptively
3931 // (since the url is in the same protection space) 3931 // (since the url is in the same protection space)
3932 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3932 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3933 }; 3933 };
3934 3934
3935 // Sever accepts the preemptive authorization 3935 // Sever accepts the preemptive authorization
3936 MockRead data_reads1[] = { 3936 MockRead data_reads1[] = {
3937 MockRead("HTTP/1.0 200 OK\r\n"), 3937 MockRead("HTTP/1.0 200 OK\r\n"),
3938 MockRead("Content-Length: 100\r\n\r\n"), 3938 MockRead("Content-Length: 100\r\n\r\n"),
3939 MockRead(false, OK), 3939 MockRead(SYNCHRONOUS, OK),
3940 }; 3940 };
3941 3941
3942 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3942 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3943 data_writes1, arraysize(data_writes1)); 3943 data_writes1, arraysize(data_writes1));
3944 session_deps.socket_factory.AddSocketDataProvider(&data1); 3944 session_deps.socket_factory.AddSocketDataProvider(&data1);
3945 3945
3946 TestCompletionCallback callback1; 3946 TestCompletionCallback callback1;
3947 3947
3948 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 3948 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
3949 EXPECT_EQ(ERR_IO_PENDING, rv); 3949 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 23 matching lines...) Expand all
3973 MockWrite data_writes1[] = { 3973 MockWrite data_writes1[] = {
3974 MockWrite("GET /x/1 HTTP/1.1\r\n" 3974 MockWrite("GET /x/1 HTTP/1.1\r\n"
3975 "Host: www.google.com\r\n" 3975 "Host: www.google.com\r\n"
3976 "Connection: keep-alive\r\n\r\n"), 3976 "Connection: keep-alive\r\n\r\n"),
3977 }; 3977 };
3978 3978
3979 MockRead data_reads1[] = { 3979 MockRead data_reads1[] = {
3980 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 3980 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
3981 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 3981 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
3982 MockRead("Content-Length: 10000\r\n\r\n"), 3982 MockRead("Content-Length: 10000\r\n\r\n"),
3983 MockRead(false, ERR_FAILED), 3983 MockRead(SYNCHRONOUS, ERR_FAILED),
3984 }; 3984 };
3985 3985
3986 // Resend with authorization from MyRealm's cache. 3986 // Resend with authorization from MyRealm's cache.
3987 MockWrite data_writes2[] = { 3987 MockWrite data_writes2[] = {
3988 MockWrite("GET /x/1 HTTP/1.1\r\n" 3988 MockWrite("GET /x/1 HTTP/1.1\r\n"
3989 "Host: www.google.com\r\n" 3989 "Host: www.google.com\r\n"
3990 "Connection: keep-alive\r\n" 3990 "Connection: keep-alive\r\n"
3991 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3991 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3992 }; 3992 };
3993 3993
3994 // Sever accepts the authorization. 3994 // Sever accepts the authorization.
3995 MockRead data_reads2[] = { 3995 MockRead data_reads2[] = {
3996 MockRead("HTTP/1.0 200 OK\r\n"), 3996 MockRead("HTTP/1.0 200 OK\r\n"),
3997 MockRead("Content-Length: 100\r\n\r\n"), 3997 MockRead("Content-Length: 100\r\n\r\n"),
3998 MockRead(false, OK), 3998 MockRead(SYNCHRONOUS, OK),
3999 }; 3999 };
4000 4000
4001 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4001 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4002 data_writes1, arraysize(data_writes1)); 4002 data_writes1, arraysize(data_writes1));
4003 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 4003 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
4004 data_writes2, arraysize(data_writes2)); 4004 data_writes2, arraysize(data_writes2));
4005 session_deps.socket_factory.AddSocketDataProvider(&data1); 4005 session_deps.socket_factory.AddSocketDataProvider(&data1);
4006 session_deps.socket_factory.AddSocketDataProvider(&data2); 4006 session_deps.socket_factory.AddSocketDataProvider(&data2);
4007 4007
4008 TestCompletionCallback callback1; 4008 TestCompletionCallback callback1;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
4042 MockWrite data_writes1[] = { 4042 MockWrite data_writes1[] = {
4043 MockWrite("GET /p/q/t HTTP/1.1\r\n" 4043 MockWrite("GET /p/q/t HTTP/1.1\r\n"
4044 "Host: www.google.com\r\n" 4044 "Host: www.google.com\r\n"
4045 "Connection: keep-alive\r\n\r\n"), 4045 "Connection: keep-alive\r\n\r\n"),
4046 }; 4046 };
4047 4047
4048 MockRead data_reads1[] = { 4048 MockRead data_reads1[] = {
4049 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 4049 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
4050 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 4050 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
4051 MockRead("Content-Length: 10000\r\n\r\n"), 4051 MockRead("Content-Length: 10000\r\n\r\n"),
4052 MockRead(false, ERR_FAILED), 4052 MockRead(SYNCHRONOUS, ERR_FAILED),
4053 }; 4053 };
4054 4054
4055 // Resend with authorization from cache for MyRealm. 4055 // Resend with authorization from cache for MyRealm.
4056 MockWrite data_writes2[] = { 4056 MockWrite data_writes2[] = {
4057 MockWrite("GET /p/q/t HTTP/1.1\r\n" 4057 MockWrite("GET /p/q/t HTTP/1.1\r\n"
4058 "Host: www.google.com\r\n" 4058 "Host: www.google.com\r\n"
4059 "Connection: keep-alive\r\n" 4059 "Connection: keep-alive\r\n"
4060 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 4060 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
4061 }; 4061 };
4062 4062
4063 // Sever rejects the authorization. 4063 // Sever rejects the authorization.
4064 MockRead data_reads2[] = { 4064 MockRead data_reads2[] = {
4065 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 4065 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
4066 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 4066 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
4067 MockRead("Content-Length: 10000\r\n\r\n"), 4067 MockRead("Content-Length: 10000\r\n\r\n"),
4068 MockRead(false, ERR_FAILED), 4068 MockRead(SYNCHRONOUS, ERR_FAILED),
4069 }; 4069 };
4070 4070
4071 // At this point we should prompt for new credentials for MyRealm. 4071 // At this point we should prompt for new credentials for MyRealm.
4072 // Restart with username=foo3, password=foo4. 4072 // Restart with username=foo3, password=foo4.
4073 MockWrite data_writes3[] = { 4073 MockWrite data_writes3[] = {
4074 MockWrite("GET /p/q/t HTTP/1.1\r\n" 4074 MockWrite("GET /p/q/t HTTP/1.1\r\n"
4075 "Host: www.google.com\r\n" 4075 "Host: www.google.com\r\n"
4076 "Connection: keep-alive\r\n" 4076 "Connection: keep-alive\r\n"
4077 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"), 4077 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"),
4078 }; 4078 };
4079 4079
4080 // Sever accepts the authorization. 4080 // Sever accepts the authorization.
4081 MockRead data_reads3[] = { 4081 MockRead data_reads3[] = {
4082 MockRead("HTTP/1.0 200 OK\r\n"), 4082 MockRead("HTTP/1.0 200 OK\r\n"),
4083 MockRead("Content-Length: 100\r\n\r\n"), 4083 MockRead("Content-Length: 100\r\n\r\n"),
4084 MockRead(false, OK), 4084 MockRead(SYNCHRONOUS, OK),
4085 }; 4085 };
4086 4086
4087 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4087 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4088 data_writes1, arraysize(data_writes1)); 4088 data_writes1, arraysize(data_writes1));
4089 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 4089 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
4090 data_writes2, arraysize(data_writes2)); 4090 data_writes2, arraysize(data_writes2));
4091 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), 4091 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
4092 data_writes3, arraysize(data_writes3)); 4092 data_writes3, arraysize(data_writes3));
4093 session_deps.socket_factory.AddSocketDataProvider(&data1); 4093 session_deps.socket_factory.AddSocketDataProvider(&data1);
4094 session_deps.socket_factory.AddSocketDataProvider(&data2); 4094 session_deps.socket_factory.AddSocketDataProvider(&data2);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
4154 MockWrite data_writes1[] = { 4154 MockWrite data_writes1[] = {
4155 MockWrite("GET /x/y/z HTTP/1.1\r\n" 4155 MockWrite("GET /x/y/z HTTP/1.1\r\n"
4156 "Host: www.google.com\r\n" 4156 "Host: www.google.com\r\n"
4157 "Connection: keep-alive\r\n\r\n"), 4157 "Connection: keep-alive\r\n\r\n"),
4158 }; 4158 };
4159 4159
4160 MockRead data_reads1[] = { 4160 MockRead data_reads1[] = {
4161 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 4161 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
4162 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", " 4162 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", "
4163 "algorithm=MD5, qop=\"auth\"\r\n\r\n"), 4163 "algorithm=MD5, qop=\"auth\"\r\n\r\n"),
4164 MockRead(false, OK), 4164 MockRead(SYNCHRONOUS, OK),
4165 }; 4165 };
4166 4166
4167 // Resend with authorization (username=foo, password=bar) 4167 // Resend with authorization (username=foo, password=bar)
4168 MockWrite data_writes2[] = { 4168 MockWrite data_writes2[] = {
4169 MockWrite("GET /x/y/z HTTP/1.1\r\n" 4169 MockWrite("GET /x/y/z HTTP/1.1\r\n"
4170 "Host: www.google.com\r\n" 4170 "Host: www.google.com\r\n"
4171 "Connection: keep-alive\r\n" 4171 "Connection: keep-alive\r\n"
4172 "Authorization: Digest username=\"foo\", realm=\"digestive\", " 4172 "Authorization: Digest username=\"foo\", realm=\"digestive\", "
4173 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, " 4173 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, "
4174 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, " 4174 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, "
4175 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"), 4175 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"),
4176 }; 4176 };
4177 4177
4178 // Sever accepts the authorization. 4178 // Sever accepts the authorization.
4179 MockRead data_reads2[] = { 4179 MockRead data_reads2[] = {
4180 MockRead("HTTP/1.0 200 OK\r\n"), 4180 MockRead("HTTP/1.0 200 OK\r\n"),
4181 MockRead(false, OK), 4181 MockRead(SYNCHRONOUS, OK),
4182 }; 4182 };
4183 4183
4184 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4184 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4185 data_writes1, arraysize(data_writes1)); 4185 data_writes1, arraysize(data_writes1));
4186 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 4186 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
4187 data_writes2, arraysize(data_writes2)); 4187 data_writes2, arraysize(data_writes2));
4188 session_deps.socket_factory.AddSocketDataProvider(&data1); 4188 session_deps.socket_factory.AddSocketDataProvider(&data1);
4189 session_deps.socket_factory.AddSocketDataProvider(&data2); 4189 session_deps.socket_factory.AddSocketDataProvider(&data2);
4190 4190
4191 TestCompletionCallback callback1; 4191 TestCompletionCallback callback1;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4236 "Authorization: Digest username=\"foo\", realm=\"digestive\", " 4236 "Authorization: Digest username=\"foo\", realm=\"digestive\", "
4237 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, " 4237 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, "
4238 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, " 4238 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, "
4239 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"), 4239 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"),
4240 }; 4240 };
4241 4241
4242 // Sever accepts the authorization. 4242 // Sever accepts the authorization.
4243 MockRead data_reads1[] = { 4243 MockRead data_reads1[] = {
4244 MockRead("HTTP/1.0 200 OK\r\n"), 4244 MockRead("HTTP/1.0 200 OK\r\n"),
4245 MockRead("Content-Length: 100\r\n\r\n"), 4245 MockRead("Content-Length: 100\r\n\r\n"),
4246 MockRead(false, OK), 4246 MockRead(SYNCHRONOUS, OK),
4247 }; 4247 };
4248 4248
4249 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4249 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4250 data_writes1, arraysize(data_writes1)); 4250 data_writes1, arraysize(data_writes1));
4251 session_deps.socket_factory.AddSocketDataProvider(&data1); 4251 session_deps.socket_factory.AddSocketDataProvider(&data1);
4252 4252
4253 TestCompletionCallback callback1; 4253 TestCompletionCallback callback1;
4254 4254
4255 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 4255 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
4256 EXPECT_EQ(ERR_IO_PENDING, rv); 4256 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
4321 MockWrite data_writes[] = { 4321 MockWrite data_writes[] = {
4322 MockWrite("GET / HTTP/1.1\r\n" 4322 MockWrite("GET / HTTP/1.1\r\n"
4323 "Host: www.google.com\r\n" 4323 "Host: www.google.com\r\n"
4324 "Connection: keep-alive\r\n\r\n"), 4324 "Connection: keep-alive\r\n\r\n"),
4325 }; 4325 };
4326 4326
4327 MockRead data_reads[] = { 4327 MockRead data_reads[] = {
4328 MockRead("HTTP/1.0 200 OK\r\n"), 4328 MockRead("HTTP/1.0 200 OK\r\n"),
4329 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4329 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4330 MockRead("Content-Length: 100\r\n\r\n"), 4330 MockRead("Content-Length: 100\r\n\r\n"),
4331 MockRead(false, OK), 4331 MockRead(SYNCHRONOUS, OK),
4332 }; 4332 };
4333 4333
4334 StaticSocketDataProvider ssl_bad_certificate; 4334 StaticSocketDataProvider ssl_bad_certificate;
4335 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4335 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4336 data_writes, arraysize(data_writes)); 4336 data_writes, arraysize(data_writes));
4337 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 4337 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID);
4338 SSLSocketDataProvider ssl(true, OK); 4338 SSLSocketDataProvider ssl(ASYNC, OK);
4339 4339
4340 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 4340 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
4341 session_deps.socket_factory.AddSocketDataProvider(&data); 4341 session_deps.socket_factory.AddSocketDataProvider(&data);
4342 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 4342 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
4343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4344 4344
4345 TestCompletionCallback callback; 4345 TestCompletionCallback callback;
4346 4346
4347 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4347 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4348 EXPECT_EQ(ERR_IO_PENDING, rv); 4348 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 24 matching lines...) Expand all
4373 request.load_flags = 0; 4373 request.load_flags = 0;
4374 4374
4375 MockWrite proxy_writes[] = { 4375 MockWrite proxy_writes[] = {
4376 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4376 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4377 "Host: www.google.com\r\n" 4377 "Host: www.google.com\r\n"
4378 "Proxy-Connection: keep-alive\r\n\r\n"), 4378 "Proxy-Connection: keep-alive\r\n\r\n"),
4379 }; 4379 };
4380 4380
4381 MockRead proxy_reads[] = { 4381 MockRead proxy_reads[] = {
4382 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4382 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4383 MockRead(false, OK) 4383 MockRead(SYNCHRONOUS, OK)
4384 }; 4384 };
4385 4385
4386 MockWrite data_writes[] = { 4386 MockWrite data_writes[] = {
4387 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4387 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4388 "Host: www.google.com\r\n" 4388 "Host: www.google.com\r\n"
4389 "Proxy-Connection: keep-alive\r\n\r\n"), 4389 "Proxy-Connection: keep-alive\r\n\r\n"),
4390 MockWrite("GET / HTTP/1.1\r\n" 4390 MockWrite("GET / HTTP/1.1\r\n"
4391 "Host: www.google.com\r\n" 4391 "Host: www.google.com\r\n"
4392 "Connection: keep-alive\r\n\r\n"), 4392 "Connection: keep-alive\r\n\r\n"),
4393 }; 4393 };
4394 4394
4395 MockRead data_reads[] = { 4395 MockRead data_reads[] = {
4396 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4396 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4397 MockRead("HTTP/1.0 200 OK\r\n"), 4397 MockRead("HTTP/1.0 200 OK\r\n"),
4398 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4398 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4399 MockRead("Content-Length: 100\r\n\r\n"), 4399 MockRead("Content-Length: 100\r\n\r\n"),
4400 MockRead(false, OK), 4400 MockRead(SYNCHRONOUS, OK),
4401 }; 4401 };
4402 4402
4403 StaticSocketDataProvider ssl_bad_certificate( 4403 StaticSocketDataProvider ssl_bad_certificate(
4404 proxy_reads, arraysize(proxy_reads), 4404 proxy_reads, arraysize(proxy_reads),
4405 proxy_writes, arraysize(proxy_writes)); 4405 proxy_writes, arraysize(proxy_writes));
4406 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4406 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4407 data_writes, arraysize(data_writes)); 4407 data_writes, arraysize(data_writes));
4408 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 4408 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID);
4409 SSLSocketDataProvider ssl(true, OK); 4409 SSLSocketDataProvider ssl(ASYNC, OK);
4410 4410
4411 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 4411 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
4412 session_deps.socket_factory.AddSocketDataProvider(&data); 4412 session_deps.socket_factory.AddSocketDataProvider(&data);
4413 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 4413 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
4414 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4414 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4415 4415
4416 TestCompletionCallback callback; 4416 TestCompletionCallback callback;
4417 4417
4418 for (int i = 0; i < 2; i++) { 4418 for (int i = 0; i < 2; i++) {
4419 session_deps.socket_factory.ResetNextMockIndexes(); 4419 session_deps.socket_factory.ResetNextMockIndexes();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4458 MockWrite("GET / HTTP/1.1\r\n" 4458 MockWrite("GET / HTTP/1.1\r\n"
4459 "Host: www.google.com\r\n" 4459 "Host: www.google.com\r\n"
4460 "Connection: keep-alive\r\n\r\n"), 4460 "Connection: keep-alive\r\n\r\n"),
4461 }; 4461 };
4462 4462
4463 MockRead data_reads[] = { 4463 MockRead data_reads[] = {
4464 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4464 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4465 MockRead("HTTP/1.1 200 OK\r\n"), 4465 MockRead("HTTP/1.1 200 OK\r\n"),
4466 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4466 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4467 MockRead("Content-Length: 100\r\n\r\n"), 4467 MockRead("Content-Length: 100\r\n\r\n"),
4468 MockRead(false, OK), 4468 MockRead(SYNCHRONOUS, OK),
4469 }; 4469 };
4470 4470
4471 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4471 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4472 data_writes, arraysize(data_writes)); 4472 data_writes, arraysize(data_writes));
4473 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4473 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4474 SSLSocketDataProvider tunnel_ssl(true, OK); // SSL through the tunnel 4474 SSLSocketDataProvider tunnel_ssl(ASYNC, OK); // SSL through the tunnel
4475 4475
4476 session_deps.socket_factory.AddSocketDataProvider(&data); 4476 session_deps.socket_factory.AddSocketDataProvider(&data);
4477 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4477 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4478 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl); 4478 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl);
4479 4479
4480 TestCompletionCallback callback; 4480 TestCompletionCallback callback;
4481 4481
4482 scoped_ptr<HttpTransaction> trans( 4482 scoped_ptr<HttpTransaction> trans(
4483 new HttpNetworkTransaction(CreateSession(&session_deps))); 4483 new HttpNetworkTransaction(CreateSession(&session_deps)));
4484 4484
(...skipping 25 matching lines...) Expand all
4510 MockWrite data_writes[] = { 4510 MockWrite data_writes[] = {
4511 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4511 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4512 "Host: www.google.com\r\n" 4512 "Host: www.google.com\r\n"
4513 "Proxy-Connection: keep-alive\r\n\r\n"), 4513 "Proxy-Connection: keep-alive\r\n\r\n"),
4514 }; 4514 };
4515 4515
4516 MockRead data_reads[] = { 4516 MockRead data_reads[] = {
4517 MockRead("HTTP/1.1 302 Redirect\r\n"), 4517 MockRead("HTTP/1.1 302 Redirect\r\n"),
4518 MockRead("Location: http://login.example.com/\r\n"), 4518 MockRead("Location: http://login.example.com/\r\n"),
4519 MockRead("Content-Length: 0\r\n\r\n"), 4519 MockRead("Content-Length: 0\r\n\r\n"),
4520 MockRead(false, OK), 4520 MockRead(SYNCHRONOUS, OK),
4521 }; 4521 };
4522 4522
4523 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4523 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4524 data_writes, arraysize(data_writes)); 4524 data_writes, arraysize(data_writes));
4525 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4525 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4526 4526
4527 session_deps.socket_factory.AddSocketDataProvider(&data); 4527 session_deps.socket_factory.AddSocketDataProvider(&data);
4528 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4528 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4529 4529
4530 TestCompletionCallback callback; 4530 TestCompletionCallback callback;
4531 4531
4532 scoped_ptr<HttpTransaction> trans( 4532 scoped_ptr<HttpTransaction> trans(
4533 new HttpNetworkTransaction(CreateSession(&session_deps))); 4533 new HttpNetworkTransaction(CreateSession(&session_deps)));
4534 4534
4535 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4535 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
(...skipping 17 matching lines...) Expand all
4553 ProxyService::CreateFixed("https://proxy:70")); 4553 ProxyService::CreateFixed("https://proxy:70"));
4554 4554
4555 HttpRequestInfo request; 4555 HttpRequestInfo request;
4556 request.method = "GET"; 4556 request.method = "GET";
4557 request.url = GURL("https://www.google.com/"); 4557 request.url = GURL("https://www.google.com/");
4558 request.load_flags = 0; 4558 request.load_flags = 0;
4559 4559
4560 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); 4560 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1));
4561 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); 4561 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL));
4562 MockWrite data_writes[] = { 4562 MockWrite data_writes[] = {
4563 CreateMockWrite(*conn.get(), 0, false), 4563 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS),
4564 }; 4564 };
4565 4565
4566 static const char* const kExtraHeaders[] = { 4566 static const char* const kExtraHeaders[] = {
4567 "location", 4567 "location",
4568 "http://login.example.com/", 4568 "http://login.example.com/",
4569 }; 4569 };
4570 scoped_ptr<spdy::SpdyFrame> resp( 4570 scoped_ptr<spdy::SpdyFrame> resp(
4571 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, 4571 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders,
4572 arraysize(kExtraHeaders)/2, 1)); 4572 arraysize(kExtraHeaders)/2, 1));
4573 MockRead data_reads[] = { 4573 MockRead data_reads[] = {
4574 CreateMockRead(*resp.get(), 1, false), 4574 CreateMockRead(*resp.get(), 1, SYNCHRONOUS),
4575 MockRead(true, 0, 2), // EOF 4575 MockRead(ASYNC, 0, 2), // EOF
4576 }; 4576 };
4577 4577
4578 scoped_ptr<DelayedSocketData> data( 4578 scoped_ptr<DelayedSocketData> data(
4579 new DelayedSocketData( 4579 new DelayedSocketData(
4580 1, // wait for one write to finish before reading. 4580 1, // wait for one write to finish before reading.
4581 data_reads, arraysize(data_reads), 4581 data_reads, arraysize(data_reads),
4582 data_writes, arraysize(data_writes))); 4582 data_writes, arraysize(data_writes)));
4583 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4583 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4584 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 4584 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
4585 4585
4586 session_deps.socket_factory.AddSocketDataProvider(data.get()); 4586 session_deps.socket_factory.AddSocketDataProvider(data.get());
4587 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4587 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4588 4588
4589 TestCompletionCallback callback; 4589 TestCompletionCallback callback;
4590 4590
4591 scoped_ptr<HttpTransaction> trans( 4591 scoped_ptr<HttpTransaction> trans(
4592 new HttpNetworkTransaction(CreateSession(&session_deps))); 4592 new HttpNetworkTransaction(CreateSession(&session_deps)));
4593 4593
(...skipping 25 matching lines...) Expand all
4619 MockWrite data_writes[] = { 4619 MockWrite data_writes[] = {
4620 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4620 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4621 "Host: www.google.com\r\n" 4621 "Host: www.google.com\r\n"
4622 "Proxy-Connection: keep-alive\r\n\r\n"), 4622 "Proxy-Connection: keep-alive\r\n\r\n"),
4623 }; 4623 };
4624 4624
4625 MockRead data_reads[] = { 4625 MockRead data_reads[] = {
4626 MockRead("HTTP/1.1 404 Not Found\r\n"), 4626 MockRead("HTTP/1.1 404 Not Found\r\n"),
4627 MockRead("Content-Length: 23\r\n\r\n"), 4627 MockRead("Content-Length: 23\r\n\r\n"),
4628 MockRead("The host does not exist"), 4628 MockRead("The host does not exist"),
4629 MockRead(false, OK), 4629 MockRead(SYNCHRONOUS, OK),
4630 }; 4630 };
4631 4631
4632 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4632 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4633 data_writes, arraysize(data_writes)); 4633 data_writes, arraysize(data_writes));
4634 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4634 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4635 4635
4636 session_deps.socket_factory.AddSocketDataProvider(&data); 4636 session_deps.socket_factory.AddSocketDataProvider(&data);
4637 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4637 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4638 4638
4639 TestCompletionCallback callback; 4639 TestCompletionCallback callback;
4640 4640
4641 scoped_ptr<HttpTransaction> trans( 4641 scoped_ptr<HttpTransaction> trans(
4642 new HttpNetworkTransaction(CreateSession(&session_deps))); 4642 new HttpNetworkTransaction(CreateSession(&session_deps)));
4643 4643
4644 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4644 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
(...skipping 22 matching lines...) Expand all
4667 ProxyService::CreateFixed("https://proxy:70")); 4667 ProxyService::CreateFixed("https://proxy:70"));
4668 4668
4669 HttpRequestInfo request; 4669 HttpRequestInfo request;
4670 request.method = "GET"; 4670 request.method = "GET";
4671 request.url = GURL("https://www.google.com/"); 4671 request.url = GURL("https://www.google.com/");
4672 request.load_flags = 0; 4672 request.load_flags = 0;
4673 4673
4674 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); 4674 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1));
4675 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); 4675 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL));
4676 MockWrite data_writes[] = { 4676 MockWrite data_writes[] = {
4677 CreateMockWrite(*conn.get(), 0, false), 4677 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS),
4678 }; 4678 };
4679 4679
4680 static const char* const kExtraHeaders[] = { 4680 static const char* const kExtraHeaders[] = {
4681 "location", 4681 "location",
4682 "http://login.example.com/", 4682 "http://login.example.com/",
4683 }; 4683 };
4684 scoped_ptr<spdy::SpdyFrame> resp( 4684 scoped_ptr<spdy::SpdyFrame> resp(
4685 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, 4685 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders,
4686 arraysize(kExtraHeaders)/2, 1)); 4686 arraysize(kExtraHeaders)/2, 1));
4687 scoped_ptr<spdy::SpdyFrame> body( 4687 scoped_ptr<spdy::SpdyFrame> body(
4688 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true)); 4688 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true));
4689 MockRead data_reads[] = { 4689 MockRead data_reads[] = {
4690 CreateMockRead(*resp.get(), 1, false), 4690 CreateMockRead(*resp.get(), 1, SYNCHRONOUS),
4691 CreateMockRead(*body.get(), 2, false), 4691 CreateMockRead(*body.get(), 2, SYNCHRONOUS),
4692 MockRead(true, 0, 3), // EOF 4692 MockRead(ASYNC, 0, 3), // EOF
4693 }; 4693 };
4694 4694
4695 scoped_ptr<DelayedSocketData> data( 4695 scoped_ptr<DelayedSocketData> data(
4696 new DelayedSocketData( 4696 new DelayedSocketData(
4697 1, // wait for one write to finish before reading. 4697 1, // wait for one write to finish before reading.
4698 data_reads, arraysize(data_reads), 4698 data_reads, arraysize(data_reads),
4699 data_writes, arraysize(data_writes))); 4699 data_writes, arraysize(data_writes)));
4700 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4700 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4701 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 4701 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
4702 4702
4703 session_deps.socket_factory.AddSocketDataProvider(data.get()); 4703 session_deps.socket_factory.AddSocketDataProvider(data.get());
4704 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4704 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4705 4705
4706 TestCompletionCallback callback; 4706 TestCompletionCallback callback;
4707 4707
4708 scoped_ptr<HttpTransaction> trans( 4708 scoped_ptr<HttpTransaction> trans(
4709 new HttpNetworkTransaction(CreateSession(&session_deps))); 4709 new HttpNetworkTransaction(CreateSession(&session_deps)));
4710 4710
(...skipping 27 matching lines...) Expand all
4738 4738
4739 // Attempt to fetch the URL from a server with a bad cert 4739 // Attempt to fetch the URL from a server with a bad cert
4740 MockWrite bad_cert_writes[] = { 4740 MockWrite bad_cert_writes[] = {
4741 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4741 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4742 "Host: www.google.com\r\n" 4742 "Host: www.google.com\r\n"
4743 "Proxy-Connection: keep-alive\r\n\r\n"), 4743 "Proxy-Connection: keep-alive\r\n\r\n"),
4744 }; 4744 };
4745 4745
4746 MockRead bad_cert_reads[] = { 4746 MockRead bad_cert_reads[] = {
4747 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4747 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4748 MockRead(false, OK) 4748 MockRead(SYNCHRONOUS, OK)
4749 }; 4749 };
4750 4750
4751 // Attempt to fetch the URL with a good cert 4751 // Attempt to fetch the URL with a good cert
4752 MockWrite good_data_writes[] = { 4752 MockWrite good_data_writes[] = {
4753 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4753 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4754 "Host: www.google.com\r\n" 4754 "Host: www.google.com\r\n"
4755 "Proxy-Connection: keep-alive\r\n\r\n"), 4755 "Proxy-Connection: keep-alive\r\n\r\n"),
4756 MockWrite("GET / HTTP/1.1\r\n" 4756 MockWrite("GET / HTTP/1.1\r\n"
4757 "Host: www.google.com\r\n" 4757 "Host: www.google.com\r\n"
4758 "Connection: keep-alive\r\n\r\n"), 4758 "Connection: keep-alive\r\n\r\n"),
4759 }; 4759 };
4760 4760
4761 MockRead good_cert_reads[] = { 4761 MockRead good_cert_reads[] = {
4762 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4762 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4763 MockRead("HTTP/1.0 200 OK\r\n"), 4763 MockRead("HTTP/1.0 200 OK\r\n"),
4764 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4764 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4765 MockRead("Content-Length: 100\r\n\r\n"), 4765 MockRead("Content-Length: 100\r\n\r\n"),
4766 MockRead(false, OK), 4766 MockRead(SYNCHRONOUS, OK),
4767 }; 4767 };
4768 4768
4769 StaticSocketDataProvider ssl_bad_certificate( 4769 StaticSocketDataProvider ssl_bad_certificate(
4770 bad_cert_reads, arraysize(bad_cert_reads), 4770 bad_cert_reads, arraysize(bad_cert_reads),
4771 bad_cert_writes, arraysize(bad_cert_writes)); 4771 bad_cert_writes, arraysize(bad_cert_writes));
4772 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads), 4772 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads),
4773 good_data_writes, arraysize(good_data_writes)); 4773 good_data_writes, arraysize(good_data_writes));
4774 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 4774 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID);
4775 SSLSocketDataProvider ssl(true, OK); 4775 SSLSocketDataProvider ssl(ASYNC, OK);
4776 4776
4777 // SSL to the proxy, then CONNECT request, then SSL with bad certificate 4777 // SSL to the proxy, then CONNECT request, then SSL with bad certificate
4778 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4778 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4779 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 4779 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
4780 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 4780 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
4781 4781
4782 // SSL to the proxy, then CONNECT request, then valid SSL certificate 4782 // SSL to the proxy, then CONNECT request, then valid SSL certificate
4783 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4783 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4784 session_deps.socket_factory.AddSocketDataProvider(&data); 4784 session_deps.socket_factory.AddSocketDataProvider(&data);
4785 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4785 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4823 "Host: www.google.com\r\n" 4823 "Host: www.google.com\r\n"
4824 "Connection: keep-alive\r\n" 4824 "Connection: keep-alive\r\n"
4825 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"), 4825 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"),
4826 }; 4826 };
4827 4827
4828 // Lastly, the server responds with the actual content. 4828 // Lastly, the server responds with the actual content.
4829 MockRead data_reads[] = { 4829 MockRead data_reads[] = {
4830 MockRead("HTTP/1.0 200 OK\r\n"), 4830 MockRead("HTTP/1.0 200 OK\r\n"),
4831 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4831 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4832 MockRead("Content-Length: 100\r\n\r\n"), 4832 MockRead("Content-Length: 100\r\n\r\n"),
4833 MockRead(false, OK), 4833 MockRead(SYNCHRONOUS, OK),
4834 }; 4834 };
4835 4835
4836 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4836 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4837 data_writes, arraysize(data_writes)); 4837 data_writes, arraysize(data_writes));
4838 session_deps.socket_factory.AddSocketDataProvider(&data); 4838 session_deps.socket_factory.AddSocketDataProvider(&data);
4839 4839
4840 TestCompletionCallback callback; 4840 TestCompletionCallback callback;
4841 4841
4842 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4842 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4843 EXPECT_EQ(ERR_IO_PENDING, rv); 4843 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
4901 "Host: www.google.com\r\n" 4901 "Host: www.google.com\r\n"
4902 "Connection: keep-alive\r\n" 4902 "Connection: keep-alive\r\n"
4903 "Referer: http://the.previous.site.com/\r\n\r\n"), 4903 "Referer: http://the.previous.site.com/\r\n\r\n"),
4904 }; 4904 };
4905 4905
4906 // Lastly, the server responds with the actual content. 4906 // Lastly, the server responds with the actual content.
4907 MockRead data_reads[] = { 4907 MockRead data_reads[] = {
4908 MockRead("HTTP/1.0 200 OK\r\n"), 4908 MockRead("HTTP/1.0 200 OK\r\n"),
4909 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4909 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4910 MockRead("Content-Length: 100\r\n\r\n"), 4910 MockRead("Content-Length: 100\r\n\r\n"),
4911 MockRead(false, OK), 4911 MockRead(SYNCHRONOUS, OK),
4912 }; 4912 };
4913 4913
4914 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4914 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4915 data_writes, arraysize(data_writes)); 4915 data_writes, arraysize(data_writes));
4916 session_deps.socket_factory.AddSocketDataProvider(&data); 4916 session_deps.socket_factory.AddSocketDataProvider(&data);
4917 4917
4918 TestCompletionCallback callback; 4918 TestCompletionCallback callback;
4919 4919
4920 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4920 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4921 EXPECT_EQ(ERR_IO_PENDING, rv); 4921 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 16 matching lines...) Expand all
4938 "Host: www.google.com\r\n" 4938 "Host: www.google.com\r\n"
4939 "Connection: keep-alive\r\n" 4939 "Connection: keep-alive\r\n"
4940 "Content-Length: 0\r\n\r\n"), 4940 "Content-Length: 0\r\n\r\n"),
4941 }; 4941 };
4942 4942
4943 // Lastly, the server responds with the actual content. 4943 // Lastly, the server responds with the actual content.
4944 MockRead data_reads[] = { 4944 MockRead data_reads[] = {
4945 MockRead("HTTP/1.0 200 OK\r\n"), 4945 MockRead("HTTP/1.0 200 OK\r\n"),
4946 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4946 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4947 MockRead("Content-Length: 100\r\n\r\n"), 4947 MockRead("Content-Length: 100\r\n\r\n"),
4948 MockRead(false, OK), 4948 MockRead(SYNCHRONOUS, OK),
4949 }; 4949 };
4950 4950
4951 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4951 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4952 data_writes, arraysize(data_writes)); 4952 data_writes, arraysize(data_writes));
4953 session_deps.socket_factory.AddSocketDataProvider(&data); 4953 session_deps.socket_factory.AddSocketDataProvider(&data);
4954 4954
4955 TestCompletionCallback callback; 4955 TestCompletionCallback callback;
4956 4956
4957 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4957 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4958 EXPECT_EQ(ERR_IO_PENDING, rv); 4958 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 16 matching lines...) Expand all
4975 "Host: www.google.com\r\n" 4975 "Host: www.google.com\r\n"
4976 "Connection: keep-alive\r\n" 4976 "Connection: keep-alive\r\n"
4977 "Content-Length: 0\r\n\r\n"), 4977 "Content-Length: 0\r\n\r\n"),
4978 }; 4978 };
4979 4979
4980 // Lastly, the server responds with the actual content. 4980 // Lastly, the server responds with the actual content.
4981 MockRead data_reads[] = { 4981 MockRead data_reads[] = {
4982 MockRead("HTTP/1.0 200 OK\r\n"), 4982 MockRead("HTTP/1.0 200 OK\r\n"),
4983 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4983 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4984 MockRead("Content-Length: 100\r\n\r\n"), 4984 MockRead("Content-Length: 100\r\n\r\n"),
4985 MockRead(false, OK), 4985 MockRead(SYNCHRONOUS, OK),
4986 }; 4986 };
4987 4987
4988 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4988 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4989 data_writes, arraysize(data_writes)); 4989 data_writes, arraysize(data_writes));
4990 session_deps.socket_factory.AddSocketDataProvider(&data); 4990 session_deps.socket_factory.AddSocketDataProvider(&data);
4991 4991
4992 TestCompletionCallback callback; 4992 TestCompletionCallback callback;
4993 4993
4994 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4994 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4995 EXPECT_EQ(ERR_IO_PENDING, rv); 4995 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 16 matching lines...) Expand all
5012 "Host: www.google.com\r\n" 5012 "Host: www.google.com\r\n"
5013 "Connection: keep-alive\r\n" 5013 "Connection: keep-alive\r\n"
5014 "Content-Length: 0\r\n\r\n"), 5014 "Content-Length: 0\r\n\r\n"),
5015 }; 5015 };
5016 5016
5017 // Lastly, the server responds with the actual content. 5017 // Lastly, the server responds with the actual content.
5018 MockRead data_reads[] = { 5018 MockRead data_reads[] = {
5019 MockRead("HTTP/1.0 200 OK\r\n"), 5019 MockRead("HTTP/1.0 200 OK\r\n"),
5020 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5020 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5021 MockRead("Content-Length: 100\r\n\r\n"), 5021 MockRead("Content-Length: 100\r\n\r\n"),
5022 MockRead(false, OK), 5022 MockRead(SYNCHRONOUS, OK),
5023 }; 5023 };
5024 5024
5025 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5025 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5026 data_writes, arraysize(data_writes)); 5026 data_writes, arraysize(data_writes));
5027 session_deps.socket_factory.AddSocketDataProvider(&data); 5027 session_deps.socket_factory.AddSocketDataProvider(&data);
5028 5028
5029 TestCompletionCallback callback; 5029 TestCompletionCallback callback;
5030 5030
5031 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5031 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5032 EXPECT_EQ(ERR_IO_PENDING, rv); 5032 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 18 matching lines...) Expand all
5051 "Connection: keep-alive\r\n" 5051 "Connection: keep-alive\r\n"
5052 "Pragma: no-cache\r\n" 5052 "Pragma: no-cache\r\n"
5053 "Cache-Control: no-cache\r\n\r\n"), 5053 "Cache-Control: no-cache\r\n\r\n"),
5054 }; 5054 };
5055 5055
5056 // Lastly, the server responds with the actual content. 5056 // Lastly, the server responds with the actual content.
5057 MockRead data_reads[] = { 5057 MockRead data_reads[] = {
5058 MockRead("HTTP/1.0 200 OK\r\n"), 5058 MockRead("HTTP/1.0 200 OK\r\n"),
5059 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5059 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5060 MockRead("Content-Length: 100\r\n\r\n"), 5060 MockRead("Content-Length: 100\r\n\r\n"),
5061 MockRead(false, OK), 5061 MockRead(SYNCHRONOUS, OK),
5062 }; 5062 };
5063 5063
5064 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5064 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5065 data_writes, arraysize(data_writes)); 5065 data_writes, arraysize(data_writes));
5066 session_deps.socket_factory.AddSocketDataProvider(&data); 5066 session_deps.socket_factory.AddSocketDataProvider(&data);
5067 5067
5068 TestCompletionCallback callback; 5068 TestCompletionCallback callback;
5069 5069
5070 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5070 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5071 EXPECT_EQ(ERR_IO_PENDING, rv); 5071 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 18 matching lines...) Expand all
5090 "Host: www.google.com\r\n" 5090 "Host: www.google.com\r\n"
5091 "Connection: keep-alive\r\n" 5091 "Connection: keep-alive\r\n"
5092 "Cache-Control: max-age=0\r\n\r\n"), 5092 "Cache-Control: max-age=0\r\n\r\n"),
5093 }; 5093 };
5094 5094
5095 // Lastly, the server responds with the actual content. 5095 // Lastly, the server responds with the actual content.
5096 MockRead data_reads[] = { 5096 MockRead data_reads[] = {
5097 MockRead("HTTP/1.0 200 OK\r\n"), 5097 MockRead("HTTP/1.0 200 OK\r\n"),
5098 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5098 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5099 MockRead("Content-Length: 100\r\n\r\n"), 5099 MockRead("Content-Length: 100\r\n\r\n"),
5100 MockRead(false, OK), 5100 MockRead(SYNCHRONOUS, OK),
5101 }; 5101 };
5102 5102
5103 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5103 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5104 data_writes, arraysize(data_writes)); 5104 data_writes, arraysize(data_writes));
5105 session_deps.socket_factory.AddSocketDataProvider(&data); 5105 session_deps.socket_factory.AddSocketDataProvider(&data);
5106 5106
5107 TestCompletionCallback callback; 5107 TestCompletionCallback callback;
5108 5108
5109 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5109 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5110 EXPECT_EQ(ERR_IO_PENDING, rv); 5110 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 17 matching lines...) Expand all
5128 "Host: www.google.com\r\n" 5128 "Host: www.google.com\r\n"
5129 "Connection: keep-alive\r\n" 5129 "Connection: keep-alive\r\n"
5130 "FooHeader: Bar\r\n\r\n"), 5130 "FooHeader: Bar\r\n\r\n"),
5131 }; 5131 };
5132 5132
5133 // Lastly, the server responds with the actual content. 5133 // Lastly, the server responds with the actual content.
5134 MockRead data_reads[] = { 5134 MockRead data_reads[] = {
5135 MockRead("HTTP/1.0 200 OK\r\n"), 5135 MockRead("HTTP/1.0 200 OK\r\n"),
5136 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5136 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5137 MockRead("Content-Length: 100\r\n\r\n"), 5137 MockRead("Content-Length: 100\r\n\r\n"),
5138 MockRead(false, OK), 5138 MockRead(SYNCHRONOUS, OK),
5139 }; 5139 };
5140 5140
5141 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5141 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5142 data_writes, arraysize(data_writes)); 5142 data_writes, arraysize(data_writes));
5143 session_deps.socket_factory.AddSocketDataProvider(&data); 5143 session_deps.socket_factory.AddSocketDataProvider(&data);
5144 5144
5145 TestCompletionCallback callback; 5145 TestCompletionCallback callback;
5146 5146
5147 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5147 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5148 EXPECT_EQ(ERR_IO_PENDING, rv); 5148 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 21 matching lines...) Expand all
5170 "referer: www.foo.com\r\n" 5170 "referer: www.foo.com\r\n"
5171 "hEllo: Kitty\r\n" 5171 "hEllo: Kitty\r\n"
5172 "FoO: bar\r\n\r\n"), 5172 "FoO: bar\r\n\r\n"),
5173 }; 5173 };
5174 5174
5175 // Lastly, the server responds with the actual content. 5175 // Lastly, the server responds with the actual content.
5176 MockRead data_reads[] = { 5176 MockRead data_reads[] = {
5177 MockRead("HTTP/1.0 200 OK\r\n"), 5177 MockRead("HTTP/1.0 200 OK\r\n"),
5178 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5178 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5179 MockRead("Content-Length: 100\r\n\r\n"), 5179 MockRead("Content-Length: 100\r\n\r\n"),
5180 MockRead(false, OK), 5180 MockRead(SYNCHRONOUS, OK),
5181 }; 5181 };
5182 5182
5183 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5183 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5184 data_writes, arraysize(data_writes)); 5184 data_writes, arraysize(data_writes));
5185 session_deps.socket_factory.AddSocketDataProvider(&data); 5185 session_deps.socket_factory.AddSocketDataProvider(&data);
5186 5186
5187 TestCompletionCallback callback; 5187 TestCompletionCallback callback;
5188 5188
5189 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5189 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5190 EXPECT_EQ(ERR_IO_PENDING, rv); 5190 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 18 matching lines...) Expand all
5209 SessionDependencies session_deps( 5209 SessionDependencies session_deps(
5210 ProxyService::CreateFixed("socks4://myproxy:1080")); 5210 ProxyService::CreateFixed("socks4://myproxy:1080"));
5211 5211
5212 scoped_ptr<HttpTransaction> trans( 5212 scoped_ptr<HttpTransaction> trans(
5213 new HttpNetworkTransaction(CreateSession(&session_deps))); 5213 new HttpNetworkTransaction(CreateSession(&session_deps)));
5214 5214
5215 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; 5215 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 };
5216 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 5216 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
5217 5217
5218 MockWrite data_writes[] = { 5218 MockWrite data_writes[] = {
5219 MockWrite(true, write_buffer, arraysize(write_buffer)), 5219 MockWrite(ASYNC, write_buffer, arraysize(write_buffer)),
5220 MockWrite("GET / HTTP/1.1\r\n" 5220 MockWrite("GET / HTTP/1.1\r\n"
5221 "Host: www.google.com\r\n" 5221 "Host: www.google.com\r\n"
5222 "Connection: keep-alive\r\n\r\n") 5222 "Connection: keep-alive\r\n\r\n")
5223 }; 5223 };
5224 5224
5225 MockRead data_reads[] = { 5225 MockRead data_reads[] = {
5226 MockRead(true, read_buffer, arraysize(read_buffer)), 5226 MockRead(ASYNC, read_buffer, arraysize(read_buffer)),
5227 MockRead("HTTP/1.0 200 OK\r\n"), 5227 MockRead("HTTP/1.0 200 OK\r\n"),
5228 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5228 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5229 MockRead("Payload"), 5229 MockRead("Payload"),
5230 MockRead(false, OK) 5230 MockRead(SYNCHRONOUS, OK)
5231 }; 5231 };
5232 5232
5233 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5233 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5234 data_writes, arraysize(data_writes)); 5234 data_writes, arraysize(data_writes));
5235 session_deps.socket_factory.AddSocketDataProvider(&data); 5235 session_deps.socket_factory.AddSocketDataProvider(&data);
5236 5236
5237 TestCompletionCallback callback; 5237 TestCompletionCallback callback;
5238 5238
5239 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5239 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5240 EXPECT_EQ(ERR_IO_PENDING, rv); 5240 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 26 matching lines...) Expand all
5267 SessionDependencies session_deps( 5267 SessionDependencies session_deps(
5268 ProxyService::CreateFixed("socks4://myproxy:1080")); 5268 ProxyService::CreateFixed("socks4://myproxy:1080"));
5269 5269
5270 scoped_ptr<HttpTransaction> trans( 5270 scoped_ptr<HttpTransaction> trans(
5271 new HttpNetworkTransaction(CreateSession(&session_deps))); 5271 new HttpNetworkTransaction(CreateSession(&session_deps)));
5272 5272
5273 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; 5273 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 };
5274 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 5274 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
5275 5275
5276 MockWrite data_writes[] = { 5276 MockWrite data_writes[] = {
5277 MockWrite(true, reinterpret_cast<char*>(write_buffer), 5277 MockWrite(ASYNC, reinterpret_cast<char*>(write_buffer),
5278 arraysize(write_buffer)), 5278 arraysize(write_buffer)),
5279 MockWrite("GET / HTTP/1.1\r\n" 5279 MockWrite("GET / HTTP/1.1\r\n"
5280 "Host: www.google.com\r\n" 5280 "Host: www.google.com\r\n"
5281 "Connection: keep-alive\r\n\r\n") 5281 "Connection: keep-alive\r\n\r\n")
5282 }; 5282 };
5283 5283
5284 MockRead data_reads[] = { 5284 MockRead data_reads[] = {
5285 MockWrite(true, reinterpret_cast<char*>(read_buffer), 5285 MockWrite(ASYNC, reinterpret_cast<char*>(read_buffer),
5286 arraysize(read_buffer)), 5286 arraysize(read_buffer)),
5287 MockRead("HTTP/1.0 200 OK\r\n"), 5287 MockRead("HTTP/1.0 200 OK\r\n"),
5288 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5288 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5289 MockRead("Payload"), 5289 MockRead("Payload"),
5290 MockRead(false, OK) 5290 MockRead(SYNCHRONOUS, OK)
5291 }; 5291 };
5292 5292
5293 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5293 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5294 data_writes, arraysize(data_writes)); 5294 data_writes, arraysize(data_writes));
5295 session_deps.socket_factory.AddSocketDataProvider(&data); 5295 session_deps.socket_factory.AddSocketDataProvider(&data);
5296 5296
5297 SSLSocketDataProvider ssl(true, OK); 5297 SSLSocketDataProvider ssl(ASYNC, OK);
5298 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 5298 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
5299 5299
5300 TestCompletionCallback callback; 5300 TestCompletionCallback callback;
5301 5301
5302 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5302 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5303 EXPECT_EQ(ERR_IO_PENDING, rv); 5303 EXPECT_EQ(ERR_IO_PENDING, rv);
5304 5304
5305 rv = callback.WaitForResult(); 5305 rv = callback.WaitForResult();
5306 EXPECT_EQ(OK, rv); 5306 EXPECT_EQ(OK, rv);
5307 5307
(...skipping 27 matching lines...) Expand all
5335 0x03, // Address type (DOMAINNAME). 5335 0x03, // Address type (DOMAINNAME).
5336 0x0E, // Length of domain (14) 5336 0x0E, // Length of domain (14)
5337 // Domain string: 5337 // Domain string:
5338 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', 5338 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm',
5339 0x00, 0x50, // 16-bit port (80) 5339 0x00, 0x50, // 16-bit port (80)
5340 }; 5340 };
5341 const char kSOCKS5OkResponse[] = 5341 const char kSOCKS5OkResponse[] =
5342 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; 5342 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 };
5343 5343
5344 MockWrite data_writes[] = { 5344 MockWrite data_writes[] = {
5345 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), 5345 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)),
5346 MockWrite(true, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), 5346 MockWrite(ASYNC, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)),
5347 MockWrite("GET / HTTP/1.1\r\n" 5347 MockWrite("GET / HTTP/1.1\r\n"
5348 "Host: www.google.com\r\n" 5348 "Host: www.google.com\r\n"
5349 "Connection: keep-alive\r\n\r\n") 5349 "Connection: keep-alive\r\n\r\n")
5350 }; 5350 };
5351 5351
5352 MockRead data_reads[] = { 5352 MockRead data_reads[] = {
5353 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), 5353 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)),
5354 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), 5354 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)),
5355 MockRead("HTTP/1.0 200 OK\r\n"), 5355 MockRead("HTTP/1.0 200 OK\r\n"),
5356 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5356 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5357 MockRead("Payload"), 5357 MockRead("Payload"),
5358 MockRead(false, OK) 5358 MockRead(SYNCHRONOUS, OK)
5359 }; 5359 };
5360 5360
5361 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5361 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5362 data_writes, arraysize(data_writes)); 5362 data_writes, arraysize(data_writes));
5363 session_deps.socket_factory.AddSocketDataProvider(&data); 5363 session_deps.socket_factory.AddSocketDataProvider(&data);
5364 5364
5365 TestCompletionCallback callback; 5365 TestCompletionCallback callback;
5366 5366
5367 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5367 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5368 EXPECT_EQ(ERR_IO_PENDING, rv); 5368 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
5401 0x0E, // Length of domain (14) 5401 0x0E, // Length of domain (14)
5402 // Domain string: 5402 // Domain string:
5403 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', 5403 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm',
5404 0x01, 0xBB, // 16-bit port (443) 5404 0x01, 0xBB, // 16-bit port (443)
5405 }; 5405 };
5406 5406
5407 const char kSOCKS5OkResponse[] = 5407 const char kSOCKS5OkResponse[] =
5408 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; 5408 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 };
5409 5409
5410 MockWrite data_writes[] = { 5410 MockWrite data_writes[] = {
5411 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), 5411 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)),
5412 MockWrite(true, reinterpret_cast<const char*>(kSOCKS5OkRequest), 5412 MockWrite(ASYNC, reinterpret_cast<const char*>(kSOCKS5OkRequest),
5413 arraysize(kSOCKS5OkRequest)), 5413 arraysize(kSOCKS5OkRequest)),
5414 MockWrite("GET / HTTP/1.1\r\n" 5414 MockWrite("GET / HTTP/1.1\r\n"
5415 "Host: www.google.com\r\n" 5415 "Host: www.google.com\r\n"
5416 "Connection: keep-alive\r\n\r\n") 5416 "Connection: keep-alive\r\n\r\n")
5417 }; 5417 };
5418 5418
5419 MockRead data_reads[] = { 5419 MockRead data_reads[] = {
5420 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), 5420 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)),
5421 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), 5421 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)),
5422 MockRead("HTTP/1.0 200 OK\r\n"), 5422 MockRead("HTTP/1.0 200 OK\r\n"),
5423 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5423 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5424 MockRead("Payload"), 5424 MockRead("Payload"),
5425 MockRead(false, OK) 5425 MockRead(SYNCHRONOUS, OK)
5426 }; 5426 };
5427 5427
5428 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5428 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5429 data_writes, arraysize(data_writes)); 5429 data_writes, arraysize(data_writes));
5430 session_deps.socket_factory.AddSocketDataProvider(&data); 5430 session_deps.socket_factory.AddSocketDataProvider(&data);
5431 5431
5432 SSLSocketDataProvider ssl(true, OK); 5432 SSLSocketDataProvider ssl(ASYNC, OK);
5433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 5433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
5434 5434
5435 TestCompletionCallback callback; 5435 TestCompletionCallback callback;
5436 5436
5437 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5437 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5438 EXPECT_EQ(ERR_IO_PENDING, rv); 5438 EXPECT_EQ(ERR_IO_PENDING, rv);
5439 5439
5440 rv = callback.WaitForResult(); 5440 rv = callback.WaitForResult();
5441 EXPECT_EQ(OK, rv); 5441 EXPECT_EQ(OK, rv);
5442 5442
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
5747 callback.callback(), NULL, BoundNetLog()); 5747 callback.callback(), NULL, BoundNetLog());
5748 ASSERT_EQ(OK, rv); 5748 ASSERT_EQ(OK, rv);
5749 5749
5750 // Inject a failure the next time that "www.google.com" is resolved. This way 5750 // Inject a failure the next time that "www.google.com" is resolved. This way
5751 // we can tell if the next lookup hit the cache, or the "network". 5751 // we can tell if the next lookup hit the cache, or the "network".
5752 // (cache --> success, "network" --> failure). 5752 // (cache --> success, "network" --> failure).
5753 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); 5753 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com");
5754 5754
5755 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the 5755 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the
5756 // first read -- this won't be reached as the host resolution will fail first. 5756 // first read -- this won't be reached as the host resolution will fail first.
5757 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; 5757 MockRead data_reads[] = { MockRead(SYNCHRONOUS, ERR_UNEXPECTED) };
5758 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 5758 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
5759 session_deps.socket_factory.AddSocketDataProvider(&data); 5759 session_deps.socket_factory.AddSocketDataProvider(&data);
5760 5760
5761 // Run the request. 5761 // Run the request.
5762 rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5762 rv = trans->Start(&request, callback.callback(), BoundNetLog());
5763 ASSERT_EQ(ERR_IO_PENDING, rv); 5763 ASSERT_EQ(ERR_IO_PENDING, rv);
5764 rv = callback.WaitForResult(); 5764 rv = callback.WaitForResult();
5765 5765
5766 // If we bypassed the cache, we would have gotten a failure while resolving 5766 // If we bypassed the cache, we would have gotten a failure while resolving
5767 // "www.google.com". 5767 // "www.google.com".
(...skipping 18 matching lines...) Expand all
5786 TEST_F(HttpNetworkTransactionTest, RequestWriteError) { 5786 TEST_F(HttpNetworkTransactionTest, RequestWriteError) {
5787 SessionDependencies session_deps; 5787 SessionDependencies session_deps;
5788 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 5788 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
5789 5789
5790 HttpRequestInfo request; 5790 HttpRequestInfo request;
5791 request.method = "GET"; 5791 request.method = "GET";
5792 request.url = GURL("http://www.foo.com/"); 5792 request.url = GURL("http://www.foo.com/");
5793 request.load_flags = 0; 5793 request.load_flags = 0;
5794 5794
5795 MockWrite write_failure[] = { 5795 MockWrite write_failure[] = {
5796 MockWrite(true, ERR_CONNECTION_RESET), 5796 MockWrite(ASYNC, ERR_CONNECTION_RESET),
5797 }; 5797 };
5798 StaticSocketDataProvider data(NULL, 0, 5798 StaticSocketDataProvider data(NULL, 0,
5799 write_failure, arraysize(write_failure)); 5799 write_failure, arraysize(write_failure));
5800 session_deps.socket_factory.AddSocketDataProvider(&data); 5800 session_deps.socket_factory.AddSocketDataProvider(&data);
5801 5801
5802 TestCompletionCallback callback; 5802 TestCompletionCallback callback;
5803 5803
5804 scoped_ptr<HttpTransaction> trans( 5804 scoped_ptr<HttpTransaction> trans(
5805 new HttpNetworkTransaction(CreateSession(&session_deps))); 5805 new HttpNetworkTransaction(CreateSession(&session_deps)));
5806 5806
5807 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5807 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5808 EXPECT_EQ(ERR_IO_PENDING, rv); 5808 EXPECT_EQ(ERR_IO_PENDING, rv);
5809 5809
5810 rv = callback.WaitForResult(); 5810 rv = callback.WaitForResult();
5811 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 5811 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
5812 } 5812 }
5813 5813
5814 // Check that a connection closed after the start of the headers finishes ok. 5814 // Check that a connection closed after the start of the headers finishes ok.
5815 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { 5815 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) {
5816 SessionDependencies session_deps; 5816 SessionDependencies session_deps;
5817 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 5817 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
5818 5818
5819 HttpRequestInfo request; 5819 HttpRequestInfo request;
5820 request.method = "GET"; 5820 request.method = "GET";
5821 request.url = GURL("http://www.foo.com/"); 5821 request.url = GURL("http://www.foo.com/");
5822 request.load_flags = 0; 5822 request.load_flags = 0;
5823 5823
5824 MockRead data_reads[] = { 5824 MockRead data_reads[] = {
5825 MockRead("HTTP/1."), 5825 MockRead("HTTP/1."),
5826 MockRead(false, OK), 5826 MockRead(SYNCHRONOUS, OK),
5827 }; 5827 };
5828 5828
5829 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 5829 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
5830 session_deps.socket_factory.AddSocketDataProvider(&data); 5830 session_deps.socket_factory.AddSocketDataProvider(&data);
5831 5831
5832 TestCompletionCallback callback; 5832 TestCompletionCallback callback;
5833 5833
5834 scoped_ptr<HttpTransaction> trans( 5834 scoped_ptr<HttpTransaction> trans(
5835 new HttpNetworkTransaction(CreateSession(&session_deps))); 5835 new HttpNetworkTransaction(CreateSession(&session_deps)));
5836 5836
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5868 "Host: www.google.com\r\n" 5868 "Host: www.google.com\r\n"
5869 "Connection: keep-alive\r\n\r\n"), 5869 "Connection: keep-alive\r\n\r\n"),
5870 }; 5870 };
5871 5871
5872 MockRead data_reads1[] = { 5872 MockRead data_reads1[] = {
5873 MockRead("HTTP/1.1 401 Unauthorized\r\n"), 5873 MockRead("HTTP/1.1 401 Unauthorized\r\n"),
5874 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 5874 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
5875 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5875 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5876 MockRead("Content-Length: 14\r\n\r\n"), 5876 MockRead("Content-Length: 14\r\n\r\n"),
5877 MockRead("Unauth"), 5877 MockRead("Unauth"),
5878 MockRead(true, ERR_CONNECTION_RESET), 5878 MockRead(ASYNC, ERR_CONNECTION_RESET),
5879 }; 5879 };
5880 5880
5881 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 5881 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
5882 data_writes1, arraysize(data_writes1)); 5882 data_writes1, arraysize(data_writes1));
5883 session_deps.socket_factory.AddSocketDataProvider(&data1); 5883 session_deps.socket_factory.AddSocketDataProvider(&data1);
5884 5884
5885 // After calling trans->RestartWithAuth(), this is the request we should 5885 // After calling trans->RestartWithAuth(), this is the request we should
5886 // be issuing -- the final header line contains the credentials. 5886 // be issuing -- the final header line contains the credentials.
5887 MockWrite data_writes2[] = { 5887 MockWrite data_writes2[] = {
5888 MockWrite("GET / HTTP/1.1\r\n" 5888 MockWrite("GET / HTTP/1.1\r\n"
5889 "Host: www.google.com\r\n" 5889 "Host: www.google.com\r\n"
5890 "Connection: keep-alive\r\n" 5890 "Connection: keep-alive\r\n"
5891 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 5891 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
5892 }; 5892 };
5893 5893
5894 // Lastly, the server responds with the actual content. 5894 // Lastly, the server responds with the actual content.
5895 MockRead data_reads2[] = { 5895 MockRead data_reads2[] = {
5896 MockRead("HTTP/1.1 200 OK\r\n"), 5896 MockRead("HTTP/1.1 200 OK\r\n"),
5897 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5897 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5898 MockRead("Content-Length: 100\r\n\r\n"), 5898 MockRead("Content-Length: 100\r\n\r\n"),
5899 MockRead(false, OK), 5899 MockRead(SYNCHRONOUS, OK),
5900 }; 5900 };
5901 5901
5902 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 5902 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
5903 data_writes2, arraysize(data_writes2)); 5903 data_writes2, arraysize(data_writes2));
5904 session_deps.socket_factory.AddSocketDataProvider(&data2); 5904 session_deps.socket_factory.AddSocketDataProvider(&data2);
5905 5905
5906 TestCompletionCallback callback1; 5906 TestCompletionCallback callback1;
5907 5907
5908 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 5908 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
5909 5909
(...skipping 26 matching lines...) Expand all
5936 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { 5936 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) {
5937 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70")); 5937 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70"));
5938 5938
5939 HttpRequestInfo request; 5939 HttpRequestInfo request;
5940 request.method = "GET"; 5940 request.method = "GET";
5941 request.url = GURL("https://www.google.com/"); 5941 request.url = GURL("https://www.google.com/");
5942 request.load_flags = 0; 5942 request.load_flags = 0;
5943 5943
5944 MockRead proxy_reads[] = { 5944 MockRead proxy_reads[] = {
5945 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), 5945 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"),
5946 MockRead(false, OK) 5946 MockRead(SYNCHRONOUS, OK)
5947 }; 5947 };
5948 5948
5949 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0); 5949 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0);
5950 SSLSocketDataProvider ssl(true, OK); 5950 SSLSocketDataProvider ssl(ASYNC, OK);
5951 5951
5952 session_deps.socket_factory.AddSocketDataProvider(&data); 5952 session_deps.socket_factory.AddSocketDataProvider(&data);
5953 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 5953 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
5954 5954
5955 TestCompletionCallback callback; 5955 TestCompletionCallback callback;
5956 5956
5957 session_deps.socket_factory.ResetNextMockIndexes(); 5957 session_deps.socket_factory.ResetNextMockIndexes();
5958 5958
5959 scoped_ptr<HttpTransaction> trans( 5959 scoped_ptr<HttpTransaction> trans(
5960 new HttpNetworkTransaction(CreateSession(&session_deps))); 5960 new HttpNetworkTransaction(CreateSession(&session_deps)));
(...skipping 10 matching lines...) Expand all
5971 request.method = "GET"; 5971 request.method = "GET";
5972 request.url = GURL("http://www.google.com/"); 5972 request.url = GURL("http://www.google.com/");
5973 request.load_flags = 0; 5973 request.load_flags = 0;
5974 5974
5975 SessionDependencies session_deps; 5975 SessionDependencies session_deps;
5976 scoped_ptr<HttpTransaction> trans( 5976 scoped_ptr<HttpTransaction> trans(
5977 new HttpNetworkTransaction(CreateSession(&session_deps))); 5977 new HttpNetworkTransaction(CreateSession(&session_deps)));
5978 5978
5979 MockRead data_reads[] = { 5979 MockRead data_reads[] = {
5980 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), 5980 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"),
5981 MockRead(false, OK), 5981 MockRead(SYNCHRONOUS, OK),
5982 }; 5982 };
5983 5983
5984 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 5984 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
5985 session_deps.socket_factory.AddSocketDataProvider(&data); 5985 session_deps.socket_factory.AddSocketDataProvider(&data);
5986 5986
5987 TestCompletionCallback callback; 5987 TestCompletionCallback callback;
5988 5988
5989 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5989 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5990 EXPECT_EQ(ERR_IO_PENDING, rv); 5990 EXPECT_EQ(ERR_IO_PENDING, rv);
5991 5991
(...skipping 29 matching lines...) Expand all
6021 UploadData::Element element; 6021 UploadData::Element element;
6022 element.SetToFilePath(temp_file_path); 6022 element.SetToFilePath(temp_file_path);
6023 element.SetContentLength(kFakeSize); 6023 element.SetContentLength(kFakeSize);
6024 elements.push_back(element); 6024 elements.push_back(element);
6025 request.upload_data->SetElements(elements); 6025 request.upload_data->SetElements(elements);
6026 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync()); 6026 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync());
6027 6027
6028 MockRead data_reads[] = { 6028 MockRead data_reads[] = {
6029 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 6029 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
6030 MockRead("hello world"), 6030 MockRead("hello world"),
6031 MockRead(false, OK), 6031 MockRead(SYNCHRONOUS, OK),
6032 }; 6032 };
6033 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 6033 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
6034 session_deps.socket_factory.AddSocketDataProvider(&data); 6034 session_deps.socket_factory.AddSocketDataProvider(&data);
6035 6035
6036 TestCompletionCallback callback; 6036 TestCompletionCallback callback;
6037 6037
6038 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 6038 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
6039 EXPECT_EQ(ERR_IO_PENDING, rv); 6039 EXPECT_EQ(ERR_IO_PENDING, rv);
6040 6040
6041 rv = callback.WaitForResult(); 6041 rv = callback.WaitForResult();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
6076 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); 6076 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file));
6077 6077
6078 std::vector<UploadData::Element> elements; 6078 std::vector<UploadData::Element> elements;
6079 UploadData::Element element; 6079 UploadData::Element element;
6080 element.SetToFilePath(temp_file); 6080 element.SetToFilePath(temp_file);
6081 elements.push_back(element); 6081 elements.push_back(element);
6082 request.upload_data->SetElements(elements); 6082 request.upload_data->SetElements(elements);
6083 6083
6084 MockRead data_reads[] = { 6084 MockRead data_reads[] = {
6085 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 6085 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
6086 MockRead(false, OK), 6086 MockRead(SYNCHRONOUS, OK),
6087 }; 6087 };
6088 MockWrite data_writes[] = { 6088 MockWrite data_writes[] = {
6089 MockWrite("POST /upload HTTP/1.1\r\n" 6089 MockWrite("POST /upload HTTP/1.1\r\n"
6090 "Host: www.google.com\r\n" 6090 "Host: www.google.com\r\n"
6091 "Connection: keep-alive\r\n" 6091 "Connection: keep-alive\r\n"
6092 "Content-Length: 0\r\n\r\n"), 6092 "Content-Length: 0\r\n\r\n"),
6093 MockWrite(false, OK), 6093 MockWrite(SYNCHRONOUS, OK),
6094 }; 6094 };
6095 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, 6095 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes,
6096 arraysize(data_writes)); 6096 arraysize(data_writes));
6097 session_deps.socket_factory.AddSocketDataProvider(&data); 6097 session_deps.socket_factory.AddSocketDataProvider(&data);
6098 6098
6099 TestCompletionCallback callback; 6099 TestCompletionCallback callback;
6100 6100
6101 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 6101 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
6102 EXPECT_EQ(ERR_IO_PENDING, rv); 6102 EXPECT_EQ(ERR_IO_PENDING, rv);
6103 6103
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
6136 elements.push_back(element); 6136 elements.push_back(element);
6137 request.upload_data->SetElements(elements); 6137 request.upload_data->SetElements(elements);
6138 6138
6139 MockRead data_reads[] = { 6139 MockRead data_reads[] = {
6140 MockRead("HTTP/1.1 401 Unauthorized\r\n"), 6140 MockRead("HTTP/1.1 401 Unauthorized\r\n"),
6141 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 6141 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
6142 MockRead("Content-Length: 0\r\n\r\n"), // No response body. 6142 MockRead("Content-Length: 0\r\n\r\n"), // No response body.
6143 6143
6144 MockRead("HTTP/1.1 200 OK\r\n"), 6144 MockRead("HTTP/1.1 200 OK\r\n"),
6145 MockRead("Content-Length: 0\r\n\r\n"), 6145 MockRead("Content-Length: 0\r\n\r\n"),
6146 MockRead(false, OK), 6146 MockRead(SYNCHRONOUS, OK),
6147 }; 6147 };
6148 MockWrite data_writes[] = { 6148 MockWrite data_writes[] = {
6149 MockWrite("POST /upload HTTP/1.1\r\n" 6149 MockWrite("POST /upload HTTP/1.1\r\n"
6150 "Host: www.google.com\r\n" 6150 "Host: www.google.com\r\n"
6151 "Connection: keep-alive\r\n" 6151 "Connection: keep-alive\r\n"
6152 "Content-Length: 16\r\n\r\n"), 6152 "Content-Length: 16\r\n\r\n"),
6153 MockWrite(false, temp_file_contents.c_str()), 6153 MockWrite(SYNCHRONOUS, temp_file_contents.c_str()),
6154 6154
6155 MockWrite("POST /upload HTTP/1.1\r\n" 6155 MockWrite("POST /upload HTTP/1.1\r\n"
6156 "Host: www.google.com\r\n" 6156 "Host: www.google.com\r\n"
6157 "Connection: keep-alive\r\n" 6157 "Connection: keep-alive\r\n"
6158 "Content-Length: 16\r\n" 6158 "Content-Length: 16\r\n"
6159 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 6159 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
6160 MockWrite(false, unreadable_contents.c_str(), temp_file_contents.length()), 6160 MockWrite(SYNCHRONOUS, unreadable_contents.c_str(),
6161 MockWrite(false, OK), 6161 temp_file_contents.length()),
6162 MockWrite(SYNCHRONOUS, OK),
6162 }; 6163 };
6163 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, 6164 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes,
6164 arraysize(data_writes)); 6165 arraysize(data_writes));
6165 session_deps.socket_factory.AddSocketDataProvider(&data); 6166 session_deps.socket_factory.AddSocketDataProvider(&data);
6166 6167
6167 TestCompletionCallback callback1; 6168 TestCompletionCallback callback1;
6168 6169
6169 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 6170 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
6170 EXPECT_EQ(ERR_IO_PENDING, rv); 6171 EXPECT_EQ(ERR_IO_PENDING, rv);
6171 6172
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
6355 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { 6356 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) {
6356 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL)); 6357 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL));
6357 HttpStreamFactory::set_use_alternate_protocols(true); 6358 HttpStreamFactory::set_use_alternate_protocols(true);
6358 6359
6359 SessionDependencies session_deps; 6360 SessionDependencies session_deps;
6360 6361
6361 MockRead data_reads[] = { 6362 MockRead data_reads[] = {
6362 MockRead("HTTP/1.1 200 OK\r\n"), 6363 MockRead("HTTP/1.1 200 OK\r\n"),
6363 MockRead(kAlternateProtocolHttpHeader), 6364 MockRead(kAlternateProtocolHttpHeader),
6364 MockRead("hello world"), 6365 MockRead("hello world"),
6365 MockRead(false, OK), 6366 MockRead(SYNCHRONOUS, OK),
6366 }; 6367 };
6367 6368
6368 HttpRequestInfo request; 6369 HttpRequestInfo request;
6369 request.method = "GET"; 6370 request.method = "GET";
6370 request.url = GURL("http://www.google.com/"); 6371 request.url = GURL("http://www.google.com/");
6371 request.load_flags = 0; 6372 request.load_flags = 0;
6372 6373
6373 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 6374 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
6374 6375
6375 session_deps.socket_factory.AddSocketDataProvider(&data); 6376 session_deps.socket_factory.AddSocketDataProvider(&data);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
6423 request.load_flags = 0; 6424 request.load_flags = 0;
6424 6425
6425 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6426 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6426 StaticSocketDataProvider first_data; 6427 StaticSocketDataProvider first_data;
6427 first_data.set_connect_data(mock_connect); 6428 first_data.set_connect_data(mock_connect);
6428 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6429 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6429 6430
6430 MockRead data_reads[] = { 6431 MockRead data_reads[] = {
6431 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6432 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6432 MockRead("hello world"), 6433 MockRead("hello world"),
6433 MockRead(true, OK), 6434 MockRead(ASYNC, OK),
6434 }; 6435 };
6435 StaticSocketDataProvider second_data( 6436 StaticSocketDataProvider second_data(
6436 data_reads, arraysize(data_reads), NULL, 0); 6437 data_reads, arraysize(data_reads), NULL, 0);
6437 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6438 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6438 6439
6439 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6440 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6440 6441
6441 HttpServerProperties* http_server_properties = 6442 HttpServerProperties* http_server_properties =
6442 session->http_server_properties(); 6443 session->http_server_properties();
6443 // Port must be < 1024, or the header will be ignored (since initial port was 6444 // Port must be < 1024, or the header will be ignored (since initial port was
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
6486 restricted_port_request.load_flags = 0; 6487 restricted_port_request.load_flags = 0;
6487 6488
6488 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6489 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6489 StaticSocketDataProvider first_data; 6490 StaticSocketDataProvider first_data;
6490 first_data.set_connect_data(mock_connect); 6491 first_data.set_connect_data(mock_connect);
6491 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6492 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6492 6493
6493 MockRead data_reads[] = { 6494 MockRead data_reads[] = {
6494 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6495 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6495 MockRead("hello world"), 6496 MockRead("hello world"),
6496 MockRead(true, OK), 6497 MockRead(ASYNC, OK),
6497 }; 6498 };
6498 StaticSocketDataProvider second_data( 6499 StaticSocketDataProvider second_data(
6499 data_reads, arraysize(data_reads), NULL, 0); 6500 data_reads, arraysize(data_reads), NULL, 0);
6500 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6501 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6501 6502
6502 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6503 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6503 6504
6504 HttpServerProperties* http_server_properties = 6505 HttpServerProperties* http_server_properties =
6505 session->http_server_properties(); 6506 session->http_server_properties();
6506 const int kUnrestrictedAlternatePort = 1024; 6507 const int kUnrestrictedAlternatePort = 1024;
(...skipping 28 matching lines...) Expand all
6535 restricted_port_request.load_flags = 0; 6536 restricted_port_request.load_flags = 0;
6536 6537
6537 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6538 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6538 StaticSocketDataProvider first_data; 6539 StaticSocketDataProvider first_data;
6539 first_data.set_connect_data(mock_connect); 6540 first_data.set_connect_data(mock_connect);
6540 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6541 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6541 6542
6542 MockRead data_reads[] = { 6543 MockRead data_reads[] = {
6543 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6544 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6544 MockRead("hello world"), 6545 MockRead("hello world"),
6545 MockRead(true, OK), 6546 MockRead(ASYNC, OK),
6546 }; 6547 };
6547 StaticSocketDataProvider second_data( 6548 StaticSocketDataProvider second_data(
6548 data_reads, arraysize(data_reads), NULL, 0); 6549 data_reads, arraysize(data_reads), NULL, 0);
6549 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6550 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6550 6551
6551 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6552 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6552 6553
6553 HttpServerProperties* http_server_properties = 6554 HttpServerProperties* http_server_properties =
6554 session->http_server_properties(); 6555 session->http_server_properties();
6555 const int kRestrictedAlternatePort = 80; 6556 const int kRestrictedAlternatePort = 80;
(...skipping 28 matching lines...) Expand all
6584 unrestricted_port_request.load_flags = 0; 6585 unrestricted_port_request.load_flags = 0;
6585 6586
6586 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6587 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6587 StaticSocketDataProvider first_data; 6588 StaticSocketDataProvider first_data;
6588 first_data.set_connect_data(mock_connect); 6589 first_data.set_connect_data(mock_connect);
6589 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6590 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6590 6591
6591 MockRead data_reads[] = { 6592 MockRead data_reads[] = {
6592 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6593 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6593 MockRead("hello world"), 6594 MockRead("hello world"),
6594 MockRead(true, OK), 6595 MockRead(ASYNC, OK),
6595 }; 6596 };
6596 StaticSocketDataProvider second_data( 6597 StaticSocketDataProvider second_data(
6597 data_reads, arraysize(data_reads), NULL, 0); 6598 data_reads, arraysize(data_reads), NULL, 0);
6598 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6599 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6599 6600
6600 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6601 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6601 6602
6602 HttpServerProperties* http_server_properties = 6603 HttpServerProperties* http_server_properties =
6603 session->http_server_properties(); 6604 session->http_server_properties();
6604 const int kRestrictedAlternatePort = 80; 6605 const int kRestrictedAlternatePort = 80;
(...skipping 28 matching lines...) Expand all
6633 unrestricted_port_request.load_flags = 0; 6634 unrestricted_port_request.load_flags = 0;
6634 6635
6635 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6636 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6636 StaticSocketDataProvider first_data; 6637 StaticSocketDataProvider first_data;
6637 first_data.set_connect_data(mock_connect); 6638 first_data.set_connect_data(mock_connect);
6638 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6639 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6639 6640
6640 MockRead data_reads[] = { 6641 MockRead data_reads[] = {
6641 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6642 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6642 MockRead("hello world"), 6643 MockRead("hello world"),
6643 MockRead(true, OK), 6644 MockRead(ASYNC, OK),
6644 }; 6645 };
6645 StaticSocketDataProvider second_data( 6646 StaticSocketDataProvider second_data(
6646 data_reads, arraysize(data_reads), NULL, 0); 6647 data_reads, arraysize(data_reads), NULL, 0);
6647 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6648 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6648 6649
6649 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6650 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6650 6651
6651 HttpServerProperties* http_server_properties = 6652 HttpServerProperties* http_server_properties =
6652 session->http_server_properties(); 6653 session->http_server_properties();
6653 const int kUnrestrictedAlternatePort = 1024; 6654 const int kUnrestrictedAlternatePort = 1024;
(...skipping 24 matching lines...) Expand all
6678 HttpRequestInfo request; 6679 HttpRequestInfo request;
6679 request.method = "GET"; 6680 request.method = "GET";
6680 request.url = GURL("http://www.google.com/"); 6681 request.url = GURL("http://www.google.com/");
6681 request.load_flags = 0; 6682 request.load_flags = 0;
6682 6683
6683 // The alternate protocol request will error out before we attempt to connect, 6684 // The alternate protocol request will error out before we attempt to connect,
6684 // so only the standard HTTP request will try to connect. 6685 // so only the standard HTTP request will try to connect.
6685 MockRead data_reads[] = { 6686 MockRead data_reads[] = {
6686 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6687 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6687 MockRead("hello world"), 6688 MockRead("hello world"),
6688 MockRead(true, OK), 6689 MockRead(ASYNC, OK),
6689 }; 6690 };
6690 StaticSocketDataProvider data( 6691 StaticSocketDataProvider data(
6691 data_reads, arraysize(data_reads), NULL, 0); 6692 data_reads, arraysize(data_reads), NULL, 0);
6692 session_deps.socket_factory.AddSocketDataProvider(&data); 6693 session_deps.socket_factory.AddSocketDataProvider(&data);
6693 6694
6694 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6695 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6695 6696
6696 HttpServerProperties* http_server_properties = 6697 HttpServerProperties* http_server_properties =
6697 session->http_server_properties(); 6698 session->http_server_properties();
6698 const int kUnsafePort = 7; 6699 const int kUnsafePort = 7;
(...skipping 30 matching lines...) Expand all
6729 6730
6730 HttpRequestInfo request; 6731 HttpRequestInfo request;
6731 request.method = "GET"; 6732 request.method = "GET";
6732 request.url = GURL("http://www.google.com/"); 6733 request.url = GURL("http://www.google.com/");
6733 request.load_flags = 0; 6734 request.load_flags = 0;
6734 6735
6735 MockRead data_reads[] = { 6736 MockRead data_reads[] = {
6736 MockRead("HTTP/1.1 200 OK\r\n"), 6737 MockRead("HTTP/1.1 200 OK\r\n"),
6737 MockRead(kAlternateProtocolHttpHeader), 6738 MockRead(kAlternateProtocolHttpHeader),
6738 MockRead("hello world"), 6739 MockRead("hello world"),
6739 MockRead(true, OK), 6740 MockRead(ASYNC, OK),
6740 }; 6741 };
6741 6742
6742 StaticSocketDataProvider first_transaction( 6743 StaticSocketDataProvider first_transaction(
6743 data_reads, arraysize(data_reads), NULL, 0); 6744 data_reads, arraysize(data_reads), NULL, 0);
6744 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 6745 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
6745 6746
6746 SSLSocketDataProvider ssl(true, OK); 6747 SSLSocketDataProvider ssl(ASYNC, OK);
6747 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 6748 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
6748 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 6749 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
6749 6750
6750 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 6751 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
6751 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 6752 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
6752 6753
6753 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 6754 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
6754 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 6755 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
6755 MockRead spdy_reads[] = { 6756 MockRead spdy_reads[] = {
6756 CreateMockRead(*resp), 6757 CreateMockRead(*resp),
6757 CreateMockRead(*data), 6758 CreateMockRead(*data),
6758 MockRead(true, 0, 0), 6759 MockRead(ASYNC, 0, 0),
6759 }; 6760 };
6760 6761
6761 scoped_ptr<DelayedSocketData> spdy_data( 6762 scoped_ptr<DelayedSocketData> spdy_data(
6762 new DelayedSocketData( 6763 new DelayedSocketData(
6763 1, // wait for one write to finish before reading. 6764 1, // wait for one write to finish before reading.
6764 spdy_reads, arraysize(spdy_reads), 6765 spdy_reads, arraysize(spdy_reads),
6765 spdy_writes, arraysize(spdy_writes))); 6766 spdy_writes, arraysize(spdy_writes)));
6766 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 6767 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
6767 6768
6768 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 6769 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
6818 6819
6819 HttpRequestInfo request; 6820 HttpRequestInfo request;
6820 request.method = "GET"; 6821 request.method = "GET";
6821 request.url = GURL("http://www.google.com/"); 6822 request.url = GURL("http://www.google.com/");
6822 request.load_flags = 0; 6823 request.load_flags = 0;
6823 6824
6824 MockRead data_reads[] = { 6825 MockRead data_reads[] = {
6825 MockRead("HTTP/1.1 200 OK\r\n"), 6826 MockRead("HTTP/1.1 200 OK\r\n"),
6826 MockRead(kAlternateProtocolHttpHeader), 6827 MockRead(kAlternateProtocolHttpHeader),
6827 MockRead("hello world"), 6828 MockRead("hello world"),
6828 MockRead(true, OK), 6829 MockRead(ASYNC, OK),
6829 }; 6830 };
6830 6831
6831 StaticSocketDataProvider first_transaction( 6832 StaticSocketDataProvider first_transaction(
6832 data_reads, arraysize(data_reads), NULL, 0); 6833 data_reads, arraysize(data_reads), NULL, 0);
6833 // Socket 1 is the HTTP transaction with the Alternate-Protocol header. 6834 // Socket 1 is the HTTP transaction with the Alternate-Protocol header.
6834 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 6835 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
6835 6836
6836 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 6837 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
6837 StaticSocketDataProvider hanging_socket( 6838 StaticSocketDataProvider hanging_socket(
6838 NULL, 0, NULL, 0); 6839 NULL, 0, NULL, 0);
6839 hanging_socket.set_connect_data(never_finishing_connect); 6840 hanging_socket.set_connect_data(never_finishing_connect);
6840 // Socket 2 and 3 are the hanging Alternate-Protocol and 6841 // Socket 2 and 3 are the hanging Alternate-Protocol and
6841 // non-Alternate-Protocol jobs from the 2nd transaction. 6842 // non-Alternate-Protocol jobs from the 2nd transaction.
6842 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); 6843 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket);
6843 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); 6844 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket);
6844 6845
6845 SSLSocketDataProvider ssl(true, OK); 6846 SSLSocketDataProvider ssl(ASYNC, OK);
6846 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 6847 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
6847 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 6848 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
6848 6849
6849 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 6850 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
6850 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); 6851 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST));
6851 MockWrite spdy_writes[] = { 6852 MockWrite spdy_writes[] = {
6852 CreateMockWrite(*req1), 6853 CreateMockWrite(*req1),
6853 CreateMockWrite(*req2), 6854 CreateMockWrite(*req2),
6854 }; 6855 };
6855 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); 6856 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1));
6856 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true)); 6857 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true));
6857 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); 6858 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3));
6858 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true)); 6859 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true));
6859 MockRead spdy_reads[] = { 6860 MockRead spdy_reads[] = {
6860 CreateMockRead(*resp1), 6861 CreateMockRead(*resp1),
6861 CreateMockRead(*data1), 6862 CreateMockRead(*data1),
6862 CreateMockRead(*resp2), 6863 CreateMockRead(*resp2),
6863 CreateMockRead(*data2), 6864 CreateMockRead(*data2),
6864 MockRead(true, 0, 0), 6865 MockRead(ASYNC, 0, 0),
6865 }; 6866 };
6866 6867
6867 scoped_ptr<DelayedSocketData> spdy_data( 6868 scoped_ptr<DelayedSocketData> spdy_data(
6868 new DelayedSocketData( 6869 new DelayedSocketData(
6869 2, // wait for writes to finish before reading. 6870 2, // wait for writes to finish before reading.
6870 spdy_reads, arraysize(spdy_reads), 6871 spdy_reads, arraysize(spdy_reads),
6871 spdy_writes, arraysize(spdy_writes))); 6872 spdy_writes, arraysize(spdy_writes)));
6872 // Socket 4 is the successful Alternate-Protocol for transaction 3. 6873 // Socket 4 is the successful Alternate-Protocol for transaction 3.
6873 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 6874 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
6874 6875
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
6934 6935
6935 HttpRequestInfo request; 6936 HttpRequestInfo request;
6936 request.method = "GET"; 6937 request.method = "GET";
6937 request.url = GURL("http://www.google.com/"); 6938 request.url = GURL("http://www.google.com/");
6938 request.load_flags = 0; 6939 request.load_flags = 0;
6939 6940
6940 MockRead data_reads[] = { 6941 MockRead data_reads[] = {
6941 MockRead("HTTP/1.1 200 OK\r\n"), 6942 MockRead("HTTP/1.1 200 OK\r\n"),
6942 MockRead(kAlternateProtocolHttpHeader), 6943 MockRead(kAlternateProtocolHttpHeader),
6943 MockRead("hello world"), 6944 MockRead("hello world"),
6944 MockRead(true, OK), 6945 MockRead(ASYNC, OK),
6945 }; 6946 };
6946 6947
6947 StaticSocketDataProvider first_transaction( 6948 StaticSocketDataProvider first_transaction(
6948 data_reads, arraysize(data_reads), NULL, 0); 6949 data_reads, arraysize(data_reads), NULL, 0);
6949 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 6950 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
6950 6951
6951 SSLSocketDataProvider ssl(true, OK); 6952 SSLSocketDataProvider ssl(ASYNC, OK);
6952 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 6953 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
6953 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 6954 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
6954 6955
6955 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 6956 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
6956 StaticSocketDataProvider hanging_alternate_protocol_socket( 6957 StaticSocketDataProvider hanging_alternate_protocol_socket(
6957 NULL, 0, NULL, 0); 6958 NULL, 0, NULL, 0);
6958 hanging_alternate_protocol_socket.set_connect_data( 6959 hanging_alternate_protocol_socket.set_connect_data(
6959 never_finishing_connect); 6960 never_finishing_connect);
6960 session_deps.socket_factory.AddSocketDataProvider( 6961 session_deps.socket_factory.AddSocketDataProvider(
6961 &hanging_alternate_protocol_socket); 6962 &hanging_alternate_protocol_socket);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
7066 7067
7067 HttpRequestInfo request; 7068 HttpRequestInfo request;
7068 request.method = "GET"; 7069 request.method = "GET";
7069 request.url = GURL("http://www.google.com/"); 7070 request.url = GURL("http://www.google.com/");
7070 request.load_flags = 0; 7071 request.load_flags = 0;
7071 7072
7072 MockRead data_reads[] = { 7073 MockRead data_reads[] = {
7073 MockRead("HTTP/1.1 200 OK\r\n"), 7074 MockRead("HTTP/1.1 200 OK\r\n"),
7074 MockRead(kAlternateProtocolHttpHeader), 7075 MockRead(kAlternateProtocolHttpHeader),
7075 MockRead("hello world"), 7076 MockRead("hello world"),
7076 MockRead(true, OK), 7077 MockRead(ASYNC, OK),
7077 }; 7078 };
7078 7079
7079 StaticSocketDataProvider first_transaction( 7080 StaticSocketDataProvider first_transaction(
7080 data_reads, arraysize(data_reads), NULL, 0); 7081 data_reads, arraysize(data_reads), NULL, 0);
7081 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 7082 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
7082 7083
7083 SSLSocketDataProvider ssl(true, OK); 7084 SSLSocketDataProvider ssl(ASYNC, OK);
7084 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 7085 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
7085 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 7086 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
7086 7087
7087 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 7088 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
7088 MockWrite spdy_writes[] = { 7089 MockWrite spdy_writes[] = {
7089 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 7090 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
7090 "Host: www.google.com\r\n" 7091 "Host: www.google.com\r\n"
7091 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 7092 "Proxy-Connection: keep-alive\r\n\r\n"), // 0
7092 CreateMockWrite(*req) // 3 7093 CreateMockWrite(*req) // 3
7093 }; 7094 };
7094 7095
7095 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; 7096 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n";
7096 7097
7097 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 7098 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
7098 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 7099 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
7099 MockRead spdy_reads[] = { 7100 MockRead spdy_reads[] = {
7100 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 7101 MockRead(ASYNC, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1
7101 CreateMockRead(*resp.get(), 4), // 2, 4 7102 CreateMockRead(*resp.get(), 4), // 2, 4
7102 CreateMockRead(*data.get(), 4), // 5 7103 CreateMockRead(*data.get(), 4), // 5
7103 MockRead(true, 0, 0, 4), // 6 7104 MockRead(ASYNC, 0, 0, 4), // 6
7104 }; 7105 };
7105 7106
7106 scoped_ptr<OrderedSocketData> spdy_data( 7107 scoped_ptr<OrderedSocketData> spdy_data(
7107 new OrderedSocketData( 7108 new OrderedSocketData(
7108 spdy_reads, arraysize(spdy_reads), 7109 spdy_reads, arraysize(spdy_reads),
7109 spdy_writes, arraysize(spdy_writes))); 7110 spdy_writes, arraysize(spdy_writes)));
7110 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 7111 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
7111 7112
7112 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 7113 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
7113 StaticSocketDataProvider hanging_non_alternate_protocol_socket( 7114 StaticSocketDataProvider hanging_non_alternate_protocol_socket(
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
7170 7171
7171 HttpRequestInfo request; 7172 HttpRequestInfo request;
7172 request.method = "GET"; 7173 request.method = "GET";
7173 request.url = GURL("http://www.google.com/"); 7174 request.url = GURL("http://www.google.com/");
7174 request.load_flags = 0; 7175 request.load_flags = 0;
7175 7176
7176 MockRead data_reads[] = { 7177 MockRead data_reads[] = {
7177 MockRead("HTTP/1.1 200 OK\r\n"), 7178 MockRead("HTTP/1.1 200 OK\r\n"),
7178 MockRead(kAlternateProtocolHttpHeader), 7179 MockRead(kAlternateProtocolHttpHeader),
7179 MockRead("hello world"), 7180 MockRead("hello world"),
7180 MockRead(true, OK), 7181 MockRead(ASYNC, OK),
7181 }; 7182 };
7182 7183
7183 StaticSocketDataProvider first_transaction( 7184 StaticSocketDataProvider first_transaction(
7184 data_reads, arraysize(data_reads), NULL, 0); 7185 data_reads, arraysize(data_reads), NULL, 0);
7185 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 7186 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
7186 7187
7187 SSLSocketDataProvider ssl(true, OK); 7188 SSLSocketDataProvider ssl(ASYNC, OK);
7188 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 7189 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
7189 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 7190 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
7190 // Make sure we use ssl for spdy here. 7191 // Make sure we use ssl for spdy here.
7191 SpdySession::SetSSLMode(true); 7192 SpdySession::SetSSLMode(true);
7192 7193
7193 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 7194 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
7194 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 7195 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
7195 7196
7196 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 7197 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
7197 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 7198 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
7198 MockRead spdy_reads[] = { 7199 MockRead spdy_reads[] = {
7199 CreateMockRead(*resp), 7200 CreateMockRead(*resp),
7200 CreateMockRead(*data), 7201 CreateMockRead(*data),
7201 MockRead(true, 0, 0), 7202 MockRead(ASYNC, 0, 0),
7202 }; 7203 };
7203 7204
7204 scoped_ptr<DelayedSocketData> spdy_data( 7205 scoped_ptr<DelayedSocketData> spdy_data(
7205 new DelayedSocketData( 7206 new DelayedSocketData(
7206 1, // wait for one write to finish before reading. 7207 1, // wait for one write to finish before reading.
7207 spdy_reads, arraysize(spdy_reads), 7208 spdy_reads, arraysize(spdy_reads),
7208 spdy_writes, arraysize(spdy_writes))); 7209 spdy_writes, arraysize(spdy_writes)));
7209 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 7210 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
7210 7211
7211 TestCompletionCallback callback; 7212 TestCompletionCallback callback;
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
7651 size_t length_writes = 1; 7652 size_t length_writes = 1;
7652 if (read_write_round.extra_write) { 7653 if (read_write_round.extra_write) {
7653 writes[1] = *read_write_round.extra_write; 7654 writes[1] = *read_write_round.extra_write;
7654 length_writes = 2; 7655 length_writes = 2;
7655 } 7656 }
7656 StaticSocketDataProvider data_provider( 7657 StaticSocketDataProvider data_provider(
7657 reads, length_reads, writes, length_writes); 7658 reads, length_reads, writes, length_writes);
7658 session_deps.socket_factory.AddSocketDataProvider(&data_provider); 7659 session_deps.socket_factory.AddSocketDataProvider(&data_provider);
7659 7660
7660 // Add an SSL sequence if necessary. 7661 // Add an SSL sequence if necessary.
7661 SSLSocketDataProvider ssl_socket_data_provider(false, OK); 7662 SSLSocketDataProvider ssl_socket_data_provider(SYNCHRONOUS, OK);
7662 if (round >= test_config.first_ssl_round) 7663 if (round >= test_config.first_ssl_round)
7663 session_deps.socket_factory.AddSSLSocketDataProvider( 7664 session_deps.socket_factory.AddSSLSocketDataProvider(
7664 &ssl_socket_data_provider); 7665 &ssl_socket_data_provider);
7665 7666
7666 // Start or restart the transaction. 7667 // Start or restart the transaction.
7667 TestCompletionCallback callback; 7668 TestCompletionCallback callback;
7668 int rv; 7669 int rv;
7669 if (round == 0) { 7670 if (round == 0) {
7670 rv = trans.Start(&request, callback.callback(), BoundNetLog()); 7671 rv = trans.Start(&request, callback.callback(), BoundNetLog());
7671 } else { 7672 } else {
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
7881 } 7882 }
7882 7883
7883 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider { 7884 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider {
7884 public: 7885 public:
7885 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all) 7886 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all)
7886 : fail_all_(fail_all) { 7887 : fail_all_(fail_all) {
7887 } 7888 }
7888 7889
7889 virtual MockRead GetNextRead() { 7890 virtual MockRead GetNextRead() {
7890 if (fail_all_) 7891 if (fail_all_)
7891 return MockRead(false /* async */, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); 7892 return MockRead(SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT);
7892 7893
7893 return MockRead(false /* async */, 7894 return MockRead(SYNCHRONOUS,
7894 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n"); 7895 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n");
7895 } 7896 }
7896 7897
7897 virtual MockWriteResult OnWrite(const std::string& data) { 7898 virtual MockWriteResult OnWrite(const std::string& data) {
7898 return MockWriteResult(false /* async */, data.size()); 7899 return MockWriteResult(SYNCHRONOUS /* async */, data.size());
7899 } 7900 }
7900 7901
7901 void Reset() { 7902 void Reset() {
7902 } 7903 }
7903 7904
7904 private: 7905 private:
7905 const bool fail_all_; 7906 const bool fail_all_;
7906 }; 7907 };
7907 7908
7908 // Test that we restart a connection when we see a decompression failure from 7909 // Test that we restart a connection when we see a decompression failure from
7909 // the peer during the handshake. (In the real world we'll restart with SSLv3 7910 // the peer during the handshake. (In the real world we'll restart with SSLv3
7910 // and we won't offer DEFLATE in that case.) 7911 // and we won't offer DEFLATE in that case.)
7911 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) { 7912 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) {
7912 HttpRequestInfo request; 7913 HttpRequestInfo request;
7913 request.method = "GET"; 7914 request.method = "GET";
7914 request.url = GURL("https://tlsdecompressionfailure.example.com/"); 7915 request.url = GURL("https://tlsdecompressionfailure.example.com/");
7915 request.load_flags = 0; 7916 request.load_flags = 0;
7916 7917
7917 SessionDependencies session_deps; 7918 SessionDependencies session_deps;
7918 TLSDecompressionFailureSocketDataProvider socket_data_provider1( 7919 TLSDecompressionFailureSocketDataProvider socket_data_provider1(
7919 false /* fail all reads */); 7920 false /* fail all reads */);
7920 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); 7921 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false);
7921 SSLSocketDataProvider ssl_socket_data_provider1( 7922 SSLSocketDataProvider ssl_socket_data_provider1(
7922 false, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); 7923 SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT);
7923 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); 7924 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK);
7924 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); 7925 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1);
7925 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); 7926 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2);
7926 session_deps.socket_factory.AddSSLSocketDataProvider( 7927 session_deps.socket_factory.AddSSLSocketDataProvider(
7927 &ssl_socket_data_provider1); 7928 &ssl_socket_data_provider1);
7928 session_deps.socket_factory.AddSSLSocketDataProvider( 7929 session_deps.socket_factory.AddSSLSocketDataProvider(
7929 &ssl_socket_data_provider2); 7930 &ssl_socket_data_provider2);
7930 7931
7931 // Work around http://crbug.com/37454 7932 // Work around http://crbug.com/37454
7932 StaticSocketDataProvider bug37454_connection; 7933 StaticSocketDataProvider bug37454_connection;
7933 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED)); 7934 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED));
(...skipping 25 matching lines...) Expand all
7959 RestartAfterTLSDecompressionFailureWithFalseStart) { 7960 RestartAfterTLSDecompressionFailureWithFalseStart) {
7960 HttpRequestInfo request; 7961 HttpRequestInfo request;
7961 request.method = "GET"; 7962 request.method = "GET";
7962 request.url = GURL("https://tlsdecompressionfailure2.example.com/"); 7963 request.url = GURL("https://tlsdecompressionfailure2.example.com/");
7963 request.load_flags = 0; 7964 request.load_flags = 0;
7964 7965
7965 SessionDependencies session_deps; 7966 SessionDependencies session_deps;
7966 TLSDecompressionFailureSocketDataProvider socket_data_provider1( 7967 TLSDecompressionFailureSocketDataProvider socket_data_provider1(
7967 true /* fail all reads */); 7968 true /* fail all reads */);
7968 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); 7969 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false);
7969 SSLSocketDataProvider ssl_socket_data_provider1(false, OK); 7970 SSLSocketDataProvider ssl_socket_data_provider1(SYNCHRONOUS, OK);
7970 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); 7971 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK);
7971 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); 7972 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1);
7972 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); 7973 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2);
7973 session_deps.socket_factory.AddSSLSocketDataProvider( 7974 session_deps.socket_factory.AddSSLSocketDataProvider(
7974 &ssl_socket_data_provider1); 7975 &ssl_socket_data_provider1);
7975 session_deps.socket_factory.AddSSLSocketDataProvider( 7976 session_deps.socket_factory.AddSSLSocketDataProvider(
7976 &ssl_socket_data_provider2); 7977 &ssl_socket_data_provider2);
7977 7978
7978 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 7979 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
7979 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 7980 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
7980 TestCompletionCallback callback; 7981 TestCompletionCallback callback;
(...skipping 27 matching lines...) Expand all
8008 MockWrite data_writes[] = { 8009 MockWrite data_writes[] = {
8009 MockWrite("GET / HTTP/1.1\r\n" 8010 MockWrite("GET / HTTP/1.1\r\n"
8010 "Host: www.google.com\r\n" 8011 "Host: www.google.com\r\n"
8011 "Connection: keep-alive\r\n\r\n"), 8012 "Connection: keep-alive\r\n\r\n"),
8012 }; 8013 };
8013 8014
8014 MockRead data_reads[] = { 8015 MockRead data_reads[] = {
8015 MockRead("HTTP/1.1 200 OK\r\n"), 8016 MockRead("HTTP/1.1 200 OK\r\n"),
8016 MockRead(kAlternateProtocolHttpHeader), 8017 MockRead(kAlternateProtocolHttpHeader),
8017 MockRead("hello world"), 8018 MockRead("hello world"),
8018 MockRead(false, OK), 8019 MockRead(SYNCHRONOUS, OK),
8019 }; 8020 };
8020 8021
8021 SSLSocketDataProvider ssl(true, OK); 8022 SSLSocketDataProvider ssl(ASYNC, OK);
8022 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8023 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8023 ssl.next_proto = "http/1.1"; 8024 ssl.next_proto = "http/1.1";
8024 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; 8025 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11;
8025 8026
8026 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8027 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8027 8028
8028 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 8029 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
8029 data_writes, arraysize(data_writes)); 8030 data_writes, arraysize(data_writes));
8030 session_deps.socket_factory.AddSocketDataProvider(&data); 8031 session_deps.socket_factory.AddSocketDataProvider(&data);
8031 8032
(...skipping 29 matching lines...) Expand all
8061 // Fix crash: http://crbug.com/46369 8062 // Fix crash: http://crbug.com/46369
8062 HttpStreamFactory::set_use_alternate_protocols(true); 8063 HttpStreamFactory::set_use_alternate_protocols(true);
8063 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 8064 HttpStreamFactory::set_next_protos(SpdyNextProtos());
8064 SessionDependencies session_deps; 8065 SessionDependencies session_deps;
8065 8066
8066 HttpRequestInfo request; 8067 HttpRequestInfo request;
8067 request.method = "GET"; 8068 request.method = "GET";
8068 request.url = GURL("https://www.google.com/"); 8069 request.url = GURL("https://www.google.com/");
8069 request.load_flags = 0; 8070 request.load_flags = 0;
8070 8071
8071 SSLSocketDataProvider ssl(true, OK); 8072 SSLSocketDataProvider ssl(ASYNC, OK);
8072 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); 8073 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21);
8073 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8074 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8074 8075
8075 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 8076 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
8076 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 8077 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
8077 8078
8078 MockRead spdy_reads[] = { 8079 MockRead spdy_reads[] = {
8079 MockRead(false, 0, 0) // Not async - return 0 immediately. 8080 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately.
8080 }; 8081 };
8081 8082
8082 scoped_ptr<DelayedSocketData> spdy_data( 8083 scoped_ptr<DelayedSocketData> spdy_data(
8083 new DelayedSocketData( 8084 new DelayedSocketData(
8084 0, // don't wait in this case, immediate hangup. 8085 0, // don't wait in this case, immediate hangup.
8085 spdy_reads, arraysize(spdy_reads), 8086 spdy_reads, arraysize(spdy_reads),
8086 spdy_writes, arraysize(spdy_writes))); 8087 spdy_writes, arraysize(spdy_writes)));
8087 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 8088 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
8088 8089
8089 TestCompletionCallback callback; 8090 TestCompletionCallback callback;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
8121 request.load_flags = 0; 8122 request.load_flags = 0;
8122 8123
8123 // First round goes unauthenticated through the proxy. 8124 // First round goes unauthenticated through the proxy.
8124 MockWrite data_writes_1[] = { 8125 MockWrite data_writes_1[] = {
8125 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 8126 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
8126 "Host: www.google.com\r\n" 8127 "Host: www.google.com\r\n"
8127 "Proxy-Connection: keep-alive\r\n" 8128 "Proxy-Connection: keep-alive\r\n"
8128 "\r\n"), 8129 "\r\n"),
8129 }; 8130 };
8130 MockRead data_reads_1[] = { 8131 MockRead data_reads_1[] = {
8131 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 8132 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
8132 MockRead("HTTP/1.1 200 OK\r\n" 8133 MockRead("HTTP/1.1 200 OK\r\n"
8133 "Alternate-Protocol: 443:npn-spdy/2.1\r\n" 8134 "Alternate-Protocol: 443:npn-spdy/2.1\r\n"
8134 "Proxy-Connection: close\r\n" 8135 "Proxy-Connection: close\r\n"
8135 "\r\n"), 8136 "\r\n"),
8136 }; 8137 };
8137 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1), 8138 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1),
8138 data_writes_1, arraysize(data_writes_1)); 8139 data_writes_1, arraysize(data_writes_1));
8139 8140
8140 // Second round tries to tunnel to www.google.com due to the 8141 // Second round tries to tunnel to www.google.com due to the
8141 // Alternate-Protocol announcement in the first round. It fails due 8142 // Alternate-Protocol announcement in the first round. It fails due
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8175 // SPDY request 8176 // SPDY request
8176 CreateMockWrite(*req), 8177 CreateMockWrite(*req),
8177 }; 8178 };
8178 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n" 8179 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n"
8179 "Proxy-Authenticate: Mock\r\n" 8180 "Proxy-Authenticate: Mock\r\n"
8180 "Proxy-Connection: close\r\n" 8181 "Proxy-Connection: close\r\n"
8181 "\r\n"); 8182 "\r\n");
8182 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; 8183 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n";
8183 MockRead data_reads_2[] = { 8184 MockRead data_reads_2[] = {
8184 // First connection attempt fails 8185 // First connection attempt fails
8185 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1), 8186 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1),
8186 MockRead(true, kRejectConnectResponse, 8187 MockRead(ASYNC, kRejectConnectResponse,
8187 arraysize(kRejectConnectResponse) - 1, 1), 8188 arraysize(kRejectConnectResponse) - 1, 1),
8188 8189
8189 // Second connection attempt passes 8190 // Second connection attempt passes
8190 MockRead(true, kAcceptConnectResponse, 8191 MockRead(ASYNC, kAcceptConnectResponse,
8191 arraysize(kAcceptConnectResponse) -1, 4), 8192 arraysize(kAcceptConnectResponse) -1, 4),
8192 8193
8193 // SPDY response 8194 // SPDY response
8194 CreateMockRead(*resp.get(), 6), 8195 CreateMockRead(*resp.get(), 6),
8195 CreateMockRead(*data.get(), 6), 8196 CreateMockRead(*data.get(), 6),
8196 MockRead(true, 0, 0, 6), 8197 MockRead(ASYNC, 0, 0, 6),
8197 }; 8198 };
8198 scoped_ptr<OrderedSocketData> data_2( 8199 scoped_ptr<OrderedSocketData> data_2(
8199 new OrderedSocketData(data_reads_2, arraysize(data_reads_2), 8200 new OrderedSocketData(data_reads_2, arraysize(data_reads_2),
8200 data_writes_2, arraysize(data_writes_2))); 8201 data_writes_2, arraysize(data_writes_2)));
8201 8202
8202 SSLSocketDataProvider ssl(true, OK); 8203 SSLSocketDataProvider ssl(ASYNC, OK);
8203 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8204 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8204 ssl.next_proto = "spdy/2.1"; 8205 ssl.next_proto = "spdy/2.1";
8205 ssl.was_npn_negotiated = true; 8206 ssl.was_npn_negotiated = true;
8206 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 8207 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
8207 8208
8208 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 8209 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
8209 StaticSocketDataProvider hanging_non_alternate_protocol_socket( 8210 StaticSocketDataProvider hanging_non_alternate_protocol_socket(
8210 NULL, 0, NULL, 0); 8211 NULL, 0, NULL, 0);
8211 hanging_non_alternate_protocol_socket.set_connect_data( 8212 hanging_non_alternate_protocol_socket.set_connect_data(
8212 never_finishing_connect); 8213 never_finishing_connect);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
8255 // Test that if we cancel the transaction as the connection is completing, that 8256 // Test that if we cancel the transaction as the connection is completing, that
8256 // everything tears down correctly. 8257 // everything tears down correctly.
8257 TEST_F(HttpNetworkTransactionTest, SimpleCancel) { 8258 TEST_F(HttpNetworkTransactionTest, SimpleCancel) {
8258 // Setup everything about the connection to complete synchronously, so that 8259 // Setup everything about the connection to complete synchronously, so that
8259 // after calling HttpNetworkTransaction::Start, the only thing we're waiting 8260 // after calling HttpNetworkTransaction::Start, the only thing we're waiting
8260 // for is the callback from the HttpStreamRequest. 8261 // for is the callback from the HttpStreamRequest.
8261 // Then cancel the transaction. 8262 // Then cancel the transaction.
8262 // Verify that we don't crash. 8263 // Verify that we don't crash.
8263 MockConnect mock_connect(SYNCHRONOUS, OK); 8264 MockConnect mock_connect(SYNCHRONOUS, OK);
8264 MockRead data_reads[] = { 8265 MockRead data_reads[] = {
8265 MockRead(false, "HTTP/1.0 200 OK\r\n\r\n"), 8266 MockRead(SYNCHRONOUS, "HTTP/1.0 200 OK\r\n\r\n"),
8266 MockRead(false, "hello world"), 8267 MockRead(SYNCHRONOUS, "hello world"),
8267 MockRead(false, OK), 8268 MockRead(SYNCHRONOUS, OK),
8268 }; 8269 };
8269 8270
8270 HttpRequestInfo request; 8271 HttpRequestInfo request;
8271 request.method = "GET"; 8272 request.method = "GET";
8272 request.url = GURL("http://www.google.com/"); 8273 request.url = GURL("http://www.google.com/");
8273 request.load_flags = 0; 8274 request.load_flags = 0;
8274 8275
8275 SessionDependencies session_deps; 8276 SessionDependencies session_deps;
8276 session_deps.host_resolver->set_synchronous_mode(true); 8277 session_deps.host_resolver->set_synchronous_mode(true);
8277 scoped_ptr<HttpTransaction> trans( 8278 scoped_ptr<HttpTransaction> trans(
(...skipping 27 matching lines...) Expand all
8305 MockWrite data_writes1[] = { 8306 MockWrite data_writes1[] = {
8306 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 8307 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
8307 "Host: www.google.com\r\n" 8308 "Host: www.google.com\r\n"
8308 "Proxy-Connection: keep-alive\r\n\r\n"), 8309 "Proxy-Connection: keep-alive\r\n\r\n"),
8309 }; 8310 };
8310 8311
8311 MockRead data_reads1[] = { 8312 MockRead data_reads1[] = {
8312 MockRead("HTTP/1.1 200 OK\r\n"), 8313 MockRead("HTTP/1.1 200 OK\r\n"),
8313 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 8314 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
8314 MockRead("Content-Length: 100\r\n\r\n"), 8315 MockRead("Content-Length: 100\r\n\r\n"),
8315 MockRead(false, OK), 8316 MockRead(SYNCHRONOUS, OK),
8316 }; 8317 };
8317 8318
8318 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 8319 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
8319 data_writes1, arraysize(data_writes1)); 8320 data_writes1, arraysize(data_writes1));
8320 session_deps.socket_factory.AddSocketDataProvider(&data1); 8321 session_deps.socket_factory.AddSocketDataProvider(&data1);
8321 8322
8322 TestCompletionCallback callback1; 8323 TestCompletionCallback callback1;
8323 8324
8324 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 8325 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
8325 8326
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
8360 "Host: www.google.com\r\n" 8361 "Host: www.google.com\r\n"
8361 "Connection: keep-alive\r\n\r\n"), 8362 "Connection: keep-alive\r\n\r\n"),
8362 }; 8363 };
8363 8364
8364 MockRead data_reads1[] = { 8365 MockRead data_reads1[] = {
8365 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 8366 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
8366 8367
8367 MockRead("HTTP/1.1 200 OK\r\n"), 8368 MockRead("HTTP/1.1 200 OK\r\n"),
8368 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 8369 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
8369 MockRead("Content-Length: 100\r\n\r\n"), 8370 MockRead("Content-Length: 100\r\n\r\n"),
8370 MockRead(false, OK), 8371 MockRead(SYNCHRONOUS, OK),
8371 }; 8372 };
8372 8373
8373 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 8374 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
8374 data_writes1, arraysize(data_writes1)); 8375 data_writes1, arraysize(data_writes1));
8375 session_deps.socket_factory.AddSocketDataProvider(&data1); 8376 session_deps.socket_factory.AddSocketDataProvider(&data1);
8376 SSLSocketDataProvider ssl(true, OK); 8377 SSLSocketDataProvider ssl(ASYNC, OK);
8377 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8378 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8378 8379
8379 TestCompletionCallback callback1; 8380 TestCompletionCallback callback1;
8380 8381
8381 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 8382 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
8382 8383
8383 int rv = trans->Start(&request, callback1.callback(), log.bound()); 8384 int rv = trans->Start(&request, callback1.callback(), log.bound());
8384 EXPECT_EQ(ERR_IO_PENDING, rv); 8385 EXPECT_EQ(ERR_IO_PENDING, rv);
8385 8386
8386 rv = callback1.WaitForResult(); 8387 rv = callback1.WaitForResult();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
8422 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 8423 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
8423 "Host: www.google.com\r\n" 8424 "Host: www.google.com\r\n"
8424 "Proxy-Connection: keep-alive\r\n\r\n"), 8425 "Proxy-Connection: keep-alive\r\n\r\n"),
8425 8426
8426 MockWrite("GET / HTTP/1.1\r\n" 8427 MockWrite("GET / HTTP/1.1\r\n"
8427 "Host: www.google.com\r\n" 8428 "Host: www.google.com\r\n"
8428 "Connection: keep-alive\r\n\r\n"), 8429 "Connection: keep-alive\r\n\r\n"),
8429 }; 8430 };
8430 8431
8431 MockRead data_reads1[] = { 8432 MockRead data_reads1[] = {
8432 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 8433 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
8433 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 8434 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
8434 MockRead(true, 0, 0), // EOF 8435 MockRead(ASYNC, 0, 0), // EOF
8435 }; 8436 };
8436 8437
8437 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 8438 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
8438 data_writes1, arraysize(data_writes1)); 8439 data_writes1, arraysize(data_writes1));
8439 session_deps.socket_factory.AddSocketDataProvider(&data1); 8440 session_deps.socket_factory.AddSocketDataProvider(&data1);
8440 SSLSocketDataProvider ssl(true, OK); 8441 SSLSocketDataProvider ssl(ASYNC, OK);
8441 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8442 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8442 8443
8443 TestCompletionCallback callback1; 8444 TestCompletionCallback callback1;
8444 8445
8445 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 8446 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
8446 8447
8447 int rv = trans->Start(&request, callback1.callback(), log.bound()); 8448 int rv = trans->Start(&request, callback1.callback(), log.bound());
8448 EXPECT_EQ(ERR_IO_PENDING, rv); 8449 EXPECT_EQ(ERR_IO_PENDING, rv);
8449 8450
8450 rv = callback1.WaitForResult(); 8451 rv = callback1.WaitForResult();
(...skipping 15 matching lines...) Expand all
8466 8467
8467 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet( 8468 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(
8468 "https://www.google.com", false, 1, LOWEST)); 8469 "https://www.google.com", false, 1, LOWEST));
8469 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 8470 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
8470 8471
8471 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 8472 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
8472 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 8473 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
8473 MockRead spdy_reads[] = { 8474 MockRead spdy_reads[] = {
8474 CreateMockRead(*resp), 8475 CreateMockRead(*resp),
8475 CreateMockRead(*data), 8476 CreateMockRead(*data),
8476 MockRead(true, 0, 0), 8477 MockRead(ASYNC, 0, 0),
8477 }; 8478 };
8478 8479
8479 scoped_ptr<DelayedSocketData> spdy_data( 8480 scoped_ptr<DelayedSocketData> spdy_data(
8480 new DelayedSocketData( 8481 new DelayedSocketData(
8481 1, // wait for one write to finish before reading. 8482 1, // wait for one write to finish before reading.
8482 spdy_reads, arraysize(spdy_reads), 8483 spdy_reads, arraysize(spdy_reads),
8483 spdy_writes, arraysize(spdy_writes))); 8484 spdy_writes, arraysize(spdy_writes)));
8484 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 8485 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
8485 8486
8486 SSLSocketDataProvider ssl(true, OK); 8487 SSLSocketDataProvider ssl(ASYNC, OK);
8487 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8488 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8488 ssl.next_proto = "spdy/2.1"; 8489 ssl.next_proto = "spdy/2.1";
8489 ssl.was_npn_negotiated = true; 8490 ssl.was_npn_negotiated = true;
8490 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 8491 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
8491 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8492 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8492 8493
8493 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8494 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8494 8495
8495 // Set up an initial SpdySession in the pool to reuse. 8496 // Set up an initial SpdySession in the pool to reuse.
8496 HostPortPair host_port_pair("www.google.com", 443); 8497 HostPortPair host_port_pair("www.google.com", 443);
(...skipping 22 matching lines...) Expand all
8519 8520
8520 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8521 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8521 8522
8522 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 8523 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
8523 EXPECT_EQ(ERR_IO_PENDING, rv); 8524 EXPECT_EQ(ERR_IO_PENDING, rv);
8524 EXPECT_EQ(OK, callback.WaitForResult()); 8525 EXPECT_EQ(OK, callback.WaitForResult());
8525 } 8526 }
8526 8527
8527 // Given a net error, cause that error to be returned from the first Write() 8528 // Given a net error, cause that error to be returned from the first Write()
8528 // call and verify that the HttpTransaction fails with that error. 8529 // call and verify that the HttpTransaction fails with that error.
8529 static void CheckErrorIsPassedBack(int error, bool async) { 8530 static void CheckErrorIsPassedBack(int error, IoMode mode) {
8530 net::HttpRequestInfo request_info; 8531 net::HttpRequestInfo request_info;
8531 request_info.url = GURL("https://www.example.com/"); 8532 request_info.url = GURL("https://www.example.com/");
8532 request_info.method = "GET"; 8533 request_info.method = "GET";
8533 request_info.load_flags = net::LOAD_NORMAL; 8534 request_info.load_flags = net::LOAD_NORMAL;
8534 8535
8535 SessionDependencies session_deps; 8536 SessionDependencies session_deps;
8536 8537
8537 SSLSocketDataProvider ssl_data(async, OK); 8538 SSLSocketDataProvider ssl_data(mode, OK);
8538 net::MockWrite data_writes[] = { 8539 net::MockWrite data_writes[] = {
8539 net::MockWrite(async, error), 8540 net::MockWrite(mode, error),
8540 }; 8541 };
8541 net::StaticSocketDataProvider data(NULL, 0, 8542 net::StaticSocketDataProvider data(NULL, 0,
8542 data_writes, arraysize(data_writes)); 8543 data_writes, arraysize(data_writes));
8543 session_deps.socket_factory.AddSocketDataProvider(&data); 8544 session_deps.socket_factory.AddSocketDataProvider(&data);
8544 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data); 8545 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data);
8545 8546
8546 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8547 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8547 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8548 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8548 8549
8549 TestCompletionCallback callback; 8550 TestCompletionCallback callback;
8550 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog()); 8551 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog());
8551 if (rv == net::ERR_IO_PENDING) 8552 if (rv == net::ERR_IO_PENDING)
8552 rv = callback.WaitForResult(); 8553 rv = callback.WaitForResult();
8553 ASSERT_EQ(error, rv); 8554 ASSERT_EQ(error, rv);
8554 } 8555 }
8555 8556
8556 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) { 8557 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) {
8557 // Just check a grab bag of cert errors. 8558 // Just check a grab bag of cert errors.
8558 static const int kErrors[] = { 8559 static const int kErrors[] = {
8559 ERR_CERT_COMMON_NAME_INVALID, 8560 ERR_CERT_COMMON_NAME_INVALID,
8560 ERR_CERT_AUTHORITY_INVALID, 8561 ERR_CERT_AUTHORITY_INVALID,
8561 ERR_CERT_DATE_INVALID, 8562 ERR_CERT_DATE_INVALID,
8562 }; 8563 };
8563 for (size_t i = 0; i < arraysize(kErrors); i++) { 8564 for (size_t i = 0; i < arraysize(kErrors); i++) {
8564 CheckErrorIsPassedBack(kErrors[i], false /* not async */); 8565 CheckErrorIsPassedBack(kErrors[i], ASYNC);
8565 CheckErrorIsPassedBack(kErrors[i], true /* async */); 8566 CheckErrorIsPassedBack(kErrors[i], SYNCHRONOUS);
8566 } 8567 }
8567 } 8568 }
8568 8569
8569 // Ensure that a client certificate is removed from the SSL client auth 8570 // Ensure that a client certificate is removed from the SSL client auth
8570 // cache when: 8571 // cache when:
8571 // 1) No proxy is involved. 8572 // 1) No proxy is involved.
8572 // 2) TLS False Start is disabled. 8573 // 2) TLS False Start is disabled.
8573 // 3) The initial TLS handshake requests a client certificate. 8574 // 3) The initial TLS handshake requests a client certificate.
8574 // 4) The client supplies an invalid/unacceptable certificate. 8575 // 4) The client supplies an invalid/unacceptable certificate.
8575 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) { 8576 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) {
8576 net::HttpRequestInfo request_info; 8577 net::HttpRequestInfo request_info;
8577 request_info.url = GURL("https://www.example.com/"); 8578 request_info.url = GURL("https://www.example.com/");
8578 request_info.method = "GET"; 8579 request_info.method = "GET";
8579 request_info.load_flags = net::LOAD_NORMAL; 8580 request_info.load_flags = net::LOAD_NORMAL;
8580 8581
8581 SessionDependencies session_deps; 8582 SessionDependencies session_deps;
8582 8583
8583 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); 8584 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo());
8584 cert_request->host_and_port = "www.example.com:443"; 8585 cert_request->host_and_port = "www.example.com:443";
8585 8586
8586 // [ssl_]data1 contains the data for the first SSL handshake. When a 8587 // [ssl_]data1 contains the data for the first SSL handshake. When a
8587 // CertificateRequest is received for the first time, the handshake will 8588 // CertificateRequest is received for the first time, the handshake will
8588 // be aborted to allow the caller to provide a certificate. 8589 // be aborted to allow the caller to provide a certificate.
8589 SSLSocketDataProvider ssl_data1(true /* async */, 8590 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8590 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8591 ssl_data1.cert_request_info = cert_request.get(); 8591 ssl_data1.cert_request_info = cert_request.get();
8592 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); 8592 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1);
8593 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); 8593 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0);
8594 session_deps.socket_factory.AddSocketDataProvider(&data1); 8594 session_deps.socket_factory.AddSocketDataProvider(&data1);
8595 8595
8596 // [ssl_]data2 contains the data for the second SSL handshake. When TLS 8596 // [ssl_]data2 contains the data for the second SSL handshake. When TLS
8597 // False Start is not being used, the result of the SSL handshake will be 8597 // False Start is not being used, the result of the SSL handshake will be
8598 // returned as part of the SSLClientSocket::Connect() call. This test 8598 // returned as part of the SSLClientSocket::Connect() call. This test
8599 // matches the result of a server sending a handshake_failure alert, 8599 // matches the result of a server sending a handshake_failure alert,
8600 // rather than a Finished message, because it requires a client 8600 // rather than a Finished message, because it requires a client
8601 // certificate and none was supplied. 8601 // certificate and none was supplied.
8602 SSLSocketDataProvider ssl_data2(true /* async */, 8602 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8603 net::ERR_SSL_PROTOCOL_ERROR);
8604 ssl_data2.cert_request_info = cert_request.get(); 8603 ssl_data2.cert_request_info = cert_request.get();
8605 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); 8604 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2);
8606 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); 8605 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0);
8607 session_deps.socket_factory.AddSocketDataProvider(&data2); 8606 session_deps.socket_factory.AddSocketDataProvider(&data2);
8608 8607
8609 // [ssl_]data3 contains the data for the third SSL handshake. When a 8608 // [ssl_]data3 contains the data for the third SSL handshake. When a
8610 // connection to a server fails during an SSL handshake, 8609 // connection to a server fails during an SSL handshake,
8611 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial 8610 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial
8612 // connection was attempted with TLSv1. This is transparent to the caller 8611 // connection was attempted with TLSv1. This is transparent to the caller
8613 // of the HttpNetworkTransaction. Because this test failure is due to 8612 // of the HttpNetworkTransaction. Because this test failure is due to
8614 // requiring a client certificate, this fallback handshake should also 8613 // requiring a client certificate, this fallback handshake should also
8615 // fail. 8614 // fail.
8616 SSLSocketDataProvider ssl_data3(true /* async */, 8615 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8617 net::ERR_SSL_PROTOCOL_ERROR);
8618 ssl_data3.cert_request_info = cert_request.get(); 8616 ssl_data3.cert_request_info = cert_request.get();
8619 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); 8617 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3);
8620 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); 8618 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0);
8621 session_deps.socket_factory.AddSocketDataProvider(&data3); 8619 session_deps.socket_factory.AddSocketDataProvider(&data3);
8622 8620
8623 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8621 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8624 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8622 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8625 8623
8626 // Begin the SSL handshake with the peer. This consumes ssl_data1. 8624 // Begin the SSL handshake with the peer. This consumes ssl_data1.
8627 TestCompletionCallback callback; 8625 TestCompletionCallback callback;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
8684 // The actual handshake will be finished when SSLClientSocket::Read() is 8682 // The actual handshake will be finished when SSLClientSocket::Read() is
8685 // called, which expects to process the peer's ChangeCipherSpec and 8683 // called, which expects to process the peer's ChangeCipherSpec and
8686 // Finished messages. If there was an error negotiating with the peer, 8684 // Finished messages. If there was an error negotiating with the peer,
8687 // such as due to the peer requiring a client certificate when none was 8685 // such as due to the peer requiring a client certificate when none was
8688 // supplied, the alert sent by the peer won't be processed until Read() is 8686 // supplied, the alert sent by the peer won't be processed until Read() is
8689 // called. 8687 // called.
8690 8688
8691 // Like the non-False Start case, when a client certificate is requested by 8689 // Like the non-False Start case, when a client certificate is requested by
8692 // the peer, the handshake is aborted during the Connect() call. 8690 // the peer, the handshake is aborted during the Connect() call.
8693 // [ssl_]data1 represents the initial SSL handshake with the peer. 8691 // [ssl_]data1 represents the initial SSL handshake with the peer.
8694 SSLSocketDataProvider ssl_data1(true /* async */, 8692 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8695 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8696 ssl_data1.cert_request_info = cert_request.get(); 8693 ssl_data1.cert_request_info = cert_request.get();
8697 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); 8694 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1);
8698 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); 8695 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0);
8699 session_deps.socket_factory.AddSocketDataProvider(&data1); 8696 session_deps.socket_factory.AddSocketDataProvider(&data1);
8700 8697
8701 // When a client certificate is supplied, Connect() will not be aborted 8698 // When a client certificate is supplied, Connect() will not be aborted
8702 // when the peer requests the certificate. Instead, the handshake will 8699 // when the peer requests the certificate. Instead, the handshake will
8703 // artificially succeed, allowing the caller to write the HTTP request to 8700 // artificially succeed, allowing the caller to write the HTTP request to
8704 // the socket. The handshake messages are not processed until Read() is 8701 // the socket. The handshake messages are not processed until Read() is
8705 // called, which then detects that the handshake was aborted, due to the 8702 // called, which then detects that the handshake was aborted, due to the
8706 // peer sending a handshake_failure because it requires a client 8703 // peer sending a handshake_failure because it requires a client
8707 // certificate. 8704 // certificate.
8708 SSLSocketDataProvider ssl_data2(true /* async */, net::OK); 8705 SSLSocketDataProvider ssl_data2(ASYNC, net::OK);
8709 ssl_data2.cert_request_info = cert_request.get(); 8706 ssl_data2.cert_request_info = cert_request.get();
8710 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); 8707 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2);
8711 net::MockRead data2_reads[] = { 8708 net::MockRead data2_reads[] = {
8712 net::MockRead(true /* async */, net::ERR_SSL_PROTOCOL_ERROR), 8709 net::MockRead(ASYNC /* async */, net::ERR_SSL_PROTOCOL_ERROR),
8713 }; 8710 };
8714 net::StaticSocketDataProvider data2( 8711 net::StaticSocketDataProvider data2(
8715 data2_reads, arraysize(data2_reads), NULL, 0); 8712 data2_reads, arraysize(data2_reads), NULL, 0);
8716 session_deps.socket_factory.AddSocketDataProvider(&data2); 8713 session_deps.socket_factory.AddSocketDataProvider(&data2);
8717 8714
8718 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is 8715 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is
8719 // the data for the SSL handshake once the TLSv1 connection falls back to 8716 // the data for the SSL handshake once the TLSv1 connection falls back to
8720 // SSLv3. It has the same behaviour as [ssl_]data2. 8717 // SSLv3. It has the same behaviour as [ssl_]data2.
8721 SSLSocketDataProvider ssl_data3(true /* async */, net::OK); 8718 SSLSocketDataProvider ssl_data3(ASYNC, net::OK);
8722 ssl_data3.cert_request_info = cert_request.get(); 8719 ssl_data3.cert_request_info = cert_request.get();
8723 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); 8720 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3);
8724 net::StaticSocketDataProvider data3( 8721 net::StaticSocketDataProvider data3(
8725 data2_reads, arraysize(data2_reads), NULL, 0); 8722 data2_reads, arraysize(data2_reads), NULL, 0);
8726 session_deps.socket_factory.AddSocketDataProvider(&data3); 8723 session_deps.socket_factory.AddSocketDataProvider(&data3);
8727 8724
8728 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8725 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8729 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8726 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8730 8727
8731 // Begin the initial SSL handshake. 8728 // Begin the initial SSL handshake.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
8779 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 8776 CapturingBoundNetLog log(CapturingNetLog::kUnbounded);
8780 session_deps.net_log = log.bound().net_log(); 8777 session_deps.net_log = log.bound().net_log();
8781 8778
8782 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); 8779 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo());
8783 cert_request->host_and_port = "proxy:70"; 8780 cert_request->host_and_port = "proxy:70";
8784 8781
8785 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of 8782 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of
8786 // [ssl_]data[1-3]. Rather than represending the endpoint 8783 // [ssl_]data[1-3]. Rather than represending the endpoint
8787 // (www.example.com:443), they represent failures with the HTTPS proxy 8784 // (www.example.com:443), they represent failures with the HTTPS proxy
8788 // (proxy:70). 8785 // (proxy:70).
8789 SSLSocketDataProvider ssl_data1(true /* async */, 8786 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8790 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8791 ssl_data1.cert_request_info = cert_request.get(); 8787 ssl_data1.cert_request_info = cert_request.get();
8792 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); 8788 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1);
8793 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); 8789 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0);
8794 session_deps.socket_factory.AddSocketDataProvider(&data1); 8790 session_deps.socket_factory.AddSocketDataProvider(&data1);
8795 8791
8796 SSLSocketDataProvider ssl_data2(true /* async */, 8792 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8797 net::ERR_SSL_PROTOCOL_ERROR);
8798 ssl_data2.cert_request_info = cert_request.get(); 8793 ssl_data2.cert_request_info = cert_request.get();
8799 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); 8794 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2);
8800 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); 8795 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0);
8801 session_deps.socket_factory.AddSocketDataProvider(&data2); 8796 session_deps.socket_factory.AddSocketDataProvider(&data2);
8802 8797
8803 SSLSocketDataProvider ssl_data3(true /* async */, 8798 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8804 net::ERR_SSL_PROTOCOL_ERROR);
8805 ssl_data3.cert_request_info = cert_request.get(); 8799 ssl_data3.cert_request_info = cert_request.get();
8806 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); 8800 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3);
8807 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); 8801 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0);
8808 session_deps.socket_factory.AddSocketDataProvider(&data3); 8802 session_deps.socket_factory.AddSocketDataProvider(&data3);
8809 8803
8810 net::HttpRequestInfo requests[2]; 8804 net::HttpRequestInfo requests[2];
8811 requests[0].url = GURL("https://www.example.com/"); 8805 requests[0].url = GURL("https://www.example.com/");
8812 requests[0].method = "GET"; 8806 requests[0].method = "GET";
8813 requests[0].load_flags = net::LOAD_NORMAL; 8807 requests[0].load_flags = net::LOAD_NORMAL;
8814 8808
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
8913 params.proxy_service = session_deps.proxy_service.get(); 8907 params.proxy_service = session_deps.proxy_service.get();
8914 params.ssl_config_service = session_deps.ssl_config_service; 8908 params.ssl_config_service = session_deps.ssl_config_service;
8915 params.http_auth_handler_factory = 8909 params.http_auth_handler_factory =
8916 session_deps.http_auth_handler_factory.get(); 8910 session_deps.http_auth_handler_factory.get();
8917 params.http_server_properties = &session_deps.http_server_properties; 8911 params.http_server_properties = &session_deps.http_server_properties;
8918 params.net_log = session_deps.net_log; 8912 params.net_log = session_deps.net_log;
8919 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); 8913 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params));
8920 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 8914 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
8921 pool_peer.DisableDomainAuthenticationVerification(); 8915 pool_peer.DisableDomainAuthenticationVerification();
8922 8916
8923 SSLSocketDataProvider ssl(true, OK); 8917 SSLSocketDataProvider ssl(ASYNC, OK);
8924 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8918 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8925 ssl.next_proto = "spdy/2.1"; 8919 ssl.next_proto = "spdy/2.1";
8926 ssl.was_npn_negotiated = true; 8920 ssl.was_npn_negotiated = true;
8927 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 8921 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
8928 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8922 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8929 8923
8930 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( 8924 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet(
8931 "https://www.google.com", false, 1, LOWEST)); 8925 "https://www.google.com", false, 1, LOWEST));
8932 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( 8926 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet(
8933 "https://www.gmail.com", false, 3, LOWEST)); 8927 "https://www.gmail.com", false, 3, LOWEST));
8934 MockWrite spdy_writes[] = { 8928 MockWrite spdy_writes[] = {
8935 CreateMockWrite(*host1_req, 1), 8929 CreateMockWrite(*host1_req, 1),
8936 CreateMockWrite(*host2_req, 4), 8930 CreateMockWrite(*host2_req, 4),
8937 }; 8931 };
8938 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 8932 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1));
8939 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); 8933 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true));
8940 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); 8934 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3));
8941 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); 8935 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true));
8942 MockRead spdy_reads[] = { 8936 MockRead spdy_reads[] = {
8943 CreateMockRead(*host1_resp, 2), 8937 CreateMockRead(*host1_resp, 2),
8944 CreateMockRead(*host1_resp_body, 3), 8938 CreateMockRead(*host1_resp_body, 3),
8945 CreateMockRead(*host2_resp, 5), 8939 CreateMockRead(*host2_resp, 5),
8946 CreateMockRead(*host2_resp_body, 6), 8940 CreateMockRead(*host2_resp_body, 6),
8947 MockRead(true, 0, 7), 8941 MockRead(ASYNC, 0, 7),
8948 }; 8942 };
8949 8943
8950 scoped_ptr<OrderedSocketData> spdy_data( 8944 scoped_ptr<OrderedSocketData> spdy_data(
8951 new OrderedSocketData( 8945 new OrderedSocketData(
8952 spdy_reads, arraysize(spdy_reads), 8946 spdy_reads, arraysize(spdy_reads),
8953 spdy_writes, arraysize(spdy_writes))); 8947 spdy_writes, arraysize(spdy_writes)));
8954 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 8948 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
8955 8949
8956 TestCompletionCallback callback; 8950 TestCompletionCallback callback;
8957 HttpRequestInfo request1; 8951 HttpRequestInfo request1;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
9067 params.proxy_service = session_deps.proxy_service.get(); 9061 params.proxy_service = session_deps.proxy_service.get();
9068 params.ssl_config_service = session_deps.ssl_config_service; 9062 params.ssl_config_service = session_deps.ssl_config_service;
9069 params.http_auth_handler_factory = 9063 params.http_auth_handler_factory =
9070 session_deps.http_auth_handler_factory.get(); 9064 session_deps.http_auth_handler_factory.get();
9071 params.http_server_properties = &session_deps.http_server_properties; 9065 params.http_server_properties = &session_deps.http_server_properties;
9072 params.net_log = session_deps.net_log; 9066 params.net_log = session_deps.net_log;
9073 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); 9067 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params));
9074 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 9068 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
9075 pool_peer.DisableDomainAuthenticationVerification(); 9069 pool_peer.DisableDomainAuthenticationVerification();
9076 9070
9077 SSLSocketDataProvider ssl(true, OK); 9071 SSLSocketDataProvider ssl(ASYNC, OK);
9078 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 9072 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
9079 ssl.next_proto = "spdy/2.1"; 9073 ssl.next_proto = "spdy/2.1";
9080 ssl.was_npn_negotiated = true; 9074 ssl.was_npn_negotiated = true;
9081 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 9075 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
9082 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 9076 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
9083 9077
9084 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( 9078 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet(
9085 "https://www.google.com", false, 1, LOWEST)); 9079 "https://www.google.com", false, 1, LOWEST));
9086 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( 9080 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet(
9087 "https://www.gmail.com", false, 3, LOWEST)); 9081 "https://www.gmail.com", false, 3, LOWEST));
9088 MockWrite spdy_writes[] = { 9082 MockWrite spdy_writes[] = {
9089 CreateMockWrite(*host1_req, 1), 9083 CreateMockWrite(*host1_req, 1),
9090 CreateMockWrite(*host2_req, 4), 9084 CreateMockWrite(*host2_req, 4),
9091 }; 9085 };
9092 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 9086 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1));
9093 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); 9087 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true));
9094 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); 9088 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3));
9095 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); 9089 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true));
9096 MockRead spdy_reads[] = { 9090 MockRead spdy_reads[] = {
9097 CreateMockRead(*host1_resp, 2), 9091 CreateMockRead(*host1_resp, 2),
9098 CreateMockRead(*host1_resp_body, 3), 9092 CreateMockRead(*host1_resp_body, 3),
9099 CreateMockRead(*host2_resp, 5), 9093 CreateMockRead(*host2_resp, 5),
9100 CreateMockRead(*host2_resp_body, 6), 9094 CreateMockRead(*host2_resp_body, 6),
9101 MockRead(true, 0, 7), 9095 MockRead(ASYNC, 0, 7),
9102 }; 9096 };
9103 9097
9104 scoped_ptr<OrderedSocketData> spdy_data( 9098 scoped_ptr<OrderedSocketData> spdy_data(
9105 new OrderedSocketData( 9099 new OrderedSocketData(
9106 spdy_reads, arraysize(spdy_reads), 9100 spdy_reads, arraysize(spdy_reads),
9107 spdy_writes, arraysize(spdy_writes))); 9101 spdy_writes, arraysize(spdy_writes)));
9108 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 9102 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
9109 9103
9110 TestCompletionCallback callback; 9104 TestCompletionCallback callback;
9111 HttpRequestInfo request1; 9105 HttpRequestInfo request1;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
9160 EXPECT_TRUE(response->was_npn_negotiated); 9154 EXPECT_TRUE(response->was_npn_negotiated);
9161 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 9155 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
9162 EXPECT_EQ("hello!", response_data); 9156 EXPECT_EQ("hello!", response_data);
9163 9157
9164 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 9158 HttpStreamFactory::set_next_protos(std::vector<std::string>());
9165 HttpStreamFactory::set_use_alternate_protocols(false); 9159 HttpStreamFactory::set_use_alternate_protocols(false);
9166 } 9160 }
9167 9161
9168 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { 9162 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) {
9169 MockRead data_reads1[] = { 9163 MockRead data_reads1[] = {
9170 MockRead(false, ERR_PIPELINE_EVICTION), 9164 MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION),
9171 }; 9165 };
9172 MockRead data_reads2[] = { 9166 MockRead data_reads2[] = {
9173 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 9167 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
9174 MockRead("hello world"), 9168 MockRead("hello world"),
9175 MockRead(false, OK), 9169 MockRead(SYNCHRONOUS, OK),
9176 }; 9170 };
9177 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); 9171 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0);
9178 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); 9172 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0);
9179 StaticSocketDataProvider* data[] = { &data1, &data2 }; 9173 StaticSocketDataProvider* data[] = { &data1, &data2 };
9180 9174
9181 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); 9175 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
9182 9176
9183 EXPECT_EQ(OK, out.rv); 9177 EXPECT_EQ(OK, out.rv);
9184 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 9178 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
9185 EXPECT_EQ("hello world", out.response_data); 9179 EXPECT_EQ("hello world", out.response_data);
9186 } 9180 }
9187 9181
9188 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { 9182 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) {
9189 MockWrite data_writes1[] = { 9183 MockWrite data_writes1[] = {
9190 MockWrite(false, ERR_PIPELINE_EVICTION), 9184 MockWrite(SYNCHRONOUS, ERR_PIPELINE_EVICTION),
9191 }; 9185 };
9192 MockWrite data_writes2[] = { 9186 MockWrite data_writes2[] = {
9193 MockWrite("GET / HTTP/1.1\r\n" 9187 MockWrite("GET / HTTP/1.1\r\n"
9194 "Host: www.google.com\r\n" 9188 "Host: www.google.com\r\n"
9195 "Connection: keep-alive\r\n\r\n"), 9189 "Connection: keep-alive\r\n\r\n"),
9196 }; 9190 };
9197 MockRead data_reads2[] = { 9191 MockRead data_reads2[] = {
9198 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 9192 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
9199 MockRead("hello world"), 9193 MockRead("hello world"),
9200 MockRead(false, OK), 9194 MockRead(SYNCHRONOUS, OK),
9201 }; 9195 };
9202 StaticSocketDataProvider data1(NULL, 0, 9196 StaticSocketDataProvider data1(NULL, 0,
9203 data_writes1, arraysize(data_writes1)); 9197 data_writes1, arraysize(data_writes1));
9204 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 9198 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
9205 data_writes2, arraysize(data_writes2)); 9199 data_writes2, arraysize(data_writes2));
9206 StaticSocketDataProvider* data[] = { &data1, &data2 }; 9200 StaticSocketDataProvider* data[] = { &data1, &data2 };
9207 9201
9208 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); 9202 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
9209 9203
9210 EXPECT_EQ(OK, out.rv); 9204 EXPECT_EQ(OK, out.rv);
9211 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 9205 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
9212 EXPECT_EQ("hello world", out.response_data); 9206 EXPECT_EQ("hello world", out.response_data);
9213 } 9207 }
9214 9208
9215 } // namespace net 9209 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_layer_unittest.cc ('k') | net/http/http_pipelined_connection_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698