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

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.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 2159 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
2160 ssl.next_proto = "spdy/2.1"; 2160 ssl.next_proto = "spdy/2.1";
2161 ssl.was_npn_negotiated = true; 2161 ssl.was_npn_negotiated = true;
2162 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2162 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2163 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2163 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2164 2164
2165 TestCompletionCallback callback1; 2165 TestCompletionCallback callback1;
2166 2166
2167 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2167 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2168 2168
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2227 1)); 2227 1));
2228 scoped_ptr<spdy::SpdyFrame> body_authentication( 2228 scoped_ptr<spdy::SpdyFrame> body_authentication(
2229 ConstructSpdyBodyFrame(1, true)); 2229 ConstructSpdyBodyFrame(1, true));
2230 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); 2230 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3));
2231 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); 2231 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true));
2232 MockRead spdy_reads[] = { 2232 MockRead spdy_reads[] = {
2233 CreateMockRead(*resp_authentication, 2), 2233 CreateMockRead(*resp_authentication, 2),
2234 CreateMockRead(*body_authentication, 3), 2234 CreateMockRead(*body_authentication, 3),
2235 CreateMockRead(*resp_data, 5), 2235 CreateMockRead(*resp_data, 5),
2236 CreateMockRead(*body_data, 6), 2236 CreateMockRead(*body_data, 6),
2237 MockRead(true, 0, 7), 2237 MockRead(ASYNC, 0, 7),
2238 }; 2238 };
2239 2239
2240 scoped_ptr<OrderedSocketData> data( 2240 scoped_ptr<OrderedSocketData> data(
2241 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), 2241 new OrderedSocketData(spdy_reads, arraysize(spdy_reads),
2242 spdy_writes, arraysize(spdy_writes))); 2242 spdy_writes, arraysize(spdy_writes)));
2243 session_deps.socket_factory.AddSocketDataProvider(data.get()); 2243 session_deps.socket_factory.AddSocketDataProvider(data.get());
2244 2244
2245 SSLSocketDataProvider ssl(true, OK); 2245 SSLSocketDataProvider ssl(ASYNC, OK);
2246 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 2246 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
2247 ssl.next_proto = "spdy/2.1"; 2247 ssl.next_proto = "spdy/2.1";
2248 ssl.was_npn_negotiated = true; 2248 ssl.was_npn_negotiated = true;
2249 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2249 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2250 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2250 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2251 2251
2252 TestCompletionCallback callback1; 2252 TestCompletionCallback callback1;
2253 2253
2254 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2254 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2255 2255
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2320 scoped_ptr<spdy::SpdyFrame> window_update( 2320 scoped_ptr<spdy::SpdyFrame> window_update(
2321 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length())); 2321 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length()));
2322 2322
2323 MockWrite spdy_writes[] = { 2323 MockWrite spdy_writes[] = {
2324 CreateMockWrite(*connect, 1), 2324 CreateMockWrite(*connect, 1),
2325 CreateMockWrite(*wrapped_get, 3), 2325 CreateMockWrite(*wrapped_get, 3),
2326 CreateMockWrite(*window_update, 5) 2326 CreateMockWrite(*window_update, 5)
2327 }; 2327 };
2328 2328
2329 MockRead spdy_reads[] = { 2329 MockRead spdy_reads[] = {
2330 CreateMockRead(*conn_resp, 2, true), 2330 CreateMockRead(*conn_resp, 2, ASYNC),
2331 CreateMockRead(*wrapped_get_resp, 4, true), 2331 CreateMockRead(*wrapped_get_resp, 4, ASYNC),
2332 CreateMockRead(*wrapped_body, 6, true), 2332 CreateMockRead(*wrapped_body, 6, ASYNC),
2333 CreateMockRead(*wrapped_body, 7, true), 2333 CreateMockRead(*wrapped_body, 7, ASYNC),
2334 MockRead(true, 0, 8), 2334 MockRead(ASYNC, 0, 8),
2335 }; 2335 };
2336 2336
2337 scoped_ptr<OrderedSocketData> spdy_data( 2337 scoped_ptr<OrderedSocketData> spdy_data(
2338 new OrderedSocketData( 2338 new OrderedSocketData(
2339 spdy_reads, arraysize(spdy_reads), 2339 spdy_reads, arraysize(spdy_reads),
2340 spdy_writes, arraysize(spdy_writes))); 2340 spdy_writes, arraysize(spdy_writes)));
2341 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 2341 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
2342 2342
2343 SSLSocketDataProvider ssl(true, OK); 2343 SSLSocketDataProvider ssl(ASYNC, OK);
2344 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 2344 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
2345 ssl.next_proto = "spdy/2.1"; 2345 ssl.next_proto = "spdy/2.1";
2346 ssl.was_npn_negotiated = true; 2346 ssl.was_npn_negotiated = true;
2347 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2347 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2348 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2348 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2349 SSLSocketDataProvider ssl2(true, OK); 2349 SSLSocketDataProvider ssl2(ASYNC, OK);
2350 ssl2.was_npn_negotiated = false; 2350 ssl2.was_npn_negotiated = false;
2351 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown; 2351 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown;
2352 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 2352 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
2353 2353
2354 TestCompletionCallback callback1; 2354 TestCompletionCallback callback1;
2355 2355
2356 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2356 int rv = trans->Start(&request, callback1.callback(), log.bound());
2357 EXPECT_EQ(ERR_IO_PENDING, rv); 2357 EXPECT_EQ(ERR_IO_PENDING, rv);
2358 2358
2359 rv = callback1.WaitForResult(); 2359 rv = callback1.WaitForResult();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2403 ConstructSpdyWindowUpdate(1, wrapped_body->length())); 2403 ConstructSpdyWindowUpdate(1, wrapped_body->length()));
2404 2404
2405 MockWrite spdy_writes[] = { 2405 MockWrite spdy_writes[] = {
2406 CreateMockWrite(*connect, 1), 2406 CreateMockWrite(*connect, 1),
2407 CreateMockWrite(*wrapped_get, 3), 2407 CreateMockWrite(*wrapped_get, 3),
2408 CreateMockWrite(*window_update_get_resp, 5), 2408 CreateMockWrite(*window_update_get_resp, 5),
2409 CreateMockWrite(*window_update_body, 7), 2409 CreateMockWrite(*window_update_body, 7),
2410 }; 2410 };
2411 2411
2412 MockRead spdy_reads[] = { 2412 MockRead spdy_reads[] = {
2413 CreateMockRead(*conn_resp, 2, true), 2413 CreateMockRead(*conn_resp, 2, ASYNC),
2414 CreateMockRead(*wrapped_get_resp, 4, true), 2414 CreateMockRead(*wrapped_get_resp, 4, ASYNC),
2415 CreateMockRead(*wrapped_body, 6, true), 2415 CreateMockRead(*wrapped_body, 6, ASYNC),
2416 MockRead(true, 0, 8), 2416 MockRead(ASYNC, 0, 8),
2417 }; 2417 };
2418 2418
2419 scoped_ptr<OrderedSocketData> spdy_data( 2419 scoped_ptr<OrderedSocketData> spdy_data(
2420 new OrderedSocketData( 2420 new OrderedSocketData(
2421 spdy_reads, arraysize(spdy_reads), 2421 spdy_reads, arraysize(spdy_reads),
2422 spdy_writes, arraysize(spdy_writes))); 2422 spdy_writes, arraysize(spdy_writes)));
2423 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 2423 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
2424 2424
2425 SSLSocketDataProvider ssl(true, OK); 2425 SSLSocketDataProvider ssl(ASYNC, OK);
2426 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 2426 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
2427 ssl.next_proto = "spdy/2.1"; 2427 ssl.next_proto = "spdy/2.1";
2428 ssl.was_npn_negotiated = true; 2428 ssl.was_npn_negotiated = true;
2429 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2429 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2430 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2430 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2431 SSLSocketDataProvider ssl2(true, OK); 2431 SSLSocketDataProvider ssl2(ASYNC, OK);
2432 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 2432 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
2433 ssl2.next_proto = "spdy/2.1"; 2433 ssl2.next_proto = "spdy/2.1";
2434 ssl2.was_npn_negotiated = true; 2434 ssl2.was_npn_negotiated = true;
2435 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2435 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2436 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 2436 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
2437 2437
2438 TestCompletionCallback callback1; 2438 TestCompletionCallback callback1;
2439 2439
2440 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2440 int rv = trans->Start(&request, callback1.callback(), log.bound());
2441 EXPECT_EQ(ERR_IO_PENDING, rv); 2441 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2474 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL)); 2474 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL));
2475 2475
2476 MockWrite spdy_writes[] = { 2476 MockWrite spdy_writes[] = {
2477 CreateMockWrite(*connect, 1), 2477 CreateMockWrite(*connect, 1),
2478 CreateMockWrite(*get, 3), 2478 CreateMockWrite(*get, 3),
2479 }; 2479 };
2480 2480
2481 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1)); 2481 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1));
2482 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 2482 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
2483 MockRead spdy_reads[] = { 2483 MockRead spdy_reads[] = {
2484 CreateMockRead(*resp, 2, true), 2484 CreateMockRead(*resp, 2, ASYNC),
2485 MockRead(true, 0, 4), 2485 MockRead(ASYNC, 0, 4),
2486 }; 2486 };
2487 2487
2488 scoped_ptr<OrderedSocketData> spdy_data( 2488 scoped_ptr<OrderedSocketData> spdy_data(
2489 new OrderedSocketData( 2489 new OrderedSocketData(
2490 spdy_reads, arraysize(spdy_reads), 2490 spdy_reads, arraysize(spdy_reads),
2491 spdy_writes, arraysize(spdy_writes))); 2491 spdy_writes, arraysize(spdy_writes)));
2492 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 2492 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
2493 2493
2494 SSLSocketDataProvider ssl(true, OK); 2494 SSLSocketDataProvider ssl(ASYNC, OK);
2495 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 2495 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
2496 ssl.next_proto = "spdy/2.1"; 2496 ssl.next_proto = "spdy/2.1";
2497 ssl.was_npn_negotiated = true; 2497 ssl.was_npn_negotiated = true;
2498 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2498 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2500 SSLSocketDataProvider ssl2(true, OK); 2500 SSLSocketDataProvider ssl2(ASYNC, OK);
2501 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 2501 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
2502 ssl2.next_proto = "spdy/2.1"; 2502 ssl2.next_proto = "spdy/2.1";
2503 ssl2.was_npn_negotiated = true; 2503 ssl2.was_npn_negotiated = true;
2504 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 2504 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
2505 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 2505 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
2506 2506
2507 TestCompletionCallback callback1; 2507 TestCompletionCallback callback1;
2508 2508
2509 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2509 int rv = trans->Start(&request, callback1.callback(), log.bound());
2510 EXPECT_EQ(ERR_IO_PENDING, rv); 2510 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
2551 MockRead data_reads1[] = { 2551 MockRead data_reads1[] = {
2552 // No credentials. 2552 // No credentials.
2553 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 2553 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
2554 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 2554 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
2555 MockRead("Proxy-Connection: keep-alive\r\n"), 2555 MockRead("Proxy-Connection: keep-alive\r\n"),
2556 MockRead("Content-Length: 0\r\n\r\n"), 2556 MockRead("Content-Length: 0\r\n\r\n"),
2557 2557
2558 MockRead("HTTP/1.1 200 OK\r\n"), 2558 MockRead("HTTP/1.1 200 OK\r\n"),
2559 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2559 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2560 MockRead("Content-Length: 100\r\n\r\n"), 2560 MockRead("Content-Length: 100\r\n\r\n"),
2561 MockRead(false, OK), 2561 MockRead(SYNCHRONOUS, OK),
2562 }; 2562 };
2563 2563
2564 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 2564 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2565 data_writes1, arraysize(data_writes1)); 2565 data_writes1, arraysize(data_writes1));
2566 session_deps.socket_factory.AddSocketDataProvider(&data1); 2566 session_deps.socket_factory.AddSocketDataProvider(&data1);
2567 SSLSocketDataProvider ssl(true, OK); 2567 SSLSocketDataProvider ssl(ASYNC, OK);
2568 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 2568 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
2569 2569
2570 TestCompletionCallback callback1; 2570 TestCompletionCallback callback1;
2571 2571
2572 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2572 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2573 2573
2574 int rv = trans->Start(&request, callback1.callback(), log.bound()); 2574 int rv = trans->Start(&request, callback1.callback(), log.bound());
2575 EXPECT_EQ(ERR_IO_PENDING, rv); 2575 EXPECT_EQ(ERR_IO_PENDING, rv);
2576 2576
2577 rv = callback1.WaitForResult(); 2577 rv = callback1.WaitForResult();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2621 MockWrite data_writes[] = { 2621 MockWrite data_writes[] = {
2622 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 2622 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
2623 "Host: www.google.com\r\n" 2623 "Host: www.google.com\r\n"
2624 "Proxy-Connection: keep-alive\r\n\r\n"), 2624 "Proxy-Connection: keep-alive\r\n\r\n"),
2625 }; 2625 };
2626 2626
2627 MockRead data_reads[] = { 2627 MockRead data_reads[] = {
2628 status, 2628 status,
2629 MockRead("Content-Length: 10\r\n\r\n"), 2629 MockRead("Content-Length: 10\r\n\r\n"),
2630 // No response body because the test stops reading here. 2630 // No response body because the test stops reading here.
2631 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 2631 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
2632 }; 2632 };
2633 2633
2634 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 2634 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
2635 data_writes, arraysize(data_writes)); 2635 data_writes, arraysize(data_writes));
2636 session_deps.socket_factory.AddSocketDataProvider(&data); 2636 session_deps.socket_factory.AddSocketDataProvider(&data);
2637 2637
2638 TestCompletionCallback callback; 2638 TestCompletionCallback callback;
2639 2639
2640 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 2640 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
2641 2641
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
2839 MockRead data_reads1[] = { 2839 MockRead data_reads1[] = {
2840 MockRead("HTTP/1.0 407 Unauthorized\r\n"), 2840 MockRead("HTTP/1.0 407 Unauthorized\r\n"),
2841 // Give a couple authenticate options (only the middle one is actually 2841 // Give a couple authenticate options (only the middle one is actually
2842 // supported). 2842 // supported).
2843 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed. 2843 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed.
2844 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 2844 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
2845 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), 2845 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"),
2846 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2846 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2847 // Large content-length -- won't matter, as connection will be reset. 2847 // Large content-length -- won't matter, as connection will be reset.
2848 MockRead("Content-Length: 10000\r\n\r\n"), 2848 MockRead("Content-Length: 10000\r\n\r\n"),
2849 MockRead(false, ERR_FAILED), 2849 MockRead(SYNCHRONOUS, ERR_FAILED),
2850 }; 2850 };
2851 2851
2852 // After calling trans->RestartWithAuth() the first time, this is the 2852 // After calling trans->RestartWithAuth() the first time, this is the
2853 // request we should be issuing -- the final header line contains the 2853 // request we should be issuing -- the final header line contains the
2854 // proxy's credentials. 2854 // proxy's credentials.
2855 MockWrite data_writes2[] = { 2855 MockWrite data_writes2[] = {
2856 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 2856 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
2857 "Host: www.google.com\r\n" 2857 "Host: www.google.com\r\n"
2858 "Proxy-Connection: keep-alive\r\n" 2858 "Proxy-Connection: keep-alive\r\n"
2859 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 2859 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
2860 }; 2860 };
2861 2861
2862 // Now the proxy server lets the request pass through to origin server. 2862 // Now the proxy server lets the request pass through to origin server.
2863 // The origin server responds with a 401. 2863 // The origin server responds with a 401.
2864 MockRead data_reads2[] = { 2864 MockRead data_reads2[] = {
2865 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 2865 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
2866 // Note: We are using the same realm-name as the proxy server. This is 2866 // Note: We are using the same realm-name as the proxy server. This is
2867 // completely valid, as realms are unique across hosts. 2867 // completely valid, as realms are unique across hosts.
2868 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 2868 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
2869 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2869 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2870 MockRead("Content-Length: 2000\r\n\r\n"), 2870 MockRead("Content-Length: 2000\r\n\r\n"),
2871 MockRead(false, ERR_FAILED), // Won't be reached. 2871 MockRead(SYNCHRONOUS, ERR_FAILED), // Won't be reached.
2872 }; 2872 };
2873 2873
2874 // After calling trans->RestartWithAuth() the second time, we should send 2874 // After calling trans->RestartWithAuth() the second time, we should send
2875 // the credentials for both the proxy and origin server. 2875 // the credentials for both the proxy and origin server.
2876 MockWrite data_writes3[] = { 2876 MockWrite data_writes3[] = {
2877 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 2877 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
2878 "Host: www.google.com\r\n" 2878 "Host: www.google.com\r\n"
2879 "Proxy-Connection: keep-alive\r\n" 2879 "Proxy-Connection: keep-alive\r\n"
2880 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" 2880 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n"
2881 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), 2881 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"),
2882 }; 2882 };
2883 2883
2884 // Lastly we get the desired content. 2884 // Lastly we get the desired content.
2885 MockRead data_reads3[] = { 2885 MockRead data_reads3[] = {
2886 MockRead("HTTP/1.0 200 OK\r\n"), 2886 MockRead("HTTP/1.0 200 OK\r\n"),
2887 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 2887 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
2888 MockRead("Content-Length: 100\r\n\r\n"), 2888 MockRead("Content-Length: 100\r\n\r\n"),
2889 MockRead(false, OK), 2889 MockRead(SYNCHRONOUS, OK),
2890 }; 2890 };
2891 2891
2892 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 2892 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
2893 data_writes1, arraysize(data_writes1)); 2893 data_writes1, arraysize(data_writes1));
2894 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 2894 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
2895 data_writes2, arraysize(data_writes2)); 2895 data_writes2, arraysize(data_writes2));
2896 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), 2896 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
2897 data_writes3, arraysize(data_writes3)); 2897 data_writes3, arraysize(data_writes3));
2898 session_deps.socket_factory.AddSocketDataProvider(&data1); 2898 session_deps.socket_factory.AddSocketDataProvider(&data1);
2899 session_deps.socket_factory.AddSocketDataProvider(&data2); 2899 session_deps.socket_factory.AddSocketDataProvider(&data2);
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
2967 MockRead data_reads1[] = { 2967 MockRead data_reads1[] = {
2968 MockRead("HTTP/1.1 401 Access Denied\r\n"), 2968 MockRead("HTTP/1.1 401 Access Denied\r\n"),
2969 // Negotiate and NTLM are often requested together. However, we only want 2969 // Negotiate and NTLM are often requested together. However, we only want
2970 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip 2970 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip
2971 // the header that requests Negotiate for this test. 2971 // the header that requests Negotiate for this test.
2972 MockRead("WWW-Authenticate: NTLM\r\n"), 2972 MockRead("WWW-Authenticate: NTLM\r\n"),
2973 MockRead("Connection: close\r\n"), 2973 MockRead("Connection: close\r\n"),
2974 MockRead("Content-Length: 42\r\n"), 2974 MockRead("Content-Length: 42\r\n"),
2975 MockRead("Content-Type: text/html\r\n\r\n"), 2975 MockRead("Content-Type: text/html\r\n\r\n"),
2976 // Missing content -- won't matter, as connection will be reset. 2976 // Missing content -- won't matter, as connection will be reset.
2977 MockRead(false, ERR_UNEXPECTED), 2977 MockRead(SYNCHRONOUS, ERR_UNEXPECTED),
2978 }; 2978 };
2979 2979
2980 MockWrite data_writes2[] = { 2980 MockWrite data_writes2[] = {
2981 // After restarting with a null identity, this is the 2981 // After restarting with a null identity, this is the
2982 // request we should be issuing -- the final header line contains a Type 2982 // request we should be issuing -- the final header line contains a Type
2983 // 1 message. 2983 // 1 message.
2984 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 2984 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
2985 "Host: 172.22.68.17\r\n" 2985 "Host: 172.22.68.17\r\n"
2986 "Connection: keep-alive\r\n" 2986 "Connection: keep-alive\r\n"
2987 "Authorization: NTLM " 2987 "Authorization: NTLM "
(...skipping 25 matching lines...) Expand all
3013 "BtAAAAAAA=\r\n"), 3013 "BtAAAAAAA=\r\n"),
3014 MockRead("Content-Length: 42\r\n"), 3014 MockRead("Content-Length: 42\r\n"),
3015 MockRead("Content-Type: text/html\r\n\r\n"), 3015 MockRead("Content-Type: text/html\r\n\r\n"),
3016 MockRead("You are not authorized to view this page\r\n"), 3016 MockRead("You are not authorized to view this page\r\n"),
3017 3017
3018 // Lastly we get the desired content. 3018 // Lastly we get the desired content.
3019 MockRead("HTTP/1.1 200 OK\r\n"), 3019 MockRead("HTTP/1.1 200 OK\r\n"),
3020 MockRead("Content-Type: text/html; charset=utf-8\r\n"), 3020 MockRead("Content-Type: text/html; charset=utf-8\r\n"),
3021 MockRead("Content-Length: 13\r\n\r\n"), 3021 MockRead("Content-Length: 13\r\n\r\n"),
3022 MockRead("Please Login\r\n"), 3022 MockRead("Please Login\r\n"),
3023 MockRead(false, OK), 3023 MockRead(SYNCHRONOUS, OK),
3024 }; 3024 };
3025 3025
3026 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3026 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3027 data_writes1, arraysize(data_writes1)); 3027 data_writes1, arraysize(data_writes1));
3028 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3028 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3029 data_writes2, arraysize(data_writes2)); 3029 data_writes2, arraysize(data_writes2));
3030 session_deps.socket_factory.AddSocketDataProvider(&data1); 3030 session_deps.socket_factory.AddSocketDataProvider(&data1);
3031 session_deps.socket_factory.AddSocketDataProvider(&data2); 3031 session_deps.socket_factory.AddSocketDataProvider(&data2);
3032 3032
3033 TestCompletionCallback callback1; 3033 TestCompletionCallback callback1;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
3096 MockRead data_reads1[] = { 3096 MockRead data_reads1[] = {
3097 MockRead("HTTP/1.1 401 Access Denied\r\n"), 3097 MockRead("HTTP/1.1 401 Access Denied\r\n"),
3098 // Negotiate and NTLM are often requested together. However, we only want 3098 // Negotiate and NTLM are often requested together. However, we only want
3099 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip 3099 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip
3100 // the header that requests Negotiate for this test. 3100 // the header that requests Negotiate for this test.
3101 MockRead("WWW-Authenticate: NTLM\r\n"), 3101 MockRead("WWW-Authenticate: NTLM\r\n"),
3102 MockRead("Connection: close\r\n"), 3102 MockRead("Connection: close\r\n"),
3103 MockRead("Content-Length: 42\r\n"), 3103 MockRead("Content-Length: 42\r\n"),
3104 MockRead("Content-Type: text/html\r\n\r\n"), 3104 MockRead("Content-Type: text/html\r\n\r\n"),
3105 // Missing content -- won't matter, as connection will be reset. 3105 // Missing content -- won't matter, as connection will be reset.
3106 MockRead(false, ERR_UNEXPECTED), 3106 MockRead(SYNCHRONOUS, ERR_UNEXPECTED),
3107 }; 3107 };
3108 3108
3109 MockWrite data_writes2[] = { 3109 MockWrite data_writes2[] = {
3110 // After restarting with a null identity, this is the 3110 // After restarting with a null identity, this is the
3111 // request we should be issuing -- the final header line contains a Type 3111 // request we should be issuing -- the final header line contains a Type
3112 // 1 message. 3112 // 1 message.
3113 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 3113 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
3114 "Host: 172.22.68.17\r\n" 3114 "Host: 172.22.68.17\r\n"
3115 "Connection: keep-alive\r\n" 3115 "Connection: keep-alive\r\n"
3116 "Authorization: NTLM " 3116 "Authorization: NTLM "
(...skipping 27 matching lines...) Expand all
3144 MockRead("Content-Type: text/html\r\n\r\n"), 3144 MockRead("Content-Type: text/html\r\n\r\n"),
3145 MockRead("You are not authorized to view this page\r\n"), 3145 MockRead("You are not authorized to view this page\r\n"),
3146 3146
3147 // Wrong password. 3147 // Wrong password.
3148 MockRead("HTTP/1.1 401 Access Denied\r\n"), 3148 MockRead("HTTP/1.1 401 Access Denied\r\n"),
3149 MockRead("WWW-Authenticate: NTLM\r\n"), 3149 MockRead("WWW-Authenticate: NTLM\r\n"),
3150 MockRead("Connection: close\r\n"), 3150 MockRead("Connection: close\r\n"),
3151 MockRead("Content-Length: 42\r\n"), 3151 MockRead("Content-Length: 42\r\n"),
3152 MockRead("Content-Type: text/html\r\n\r\n"), 3152 MockRead("Content-Type: text/html\r\n\r\n"),
3153 // Missing content -- won't matter, as connection will be reset. 3153 // Missing content -- won't matter, as connection will be reset.
3154 MockRead(false, ERR_UNEXPECTED), 3154 MockRead(SYNCHRONOUS, ERR_UNEXPECTED),
3155 }; 3155 };
3156 3156
3157 MockWrite data_writes3[] = { 3157 MockWrite data_writes3[] = {
3158 // After restarting with a null identity, this is the 3158 // After restarting with a null identity, this is the
3159 // request we should be issuing -- the final header line contains a Type 3159 // request we should be issuing -- the final header line contains a Type
3160 // 1 message. 3160 // 1 message.
3161 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" 3161 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n"
3162 "Host: 172.22.68.17\r\n" 3162 "Host: 172.22.68.17\r\n"
3163 "Connection: keep-alive\r\n" 3163 "Connection: keep-alive\r\n"
3164 "Authorization: NTLM " 3164 "Authorization: NTLM "
(...skipping 25 matching lines...) Expand all
3190 "BtAAAAAAA=\r\n"), 3190 "BtAAAAAAA=\r\n"),
3191 MockRead("Content-Length: 42\r\n"), 3191 MockRead("Content-Length: 42\r\n"),
3192 MockRead("Content-Type: text/html\r\n\r\n"), 3192 MockRead("Content-Type: text/html\r\n\r\n"),
3193 MockRead("You are not authorized to view this page\r\n"), 3193 MockRead("You are not authorized to view this page\r\n"),
3194 3194
3195 // Lastly we get the desired content. 3195 // Lastly we get the desired content.
3196 MockRead("HTTP/1.1 200 OK\r\n"), 3196 MockRead("HTTP/1.1 200 OK\r\n"),
3197 MockRead("Content-Type: text/html; charset=utf-8\r\n"), 3197 MockRead("Content-Type: text/html; charset=utf-8\r\n"),
3198 MockRead("Content-Length: 13\r\n\r\n"), 3198 MockRead("Content-Length: 13\r\n\r\n"),
3199 MockRead("Please Login\r\n"), 3199 MockRead("Please Login\r\n"),
3200 MockRead(false, OK), 3200 MockRead(SYNCHRONOUS, OK),
3201 }; 3201 };
3202 3202
3203 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3203 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3204 data_writes1, arraysize(data_writes1)); 3204 data_writes1, arraysize(data_writes1));
3205 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3205 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3206 data_writes2, arraysize(data_writes2)); 3206 data_writes2, arraysize(data_writes2));
3207 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), 3207 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
3208 data_writes3, arraysize(data_writes3)); 3208 data_writes3, arraysize(data_writes3));
3209 session_deps.socket_factory.AddSocketDataProvider(&data1); 3209 session_deps.socket_factory.AddSocketDataProvider(&data1);
3210 session_deps.socket_factory.AddSocketDataProvider(&data2); 3210 session_deps.socket_factory.AddSocketDataProvider(&data2);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
3287 SessionDependencies session_deps; 3287 SessionDependencies session_deps;
3288 scoped_ptr<HttpTransaction> trans( 3288 scoped_ptr<HttpTransaction> trans(
3289 new HttpNetworkTransaction(CreateSession(&session_deps))); 3289 new HttpNetworkTransaction(CreateSession(&session_deps)));
3290 3290
3291 // Respond with 300 kb of headers (we should fail after 256 kb). 3291 // Respond with 300 kb of headers (we should fail after 256 kb).
3292 std::string large_headers_string; 3292 std::string large_headers_string;
3293 FillLargeHeadersString(&large_headers_string, 300 * 1024); 3293 FillLargeHeadersString(&large_headers_string, 300 * 1024);
3294 3294
3295 MockRead data_reads[] = { 3295 MockRead data_reads[] = {
3296 MockRead("HTTP/1.0 200 OK\r\n"), 3296 MockRead("HTTP/1.0 200 OK\r\n"),
3297 MockRead(true, large_headers_string.data(), large_headers_string.size()), 3297 MockRead(ASYNC, large_headers_string.data(), large_headers_string.size()),
3298 MockRead("\r\nBODY"), 3298 MockRead("\r\nBODY"),
3299 MockRead(false, OK), 3299 MockRead(SYNCHRONOUS, OK),
3300 }; 3300 };
3301 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 3301 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3302 session_deps.socket_factory.AddSocketDataProvider(&data); 3302 session_deps.socket_factory.AddSocketDataProvider(&data);
3303 3303
3304 TestCompletionCallback callback; 3304 TestCompletionCallback callback;
3305 3305
3306 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 3306 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
3307 EXPECT_EQ(ERR_IO_PENDING, rv); 3307 EXPECT_EQ(ERR_IO_PENDING, rv);
3308 3308
3309 rv = callback.WaitForResult(); 3309 rv = callback.WaitForResult();
(...skipping 25 matching lines...) Expand all
3335 "Host: www.google.com\r\n" 3335 "Host: www.google.com\r\n"
3336 "Proxy-Connection: keep-alive\r\n\r\n"), 3336 "Proxy-Connection: keep-alive\r\n\r\n"),
3337 }; 3337 };
3338 3338
3339 // The proxy responds to the connect with a 404, using a persistent 3339 // The proxy responds to the connect with a 404, using a persistent
3340 // connection. Usually a proxy would return 501 (not implemented), 3340 // connection. Usually a proxy would return 501 (not implemented),
3341 // or 200 (tunnel established). 3341 // or 200 (tunnel established).
3342 MockRead data_reads1[] = { 3342 MockRead data_reads1[] = {
3343 MockRead("HTTP/1.1 404 Not Found\r\n"), 3343 MockRead("HTTP/1.1 404 Not Found\r\n"),
3344 MockRead("Content-Length: 10\r\n\r\n"), 3344 MockRead("Content-Length: 10\r\n\r\n"),
3345 MockRead(false, ERR_UNEXPECTED), // Should not be reached. 3345 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached.
3346 }; 3346 };
3347 3347
3348 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3348 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3349 data_writes1, arraysize(data_writes1)); 3349 data_writes1, arraysize(data_writes1));
3350 session_deps.socket_factory.AddSocketDataProvider(&data1); 3350 session_deps.socket_factory.AddSocketDataProvider(&data1);
3351 3351
3352 TestCompletionCallback callback1; 3352 TestCompletionCallback callback1;
3353 3353
3354 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 3354 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
3355 EXPECT_EQ(ERR_IO_PENDING, rv); 3355 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 29 matching lines...) Expand all
3385 3385
3386 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 3386 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
3387 3387
3388 MockRead data_reads[] = { 3388 MockRead data_reads[] = {
3389 // A part of the response body is received with the response headers. 3389 // A part of the response body is received with the response headers.
3390 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"), 3390 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"),
3391 // The rest of the response body is received in two parts. 3391 // The rest of the response body is received in two parts.
3392 MockRead("lo"), 3392 MockRead("lo"),
3393 MockRead(" world"), 3393 MockRead(" world"),
3394 MockRead("junk"), // Should not be read!! 3394 MockRead("junk"), // Should not be read!!
3395 MockRead(false, OK), 3395 MockRead(SYNCHRONOUS, OK),
3396 }; 3396 };
3397 3397
3398 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 3398 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3399 session_deps.socket_factory.AddSocketDataProvider(&data); 3399 session_deps.socket_factory.AddSocketDataProvider(&data);
3400 3400
3401 TestCompletionCallback callback; 3401 TestCompletionCallback callback;
3402 3402
3403 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 3403 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
3404 EXPECT_EQ(ERR_IO_PENDING, rv); 3404 EXPECT_EQ(ERR_IO_PENDING, rv);
3405 3405
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3440 MockWrite data_writes[] = { 3440 MockWrite data_writes[] = {
3441 MockWrite("GET / HTTP/1.1\r\n" 3441 MockWrite("GET / HTTP/1.1\r\n"
3442 "Host: www.google.com\r\n" 3442 "Host: www.google.com\r\n"
3443 "Connection: keep-alive\r\n\r\n"), 3443 "Connection: keep-alive\r\n\r\n"),
3444 }; 3444 };
3445 3445
3446 MockRead data_reads[] = { 3446 MockRead data_reads[] = {
3447 MockRead("HTTP/1.1 200 OK\r\n"), 3447 MockRead("HTTP/1.1 200 OK\r\n"),
3448 MockRead("Content-Length: 11\r\n\r\n"), 3448 MockRead("Content-Length: 11\r\n\r\n"),
3449 MockRead("hello world"), 3449 MockRead("hello world"),
3450 MockRead(false, OK), 3450 MockRead(SYNCHRONOUS, OK),
3451 }; 3451 };
3452 3452
3453 SSLSocketDataProvider ssl(true, OK); 3453 SSLSocketDataProvider ssl(ASYNC, OK);
3454 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 3454 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
3455 3455
3456 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 3456 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3457 data_writes, arraysize(data_writes)); 3457 data_writes, arraysize(data_writes));
3458 session_deps.socket_factory.AddSocketDataProvider(&data); 3458 session_deps.socket_factory.AddSocketDataProvider(&data);
3459 3459
3460 TestCompletionCallback callback; 3460 TestCompletionCallback callback;
3461 3461
3462 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 3462 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
3463 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 3463 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
3501 "Host: www.google.com\r\n" 3501 "Host: www.google.com\r\n"
3502 "Connection: keep-alive\r\n\r\n"), 3502 "Connection: keep-alive\r\n\r\n"),
3503 MockWrite("GET / HTTP/1.1\r\n" 3503 MockWrite("GET / HTTP/1.1\r\n"
3504 "Host: www.google.com\r\n" 3504 "Host: www.google.com\r\n"
3505 "Connection: keep-alive\r\n\r\n"), 3505 "Connection: keep-alive\r\n\r\n"),
3506 }; 3506 };
3507 3507
3508 MockRead data_reads[] = { 3508 MockRead data_reads[] = {
3509 MockRead("HTTP/1.1 200 OK\r\n"), 3509 MockRead("HTTP/1.1 200 OK\r\n"),
3510 MockRead("Content-Length: 11\r\n\r\n"), 3510 MockRead("Content-Length: 11\r\n\r\n"),
3511 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 3511 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
3512 MockRead("hello world"), 3512 MockRead("hello world"),
3513 MockRead(true, 0, 0) // EOF 3513 MockRead(ASYNC, 0, 0) // EOF
3514 }; 3514 };
3515 3515
3516 SSLSocketDataProvider ssl(true, OK); 3516 SSLSocketDataProvider ssl(ASYNC, OK);
3517 SSLSocketDataProvider ssl2(true, OK); 3517 SSLSocketDataProvider ssl2(ASYNC, OK);
3518 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 3518 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
3519 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); 3519 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2);
3520 3520
3521 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 3521 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
3522 data_writes, arraysize(data_writes)); 3522 data_writes, arraysize(data_writes));
3523 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), 3523 StaticSocketDataProvider data2(data_reads, arraysize(data_reads),
3524 data_writes, arraysize(data_writes)); 3524 data_writes, arraysize(data_writes));
3525 session_deps.socket_factory.AddSocketDataProvider(&data); 3525 session_deps.socket_factory.AddSocketDataProvider(&data);
3526 session_deps.socket_factory.AddSocketDataProvider(&data2); 3526 session_deps.socket_factory.AddSocketDataProvider(&data2);
3527 3527
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
3596 SessionDependencies session_deps; 3596 SessionDependencies session_deps;
3597 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 3597 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
3598 3598
3599 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 3599 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
3600 3600
3601 MockRead data_reads[] = { 3601 MockRead data_reads[] = {
3602 MockRead("HTTP/1.1 204 No Content\r\n" 3602 MockRead("HTTP/1.1 204 No Content\r\n"
3603 "Content-Length: 0\r\n" 3603 "Content-Length: 0\r\n"
3604 "Content-Type: text/html\r\n\r\n"), 3604 "Content-Type: text/html\r\n\r\n"),
3605 MockRead("junk"), // Should not be read!! 3605 MockRead("junk"), // Should not be read!!
3606 MockRead(false, OK), 3606 MockRead(SYNCHRONOUS, OK),
3607 }; 3607 };
3608 3608
3609 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 3609 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
3610 session_deps.socket_factory.AddSocketDataProvider(&data); 3610 session_deps.socket_factory.AddSocketDataProvider(&data);
3611 3611
3612 TestCompletionCallback callback; 3612 TestCompletionCallback callback;
3613 3613
3614 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 3614 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
3615 EXPECT_EQ(ERR_IO_PENDING, rv); 3615 EXPECT_EQ(ERR_IO_PENDING, rv);
3616 3616
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
3659 SessionDependencies session_deps; 3659 SessionDependencies session_deps;
3660 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 3660 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
3661 3661
3662 // The first socket is used for transaction 1 and the first attempt of 3662 // The first socket is used for transaction 1 and the first attempt of
3663 // transaction 2. 3663 // transaction 2.
3664 3664
3665 // The response of transaction 1. 3665 // The response of transaction 1.
3666 MockRead data_reads1[] = { 3666 MockRead data_reads1[] = {
3667 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"), 3667 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"),
3668 MockRead("hello world"), 3668 MockRead("hello world"),
3669 MockRead(false, OK), 3669 MockRead(SYNCHRONOUS, OK),
3670 }; 3670 };
3671 // The mock write results of transaction 1 and the first attempt of 3671 // The mock write results of transaction 1 and the first attempt of
3672 // transaction 2. 3672 // transaction 2.
3673 MockWrite data_writes1[] = { 3673 MockWrite data_writes1[] = {
3674 MockWrite(false, 64), // GET 3674 MockWrite(SYNCHRONOUS, 64), // GET
3675 MockWrite(false, 93), // POST 3675 MockWrite(SYNCHRONOUS, 93), // POST
3676 MockWrite(false, ERR_CONNECTION_ABORTED), // POST data 3676 MockWrite(SYNCHRONOUS, ERR_CONNECTION_ABORTED), // POST data
3677 }; 3677 };
3678 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3678 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3679 data_writes1, arraysize(data_writes1)); 3679 data_writes1, arraysize(data_writes1));
3680 3680
3681 // The second socket is used for the second attempt of transaction 2. 3681 // The second socket is used for the second attempt of transaction 2.
3682 3682
3683 // The response of transaction 2. 3683 // The response of transaction 2.
3684 MockRead data_reads2[] = { 3684 MockRead data_reads2[] = {
3685 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"), 3685 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"),
3686 MockRead("welcome"), 3686 MockRead("welcome"),
3687 MockRead(false, OK), 3687 MockRead(SYNCHRONOUS, OK),
3688 }; 3688 };
3689 // The mock write results of the second attempt of transaction 2. 3689 // The mock write results of the second attempt of transaction 2.
3690 MockWrite data_writes2[] = { 3690 MockWrite data_writes2[] = {
3691 MockWrite(false, 93), // POST 3691 MockWrite(SYNCHRONOUS, 93), // POST
3692 MockWrite(false, 3), // POST data 3692 MockWrite(SYNCHRONOUS, 3), // POST data
3693 }; 3693 };
3694 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3694 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3695 data_writes2, arraysize(data_writes2)); 3695 data_writes2, arraysize(data_writes2));
3696 3696
3697 session_deps.socket_factory.AddSocketDataProvider(&data1); 3697 session_deps.socket_factory.AddSocketDataProvider(&data1);
3698 session_deps.socket_factory.AddSocketDataProvider(&data2); 3698 session_deps.socket_factory.AddSocketDataProvider(&data2);
3699 3699
3700 const char* kExpectedResponseData[] = { 3700 const char* kExpectedResponseData[] = {
3701 "hello world", "welcome" 3701 "hello world", "welcome"
3702 }; 3702 };
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3746 MockWrite data_writes1[] = { 3746 MockWrite data_writes1[] = {
3747 MockWrite("GET / HTTP/1.1\r\n" 3747 MockWrite("GET / HTTP/1.1\r\n"
3748 "Host: www.google.com\r\n" 3748 "Host: www.google.com\r\n"
3749 "Connection: keep-alive\r\n\r\n"), 3749 "Connection: keep-alive\r\n\r\n"),
3750 }; 3750 };
3751 3751
3752 MockRead data_reads1[] = { 3752 MockRead data_reads1[] = {
3753 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 3753 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
3754 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 3754 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
3755 MockRead("Content-Length: 10\r\n\r\n"), 3755 MockRead("Content-Length: 10\r\n\r\n"),
3756 MockRead(false, ERR_FAILED), 3756 MockRead(SYNCHRONOUS, ERR_FAILED),
3757 }; 3757 };
3758 3758
3759 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3759 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3760 data_writes1, arraysize(data_writes1)); 3760 data_writes1, arraysize(data_writes1));
3761 session_deps.socket_factory.AddSocketDataProvider(&data1); 3761 session_deps.socket_factory.AddSocketDataProvider(&data1);
3762 3762
3763 TestCompletionCallback callback1; 3763 TestCompletionCallback callback1;
3764 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 3764 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
3765 EXPECT_EQ(ERR_IO_PENDING, rv); 3765 EXPECT_EQ(ERR_IO_PENDING, rv);
3766 rv = callback1.WaitForResult(); 3766 rv = callback1.WaitForResult();
(...skipping 21 matching lines...) Expand all
3788 MockWrite data_writes1[] = { 3788 MockWrite data_writes1[] = {
3789 MockWrite("GET /x/y/z HTTP/1.1\r\n" 3789 MockWrite("GET /x/y/z HTTP/1.1\r\n"
3790 "Host: www.google.com\r\n" 3790 "Host: www.google.com\r\n"
3791 "Connection: keep-alive\r\n\r\n"), 3791 "Connection: keep-alive\r\n\r\n"),
3792 }; 3792 };
3793 3793
3794 MockRead data_reads1[] = { 3794 MockRead data_reads1[] = {
3795 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 3795 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
3796 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 3796 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
3797 MockRead("Content-Length: 10000\r\n\r\n"), 3797 MockRead("Content-Length: 10000\r\n\r\n"),
3798 MockRead(false, ERR_FAILED), 3798 MockRead(SYNCHRONOUS, ERR_FAILED),
3799 }; 3799 };
3800 3800
3801 // Resend with authorization (username=foo, password=bar) 3801 // Resend with authorization (username=foo, password=bar)
3802 MockWrite data_writes2[] = { 3802 MockWrite data_writes2[] = {
3803 MockWrite("GET /x/y/z HTTP/1.1\r\n" 3803 MockWrite("GET /x/y/z HTTP/1.1\r\n"
3804 "Host: www.google.com\r\n" 3804 "Host: www.google.com\r\n"
3805 "Connection: keep-alive\r\n" 3805 "Connection: keep-alive\r\n"
3806 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3806 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3807 }; 3807 };
3808 3808
3809 // Sever accepts the authorization. 3809 // Sever accepts the authorization.
3810 MockRead data_reads2[] = { 3810 MockRead data_reads2[] = {
3811 MockRead("HTTP/1.0 200 OK\r\n"), 3811 MockRead("HTTP/1.0 200 OK\r\n"),
3812 MockRead("Content-Length: 100\r\n\r\n"), 3812 MockRead("Content-Length: 100\r\n\r\n"),
3813 MockRead(false, OK), 3813 MockRead(SYNCHRONOUS, OK),
3814 }; 3814 };
3815 3815
3816 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3816 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3817 data_writes1, arraysize(data_writes1)); 3817 data_writes1, arraysize(data_writes1));
3818 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3818 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3819 data_writes2, arraysize(data_writes2)); 3819 data_writes2, arraysize(data_writes2));
3820 session_deps.socket_factory.AddSocketDataProvider(&data1); 3820 session_deps.socket_factory.AddSocketDataProvider(&data1);
3821 session_deps.socket_factory.AddSocketDataProvider(&data2); 3821 session_deps.socket_factory.AddSocketDataProvider(&data2);
3822 3822
3823 TestCompletionCallback callback1; 3823 TestCompletionCallback callback1;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3867 // Send preemptive authorization for MyRealm1 3867 // Send preemptive authorization for MyRealm1
3868 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3868 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3869 }; 3869 };
3870 3870
3871 // The server didn't like the preemptive authorization, and 3871 // The server didn't like the preemptive authorization, and
3872 // challenges us for a different realm (MyRealm2). 3872 // challenges us for a different realm (MyRealm2).
3873 MockRead data_reads1[] = { 3873 MockRead data_reads1[] = {
3874 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 3874 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
3875 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"), 3875 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"),
3876 MockRead("Content-Length: 10000\r\n\r\n"), 3876 MockRead("Content-Length: 10000\r\n\r\n"),
3877 MockRead(false, ERR_FAILED), 3877 MockRead(SYNCHRONOUS, ERR_FAILED),
3878 }; 3878 };
3879 3879
3880 // Resend with authorization for MyRealm2 (username=foo2, password=bar2) 3880 // Resend with authorization for MyRealm2 (username=foo2, password=bar2)
3881 MockWrite data_writes2[] = { 3881 MockWrite data_writes2[] = {
3882 MockWrite("GET /x/y/a/b HTTP/1.1\r\n" 3882 MockWrite("GET /x/y/a/b HTTP/1.1\r\n"
3883 "Host: www.google.com\r\n" 3883 "Host: www.google.com\r\n"
3884 "Connection: keep-alive\r\n" 3884 "Connection: keep-alive\r\n"
3885 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), 3885 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"),
3886 }; 3886 };
3887 3887
3888 // Sever accepts the authorization. 3888 // Sever accepts the authorization.
3889 MockRead data_reads2[] = { 3889 MockRead data_reads2[] = {
3890 MockRead("HTTP/1.0 200 OK\r\n"), 3890 MockRead("HTTP/1.0 200 OK\r\n"),
3891 MockRead("Content-Length: 100\r\n\r\n"), 3891 MockRead("Content-Length: 100\r\n\r\n"),
3892 MockRead(false, OK), 3892 MockRead(SYNCHRONOUS, OK),
3893 }; 3893 };
3894 3894
3895 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3895 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3896 data_writes1, arraysize(data_writes1)); 3896 data_writes1, arraysize(data_writes1));
3897 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 3897 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
3898 data_writes2, arraysize(data_writes2)); 3898 data_writes2, arraysize(data_writes2));
3899 session_deps.socket_factory.AddSocketDataProvider(&data1); 3899 session_deps.socket_factory.AddSocketDataProvider(&data1);
3900 session_deps.socket_factory.AddSocketDataProvider(&data2); 3900 session_deps.socket_factory.AddSocketDataProvider(&data2);
3901 3901
3902 TestCompletionCallback callback1; 3902 TestCompletionCallback callback1;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
3949 "Connection: keep-alive\r\n" 3949 "Connection: keep-alive\r\n"
3950 // The authorization for MyRealm1 gets sent preemptively 3950 // The authorization for MyRealm1 gets sent preemptively
3951 // (since the url is in the same protection space) 3951 // (since the url is in the same protection space)
3952 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 3952 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
3953 }; 3953 };
3954 3954
3955 // Sever accepts the preemptive authorization 3955 // Sever accepts the preemptive authorization
3956 MockRead data_reads1[] = { 3956 MockRead data_reads1[] = {
3957 MockRead("HTTP/1.0 200 OK\r\n"), 3957 MockRead("HTTP/1.0 200 OK\r\n"),
3958 MockRead("Content-Length: 100\r\n\r\n"), 3958 MockRead("Content-Length: 100\r\n\r\n"),
3959 MockRead(false, OK), 3959 MockRead(SYNCHRONOUS, OK),
3960 }; 3960 };
3961 3961
3962 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 3962 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
3963 data_writes1, arraysize(data_writes1)); 3963 data_writes1, arraysize(data_writes1));
3964 session_deps.socket_factory.AddSocketDataProvider(&data1); 3964 session_deps.socket_factory.AddSocketDataProvider(&data1);
3965 3965
3966 TestCompletionCallback callback1; 3966 TestCompletionCallback callback1;
3967 3967
3968 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 3968 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
3969 EXPECT_EQ(ERR_IO_PENDING, rv); 3969 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 23 matching lines...) Expand all
3993 MockWrite data_writes1[] = { 3993 MockWrite data_writes1[] = {
3994 MockWrite("GET /x/1 HTTP/1.1\r\n" 3994 MockWrite("GET /x/1 HTTP/1.1\r\n"
3995 "Host: www.google.com\r\n" 3995 "Host: www.google.com\r\n"
3996 "Connection: keep-alive\r\n\r\n"), 3996 "Connection: keep-alive\r\n\r\n"),
3997 }; 3997 };
3998 3998
3999 MockRead data_reads1[] = { 3999 MockRead data_reads1[] = {
4000 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 4000 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
4001 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 4001 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
4002 MockRead("Content-Length: 10000\r\n\r\n"), 4002 MockRead("Content-Length: 10000\r\n\r\n"),
4003 MockRead(false, ERR_FAILED), 4003 MockRead(SYNCHRONOUS, ERR_FAILED),
4004 }; 4004 };
4005 4005
4006 // Resend with authorization from MyRealm's cache. 4006 // Resend with authorization from MyRealm's cache.
4007 MockWrite data_writes2[] = { 4007 MockWrite data_writes2[] = {
4008 MockWrite("GET /x/1 HTTP/1.1\r\n" 4008 MockWrite("GET /x/1 HTTP/1.1\r\n"
4009 "Host: www.google.com\r\n" 4009 "Host: www.google.com\r\n"
4010 "Connection: keep-alive\r\n" 4010 "Connection: keep-alive\r\n"
4011 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 4011 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
4012 }; 4012 };
4013 4013
4014 // Sever accepts the authorization. 4014 // Sever accepts the authorization.
4015 MockRead data_reads2[] = { 4015 MockRead data_reads2[] = {
4016 MockRead("HTTP/1.0 200 OK\r\n"), 4016 MockRead("HTTP/1.0 200 OK\r\n"),
4017 MockRead("Content-Length: 100\r\n\r\n"), 4017 MockRead("Content-Length: 100\r\n\r\n"),
4018 MockRead(false, OK), 4018 MockRead(SYNCHRONOUS, OK),
4019 }; 4019 };
4020 4020
4021 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4021 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4022 data_writes1, arraysize(data_writes1)); 4022 data_writes1, arraysize(data_writes1));
4023 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 4023 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
4024 data_writes2, arraysize(data_writes2)); 4024 data_writes2, arraysize(data_writes2));
4025 session_deps.socket_factory.AddSocketDataProvider(&data1); 4025 session_deps.socket_factory.AddSocketDataProvider(&data1);
4026 session_deps.socket_factory.AddSocketDataProvider(&data2); 4026 session_deps.socket_factory.AddSocketDataProvider(&data2);
4027 4027
4028 TestCompletionCallback callback1; 4028 TestCompletionCallback callback1;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
4062 MockWrite data_writes1[] = { 4062 MockWrite data_writes1[] = {
4063 MockWrite("GET /p/q/t HTTP/1.1\r\n" 4063 MockWrite("GET /p/q/t HTTP/1.1\r\n"
4064 "Host: www.google.com\r\n" 4064 "Host: www.google.com\r\n"
4065 "Connection: keep-alive\r\n\r\n"), 4065 "Connection: keep-alive\r\n\r\n"),
4066 }; 4066 };
4067 4067
4068 MockRead data_reads1[] = { 4068 MockRead data_reads1[] = {
4069 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 4069 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
4070 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 4070 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
4071 MockRead("Content-Length: 10000\r\n\r\n"), 4071 MockRead("Content-Length: 10000\r\n\r\n"),
4072 MockRead(false, ERR_FAILED), 4072 MockRead(SYNCHRONOUS, ERR_FAILED),
4073 }; 4073 };
4074 4074
4075 // Resend with authorization from cache for MyRealm. 4075 // Resend with authorization from cache for MyRealm.
4076 MockWrite data_writes2[] = { 4076 MockWrite data_writes2[] = {
4077 MockWrite("GET /p/q/t HTTP/1.1\r\n" 4077 MockWrite("GET /p/q/t HTTP/1.1\r\n"
4078 "Host: www.google.com\r\n" 4078 "Host: www.google.com\r\n"
4079 "Connection: keep-alive\r\n" 4079 "Connection: keep-alive\r\n"
4080 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 4080 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
4081 }; 4081 };
4082 4082
4083 // Sever rejects the authorization. 4083 // Sever rejects the authorization.
4084 MockRead data_reads2[] = { 4084 MockRead data_reads2[] = {
4085 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 4085 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
4086 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 4086 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
4087 MockRead("Content-Length: 10000\r\n\r\n"), 4087 MockRead("Content-Length: 10000\r\n\r\n"),
4088 MockRead(false, ERR_FAILED), 4088 MockRead(SYNCHRONOUS, ERR_FAILED),
4089 }; 4089 };
4090 4090
4091 // At this point we should prompt for new credentials for MyRealm. 4091 // At this point we should prompt for new credentials for MyRealm.
4092 // Restart with username=foo3, password=foo4. 4092 // Restart with username=foo3, password=foo4.
4093 MockWrite data_writes3[] = { 4093 MockWrite data_writes3[] = {
4094 MockWrite("GET /p/q/t HTTP/1.1\r\n" 4094 MockWrite("GET /p/q/t HTTP/1.1\r\n"
4095 "Host: www.google.com\r\n" 4095 "Host: www.google.com\r\n"
4096 "Connection: keep-alive\r\n" 4096 "Connection: keep-alive\r\n"
4097 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"), 4097 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"),
4098 }; 4098 };
4099 4099
4100 // Sever accepts the authorization. 4100 // Sever accepts the authorization.
4101 MockRead data_reads3[] = { 4101 MockRead data_reads3[] = {
4102 MockRead("HTTP/1.0 200 OK\r\n"), 4102 MockRead("HTTP/1.0 200 OK\r\n"),
4103 MockRead("Content-Length: 100\r\n\r\n"), 4103 MockRead("Content-Length: 100\r\n\r\n"),
4104 MockRead(false, OK), 4104 MockRead(SYNCHRONOUS, OK),
4105 }; 4105 };
4106 4106
4107 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4107 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4108 data_writes1, arraysize(data_writes1)); 4108 data_writes1, arraysize(data_writes1));
4109 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 4109 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
4110 data_writes2, arraysize(data_writes2)); 4110 data_writes2, arraysize(data_writes2));
4111 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), 4111 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3),
4112 data_writes3, arraysize(data_writes3)); 4112 data_writes3, arraysize(data_writes3));
4113 session_deps.socket_factory.AddSocketDataProvider(&data1); 4113 session_deps.socket_factory.AddSocketDataProvider(&data1);
4114 session_deps.socket_factory.AddSocketDataProvider(&data2); 4114 session_deps.socket_factory.AddSocketDataProvider(&data2);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
4174 MockWrite data_writes1[] = { 4174 MockWrite data_writes1[] = {
4175 MockWrite("GET /x/y/z HTTP/1.1\r\n" 4175 MockWrite("GET /x/y/z HTTP/1.1\r\n"
4176 "Host: www.google.com\r\n" 4176 "Host: www.google.com\r\n"
4177 "Connection: keep-alive\r\n\r\n"), 4177 "Connection: keep-alive\r\n\r\n"),
4178 }; 4178 };
4179 4179
4180 MockRead data_reads1[] = { 4180 MockRead data_reads1[] = {
4181 MockRead("HTTP/1.0 401 Unauthorized\r\n"), 4181 MockRead("HTTP/1.0 401 Unauthorized\r\n"),
4182 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", " 4182 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", "
4183 "algorithm=MD5, qop=\"auth\"\r\n\r\n"), 4183 "algorithm=MD5, qop=\"auth\"\r\n\r\n"),
4184 MockRead(false, OK), 4184 MockRead(SYNCHRONOUS, OK),
4185 }; 4185 };
4186 4186
4187 // Resend with authorization (username=foo, password=bar) 4187 // Resend with authorization (username=foo, password=bar)
4188 MockWrite data_writes2[] = { 4188 MockWrite data_writes2[] = {
4189 MockWrite("GET /x/y/z HTTP/1.1\r\n" 4189 MockWrite("GET /x/y/z HTTP/1.1\r\n"
4190 "Host: www.google.com\r\n" 4190 "Host: www.google.com\r\n"
4191 "Connection: keep-alive\r\n" 4191 "Connection: keep-alive\r\n"
4192 "Authorization: Digest username=\"foo\", realm=\"digestive\", " 4192 "Authorization: Digest username=\"foo\", realm=\"digestive\", "
4193 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, " 4193 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, "
4194 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, " 4194 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, "
4195 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"), 4195 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"),
4196 }; 4196 };
4197 4197
4198 // Sever accepts the authorization. 4198 // Sever accepts the authorization.
4199 MockRead data_reads2[] = { 4199 MockRead data_reads2[] = {
4200 MockRead("HTTP/1.0 200 OK\r\n"), 4200 MockRead("HTTP/1.0 200 OK\r\n"),
4201 MockRead(false, OK), 4201 MockRead(SYNCHRONOUS, OK),
4202 }; 4202 };
4203 4203
4204 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4204 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4205 data_writes1, arraysize(data_writes1)); 4205 data_writes1, arraysize(data_writes1));
4206 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 4206 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
4207 data_writes2, arraysize(data_writes2)); 4207 data_writes2, arraysize(data_writes2));
4208 session_deps.socket_factory.AddSocketDataProvider(&data1); 4208 session_deps.socket_factory.AddSocketDataProvider(&data1);
4209 session_deps.socket_factory.AddSocketDataProvider(&data2); 4209 session_deps.socket_factory.AddSocketDataProvider(&data2);
4210 4210
4211 TestCompletionCallback callback1; 4211 TestCompletionCallback callback1;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4256 "Authorization: Digest username=\"foo\", realm=\"digestive\", " 4256 "Authorization: Digest username=\"foo\", realm=\"digestive\", "
4257 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, " 4257 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, "
4258 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, " 4258 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, "
4259 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"), 4259 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"),
4260 }; 4260 };
4261 4261
4262 // Sever accepts the authorization. 4262 // Sever accepts the authorization.
4263 MockRead data_reads1[] = { 4263 MockRead data_reads1[] = {
4264 MockRead("HTTP/1.0 200 OK\r\n"), 4264 MockRead("HTTP/1.0 200 OK\r\n"),
4265 MockRead("Content-Length: 100\r\n\r\n"), 4265 MockRead("Content-Length: 100\r\n\r\n"),
4266 MockRead(false, OK), 4266 MockRead(SYNCHRONOUS, OK),
4267 }; 4267 };
4268 4268
4269 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 4269 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
4270 data_writes1, arraysize(data_writes1)); 4270 data_writes1, arraysize(data_writes1));
4271 session_deps.socket_factory.AddSocketDataProvider(&data1); 4271 session_deps.socket_factory.AddSocketDataProvider(&data1);
4272 4272
4273 TestCompletionCallback callback1; 4273 TestCompletionCallback callback1;
4274 4274
4275 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 4275 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
4276 EXPECT_EQ(ERR_IO_PENDING, rv); 4276 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
4341 MockWrite data_writes[] = { 4341 MockWrite data_writes[] = {
4342 MockWrite("GET / HTTP/1.1\r\n" 4342 MockWrite("GET / HTTP/1.1\r\n"
4343 "Host: www.google.com\r\n" 4343 "Host: www.google.com\r\n"
4344 "Connection: keep-alive\r\n\r\n"), 4344 "Connection: keep-alive\r\n\r\n"),
4345 }; 4345 };
4346 4346
4347 MockRead data_reads[] = { 4347 MockRead data_reads[] = {
4348 MockRead("HTTP/1.0 200 OK\r\n"), 4348 MockRead("HTTP/1.0 200 OK\r\n"),
4349 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4349 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4350 MockRead("Content-Length: 100\r\n\r\n"), 4350 MockRead("Content-Length: 100\r\n\r\n"),
4351 MockRead(false, OK), 4351 MockRead(SYNCHRONOUS, OK),
4352 }; 4352 };
4353 4353
4354 StaticSocketDataProvider ssl_bad_certificate; 4354 StaticSocketDataProvider ssl_bad_certificate;
4355 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4355 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4356 data_writes, arraysize(data_writes)); 4356 data_writes, arraysize(data_writes));
4357 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 4357 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID);
4358 SSLSocketDataProvider ssl(true, OK); 4358 SSLSocketDataProvider ssl(ASYNC, OK);
4359 4359
4360 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 4360 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
4361 session_deps.socket_factory.AddSocketDataProvider(&data); 4361 session_deps.socket_factory.AddSocketDataProvider(&data);
4362 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 4362 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
4363 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4363 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4364 4364
4365 TestCompletionCallback callback; 4365 TestCompletionCallback callback;
4366 4366
4367 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4367 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4368 EXPECT_EQ(ERR_IO_PENDING, rv); 4368 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 24 matching lines...) Expand all
4393 request.load_flags = 0; 4393 request.load_flags = 0;
4394 4394
4395 MockWrite proxy_writes[] = { 4395 MockWrite proxy_writes[] = {
4396 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4396 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4397 "Host: www.google.com\r\n" 4397 "Host: www.google.com\r\n"
4398 "Proxy-Connection: keep-alive\r\n\r\n"), 4398 "Proxy-Connection: keep-alive\r\n\r\n"),
4399 }; 4399 };
4400 4400
4401 MockRead proxy_reads[] = { 4401 MockRead proxy_reads[] = {
4402 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4402 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4403 MockRead(false, OK) 4403 MockRead(SYNCHRONOUS, OK)
4404 }; 4404 };
4405 4405
4406 MockWrite data_writes[] = { 4406 MockWrite data_writes[] = {
4407 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4407 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4408 "Host: www.google.com\r\n" 4408 "Host: www.google.com\r\n"
4409 "Proxy-Connection: keep-alive\r\n\r\n"), 4409 "Proxy-Connection: keep-alive\r\n\r\n"),
4410 MockWrite("GET / HTTP/1.1\r\n" 4410 MockWrite("GET / HTTP/1.1\r\n"
4411 "Host: www.google.com\r\n" 4411 "Host: www.google.com\r\n"
4412 "Connection: keep-alive\r\n\r\n"), 4412 "Connection: keep-alive\r\n\r\n"),
4413 }; 4413 };
4414 4414
4415 MockRead data_reads[] = { 4415 MockRead data_reads[] = {
4416 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4416 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4417 MockRead("HTTP/1.0 200 OK\r\n"), 4417 MockRead("HTTP/1.0 200 OK\r\n"),
4418 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4418 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4419 MockRead("Content-Length: 100\r\n\r\n"), 4419 MockRead("Content-Length: 100\r\n\r\n"),
4420 MockRead(false, OK), 4420 MockRead(SYNCHRONOUS, OK),
4421 }; 4421 };
4422 4422
4423 StaticSocketDataProvider ssl_bad_certificate( 4423 StaticSocketDataProvider ssl_bad_certificate(
4424 proxy_reads, arraysize(proxy_reads), 4424 proxy_reads, arraysize(proxy_reads),
4425 proxy_writes, arraysize(proxy_writes)); 4425 proxy_writes, arraysize(proxy_writes));
4426 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4426 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4427 data_writes, arraysize(data_writes)); 4427 data_writes, arraysize(data_writes));
4428 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 4428 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID);
4429 SSLSocketDataProvider ssl(true, OK); 4429 SSLSocketDataProvider ssl(ASYNC, OK);
4430 4430
4431 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 4431 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
4432 session_deps.socket_factory.AddSocketDataProvider(&data); 4432 session_deps.socket_factory.AddSocketDataProvider(&data);
4433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 4433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
4434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4435 4435
4436 TestCompletionCallback callback; 4436 TestCompletionCallback callback;
4437 4437
4438 for (int i = 0; i < 2; i++) { 4438 for (int i = 0; i < 2; i++) {
4439 session_deps.socket_factory.ResetNextMockIndexes(); 4439 session_deps.socket_factory.ResetNextMockIndexes();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4478 MockWrite("GET / HTTP/1.1\r\n" 4478 MockWrite("GET / HTTP/1.1\r\n"
4479 "Host: www.google.com\r\n" 4479 "Host: www.google.com\r\n"
4480 "Connection: keep-alive\r\n\r\n"), 4480 "Connection: keep-alive\r\n\r\n"),
4481 }; 4481 };
4482 4482
4483 MockRead data_reads[] = { 4483 MockRead data_reads[] = {
4484 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4484 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4485 MockRead("HTTP/1.1 200 OK\r\n"), 4485 MockRead("HTTP/1.1 200 OK\r\n"),
4486 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4486 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4487 MockRead("Content-Length: 100\r\n\r\n"), 4487 MockRead("Content-Length: 100\r\n\r\n"),
4488 MockRead(false, OK), 4488 MockRead(SYNCHRONOUS, OK),
4489 }; 4489 };
4490 4490
4491 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4491 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4492 data_writes, arraysize(data_writes)); 4492 data_writes, arraysize(data_writes));
4493 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4493 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4494 SSLSocketDataProvider tunnel_ssl(true, OK); // SSL through the tunnel 4494 SSLSocketDataProvider tunnel_ssl(ASYNC, OK); // SSL through the tunnel
4495 4495
4496 session_deps.socket_factory.AddSocketDataProvider(&data); 4496 session_deps.socket_factory.AddSocketDataProvider(&data);
4497 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4497 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4498 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl); 4498 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl);
4499 4499
4500 TestCompletionCallback callback; 4500 TestCompletionCallback callback;
4501 4501
4502 scoped_ptr<HttpTransaction> trans( 4502 scoped_ptr<HttpTransaction> trans(
4503 new HttpNetworkTransaction(CreateSession(&session_deps))); 4503 new HttpNetworkTransaction(CreateSession(&session_deps)));
4504 4504
(...skipping 25 matching lines...) Expand all
4530 MockWrite data_writes[] = { 4530 MockWrite data_writes[] = {
4531 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4531 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4532 "Host: www.google.com\r\n" 4532 "Host: www.google.com\r\n"
4533 "Proxy-Connection: keep-alive\r\n\r\n"), 4533 "Proxy-Connection: keep-alive\r\n\r\n"),
4534 }; 4534 };
4535 4535
4536 MockRead data_reads[] = { 4536 MockRead data_reads[] = {
4537 MockRead("HTTP/1.1 302 Redirect\r\n"), 4537 MockRead("HTTP/1.1 302 Redirect\r\n"),
4538 MockRead("Location: http://login.example.com/\r\n"), 4538 MockRead("Location: http://login.example.com/\r\n"),
4539 MockRead("Content-Length: 0\r\n\r\n"), 4539 MockRead("Content-Length: 0\r\n\r\n"),
4540 MockRead(false, OK), 4540 MockRead(SYNCHRONOUS, OK),
4541 }; 4541 };
4542 4542
4543 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4543 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4544 data_writes, arraysize(data_writes)); 4544 data_writes, arraysize(data_writes));
4545 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4545 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4546 4546
4547 session_deps.socket_factory.AddSocketDataProvider(&data); 4547 session_deps.socket_factory.AddSocketDataProvider(&data);
4548 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4548 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4549 4549
4550 TestCompletionCallback callback; 4550 TestCompletionCallback callback;
4551 4551
4552 scoped_ptr<HttpTransaction> trans( 4552 scoped_ptr<HttpTransaction> trans(
4553 new HttpNetworkTransaction(CreateSession(&session_deps))); 4553 new HttpNetworkTransaction(CreateSession(&session_deps)));
4554 4554
4555 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4555 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
(...skipping 17 matching lines...) Expand all
4573 ProxyService::CreateFixed("https://proxy:70")); 4573 ProxyService::CreateFixed("https://proxy:70"));
4574 4574
4575 HttpRequestInfo request; 4575 HttpRequestInfo request;
4576 request.method = "GET"; 4576 request.method = "GET";
4577 request.url = GURL("https://www.google.com/"); 4577 request.url = GURL("https://www.google.com/");
4578 request.load_flags = 0; 4578 request.load_flags = 0;
4579 4579
4580 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); 4580 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1));
4581 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); 4581 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL));
4582 MockWrite data_writes[] = { 4582 MockWrite data_writes[] = {
4583 CreateMockWrite(*conn.get(), 0, false), 4583 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS),
4584 }; 4584 };
4585 4585
4586 static const char* const kExtraHeaders[] = { 4586 static const char* const kExtraHeaders[] = {
4587 "location", 4587 "location",
4588 "http://login.example.com/", 4588 "http://login.example.com/",
4589 }; 4589 };
4590 scoped_ptr<spdy::SpdyFrame> resp( 4590 scoped_ptr<spdy::SpdyFrame> resp(
4591 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, 4591 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders,
4592 arraysize(kExtraHeaders)/2, 1)); 4592 arraysize(kExtraHeaders)/2, 1));
4593 MockRead data_reads[] = { 4593 MockRead data_reads[] = {
4594 CreateMockRead(*resp.get(), 1, false), 4594 CreateMockRead(*resp.get(), 1, SYNCHRONOUS),
4595 MockRead(true, 0, 2), // EOF 4595 MockRead(ASYNC, 0, 2), // EOF
4596 }; 4596 };
4597 4597
4598 scoped_ptr<DelayedSocketData> data( 4598 scoped_ptr<DelayedSocketData> data(
4599 new DelayedSocketData( 4599 new DelayedSocketData(
4600 1, // wait for one write to finish before reading. 4600 1, // wait for one write to finish before reading.
4601 data_reads, arraysize(data_reads), 4601 data_reads, arraysize(data_reads),
4602 data_writes, arraysize(data_writes))); 4602 data_writes, arraysize(data_writes)));
4603 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4603 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4604 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 4604 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
4605 proxy_ssl.next_proto = "spdy/2.1"; 4605 proxy_ssl.next_proto = "spdy/2.1";
4606 proxy_ssl.was_npn_negotiated = true; 4606 proxy_ssl.was_npn_negotiated = true;
4607 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 4607 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
4608 4608
4609 session_deps.socket_factory.AddSocketDataProvider(data.get()); 4609 session_deps.socket_factory.AddSocketDataProvider(data.get());
4610 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4610 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4611 4611
4612 TestCompletionCallback callback; 4612 TestCompletionCallback callback;
4613 4613
(...skipping 28 matching lines...) Expand all
4642 MockWrite data_writes[] = { 4642 MockWrite data_writes[] = {
4643 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4643 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4644 "Host: www.google.com\r\n" 4644 "Host: www.google.com\r\n"
4645 "Proxy-Connection: keep-alive\r\n\r\n"), 4645 "Proxy-Connection: keep-alive\r\n\r\n"),
4646 }; 4646 };
4647 4647
4648 MockRead data_reads[] = { 4648 MockRead data_reads[] = {
4649 MockRead("HTTP/1.1 404 Not Found\r\n"), 4649 MockRead("HTTP/1.1 404 Not Found\r\n"),
4650 MockRead("Content-Length: 23\r\n\r\n"), 4650 MockRead("Content-Length: 23\r\n\r\n"),
4651 MockRead("The host does not exist"), 4651 MockRead("The host does not exist"),
4652 MockRead(false, OK), 4652 MockRead(SYNCHRONOUS, OK),
4653 }; 4653 };
4654 4654
4655 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4655 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4656 data_writes, arraysize(data_writes)); 4656 data_writes, arraysize(data_writes));
4657 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4657 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4658 4658
4659 session_deps.socket_factory.AddSocketDataProvider(&data); 4659 session_deps.socket_factory.AddSocketDataProvider(&data);
4660 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4660 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4661 4661
4662 TestCompletionCallback callback; 4662 TestCompletionCallback callback;
4663 4663
4664 scoped_ptr<HttpTransaction> trans( 4664 scoped_ptr<HttpTransaction> trans(
4665 new HttpNetworkTransaction(CreateSession(&session_deps))); 4665 new HttpNetworkTransaction(CreateSession(&session_deps)));
4666 4666
4667 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4667 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
(...skipping 22 matching lines...) Expand all
4690 ProxyService::CreateFixed("https://proxy:70")); 4690 ProxyService::CreateFixed("https://proxy:70"));
4691 4691
4692 HttpRequestInfo request; 4692 HttpRequestInfo request;
4693 request.method = "GET"; 4693 request.method = "GET";
4694 request.url = GURL("https://www.google.com/"); 4694 request.url = GURL("https://www.google.com/");
4695 request.load_flags = 0; 4695 request.load_flags = 0;
4696 4696
4697 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); 4697 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1));
4698 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); 4698 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL));
4699 MockWrite data_writes[] = { 4699 MockWrite data_writes[] = {
4700 CreateMockWrite(*conn.get(), 0, false), 4700 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS),
4701 }; 4701 };
4702 4702
4703 static const char* const kExtraHeaders[] = { 4703 static const char* const kExtraHeaders[] = {
4704 "location", 4704 "location",
4705 "http://login.example.com/", 4705 "http://login.example.com/",
4706 }; 4706 };
4707 scoped_ptr<spdy::SpdyFrame> resp( 4707 scoped_ptr<spdy::SpdyFrame> resp(
4708 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, 4708 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders,
4709 arraysize(kExtraHeaders)/2, 1)); 4709 arraysize(kExtraHeaders)/2, 1));
4710 scoped_ptr<spdy::SpdyFrame> body( 4710 scoped_ptr<spdy::SpdyFrame> body(
4711 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true)); 4711 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true));
4712 MockRead data_reads[] = { 4712 MockRead data_reads[] = {
4713 CreateMockRead(*resp.get(), 1, false), 4713 CreateMockRead(*resp.get(), 1, SYNCHRONOUS),
4714 CreateMockRead(*body.get(), 2, false), 4714 CreateMockRead(*body.get(), 2, SYNCHRONOUS),
4715 MockRead(true, 0, 3), // EOF 4715 MockRead(ASYNC, 0, 3), // EOF
4716 }; 4716 };
4717 4717
4718 scoped_ptr<DelayedSocketData> data( 4718 scoped_ptr<DelayedSocketData> data(
4719 new DelayedSocketData( 4719 new DelayedSocketData(
4720 1, // wait for one write to finish before reading. 4720 1, // wait for one write to finish before reading.
4721 data_reads, arraysize(data_reads), 4721 data_reads, arraysize(data_reads),
4722 data_writes, arraysize(data_writes))); 4722 data_writes, arraysize(data_writes)));
4723 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy 4723 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy
4724 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 4724 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
4725 proxy_ssl.next_proto = "spdy/2.1"; 4725 proxy_ssl.next_proto = "spdy/2.1";
4726 proxy_ssl.was_npn_negotiated = true; 4726 proxy_ssl.was_npn_negotiated = true;
4727 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 4727 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
4728 4728
4729 session_deps.socket_factory.AddSocketDataProvider(data.get()); 4729 session_deps.socket_factory.AddSocketDataProvider(data.get());
4730 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); 4730 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl);
4731 4731
4732 TestCompletionCallback callback; 4732 TestCompletionCallback callback;
4733 4733
(...skipping 30 matching lines...) Expand all
4764 4764
4765 // Attempt to fetch the URL from a server with a bad cert 4765 // Attempt to fetch the URL from a server with a bad cert
4766 MockWrite bad_cert_writes[] = { 4766 MockWrite bad_cert_writes[] = {
4767 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4767 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4768 "Host: www.google.com\r\n" 4768 "Host: www.google.com\r\n"
4769 "Proxy-Connection: keep-alive\r\n\r\n"), 4769 "Proxy-Connection: keep-alive\r\n\r\n"),
4770 }; 4770 };
4771 4771
4772 MockRead bad_cert_reads[] = { 4772 MockRead bad_cert_reads[] = {
4773 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4773 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4774 MockRead(false, OK) 4774 MockRead(SYNCHRONOUS, OK)
4775 }; 4775 };
4776 4776
4777 // Attempt to fetch the URL with a good cert 4777 // Attempt to fetch the URL with a good cert
4778 MockWrite good_data_writes[] = { 4778 MockWrite good_data_writes[] = {
4779 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 4779 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
4780 "Host: www.google.com\r\n" 4780 "Host: www.google.com\r\n"
4781 "Proxy-Connection: keep-alive\r\n\r\n"), 4781 "Proxy-Connection: keep-alive\r\n\r\n"),
4782 MockWrite("GET / HTTP/1.1\r\n" 4782 MockWrite("GET / HTTP/1.1\r\n"
4783 "Host: www.google.com\r\n" 4783 "Host: www.google.com\r\n"
4784 "Connection: keep-alive\r\n\r\n"), 4784 "Connection: keep-alive\r\n\r\n"),
4785 }; 4785 };
4786 4786
4787 MockRead good_cert_reads[] = { 4787 MockRead good_cert_reads[] = {
4788 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), 4788 MockRead("HTTP/1.0 200 Connected\r\n\r\n"),
4789 MockRead("HTTP/1.0 200 OK\r\n"), 4789 MockRead("HTTP/1.0 200 OK\r\n"),
4790 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4790 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4791 MockRead("Content-Length: 100\r\n\r\n"), 4791 MockRead("Content-Length: 100\r\n\r\n"),
4792 MockRead(false, OK), 4792 MockRead(SYNCHRONOUS, OK),
4793 }; 4793 };
4794 4794
4795 StaticSocketDataProvider ssl_bad_certificate( 4795 StaticSocketDataProvider ssl_bad_certificate(
4796 bad_cert_reads, arraysize(bad_cert_reads), 4796 bad_cert_reads, arraysize(bad_cert_reads),
4797 bad_cert_writes, arraysize(bad_cert_writes)); 4797 bad_cert_writes, arraysize(bad_cert_writes));
4798 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads), 4798 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads),
4799 good_data_writes, arraysize(good_data_writes)); 4799 good_data_writes, arraysize(good_data_writes));
4800 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); 4800 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID);
4801 SSLSocketDataProvider ssl(true, OK); 4801 SSLSocketDataProvider ssl(ASYNC, OK);
4802 4802
4803 // SSL to the proxy, then CONNECT request, then SSL with bad certificate 4803 // SSL to the proxy, then CONNECT request, then SSL with bad certificate
4804 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4804 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4805 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); 4805 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate);
4806 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); 4806 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad);
4807 4807
4808 // SSL to the proxy, then CONNECT request, then valid SSL certificate 4808 // SSL to the proxy, then CONNECT request, then valid SSL certificate
4809 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4809 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
4810 session_deps.socket_factory.AddSocketDataProvider(&data); 4810 session_deps.socket_factory.AddSocketDataProvider(&data);
4811 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 4811 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
4849 "Host: www.google.com\r\n" 4849 "Host: www.google.com\r\n"
4850 "Connection: keep-alive\r\n" 4850 "Connection: keep-alive\r\n"
4851 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"), 4851 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"),
4852 }; 4852 };
4853 4853
4854 // Lastly, the server responds with the actual content. 4854 // Lastly, the server responds with the actual content.
4855 MockRead data_reads[] = { 4855 MockRead data_reads[] = {
4856 MockRead("HTTP/1.0 200 OK\r\n"), 4856 MockRead("HTTP/1.0 200 OK\r\n"),
4857 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4857 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4858 MockRead("Content-Length: 100\r\n\r\n"), 4858 MockRead("Content-Length: 100\r\n\r\n"),
4859 MockRead(false, OK), 4859 MockRead(SYNCHRONOUS, OK),
4860 }; 4860 };
4861 4861
4862 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4862 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4863 data_writes, arraysize(data_writes)); 4863 data_writes, arraysize(data_writes));
4864 session_deps.socket_factory.AddSocketDataProvider(&data); 4864 session_deps.socket_factory.AddSocketDataProvider(&data);
4865 4865
4866 TestCompletionCallback callback; 4866 TestCompletionCallback callback;
4867 4867
4868 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4868 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4869 EXPECT_EQ(ERR_IO_PENDING, rv); 4869 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
4927 "Host: www.google.com\r\n" 4927 "Host: www.google.com\r\n"
4928 "Connection: keep-alive\r\n" 4928 "Connection: keep-alive\r\n"
4929 "Referer: http://the.previous.site.com/\r\n\r\n"), 4929 "Referer: http://the.previous.site.com/\r\n\r\n"),
4930 }; 4930 };
4931 4931
4932 // Lastly, the server responds with the actual content. 4932 // Lastly, the server responds with the actual content.
4933 MockRead data_reads[] = { 4933 MockRead data_reads[] = {
4934 MockRead("HTTP/1.0 200 OK\r\n"), 4934 MockRead("HTTP/1.0 200 OK\r\n"),
4935 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4935 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4936 MockRead("Content-Length: 100\r\n\r\n"), 4936 MockRead("Content-Length: 100\r\n\r\n"),
4937 MockRead(false, OK), 4937 MockRead(SYNCHRONOUS, OK),
4938 }; 4938 };
4939 4939
4940 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4940 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4941 data_writes, arraysize(data_writes)); 4941 data_writes, arraysize(data_writes));
4942 session_deps.socket_factory.AddSocketDataProvider(&data); 4942 session_deps.socket_factory.AddSocketDataProvider(&data);
4943 4943
4944 TestCompletionCallback callback; 4944 TestCompletionCallback callback;
4945 4945
4946 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4946 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4947 EXPECT_EQ(ERR_IO_PENDING, rv); 4947 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 16 matching lines...) Expand all
4964 "Host: www.google.com\r\n" 4964 "Host: www.google.com\r\n"
4965 "Connection: keep-alive\r\n" 4965 "Connection: keep-alive\r\n"
4966 "Content-Length: 0\r\n\r\n"), 4966 "Content-Length: 0\r\n\r\n"),
4967 }; 4967 };
4968 4968
4969 // Lastly, the server responds with the actual content. 4969 // Lastly, the server responds with the actual content.
4970 MockRead data_reads[] = { 4970 MockRead data_reads[] = {
4971 MockRead("HTTP/1.0 200 OK\r\n"), 4971 MockRead("HTTP/1.0 200 OK\r\n"),
4972 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 4972 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
4973 MockRead("Content-Length: 100\r\n\r\n"), 4973 MockRead("Content-Length: 100\r\n\r\n"),
4974 MockRead(false, OK), 4974 MockRead(SYNCHRONOUS, OK),
4975 }; 4975 };
4976 4976
4977 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 4977 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
4978 data_writes, arraysize(data_writes)); 4978 data_writes, arraysize(data_writes));
4979 session_deps.socket_factory.AddSocketDataProvider(&data); 4979 session_deps.socket_factory.AddSocketDataProvider(&data);
4980 4980
4981 TestCompletionCallback callback; 4981 TestCompletionCallback callback;
4982 4982
4983 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4983 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
4984 EXPECT_EQ(ERR_IO_PENDING, rv); 4984 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 16 matching lines...) Expand all
5001 "Host: www.google.com\r\n" 5001 "Host: www.google.com\r\n"
5002 "Connection: keep-alive\r\n" 5002 "Connection: keep-alive\r\n"
5003 "Content-Length: 0\r\n\r\n"), 5003 "Content-Length: 0\r\n\r\n"),
5004 }; 5004 };
5005 5005
5006 // Lastly, the server responds with the actual content. 5006 // Lastly, the server responds with the actual content.
5007 MockRead data_reads[] = { 5007 MockRead data_reads[] = {
5008 MockRead("HTTP/1.0 200 OK\r\n"), 5008 MockRead("HTTP/1.0 200 OK\r\n"),
5009 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5009 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5010 MockRead("Content-Length: 100\r\n\r\n"), 5010 MockRead("Content-Length: 100\r\n\r\n"),
5011 MockRead(false, OK), 5011 MockRead(SYNCHRONOUS, OK),
5012 }; 5012 };
5013 5013
5014 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5014 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5015 data_writes, arraysize(data_writes)); 5015 data_writes, arraysize(data_writes));
5016 session_deps.socket_factory.AddSocketDataProvider(&data); 5016 session_deps.socket_factory.AddSocketDataProvider(&data);
5017 5017
5018 TestCompletionCallback callback; 5018 TestCompletionCallback callback;
5019 5019
5020 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5020 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5021 EXPECT_EQ(ERR_IO_PENDING, rv); 5021 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 16 matching lines...) Expand all
5038 "Host: www.google.com\r\n" 5038 "Host: www.google.com\r\n"
5039 "Connection: keep-alive\r\n" 5039 "Connection: keep-alive\r\n"
5040 "Content-Length: 0\r\n\r\n"), 5040 "Content-Length: 0\r\n\r\n"),
5041 }; 5041 };
5042 5042
5043 // Lastly, the server responds with the actual content. 5043 // Lastly, the server responds with the actual content.
5044 MockRead data_reads[] = { 5044 MockRead data_reads[] = {
5045 MockRead("HTTP/1.0 200 OK\r\n"), 5045 MockRead("HTTP/1.0 200 OK\r\n"),
5046 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5046 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5047 MockRead("Content-Length: 100\r\n\r\n"), 5047 MockRead("Content-Length: 100\r\n\r\n"),
5048 MockRead(false, OK), 5048 MockRead(SYNCHRONOUS, OK),
5049 }; 5049 };
5050 5050
5051 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5051 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5052 data_writes, arraysize(data_writes)); 5052 data_writes, arraysize(data_writes));
5053 session_deps.socket_factory.AddSocketDataProvider(&data); 5053 session_deps.socket_factory.AddSocketDataProvider(&data);
5054 5054
5055 TestCompletionCallback callback; 5055 TestCompletionCallback callback;
5056 5056
5057 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5057 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5058 EXPECT_EQ(ERR_IO_PENDING, rv); 5058 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 18 matching lines...) Expand all
5077 "Connection: keep-alive\r\n" 5077 "Connection: keep-alive\r\n"
5078 "Pragma: no-cache\r\n" 5078 "Pragma: no-cache\r\n"
5079 "Cache-Control: no-cache\r\n\r\n"), 5079 "Cache-Control: no-cache\r\n\r\n"),
5080 }; 5080 };
5081 5081
5082 // Lastly, the server responds with the actual content. 5082 // Lastly, the server responds with the actual content.
5083 MockRead data_reads[] = { 5083 MockRead data_reads[] = {
5084 MockRead("HTTP/1.0 200 OK\r\n"), 5084 MockRead("HTTP/1.0 200 OK\r\n"),
5085 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5085 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5086 MockRead("Content-Length: 100\r\n\r\n"), 5086 MockRead("Content-Length: 100\r\n\r\n"),
5087 MockRead(false, OK), 5087 MockRead(SYNCHRONOUS, OK),
5088 }; 5088 };
5089 5089
5090 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5090 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5091 data_writes, arraysize(data_writes)); 5091 data_writes, arraysize(data_writes));
5092 session_deps.socket_factory.AddSocketDataProvider(&data); 5092 session_deps.socket_factory.AddSocketDataProvider(&data);
5093 5093
5094 TestCompletionCallback callback; 5094 TestCompletionCallback callback;
5095 5095
5096 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5096 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5097 EXPECT_EQ(ERR_IO_PENDING, rv); 5097 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 18 matching lines...) Expand all
5116 "Host: www.google.com\r\n" 5116 "Host: www.google.com\r\n"
5117 "Connection: keep-alive\r\n" 5117 "Connection: keep-alive\r\n"
5118 "Cache-Control: max-age=0\r\n\r\n"), 5118 "Cache-Control: max-age=0\r\n\r\n"),
5119 }; 5119 };
5120 5120
5121 // Lastly, the server responds with the actual content. 5121 // Lastly, the server responds with the actual content.
5122 MockRead data_reads[] = { 5122 MockRead data_reads[] = {
5123 MockRead("HTTP/1.0 200 OK\r\n"), 5123 MockRead("HTTP/1.0 200 OK\r\n"),
5124 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5124 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5125 MockRead("Content-Length: 100\r\n\r\n"), 5125 MockRead("Content-Length: 100\r\n\r\n"),
5126 MockRead(false, OK), 5126 MockRead(SYNCHRONOUS, OK),
5127 }; 5127 };
5128 5128
5129 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5129 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5130 data_writes, arraysize(data_writes)); 5130 data_writes, arraysize(data_writes));
5131 session_deps.socket_factory.AddSocketDataProvider(&data); 5131 session_deps.socket_factory.AddSocketDataProvider(&data);
5132 5132
5133 TestCompletionCallback callback; 5133 TestCompletionCallback callback;
5134 5134
5135 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5135 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5136 EXPECT_EQ(ERR_IO_PENDING, rv); 5136 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 17 matching lines...) Expand all
5154 "Host: www.google.com\r\n" 5154 "Host: www.google.com\r\n"
5155 "Connection: keep-alive\r\n" 5155 "Connection: keep-alive\r\n"
5156 "FooHeader: Bar\r\n\r\n"), 5156 "FooHeader: Bar\r\n\r\n"),
5157 }; 5157 };
5158 5158
5159 // Lastly, the server responds with the actual content. 5159 // Lastly, the server responds with the actual content.
5160 MockRead data_reads[] = { 5160 MockRead data_reads[] = {
5161 MockRead("HTTP/1.0 200 OK\r\n"), 5161 MockRead("HTTP/1.0 200 OK\r\n"),
5162 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5162 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5163 MockRead("Content-Length: 100\r\n\r\n"), 5163 MockRead("Content-Length: 100\r\n\r\n"),
5164 MockRead(false, OK), 5164 MockRead(SYNCHRONOUS, OK),
5165 }; 5165 };
5166 5166
5167 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5167 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5168 data_writes, arraysize(data_writes)); 5168 data_writes, arraysize(data_writes));
5169 session_deps.socket_factory.AddSocketDataProvider(&data); 5169 session_deps.socket_factory.AddSocketDataProvider(&data);
5170 5170
5171 TestCompletionCallback callback; 5171 TestCompletionCallback callback;
5172 5172
5173 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5173 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5174 EXPECT_EQ(ERR_IO_PENDING, rv); 5174 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 21 matching lines...) Expand all
5196 "referer: www.foo.com\r\n" 5196 "referer: www.foo.com\r\n"
5197 "hEllo: Kitty\r\n" 5197 "hEllo: Kitty\r\n"
5198 "FoO: bar\r\n\r\n"), 5198 "FoO: bar\r\n\r\n"),
5199 }; 5199 };
5200 5200
5201 // Lastly, the server responds with the actual content. 5201 // Lastly, the server responds with the actual content.
5202 MockRead data_reads[] = { 5202 MockRead data_reads[] = {
5203 MockRead("HTTP/1.0 200 OK\r\n"), 5203 MockRead("HTTP/1.0 200 OK\r\n"),
5204 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5204 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5205 MockRead("Content-Length: 100\r\n\r\n"), 5205 MockRead("Content-Length: 100\r\n\r\n"),
5206 MockRead(false, OK), 5206 MockRead(SYNCHRONOUS, OK),
5207 }; 5207 };
5208 5208
5209 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5209 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5210 data_writes, arraysize(data_writes)); 5210 data_writes, arraysize(data_writes));
5211 session_deps.socket_factory.AddSocketDataProvider(&data); 5211 session_deps.socket_factory.AddSocketDataProvider(&data);
5212 5212
5213 TestCompletionCallback callback; 5213 TestCompletionCallback callback;
5214 5214
5215 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5215 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5216 EXPECT_EQ(ERR_IO_PENDING, rv); 5216 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 18 matching lines...) Expand all
5235 SessionDependencies session_deps( 5235 SessionDependencies session_deps(
5236 ProxyService::CreateFixed("socks4://myproxy:1080")); 5236 ProxyService::CreateFixed("socks4://myproxy:1080"));
5237 5237
5238 scoped_ptr<HttpTransaction> trans( 5238 scoped_ptr<HttpTransaction> trans(
5239 new HttpNetworkTransaction(CreateSession(&session_deps))); 5239 new HttpNetworkTransaction(CreateSession(&session_deps)));
5240 5240
5241 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; 5241 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 };
5242 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 5242 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
5243 5243
5244 MockWrite data_writes[] = { 5244 MockWrite data_writes[] = {
5245 MockWrite(true, write_buffer, arraysize(write_buffer)), 5245 MockWrite(ASYNC, write_buffer, arraysize(write_buffer)),
5246 MockWrite("GET / HTTP/1.1\r\n" 5246 MockWrite("GET / HTTP/1.1\r\n"
5247 "Host: www.google.com\r\n" 5247 "Host: www.google.com\r\n"
5248 "Connection: keep-alive\r\n\r\n") 5248 "Connection: keep-alive\r\n\r\n")
5249 }; 5249 };
5250 5250
5251 MockRead data_reads[] = { 5251 MockRead data_reads[] = {
5252 MockRead(true, read_buffer, arraysize(read_buffer)), 5252 MockRead(ASYNC, read_buffer, arraysize(read_buffer)),
5253 MockRead("HTTP/1.0 200 OK\r\n"), 5253 MockRead("HTTP/1.0 200 OK\r\n"),
5254 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5254 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5255 MockRead("Payload"), 5255 MockRead("Payload"),
5256 MockRead(false, OK) 5256 MockRead(SYNCHRONOUS, OK)
5257 }; 5257 };
5258 5258
5259 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5259 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5260 data_writes, arraysize(data_writes)); 5260 data_writes, arraysize(data_writes));
5261 session_deps.socket_factory.AddSocketDataProvider(&data); 5261 session_deps.socket_factory.AddSocketDataProvider(&data);
5262 5262
5263 TestCompletionCallback callback; 5263 TestCompletionCallback callback;
5264 5264
5265 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5265 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5266 EXPECT_EQ(ERR_IO_PENDING, rv); 5266 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 26 matching lines...) Expand all
5293 SessionDependencies session_deps( 5293 SessionDependencies session_deps(
5294 ProxyService::CreateFixed("socks4://myproxy:1080")); 5294 ProxyService::CreateFixed("socks4://myproxy:1080"));
5295 5295
5296 scoped_ptr<HttpTransaction> trans( 5296 scoped_ptr<HttpTransaction> trans(
5297 new HttpNetworkTransaction(CreateSession(&session_deps))); 5297 new HttpNetworkTransaction(CreateSession(&session_deps)));
5298 5298
5299 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; 5299 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 };
5300 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; 5300 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 };
5301 5301
5302 MockWrite data_writes[] = { 5302 MockWrite data_writes[] = {
5303 MockWrite(true, reinterpret_cast<char*>(write_buffer), 5303 MockWrite(ASYNC, reinterpret_cast<char*>(write_buffer),
5304 arraysize(write_buffer)), 5304 arraysize(write_buffer)),
5305 MockWrite("GET / HTTP/1.1\r\n" 5305 MockWrite("GET / HTTP/1.1\r\n"
5306 "Host: www.google.com\r\n" 5306 "Host: www.google.com\r\n"
5307 "Connection: keep-alive\r\n\r\n") 5307 "Connection: keep-alive\r\n\r\n")
5308 }; 5308 };
5309 5309
5310 MockRead data_reads[] = { 5310 MockRead data_reads[] = {
5311 MockWrite(true, reinterpret_cast<char*>(read_buffer), 5311 MockWrite(ASYNC, reinterpret_cast<char*>(read_buffer),
5312 arraysize(read_buffer)), 5312 arraysize(read_buffer)),
5313 MockRead("HTTP/1.0 200 OK\r\n"), 5313 MockRead("HTTP/1.0 200 OK\r\n"),
5314 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5314 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5315 MockRead("Payload"), 5315 MockRead("Payload"),
5316 MockRead(false, OK) 5316 MockRead(SYNCHRONOUS, OK)
5317 }; 5317 };
5318 5318
5319 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5319 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5320 data_writes, arraysize(data_writes)); 5320 data_writes, arraysize(data_writes));
5321 session_deps.socket_factory.AddSocketDataProvider(&data); 5321 session_deps.socket_factory.AddSocketDataProvider(&data);
5322 5322
5323 SSLSocketDataProvider ssl(true, OK); 5323 SSLSocketDataProvider ssl(ASYNC, OK);
5324 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 5324 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
5325 5325
5326 TestCompletionCallback callback; 5326 TestCompletionCallback callback;
5327 5327
5328 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5328 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5329 EXPECT_EQ(ERR_IO_PENDING, rv); 5329 EXPECT_EQ(ERR_IO_PENDING, rv);
5330 5330
5331 rv = callback.WaitForResult(); 5331 rv = callback.WaitForResult();
5332 EXPECT_EQ(OK, rv); 5332 EXPECT_EQ(OK, rv);
5333 5333
(...skipping 27 matching lines...) Expand all
5361 0x03, // Address type (DOMAINNAME). 5361 0x03, // Address type (DOMAINNAME).
5362 0x0E, // Length of domain (14) 5362 0x0E, // Length of domain (14)
5363 // Domain string: 5363 // Domain string:
5364 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', 5364 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm',
5365 0x00, 0x50, // 16-bit port (80) 5365 0x00, 0x50, // 16-bit port (80)
5366 }; 5366 };
5367 const char kSOCKS5OkResponse[] = 5367 const char kSOCKS5OkResponse[] =
5368 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; 5368 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 };
5369 5369
5370 MockWrite data_writes[] = { 5370 MockWrite data_writes[] = {
5371 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), 5371 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)),
5372 MockWrite(true, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), 5372 MockWrite(ASYNC, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)),
5373 MockWrite("GET / HTTP/1.1\r\n" 5373 MockWrite("GET / HTTP/1.1\r\n"
5374 "Host: www.google.com\r\n" 5374 "Host: www.google.com\r\n"
5375 "Connection: keep-alive\r\n\r\n") 5375 "Connection: keep-alive\r\n\r\n")
5376 }; 5376 };
5377 5377
5378 MockRead data_reads[] = { 5378 MockRead data_reads[] = {
5379 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), 5379 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)),
5380 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), 5380 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)),
5381 MockRead("HTTP/1.0 200 OK\r\n"), 5381 MockRead("HTTP/1.0 200 OK\r\n"),
5382 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5382 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5383 MockRead("Payload"), 5383 MockRead("Payload"),
5384 MockRead(false, OK) 5384 MockRead(SYNCHRONOUS, OK)
5385 }; 5385 };
5386 5386
5387 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5387 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5388 data_writes, arraysize(data_writes)); 5388 data_writes, arraysize(data_writes));
5389 session_deps.socket_factory.AddSocketDataProvider(&data); 5389 session_deps.socket_factory.AddSocketDataProvider(&data);
5390 5390
5391 TestCompletionCallback callback; 5391 TestCompletionCallback callback;
5392 5392
5393 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5393 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5394 EXPECT_EQ(ERR_IO_PENDING, rv); 5394 EXPECT_EQ(ERR_IO_PENDING, rv);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
5427 0x0E, // Length of domain (14) 5427 0x0E, // Length of domain (14)
5428 // Domain string: 5428 // Domain string:
5429 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', 5429 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm',
5430 0x01, 0xBB, // 16-bit port (443) 5430 0x01, 0xBB, // 16-bit port (443)
5431 }; 5431 };
5432 5432
5433 const char kSOCKS5OkResponse[] = 5433 const char kSOCKS5OkResponse[] =
5434 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; 5434 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 };
5435 5435
5436 MockWrite data_writes[] = { 5436 MockWrite data_writes[] = {
5437 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), 5437 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)),
5438 MockWrite(true, reinterpret_cast<const char*>(kSOCKS5OkRequest), 5438 MockWrite(ASYNC, reinterpret_cast<const char*>(kSOCKS5OkRequest),
5439 arraysize(kSOCKS5OkRequest)), 5439 arraysize(kSOCKS5OkRequest)),
5440 MockWrite("GET / HTTP/1.1\r\n" 5440 MockWrite("GET / HTTP/1.1\r\n"
5441 "Host: www.google.com\r\n" 5441 "Host: www.google.com\r\n"
5442 "Connection: keep-alive\r\n\r\n") 5442 "Connection: keep-alive\r\n\r\n")
5443 }; 5443 };
5444 5444
5445 MockRead data_reads[] = { 5445 MockRead data_reads[] = {
5446 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), 5446 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)),
5447 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), 5447 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)),
5448 MockRead("HTTP/1.0 200 OK\r\n"), 5448 MockRead("HTTP/1.0 200 OK\r\n"),
5449 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), 5449 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"),
5450 MockRead("Payload"), 5450 MockRead("Payload"),
5451 MockRead(false, OK) 5451 MockRead(SYNCHRONOUS, OK)
5452 }; 5452 };
5453 5453
5454 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 5454 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
5455 data_writes, arraysize(data_writes)); 5455 data_writes, arraysize(data_writes));
5456 session_deps.socket_factory.AddSocketDataProvider(&data); 5456 session_deps.socket_factory.AddSocketDataProvider(&data);
5457 5457
5458 SSLSocketDataProvider ssl(true, OK); 5458 SSLSocketDataProvider ssl(ASYNC, OK);
5459 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 5459 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
5460 5460
5461 TestCompletionCallback callback; 5461 TestCompletionCallback callback;
5462 5462
5463 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5463 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5464 EXPECT_EQ(ERR_IO_PENDING, rv); 5464 EXPECT_EQ(ERR_IO_PENDING, rv);
5465 5465
5466 rv = callback.WaitForResult(); 5466 rv = callback.WaitForResult();
5467 EXPECT_EQ(OK, rv); 5467 EXPECT_EQ(OK, rv);
5468 5468
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
5773 callback.callback(), NULL, BoundNetLog()); 5773 callback.callback(), NULL, BoundNetLog());
5774 ASSERT_EQ(OK, rv); 5774 ASSERT_EQ(OK, rv);
5775 5775
5776 // Inject a failure the next time that "www.google.com" is resolved. This way 5776 // Inject a failure the next time that "www.google.com" is resolved. This way
5777 // we can tell if the next lookup hit the cache, or the "network". 5777 // we can tell if the next lookup hit the cache, or the "network".
5778 // (cache --> success, "network" --> failure). 5778 // (cache --> success, "network" --> failure).
5779 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); 5779 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com");
5780 5780
5781 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the 5781 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the
5782 // first read -- this won't be reached as the host resolution will fail first. 5782 // first read -- this won't be reached as the host resolution will fail first.
5783 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; 5783 MockRead data_reads[] = { MockRead(SYNCHRONOUS, ERR_UNEXPECTED) };
5784 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 5784 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
5785 session_deps.socket_factory.AddSocketDataProvider(&data); 5785 session_deps.socket_factory.AddSocketDataProvider(&data);
5786 5786
5787 // Run the request. 5787 // Run the request.
5788 rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5788 rv = trans->Start(&request, callback.callback(), BoundNetLog());
5789 ASSERT_EQ(ERR_IO_PENDING, rv); 5789 ASSERT_EQ(ERR_IO_PENDING, rv);
5790 rv = callback.WaitForResult(); 5790 rv = callback.WaitForResult();
5791 5791
5792 // If we bypassed the cache, we would have gotten a failure while resolving 5792 // If we bypassed the cache, we would have gotten a failure while resolving
5793 // "www.google.com". 5793 // "www.google.com".
(...skipping 18 matching lines...) Expand all
5812 TEST_F(HttpNetworkTransactionTest, RequestWriteError) { 5812 TEST_F(HttpNetworkTransactionTest, RequestWriteError) {
5813 SessionDependencies session_deps; 5813 SessionDependencies session_deps;
5814 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 5814 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
5815 5815
5816 HttpRequestInfo request; 5816 HttpRequestInfo request;
5817 request.method = "GET"; 5817 request.method = "GET";
5818 request.url = GURL("http://www.foo.com/"); 5818 request.url = GURL("http://www.foo.com/");
5819 request.load_flags = 0; 5819 request.load_flags = 0;
5820 5820
5821 MockWrite write_failure[] = { 5821 MockWrite write_failure[] = {
5822 MockWrite(true, ERR_CONNECTION_RESET), 5822 MockWrite(ASYNC, ERR_CONNECTION_RESET),
5823 }; 5823 };
5824 StaticSocketDataProvider data(NULL, 0, 5824 StaticSocketDataProvider data(NULL, 0,
5825 write_failure, arraysize(write_failure)); 5825 write_failure, arraysize(write_failure));
5826 session_deps.socket_factory.AddSocketDataProvider(&data); 5826 session_deps.socket_factory.AddSocketDataProvider(&data);
5827 5827
5828 TestCompletionCallback callback; 5828 TestCompletionCallback callback;
5829 5829
5830 scoped_ptr<HttpTransaction> trans( 5830 scoped_ptr<HttpTransaction> trans(
5831 new HttpNetworkTransaction(CreateSession(&session_deps))); 5831 new HttpNetworkTransaction(CreateSession(&session_deps)));
5832 5832
5833 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 5833 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5834 EXPECT_EQ(ERR_IO_PENDING, rv); 5834 EXPECT_EQ(ERR_IO_PENDING, rv);
5835 5835
5836 rv = callback.WaitForResult(); 5836 rv = callback.WaitForResult();
5837 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 5837 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
5838 } 5838 }
5839 5839
5840 // Check that a connection closed after the start of the headers finishes ok. 5840 // Check that a connection closed after the start of the headers finishes ok.
5841 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { 5841 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) {
5842 SessionDependencies session_deps; 5842 SessionDependencies session_deps;
5843 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 5843 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
5844 5844
5845 HttpRequestInfo request; 5845 HttpRequestInfo request;
5846 request.method = "GET"; 5846 request.method = "GET";
5847 request.url = GURL("http://www.foo.com/"); 5847 request.url = GURL("http://www.foo.com/");
5848 request.load_flags = 0; 5848 request.load_flags = 0;
5849 5849
5850 MockRead data_reads[] = { 5850 MockRead data_reads[] = {
5851 MockRead("HTTP/1."), 5851 MockRead("HTTP/1."),
5852 MockRead(false, OK), 5852 MockRead(SYNCHRONOUS, OK),
5853 }; 5853 };
5854 5854
5855 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 5855 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
5856 session_deps.socket_factory.AddSocketDataProvider(&data); 5856 session_deps.socket_factory.AddSocketDataProvider(&data);
5857 5857
5858 TestCompletionCallback callback; 5858 TestCompletionCallback callback;
5859 5859
5860 scoped_ptr<HttpTransaction> trans( 5860 scoped_ptr<HttpTransaction> trans(
5861 new HttpNetworkTransaction(CreateSession(&session_deps))); 5861 new HttpNetworkTransaction(CreateSession(&session_deps)));
5862 5862
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
5894 "Host: www.google.com\r\n" 5894 "Host: www.google.com\r\n"
5895 "Connection: keep-alive\r\n\r\n"), 5895 "Connection: keep-alive\r\n\r\n"),
5896 }; 5896 };
5897 5897
5898 MockRead data_reads1[] = { 5898 MockRead data_reads1[] = {
5899 MockRead("HTTP/1.1 401 Unauthorized\r\n"), 5899 MockRead("HTTP/1.1 401 Unauthorized\r\n"),
5900 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 5900 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
5901 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5901 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5902 MockRead("Content-Length: 14\r\n\r\n"), 5902 MockRead("Content-Length: 14\r\n\r\n"),
5903 MockRead("Unauth"), 5903 MockRead("Unauth"),
5904 MockRead(true, ERR_CONNECTION_RESET), 5904 MockRead(ASYNC, ERR_CONNECTION_RESET),
5905 }; 5905 };
5906 5906
5907 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 5907 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
5908 data_writes1, arraysize(data_writes1)); 5908 data_writes1, arraysize(data_writes1));
5909 session_deps.socket_factory.AddSocketDataProvider(&data1); 5909 session_deps.socket_factory.AddSocketDataProvider(&data1);
5910 5910
5911 // After calling trans->RestartWithAuth(), this is the request we should 5911 // After calling trans->RestartWithAuth(), this is the request we should
5912 // be issuing -- the final header line contains the credentials. 5912 // be issuing -- the final header line contains the credentials.
5913 MockWrite data_writes2[] = { 5913 MockWrite data_writes2[] = {
5914 MockWrite("GET / HTTP/1.1\r\n" 5914 MockWrite("GET / HTTP/1.1\r\n"
5915 "Host: www.google.com\r\n" 5915 "Host: www.google.com\r\n"
5916 "Connection: keep-alive\r\n" 5916 "Connection: keep-alive\r\n"
5917 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 5917 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
5918 }; 5918 };
5919 5919
5920 // Lastly, the server responds with the actual content. 5920 // Lastly, the server responds with the actual content.
5921 MockRead data_reads2[] = { 5921 MockRead data_reads2[] = {
5922 MockRead("HTTP/1.1 200 OK\r\n"), 5922 MockRead("HTTP/1.1 200 OK\r\n"),
5923 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 5923 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
5924 MockRead("Content-Length: 100\r\n\r\n"), 5924 MockRead("Content-Length: 100\r\n\r\n"),
5925 MockRead(false, OK), 5925 MockRead(SYNCHRONOUS, OK),
5926 }; 5926 };
5927 5927
5928 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 5928 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
5929 data_writes2, arraysize(data_writes2)); 5929 data_writes2, arraysize(data_writes2));
5930 session_deps.socket_factory.AddSocketDataProvider(&data2); 5930 session_deps.socket_factory.AddSocketDataProvider(&data2);
5931 5931
5932 TestCompletionCallback callback1; 5932 TestCompletionCallback callback1;
5933 5933
5934 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 5934 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
5935 5935
(...skipping 26 matching lines...) Expand all
5962 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { 5962 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) {
5963 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70")); 5963 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70"));
5964 5964
5965 HttpRequestInfo request; 5965 HttpRequestInfo request;
5966 request.method = "GET"; 5966 request.method = "GET";
5967 request.url = GURL("https://www.google.com/"); 5967 request.url = GURL("https://www.google.com/");
5968 request.load_flags = 0; 5968 request.load_flags = 0;
5969 5969
5970 MockRead proxy_reads[] = { 5970 MockRead proxy_reads[] = {
5971 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), 5971 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"),
5972 MockRead(false, OK) 5972 MockRead(SYNCHRONOUS, OK)
5973 }; 5973 };
5974 5974
5975 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0); 5975 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0);
5976 SSLSocketDataProvider ssl(true, OK); 5976 SSLSocketDataProvider ssl(ASYNC, OK);
5977 5977
5978 session_deps.socket_factory.AddSocketDataProvider(&data); 5978 session_deps.socket_factory.AddSocketDataProvider(&data);
5979 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 5979 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
5980 5980
5981 TestCompletionCallback callback; 5981 TestCompletionCallback callback;
5982 5982
5983 session_deps.socket_factory.ResetNextMockIndexes(); 5983 session_deps.socket_factory.ResetNextMockIndexes();
5984 5984
5985 scoped_ptr<HttpTransaction> trans( 5985 scoped_ptr<HttpTransaction> trans(
5986 new HttpNetworkTransaction(CreateSession(&session_deps))); 5986 new HttpNetworkTransaction(CreateSession(&session_deps)));
(...skipping 10 matching lines...) Expand all
5997 request.method = "GET"; 5997 request.method = "GET";
5998 request.url = GURL("http://www.google.com/"); 5998 request.url = GURL("http://www.google.com/");
5999 request.load_flags = 0; 5999 request.load_flags = 0;
6000 6000
6001 SessionDependencies session_deps; 6001 SessionDependencies session_deps;
6002 scoped_ptr<HttpTransaction> trans( 6002 scoped_ptr<HttpTransaction> trans(
6003 new HttpNetworkTransaction(CreateSession(&session_deps))); 6003 new HttpNetworkTransaction(CreateSession(&session_deps)));
6004 6004
6005 MockRead data_reads[] = { 6005 MockRead data_reads[] = {
6006 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), 6006 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"),
6007 MockRead(false, OK), 6007 MockRead(SYNCHRONOUS, OK),
6008 }; 6008 };
6009 6009
6010 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 6010 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
6011 session_deps.socket_factory.AddSocketDataProvider(&data); 6011 session_deps.socket_factory.AddSocketDataProvider(&data);
6012 6012
6013 TestCompletionCallback callback; 6013 TestCompletionCallback callback;
6014 6014
6015 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 6015 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
6016 EXPECT_EQ(ERR_IO_PENDING, rv); 6016 EXPECT_EQ(ERR_IO_PENDING, rv);
6017 6017
(...skipping 29 matching lines...) Expand all
6047 UploadData::Element element; 6047 UploadData::Element element;
6048 element.SetToFilePath(temp_file_path); 6048 element.SetToFilePath(temp_file_path);
6049 element.SetContentLength(kFakeSize); 6049 element.SetContentLength(kFakeSize);
6050 elements.push_back(element); 6050 elements.push_back(element);
6051 request.upload_data->SetElements(elements); 6051 request.upload_data->SetElements(elements);
6052 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync()); 6052 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync());
6053 6053
6054 MockRead data_reads[] = { 6054 MockRead data_reads[] = {
6055 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 6055 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
6056 MockRead("hello world"), 6056 MockRead("hello world"),
6057 MockRead(false, OK), 6057 MockRead(SYNCHRONOUS, OK),
6058 }; 6058 };
6059 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 6059 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
6060 session_deps.socket_factory.AddSocketDataProvider(&data); 6060 session_deps.socket_factory.AddSocketDataProvider(&data);
6061 6061
6062 TestCompletionCallback callback; 6062 TestCompletionCallback callback;
6063 6063
6064 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 6064 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
6065 EXPECT_EQ(ERR_IO_PENDING, rv); 6065 EXPECT_EQ(ERR_IO_PENDING, rv);
6066 6066
6067 rv = callback.WaitForResult(); 6067 rv = callback.WaitForResult();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
6102 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); 6102 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file));
6103 6103
6104 std::vector<UploadData::Element> elements; 6104 std::vector<UploadData::Element> elements;
6105 UploadData::Element element; 6105 UploadData::Element element;
6106 element.SetToFilePath(temp_file); 6106 element.SetToFilePath(temp_file);
6107 elements.push_back(element); 6107 elements.push_back(element);
6108 request.upload_data->SetElements(elements); 6108 request.upload_data->SetElements(elements);
6109 6109
6110 MockRead data_reads[] = { 6110 MockRead data_reads[] = {
6111 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 6111 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
6112 MockRead(false, OK), 6112 MockRead(SYNCHRONOUS, OK),
6113 }; 6113 };
6114 MockWrite data_writes[] = { 6114 MockWrite data_writes[] = {
6115 MockWrite("POST /upload HTTP/1.1\r\n" 6115 MockWrite("POST /upload HTTP/1.1\r\n"
6116 "Host: www.google.com\r\n" 6116 "Host: www.google.com\r\n"
6117 "Connection: keep-alive\r\n" 6117 "Connection: keep-alive\r\n"
6118 "Content-Length: 0\r\n\r\n"), 6118 "Content-Length: 0\r\n\r\n"),
6119 MockWrite(false, OK), 6119 MockWrite(SYNCHRONOUS, OK),
6120 }; 6120 };
6121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, 6121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes,
6122 arraysize(data_writes)); 6122 arraysize(data_writes));
6123 session_deps.socket_factory.AddSocketDataProvider(&data); 6123 session_deps.socket_factory.AddSocketDataProvider(&data);
6124 6124
6125 TestCompletionCallback callback; 6125 TestCompletionCallback callback;
6126 6126
6127 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 6127 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
6128 EXPECT_EQ(ERR_IO_PENDING, rv); 6128 EXPECT_EQ(ERR_IO_PENDING, rv);
6129 6129
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
6162 elements.push_back(element); 6162 elements.push_back(element);
6163 request.upload_data->SetElements(elements); 6163 request.upload_data->SetElements(elements);
6164 6164
6165 MockRead data_reads[] = { 6165 MockRead data_reads[] = {
6166 MockRead("HTTP/1.1 401 Unauthorized\r\n"), 6166 MockRead("HTTP/1.1 401 Unauthorized\r\n"),
6167 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 6167 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
6168 MockRead("Content-Length: 0\r\n\r\n"), // No response body. 6168 MockRead("Content-Length: 0\r\n\r\n"), // No response body.
6169 6169
6170 MockRead("HTTP/1.1 200 OK\r\n"), 6170 MockRead("HTTP/1.1 200 OK\r\n"),
6171 MockRead("Content-Length: 0\r\n\r\n"), 6171 MockRead("Content-Length: 0\r\n\r\n"),
6172 MockRead(false, OK), 6172 MockRead(SYNCHRONOUS, OK),
6173 }; 6173 };
6174 MockWrite data_writes[] = { 6174 MockWrite data_writes[] = {
6175 MockWrite("POST /upload HTTP/1.1\r\n" 6175 MockWrite("POST /upload HTTP/1.1\r\n"
6176 "Host: www.google.com\r\n" 6176 "Host: www.google.com\r\n"
6177 "Connection: keep-alive\r\n" 6177 "Connection: keep-alive\r\n"
6178 "Content-Length: 16\r\n\r\n"), 6178 "Content-Length: 16\r\n\r\n"),
6179 MockWrite(false, temp_file_contents.c_str()), 6179 MockWrite(SYNCHRONOUS, temp_file_contents.c_str()),
6180 6180
6181 MockWrite("POST /upload HTTP/1.1\r\n" 6181 MockWrite("POST /upload HTTP/1.1\r\n"
6182 "Host: www.google.com\r\n" 6182 "Host: www.google.com\r\n"
6183 "Connection: keep-alive\r\n" 6183 "Connection: keep-alive\r\n"
6184 "Content-Length: 16\r\n" 6184 "Content-Length: 16\r\n"
6185 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 6185 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
6186 MockWrite(false, unreadable_contents.c_str(), temp_file_contents.length()), 6186 MockWrite(SYNCHRONOUS, unreadable_contents.c_str(),
6187 MockWrite(false, OK), 6187 temp_file_contents.length()),
6188 MockWrite(SYNCHRONOUS, OK),
6188 }; 6189 };
6189 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, 6190 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes,
6190 arraysize(data_writes)); 6191 arraysize(data_writes));
6191 session_deps.socket_factory.AddSocketDataProvider(&data); 6192 session_deps.socket_factory.AddSocketDataProvider(&data);
6192 6193
6193 TestCompletionCallback callback1; 6194 TestCompletionCallback callback1;
6194 6195
6195 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 6196 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
6196 EXPECT_EQ(ERR_IO_PENDING, rv); 6197 EXPECT_EQ(ERR_IO_PENDING, rv);
6197 6198
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
6381 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { 6382 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) {
6382 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL)); 6383 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL));
6383 HttpStreamFactory::set_use_alternate_protocols(true); 6384 HttpStreamFactory::set_use_alternate_protocols(true);
6384 6385
6385 SessionDependencies session_deps; 6386 SessionDependencies session_deps;
6386 6387
6387 MockRead data_reads[] = { 6388 MockRead data_reads[] = {
6388 MockRead("HTTP/1.1 200 OK\r\n"), 6389 MockRead("HTTP/1.1 200 OK\r\n"),
6389 MockRead(kAlternateProtocolHttpHeader), 6390 MockRead(kAlternateProtocolHttpHeader),
6390 MockRead("hello world"), 6391 MockRead("hello world"),
6391 MockRead(false, OK), 6392 MockRead(SYNCHRONOUS, OK),
6392 }; 6393 };
6393 6394
6394 HttpRequestInfo request; 6395 HttpRequestInfo request;
6395 request.method = "GET"; 6396 request.method = "GET";
6396 request.url = GURL("http://www.google.com/"); 6397 request.url = GURL("http://www.google.com/");
6397 request.load_flags = 0; 6398 request.load_flags = 0;
6398 6399
6399 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 6400 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
6400 6401
6401 session_deps.socket_factory.AddSocketDataProvider(&data); 6402 session_deps.socket_factory.AddSocketDataProvider(&data);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
6449 request.load_flags = 0; 6450 request.load_flags = 0;
6450 6451
6451 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6452 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6452 StaticSocketDataProvider first_data; 6453 StaticSocketDataProvider first_data;
6453 first_data.set_connect_data(mock_connect); 6454 first_data.set_connect_data(mock_connect);
6454 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6455 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6455 6456
6456 MockRead data_reads[] = { 6457 MockRead data_reads[] = {
6457 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6458 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6458 MockRead("hello world"), 6459 MockRead("hello world"),
6459 MockRead(true, OK), 6460 MockRead(ASYNC, OK),
6460 }; 6461 };
6461 StaticSocketDataProvider second_data( 6462 StaticSocketDataProvider second_data(
6462 data_reads, arraysize(data_reads), NULL, 0); 6463 data_reads, arraysize(data_reads), NULL, 0);
6463 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6464 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6464 6465
6465 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6466 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6466 6467
6467 HttpServerProperties* http_server_properties = 6468 HttpServerProperties* http_server_properties =
6468 session->http_server_properties(); 6469 session->http_server_properties();
6469 // Port must be < 1024, or the header will be ignored (since initial port was 6470 // 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
6512 restricted_port_request.load_flags = 0; 6513 restricted_port_request.load_flags = 0;
6513 6514
6514 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6515 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6515 StaticSocketDataProvider first_data; 6516 StaticSocketDataProvider first_data;
6516 first_data.set_connect_data(mock_connect); 6517 first_data.set_connect_data(mock_connect);
6517 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6518 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6518 6519
6519 MockRead data_reads[] = { 6520 MockRead data_reads[] = {
6520 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6521 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6521 MockRead("hello world"), 6522 MockRead("hello world"),
6522 MockRead(true, OK), 6523 MockRead(ASYNC, OK),
6523 }; 6524 };
6524 StaticSocketDataProvider second_data( 6525 StaticSocketDataProvider second_data(
6525 data_reads, arraysize(data_reads), NULL, 0); 6526 data_reads, arraysize(data_reads), NULL, 0);
6526 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6527 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6527 6528
6528 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6529 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6529 6530
6530 HttpServerProperties* http_server_properties = 6531 HttpServerProperties* http_server_properties =
6531 session->http_server_properties(); 6532 session->http_server_properties();
6532 const int kUnrestrictedAlternatePort = 1024; 6533 const int kUnrestrictedAlternatePort = 1024;
(...skipping 28 matching lines...) Expand all
6561 restricted_port_request.load_flags = 0; 6562 restricted_port_request.load_flags = 0;
6562 6563
6563 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6564 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6564 StaticSocketDataProvider first_data; 6565 StaticSocketDataProvider first_data;
6565 first_data.set_connect_data(mock_connect); 6566 first_data.set_connect_data(mock_connect);
6566 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6567 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6567 6568
6568 MockRead data_reads[] = { 6569 MockRead data_reads[] = {
6569 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6570 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6570 MockRead("hello world"), 6571 MockRead("hello world"),
6571 MockRead(true, OK), 6572 MockRead(ASYNC, OK),
6572 }; 6573 };
6573 StaticSocketDataProvider second_data( 6574 StaticSocketDataProvider second_data(
6574 data_reads, arraysize(data_reads), NULL, 0); 6575 data_reads, arraysize(data_reads), NULL, 0);
6575 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6576 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6576 6577
6577 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6578 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6578 6579
6579 HttpServerProperties* http_server_properties = 6580 HttpServerProperties* http_server_properties =
6580 session->http_server_properties(); 6581 session->http_server_properties();
6581 const int kRestrictedAlternatePort = 80; 6582 const int kRestrictedAlternatePort = 80;
(...skipping 28 matching lines...) Expand all
6610 unrestricted_port_request.load_flags = 0; 6611 unrestricted_port_request.load_flags = 0;
6611 6612
6612 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6613 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6613 StaticSocketDataProvider first_data; 6614 StaticSocketDataProvider first_data;
6614 first_data.set_connect_data(mock_connect); 6615 first_data.set_connect_data(mock_connect);
6615 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6616 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6616 6617
6617 MockRead data_reads[] = { 6618 MockRead data_reads[] = {
6618 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6619 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6619 MockRead("hello world"), 6620 MockRead("hello world"),
6620 MockRead(true, OK), 6621 MockRead(ASYNC, OK),
6621 }; 6622 };
6622 StaticSocketDataProvider second_data( 6623 StaticSocketDataProvider second_data(
6623 data_reads, arraysize(data_reads), NULL, 0); 6624 data_reads, arraysize(data_reads), NULL, 0);
6624 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6625 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6625 6626
6626 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6627 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6627 6628
6628 HttpServerProperties* http_server_properties = 6629 HttpServerProperties* http_server_properties =
6629 session->http_server_properties(); 6630 session->http_server_properties();
6630 const int kRestrictedAlternatePort = 80; 6631 const int kRestrictedAlternatePort = 80;
(...skipping 28 matching lines...) Expand all
6659 unrestricted_port_request.load_flags = 0; 6660 unrestricted_port_request.load_flags = 0;
6660 6661
6661 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); 6662 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED);
6662 StaticSocketDataProvider first_data; 6663 StaticSocketDataProvider first_data;
6663 first_data.set_connect_data(mock_connect); 6664 first_data.set_connect_data(mock_connect);
6664 session_deps.socket_factory.AddSocketDataProvider(&first_data); 6665 session_deps.socket_factory.AddSocketDataProvider(&first_data);
6665 6666
6666 MockRead data_reads[] = { 6667 MockRead data_reads[] = {
6667 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6668 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6668 MockRead("hello world"), 6669 MockRead("hello world"),
6669 MockRead(true, OK), 6670 MockRead(ASYNC, OK),
6670 }; 6671 };
6671 StaticSocketDataProvider second_data( 6672 StaticSocketDataProvider second_data(
6672 data_reads, arraysize(data_reads), NULL, 0); 6673 data_reads, arraysize(data_reads), NULL, 0);
6673 session_deps.socket_factory.AddSocketDataProvider(&second_data); 6674 session_deps.socket_factory.AddSocketDataProvider(&second_data);
6674 6675
6675 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6676 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6676 6677
6677 HttpServerProperties* http_server_properties = 6678 HttpServerProperties* http_server_properties =
6678 session->http_server_properties(); 6679 session->http_server_properties();
6679 const int kUnrestrictedAlternatePort = 1024; 6680 const int kUnrestrictedAlternatePort = 1024;
(...skipping 24 matching lines...) Expand all
6704 HttpRequestInfo request; 6705 HttpRequestInfo request;
6705 request.method = "GET"; 6706 request.method = "GET";
6706 request.url = GURL("http://www.google.com/"); 6707 request.url = GURL("http://www.google.com/");
6707 request.load_flags = 0; 6708 request.load_flags = 0;
6708 6709
6709 // The alternate protocol request will error out before we attempt to connect, 6710 // The alternate protocol request will error out before we attempt to connect,
6710 // so only the standard HTTP request will try to connect. 6711 // so only the standard HTTP request will try to connect.
6711 MockRead data_reads[] = { 6712 MockRead data_reads[] = {
6712 MockRead("HTTP/1.1 200 OK\r\n\r\n"), 6713 MockRead("HTTP/1.1 200 OK\r\n\r\n"),
6713 MockRead("hello world"), 6714 MockRead("hello world"),
6714 MockRead(true, OK), 6715 MockRead(ASYNC, OK),
6715 }; 6716 };
6716 StaticSocketDataProvider data( 6717 StaticSocketDataProvider data(
6717 data_reads, arraysize(data_reads), NULL, 0); 6718 data_reads, arraysize(data_reads), NULL, 0);
6718 session_deps.socket_factory.AddSocketDataProvider(&data); 6719 session_deps.socket_factory.AddSocketDataProvider(&data);
6719 6720
6720 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 6721 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
6721 6722
6722 HttpServerProperties* http_server_properties = 6723 HttpServerProperties* http_server_properties =
6723 session->http_server_properties(); 6724 session->http_server_properties();
6724 const int kUnsafePort = 7; 6725 const int kUnsafePort = 7;
(...skipping 30 matching lines...) Expand all
6755 6756
6756 HttpRequestInfo request; 6757 HttpRequestInfo request;
6757 request.method = "GET"; 6758 request.method = "GET";
6758 request.url = GURL("http://www.google.com/"); 6759 request.url = GURL("http://www.google.com/");
6759 request.load_flags = 0; 6760 request.load_flags = 0;
6760 6761
6761 MockRead data_reads[] = { 6762 MockRead data_reads[] = {
6762 MockRead("HTTP/1.1 200 OK\r\n"), 6763 MockRead("HTTP/1.1 200 OK\r\n"),
6763 MockRead(kAlternateProtocolHttpHeader), 6764 MockRead(kAlternateProtocolHttpHeader),
6764 MockRead("hello world"), 6765 MockRead("hello world"),
6765 MockRead(true, OK), 6766 MockRead(ASYNC, OK),
6766 }; 6767 };
6767 6768
6768 StaticSocketDataProvider first_transaction( 6769 StaticSocketDataProvider first_transaction(
6769 data_reads, arraysize(data_reads), NULL, 0); 6770 data_reads, arraysize(data_reads), NULL, 0);
6770 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 6771 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
6771 6772
6772 SSLSocketDataProvider ssl(true, OK); 6773 SSLSocketDataProvider ssl(ASYNC, OK);
6773 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 6774 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
6774 ssl.next_proto = "spdy/2.1"; 6775 ssl.next_proto = "spdy/2.1";
6775 ssl.was_npn_negotiated = true; 6776 ssl.was_npn_negotiated = true;
6776 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 6777 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
6777 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 6778 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
6778 6779
6779 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 6780 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
6780 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 6781 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
6781 6782
6782 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 6783 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
6783 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 6784 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
6784 MockRead spdy_reads[] = { 6785 MockRead spdy_reads[] = {
6785 CreateMockRead(*resp), 6786 CreateMockRead(*resp),
6786 CreateMockRead(*data), 6787 CreateMockRead(*data),
6787 MockRead(true, 0, 0), 6788 MockRead(ASYNC, 0, 0),
6788 }; 6789 };
6789 6790
6790 scoped_ptr<DelayedSocketData> spdy_data( 6791 scoped_ptr<DelayedSocketData> spdy_data(
6791 new DelayedSocketData( 6792 new DelayedSocketData(
6792 1, // wait for one write to finish before reading. 6793 1, // wait for one write to finish before reading.
6793 spdy_reads, arraysize(spdy_reads), 6794 spdy_reads, arraysize(spdy_reads),
6794 spdy_writes, arraysize(spdy_writes))); 6795 spdy_writes, arraysize(spdy_writes)));
6795 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 6796 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
6796 6797
6797 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 6798 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
6847 6848
6848 HttpRequestInfo request; 6849 HttpRequestInfo request;
6849 request.method = "GET"; 6850 request.method = "GET";
6850 request.url = GURL("http://www.google.com/"); 6851 request.url = GURL("http://www.google.com/");
6851 request.load_flags = 0; 6852 request.load_flags = 0;
6852 6853
6853 MockRead data_reads[] = { 6854 MockRead data_reads[] = {
6854 MockRead("HTTP/1.1 200 OK\r\n"), 6855 MockRead("HTTP/1.1 200 OK\r\n"),
6855 MockRead(kAlternateProtocolHttpHeader), 6856 MockRead(kAlternateProtocolHttpHeader),
6856 MockRead("hello world"), 6857 MockRead("hello world"),
6857 MockRead(true, OK), 6858 MockRead(ASYNC, OK),
6858 }; 6859 };
6859 6860
6860 StaticSocketDataProvider first_transaction( 6861 StaticSocketDataProvider first_transaction(
6861 data_reads, arraysize(data_reads), NULL, 0); 6862 data_reads, arraysize(data_reads), NULL, 0);
6862 // Socket 1 is the HTTP transaction with the Alternate-Protocol header. 6863 // Socket 1 is the HTTP transaction with the Alternate-Protocol header.
6863 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 6864 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
6864 6865
6865 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 6866 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
6866 StaticSocketDataProvider hanging_socket( 6867 StaticSocketDataProvider hanging_socket(
6867 NULL, 0, NULL, 0); 6868 NULL, 0, NULL, 0);
6868 hanging_socket.set_connect_data(never_finishing_connect); 6869 hanging_socket.set_connect_data(never_finishing_connect);
6869 // Socket 2 and 3 are the hanging Alternate-Protocol and 6870 // Socket 2 and 3 are the hanging Alternate-Protocol and
6870 // non-Alternate-Protocol jobs from the 2nd transaction. 6871 // non-Alternate-Protocol jobs from the 2nd transaction.
6871 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); 6872 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket);
6872 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); 6873 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket);
6873 6874
6874 SSLSocketDataProvider ssl(true, OK); 6875 SSLSocketDataProvider ssl(ASYNC, OK);
6875 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 6876 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
6876 ssl.next_proto = "spdy/2.1"; 6877 ssl.next_proto = "spdy/2.1";
6877 ssl.was_npn_negotiated = true; 6878 ssl.was_npn_negotiated = true;
6878 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 6879 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
6879 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 6880 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
6880 6881
6881 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 6882 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
6882 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); 6883 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST));
6883 MockWrite spdy_writes[] = { 6884 MockWrite spdy_writes[] = {
6884 CreateMockWrite(*req1), 6885 CreateMockWrite(*req1),
6885 CreateMockWrite(*req2), 6886 CreateMockWrite(*req2),
6886 }; 6887 };
6887 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); 6888 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1));
6888 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true)); 6889 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true));
6889 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); 6890 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3));
6890 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true)); 6891 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true));
6891 MockRead spdy_reads[] = { 6892 MockRead spdy_reads[] = {
6892 CreateMockRead(*resp1), 6893 CreateMockRead(*resp1),
6893 CreateMockRead(*data1), 6894 CreateMockRead(*data1),
6894 CreateMockRead(*resp2), 6895 CreateMockRead(*resp2),
6895 CreateMockRead(*data2), 6896 CreateMockRead(*data2),
6896 MockRead(true, 0, 0), 6897 MockRead(ASYNC, 0, 0),
6897 }; 6898 };
6898 6899
6899 scoped_ptr<DelayedSocketData> spdy_data( 6900 scoped_ptr<DelayedSocketData> spdy_data(
6900 new DelayedSocketData( 6901 new DelayedSocketData(
6901 2, // wait for writes to finish before reading. 6902 2, // wait for writes to finish before reading.
6902 spdy_reads, arraysize(spdy_reads), 6903 spdy_reads, arraysize(spdy_reads),
6903 spdy_writes, arraysize(spdy_writes))); 6904 spdy_writes, arraysize(spdy_writes)));
6904 // Socket 4 is the successful Alternate-Protocol for transaction 3. 6905 // Socket 4 is the successful Alternate-Protocol for transaction 3.
6905 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 6906 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
6906 6907
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
6966 6967
6967 HttpRequestInfo request; 6968 HttpRequestInfo request;
6968 request.method = "GET"; 6969 request.method = "GET";
6969 request.url = GURL("http://www.google.com/"); 6970 request.url = GURL("http://www.google.com/");
6970 request.load_flags = 0; 6971 request.load_flags = 0;
6971 6972
6972 MockRead data_reads[] = { 6973 MockRead data_reads[] = {
6973 MockRead("HTTP/1.1 200 OK\r\n"), 6974 MockRead("HTTP/1.1 200 OK\r\n"),
6974 MockRead(kAlternateProtocolHttpHeader), 6975 MockRead(kAlternateProtocolHttpHeader),
6975 MockRead("hello world"), 6976 MockRead("hello world"),
6976 MockRead(true, OK), 6977 MockRead(ASYNC, OK),
6977 }; 6978 };
6978 6979
6979 StaticSocketDataProvider first_transaction( 6980 StaticSocketDataProvider first_transaction(
6980 data_reads, arraysize(data_reads), NULL, 0); 6981 data_reads, arraysize(data_reads), NULL, 0);
6981 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 6982 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
6982 6983
6983 SSLSocketDataProvider ssl(true, OK); 6984 SSLSocketDataProvider ssl(ASYNC, OK);
6984 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 6985 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
6985 ssl.next_proto = "spdy/2.1"; 6986 ssl.next_proto = "spdy/2.1";
6986 ssl.was_npn_negotiated = true; 6987 ssl.was_npn_negotiated = true;
6987 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 6988 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
6988 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 6989 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
6989 6990
6990 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 6991 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
6991 StaticSocketDataProvider hanging_alternate_protocol_socket( 6992 StaticSocketDataProvider hanging_alternate_protocol_socket(
6992 NULL, 0, NULL, 0); 6993 NULL, 0, NULL, 0);
6993 hanging_alternate_protocol_socket.set_connect_data( 6994 hanging_alternate_protocol_socket.set_connect_data(
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
7101 7102
7102 HttpRequestInfo request; 7103 HttpRequestInfo request;
7103 request.method = "GET"; 7104 request.method = "GET";
7104 request.url = GURL("http://www.google.com/"); 7105 request.url = GURL("http://www.google.com/");
7105 request.load_flags = 0; 7106 request.load_flags = 0;
7106 7107
7107 MockRead data_reads[] = { 7108 MockRead data_reads[] = {
7108 MockRead("HTTP/1.1 200 OK\r\n"), 7109 MockRead("HTTP/1.1 200 OK\r\n"),
7109 MockRead(kAlternateProtocolHttpHeader), 7110 MockRead(kAlternateProtocolHttpHeader),
7110 MockRead("hello world"), 7111 MockRead("hello world"),
7111 MockRead(true, OK), 7112 MockRead(ASYNC, OK),
7112 }; 7113 };
7113 7114
7114 StaticSocketDataProvider first_transaction( 7115 StaticSocketDataProvider first_transaction(
7115 data_reads, arraysize(data_reads), NULL, 0); 7116 data_reads, arraysize(data_reads), NULL, 0);
7116 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 7117 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
7117 7118
7118 SSLSocketDataProvider ssl(true, OK); 7119 SSLSocketDataProvider ssl(ASYNC, OK);
7119 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 7120 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
7120 ssl.next_proto = "spdy/2.1"; 7121 ssl.next_proto = "spdy/2.1";
7121 ssl.was_npn_negotiated = true; 7122 ssl.was_npn_negotiated = true;
7122 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 7123 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
7123 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 7124 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
7124 7125
7125 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 7126 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
7126 MockWrite spdy_writes[] = { 7127 MockWrite spdy_writes[] = {
7127 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 7128 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
7128 "Host: www.google.com\r\n" 7129 "Host: www.google.com\r\n"
7129 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 7130 "Proxy-Connection: keep-alive\r\n\r\n"), // 0
7130 CreateMockWrite(*req) // 3 7131 CreateMockWrite(*req) // 3
7131 }; 7132 };
7132 7133
7133 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; 7134 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n";
7134 7135
7135 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 7136 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
7136 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 7137 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
7137 MockRead spdy_reads[] = { 7138 MockRead spdy_reads[] = {
7138 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 7139 MockRead(ASYNC, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1
7139 CreateMockRead(*resp.get(), 4), // 2, 4 7140 CreateMockRead(*resp.get(), 4), // 2, 4
7140 CreateMockRead(*data.get(), 4), // 5 7141 CreateMockRead(*data.get(), 4), // 5
7141 MockRead(true, 0, 0, 4), // 6 7142 MockRead(ASYNC, 0, 0, 4), // 6
7142 }; 7143 };
7143 7144
7144 scoped_ptr<OrderedSocketData> spdy_data( 7145 scoped_ptr<OrderedSocketData> spdy_data(
7145 new OrderedSocketData( 7146 new OrderedSocketData(
7146 spdy_reads, arraysize(spdy_reads), 7147 spdy_reads, arraysize(spdy_reads),
7147 spdy_writes, arraysize(spdy_writes))); 7148 spdy_writes, arraysize(spdy_writes)));
7148 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 7149 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
7149 7150
7150 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 7151 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
7151 StaticSocketDataProvider hanging_non_alternate_protocol_socket( 7152 StaticSocketDataProvider hanging_non_alternate_protocol_socket(
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
7208 7209
7209 HttpRequestInfo request; 7210 HttpRequestInfo request;
7210 request.method = "GET"; 7211 request.method = "GET";
7211 request.url = GURL("http://www.google.com/"); 7212 request.url = GURL("http://www.google.com/");
7212 request.load_flags = 0; 7213 request.load_flags = 0;
7213 7214
7214 MockRead data_reads[] = { 7215 MockRead data_reads[] = {
7215 MockRead("HTTP/1.1 200 OK\r\n"), 7216 MockRead("HTTP/1.1 200 OK\r\n"),
7216 MockRead(kAlternateProtocolHttpHeader), 7217 MockRead(kAlternateProtocolHttpHeader),
7217 MockRead("hello world"), 7218 MockRead("hello world"),
7218 MockRead(true, OK), 7219 MockRead(ASYNC, OK),
7219 }; 7220 };
7220 7221
7221 StaticSocketDataProvider first_transaction( 7222 StaticSocketDataProvider first_transaction(
7222 data_reads, arraysize(data_reads), NULL, 0); 7223 data_reads, arraysize(data_reads), NULL, 0);
7223 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); 7224 session_deps.socket_factory.AddSocketDataProvider(&first_transaction);
7224 7225
7225 SSLSocketDataProvider ssl(true, OK); 7226 SSLSocketDataProvider ssl(ASYNC, OK);
7226 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 7227 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
7227 ssl.next_proto = "spdy/2.1"; 7228 ssl.next_proto = "spdy/2.1";
7228 ssl.was_npn_negotiated = true; 7229 ssl.was_npn_negotiated = true;
7229 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 7230 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
7230 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 7231 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
7231 // Make sure we use ssl for spdy here. 7232 // Make sure we use ssl for spdy here.
7232 SpdySession::SetSSLMode(true); 7233 SpdySession::SetSSLMode(true);
7233 7234
7234 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 7235 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
7235 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 7236 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
7236 7237
7237 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 7238 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
7238 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 7239 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
7239 MockRead spdy_reads[] = { 7240 MockRead spdy_reads[] = {
7240 CreateMockRead(*resp), 7241 CreateMockRead(*resp),
7241 CreateMockRead(*data), 7242 CreateMockRead(*data),
7242 MockRead(true, 0, 0), 7243 MockRead(ASYNC, 0, 0),
7243 }; 7244 };
7244 7245
7245 scoped_ptr<DelayedSocketData> spdy_data( 7246 scoped_ptr<DelayedSocketData> spdy_data(
7246 new DelayedSocketData( 7247 new DelayedSocketData(
7247 1, // wait for one write to finish before reading. 7248 1, // wait for one write to finish before reading.
7248 spdy_reads, arraysize(spdy_reads), 7249 spdy_reads, arraysize(spdy_reads),
7249 spdy_writes, arraysize(spdy_writes))); 7250 spdy_writes, arraysize(spdy_writes)));
7250 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 7251 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
7251 7252
7252 TestCompletionCallback callback; 7253 TestCompletionCallback callback;
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
7692 size_t length_writes = 1; 7693 size_t length_writes = 1;
7693 if (read_write_round.extra_write) { 7694 if (read_write_round.extra_write) {
7694 writes[1] = *read_write_round.extra_write; 7695 writes[1] = *read_write_round.extra_write;
7695 length_writes = 2; 7696 length_writes = 2;
7696 } 7697 }
7697 StaticSocketDataProvider data_provider( 7698 StaticSocketDataProvider data_provider(
7698 reads, length_reads, writes, length_writes); 7699 reads, length_reads, writes, length_writes);
7699 session_deps.socket_factory.AddSocketDataProvider(&data_provider); 7700 session_deps.socket_factory.AddSocketDataProvider(&data_provider);
7700 7701
7701 // Add an SSL sequence if necessary. 7702 // Add an SSL sequence if necessary.
7702 SSLSocketDataProvider ssl_socket_data_provider(false, OK); 7703 SSLSocketDataProvider ssl_socket_data_provider(SYNCHRONOUS, OK);
7703 if (round >= test_config.first_ssl_round) 7704 if (round >= test_config.first_ssl_round)
7704 session_deps.socket_factory.AddSSLSocketDataProvider( 7705 session_deps.socket_factory.AddSSLSocketDataProvider(
7705 &ssl_socket_data_provider); 7706 &ssl_socket_data_provider);
7706 7707
7707 // Start or restart the transaction. 7708 // Start or restart the transaction.
7708 TestCompletionCallback callback; 7709 TestCompletionCallback callback;
7709 int rv; 7710 int rv;
7710 if (round == 0) { 7711 if (round == 0) {
7711 rv = trans.Start(&request, callback.callback(), BoundNetLog()); 7712 rv = trans.Start(&request, callback.callback(), BoundNetLog());
7712 } else { 7713 } else {
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
7922 } 7923 }
7923 7924
7924 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider { 7925 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider {
7925 public: 7926 public:
7926 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all) 7927 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all)
7927 : fail_all_(fail_all) { 7928 : fail_all_(fail_all) {
7928 } 7929 }
7929 7930
7930 virtual MockRead GetNextRead() { 7931 virtual MockRead GetNextRead() {
7931 if (fail_all_) 7932 if (fail_all_)
7932 return MockRead(false /* async */, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); 7933 return MockRead(SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT);
jar (doing other things) 2012/02/22 17:38:25 Cool/meaningless comment! It could mean anything
Ryan Hamilton 2012/02/22 17:50:10 Yeah, I love it. :|
7933 7934
7934 return MockRead(false /* async */, 7935 return MockRead(SYNCHRONOUS,
7935 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n"); 7936 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n");
7936 } 7937 }
7937 7938
7938 virtual MockWriteResult OnWrite(const std::string& data) { 7939 virtual MockWriteResult OnWrite(const std::string& data) {
7939 return MockWriteResult(false /* async */, data.size()); 7940 return MockWriteResult(SYNCHRONOUS /* async */, data.size());
7940 } 7941 }
7941 7942
7942 void Reset() { 7943 void Reset() {
7943 } 7944 }
7944 7945
7945 private: 7946 private:
7946 const bool fail_all_; 7947 const bool fail_all_;
7947 }; 7948 };
7948 7949
7949 // Test that we restart a connection when we see a decompression failure from 7950 // Test that we restart a connection when we see a decompression failure from
7950 // the peer during the handshake. (In the real world we'll restart with SSLv3 7951 // the peer during the handshake. (In the real world we'll restart with SSLv3
7951 // and we won't offer DEFLATE in that case.) 7952 // and we won't offer DEFLATE in that case.)
7952 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) { 7953 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) {
7953 HttpRequestInfo request; 7954 HttpRequestInfo request;
7954 request.method = "GET"; 7955 request.method = "GET";
7955 request.url = GURL("https://tlsdecompressionfailure.example.com/"); 7956 request.url = GURL("https://tlsdecompressionfailure.example.com/");
7956 request.load_flags = 0; 7957 request.load_flags = 0;
7957 7958
7958 SessionDependencies session_deps; 7959 SessionDependencies session_deps;
7959 TLSDecompressionFailureSocketDataProvider socket_data_provider1( 7960 TLSDecompressionFailureSocketDataProvider socket_data_provider1(
7960 false /* fail all reads */); 7961 false /* fail all reads */);
7961 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); 7962 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false);
7962 SSLSocketDataProvider ssl_socket_data_provider1( 7963 SSLSocketDataProvider ssl_socket_data_provider1(
7963 false, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); 7964 SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT);
7964 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); 7965 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK);
7965 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); 7966 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1);
7966 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); 7967 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2);
7967 session_deps.socket_factory.AddSSLSocketDataProvider( 7968 session_deps.socket_factory.AddSSLSocketDataProvider(
7968 &ssl_socket_data_provider1); 7969 &ssl_socket_data_provider1);
7969 session_deps.socket_factory.AddSSLSocketDataProvider( 7970 session_deps.socket_factory.AddSSLSocketDataProvider(
7970 &ssl_socket_data_provider2); 7971 &ssl_socket_data_provider2);
7971 7972
7972 // Work around http://crbug.com/37454 7973 // Work around http://crbug.com/37454
7973 StaticSocketDataProvider bug37454_connection; 7974 StaticSocketDataProvider bug37454_connection;
7974 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED)); 7975 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED));
(...skipping 25 matching lines...) Expand all
8000 RestartAfterTLSDecompressionFailureWithFalseStart) { 8001 RestartAfterTLSDecompressionFailureWithFalseStart) {
8001 HttpRequestInfo request; 8002 HttpRequestInfo request;
8002 request.method = "GET"; 8003 request.method = "GET";
8003 request.url = GURL("https://tlsdecompressionfailure2.example.com/"); 8004 request.url = GURL("https://tlsdecompressionfailure2.example.com/");
8004 request.load_flags = 0; 8005 request.load_flags = 0;
8005 8006
8006 SessionDependencies session_deps; 8007 SessionDependencies session_deps;
8007 TLSDecompressionFailureSocketDataProvider socket_data_provider1( 8008 TLSDecompressionFailureSocketDataProvider socket_data_provider1(
8008 true /* fail all reads */); 8009 true /* fail all reads */);
8009 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); 8010 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false);
8010 SSLSocketDataProvider ssl_socket_data_provider1(false, OK); 8011 SSLSocketDataProvider ssl_socket_data_provider1(SYNCHRONOUS, OK);
8011 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); 8012 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK);
8012 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); 8013 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1);
8013 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); 8014 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2);
8014 session_deps.socket_factory.AddSSLSocketDataProvider( 8015 session_deps.socket_factory.AddSSLSocketDataProvider(
8015 &ssl_socket_data_provider1); 8016 &ssl_socket_data_provider1);
8016 session_deps.socket_factory.AddSSLSocketDataProvider( 8017 session_deps.socket_factory.AddSSLSocketDataProvider(
8017 &ssl_socket_data_provider2); 8018 &ssl_socket_data_provider2);
8018 8019
8019 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8020 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8020 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 8021 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
8021 TestCompletionCallback callback; 8022 TestCompletionCallback callback;
(...skipping 27 matching lines...) Expand all
8049 MockWrite data_writes[] = { 8050 MockWrite data_writes[] = {
8050 MockWrite("GET / HTTP/1.1\r\n" 8051 MockWrite("GET / HTTP/1.1\r\n"
8051 "Host: www.google.com\r\n" 8052 "Host: www.google.com\r\n"
8052 "Connection: keep-alive\r\n\r\n"), 8053 "Connection: keep-alive\r\n\r\n"),
8053 }; 8054 };
8054 8055
8055 MockRead data_reads[] = { 8056 MockRead data_reads[] = {
8056 MockRead("HTTP/1.1 200 OK\r\n"), 8057 MockRead("HTTP/1.1 200 OK\r\n"),
8057 MockRead(kAlternateProtocolHttpHeader), 8058 MockRead(kAlternateProtocolHttpHeader),
8058 MockRead("hello world"), 8059 MockRead("hello world"),
8059 MockRead(false, OK), 8060 MockRead(SYNCHRONOUS, OK),
8060 }; 8061 };
8061 8062
8062 SSLSocketDataProvider ssl(true, OK); 8063 SSLSocketDataProvider ssl(ASYNC, OK);
8063 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8064 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8064 ssl.next_proto = "http/1.1"; 8065 ssl.next_proto = "http/1.1";
8065 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; 8066 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11;
8066 8067
8067 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8068 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8068 8069
8069 StaticSocketDataProvider data(data_reads, arraysize(data_reads), 8070 StaticSocketDataProvider data(data_reads, arraysize(data_reads),
8070 data_writes, arraysize(data_writes)); 8071 data_writes, arraysize(data_writes));
8071 session_deps.socket_factory.AddSocketDataProvider(&data); 8072 session_deps.socket_factory.AddSocketDataProvider(&data);
8072 8073
(...skipping 29 matching lines...) Expand all
8102 // Fix crash: http://crbug.com/46369 8103 // Fix crash: http://crbug.com/46369
8103 HttpStreamFactory::set_use_alternate_protocols(true); 8104 HttpStreamFactory::set_use_alternate_protocols(true);
8104 HttpStreamFactory::set_next_protos(SpdyNextProtos()); 8105 HttpStreamFactory::set_next_protos(SpdyNextProtos());
8105 SessionDependencies session_deps; 8106 SessionDependencies session_deps;
8106 8107
8107 HttpRequestInfo request; 8108 HttpRequestInfo request;
8108 request.method = "GET"; 8109 request.method = "GET";
8109 request.url = GURL("https://www.google.com/"); 8110 request.url = GURL("https://www.google.com/");
8110 request.load_flags = 0; 8111 request.load_flags = 0;
8111 8112
8112 SSLSocketDataProvider ssl(true, OK); 8113 SSLSocketDataProvider ssl(ASYNC, OK);
8113 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8114 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8114 ssl.next_proto = "spdy/2.1"; 8115 ssl.next_proto = "spdy/2.1";
8115 ssl.was_npn_negotiated = true; 8116 ssl.was_npn_negotiated = true;
8116 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 8117 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
8117 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8118 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8118 8119
8119 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); 8120 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
8120 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 8121 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
8121 8122
8122 MockRead spdy_reads[] = { 8123 MockRead spdy_reads[] = {
8123 MockRead(false, 0, 0) // Not async - return 0 immediately. 8124 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately.
8124 }; 8125 };
8125 8126
8126 scoped_ptr<DelayedSocketData> spdy_data( 8127 scoped_ptr<DelayedSocketData> spdy_data(
8127 new DelayedSocketData( 8128 new DelayedSocketData(
8128 0, // don't wait in this case, immediate hangup. 8129 0, // don't wait in this case, immediate hangup.
8129 spdy_reads, arraysize(spdy_reads), 8130 spdy_reads, arraysize(spdy_reads),
8130 spdy_writes, arraysize(spdy_writes))); 8131 spdy_writes, arraysize(spdy_writes)));
8131 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 8132 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
8132 8133
8133 TestCompletionCallback callback; 8134 TestCompletionCallback callback;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
8165 request.load_flags = 0; 8166 request.load_flags = 0;
8166 8167
8167 // First round goes unauthenticated through the proxy. 8168 // First round goes unauthenticated through the proxy.
8168 MockWrite data_writes_1[] = { 8169 MockWrite data_writes_1[] = {
8169 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 8170 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
8170 "Host: www.google.com\r\n" 8171 "Host: www.google.com\r\n"
8171 "Proxy-Connection: keep-alive\r\n" 8172 "Proxy-Connection: keep-alive\r\n"
8172 "\r\n"), 8173 "\r\n"),
8173 }; 8174 };
8174 MockRead data_reads_1[] = { 8175 MockRead data_reads_1[] = {
8175 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 8176 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
8176 MockRead("HTTP/1.1 200 OK\r\n" 8177 MockRead("HTTP/1.1 200 OK\r\n"
8177 "Alternate-Protocol: 443:npn-spdy/2.1\r\n" 8178 "Alternate-Protocol: 443:npn-spdy/2.1\r\n"
8178 "Proxy-Connection: close\r\n" 8179 "Proxy-Connection: close\r\n"
8179 "\r\n"), 8180 "\r\n"),
8180 }; 8181 };
8181 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1), 8182 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1),
8182 data_writes_1, arraysize(data_writes_1)); 8183 data_writes_1, arraysize(data_writes_1));
8183 8184
8184 // Second round tries to tunnel to www.google.com due to the 8185 // Second round tries to tunnel to www.google.com due to the
8185 // Alternate-Protocol announcement in the first round. It fails due 8186 // Alternate-Protocol announcement in the first round. It fails due
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8219 // SPDY request 8220 // SPDY request
8220 CreateMockWrite(*req), 8221 CreateMockWrite(*req),
8221 }; 8222 };
8222 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n" 8223 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n"
8223 "Proxy-Authenticate: Mock\r\n" 8224 "Proxy-Authenticate: Mock\r\n"
8224 "Proxy-Connection: close\r\n" 8225 "Proxy-Connection: close\r\n"
8225 "\r\n"); 8226 "\r\n");
8226 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; 8227 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n";
8227 MockRead data_reads_2[] = { 8228 MockRead data_reads_2[] = {
8228 // First connection attempt fails 8229 // First connection attempt fails
8229 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1), 8230 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1),
8230 MockRead(true, kRejectConnectResponse, 8231 MockRead(ASYNC, kRejectConnectResponse,
8231 arraysize(kRejectConnectResponse) - 1, 1), 8232 arraysize(kRejectConnectResponse) - 1, 1),
8232 8233
8233 // Second connection attempt passes 8234 // Second connection attempt passes
8234 MockRead(true, kAcceptConnectResponse, 8235 MockRead(ASYNC, kAcceptConnectResponse,
8235 arraysize(kAcceptConnectResponse) -1, 4), 8236 arraysize(kAcceptConnectResponse) -1, 4),
8236 8237
8237 // SPDY response 8238 // SPDY response
8238 CreateMockRead(*resp.get(), 6), 8239 CreateMockRead(*resp.get(), 6),
8239 CreateMockRead(*data.get(), 6), 8240 CreateMockRead(*data.get(), 6),
8240 MockRead(true, 0, 0, 6), 8241 MockRead(ASYNC, 0, 0, 6),
8241 }; 8242 };
8242 scoped_ptr<OrderedSocketData> data_2( 8243 scoped_ptr<OrderedSocketData> data_2(
8243 new OrderedSocketData(data_reads_2, arraysize(data_reads_2), 8244 new OrderedSocketData(data_reads_2, arraysize(data_reads_2),
8244 data_writes_2, arraysize(data_writes_2))); 8245 data_writes_2, arraysize(data_writes_2)));
8245 8246
8246 SSLSocketDataProvider ssl(true, OK); 8247 SSLSocketDataProvider ssl(ASYNC, OK);
8247 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8248 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8248 ssl.next_proto = "spdy/2.1"; 8249 ssl.next_proto = "spdy/2.1";
8249 ssl.was_npn_negotiated = true; 8250 ssl.was_npn_negotiated = true;
8250 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 8251 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
8251 8252
8252 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); 8253 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING);
8253 StaticSocketDataProvider hanging_non_alternate_protocol_socket( 8254 StaticSocketDataProvider hanging_non_alternate_protocol_socket(
8254 NULL, 0, NULL, 0); 8255 NULL, 0, NULL, 0);
8255 hanging_non_alternate_protocol_socket.set_connect_data( 8256 hanging_non_alternate_protocol_socket.set_connect_data(
8256 never_finishing_connect); 8257 never_finishing_connect);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
8299 // Test that if we cancel the transaction as the connection is completing, that 8300 // Test that if we cancel the transaction as the connection is completing, that
8300 // everything tears down correctly. 8301 // everything tears down correctly.
8301 TEST_F(HttpNetworkTransactionTest, SimpleCancel) { 8302 TEST_F(HttpNetworkTransactionTest, SimpleCancel) {
8302 // Setup everything about the connection to complete synchronously, so that 8303 // Setup everything about the connection to complete synchronously, so that
8303 // after calling HttpNetworkTransaction::Start, the only thing we're waiting 8304 // after calling HttpNetworkTransaction::Start, the only thing we're waiting
8304 // for is the callback from the HttpStreamRequest. 8305 // for is the callback from the HttpStreamRequest.
8305 // Then cancel the transaction. 8306 // Then cancel the transaction.
8306 // Verify that we don't crash. 8307 // Verify that we don't crash.
8307 MockConnect mock_connect(SYNCHRONOUS, OK); 8308 MockConnect mock_connect(SYNCHRONOUS, OK);
8308 MockRead data_reads[] = { 8309 MockRead data_reads[] = {
8309 MockRead(false, "HTTP/1.0 200 OK\r\n\r\n"), 8310 MockRead(SYNCHRONOUS, "HTTP/1.0 200 OK\r\n\r\n"),
8310 MockRead(false, "hello world"), 8311 MockRead(SYNCHRONOUS, "hello world"),
8311 MockRead(false, OK), 8312 MockRead(SYNCHRONOUS, OK),
8312 }; 8313 };
8313 8314
8314 HttpRequestInfo request; 8315 HttpRequestInfo request;
8315 request.method = "GET"; 8316 request.method = "GET";
8316 request.url = GURL("http://www.google.com/"); 8317 request.url = GURL("http://www.google.com/");
8317 request.load_flags = 0; 8318 request.load_flags = 0;
8318 8319
8319 SessionDependencies session_deps; 8320 SessionDependencies session_deps;
8320 session_deps.host_resolver->set_synchronous_mode(true); 8321 session_deps.host_resolver->set_synchronous_mode(true);
8321 scoped_ptr<HttpTransaction> trans( 8322 scoped_ptr<HttpTransaction> trans(
(...skipping 27 matching lines...) Expand all
8349 MockWrite data_writes1[] = { 8350 MockWrite data_writes1[] = {
8350 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" 8351 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n"
8351 "Host: www.google.com\r\n" 8352 "Host: www.google.com\r\n"
8352 "Proxy-Connection: keep-alive\r\n\r\n"), 8353 "Proxy-Connection: keep-alive\r\n\r\n"),
8353 }; 8354 };
8354 8355
8355 MockRead data_reads1[] = { 8356 MockRead data_reads1[] = {
8356 MockRead("HTTP/1.1 200 OK\r\n"), 8357 MockRead("HTTP/1.1 200 OK\r\n"),
8357 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 8358 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
8358 MockRead("Content-Length: 100\r\n\r\n"), 8359 MockRead("Content-Length: 100\r\n\r\n"),
8359 MockRead(false, OK), 8360 MockRead(SYNCHRONOUS, OK),
8360 }; 8361 };
8361 8362
8362 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 8363 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
8363 data_writes1, arraysize(data_writes1)); 8364 data_writes1, arraysize(data_writes1));
8364 session_deps.socket_factory.AddSocketDataProvider(&data1); 8365 session_deps.socket_factory.AddSocketDataProvider(&data1);
8365 8366
8366 TestCompletionCallback callback1; 8367 TestCompletionCallback callback1;
8367 8368
8368 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 8369 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
8369 8370
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
8404 "Host: www.google.com\r\n" 8405 "Host: www.google.com\r\n"
8405 "Connection: keep-alive\r\n\r\n"), 8406 "Connection: keep-alive\r\n\r\n"),
8406 }; 8407 };
8407 8408
8408 MockRead data_reads1[] = { 8409 MockRead data_reads1[] = {
8409 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 8410 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
8410 8411
8411 MockRead("HTTP/1.1 200 OK\r\n"), 8412 MockRead("HTTP/1.1 200 OK\r\n"),
8412 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), 8413 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"),
8413 MockRead("Content-Length: 100\r\n\r\n"), 8414 MockRead("Content-Length: 100\r\n\r\n"),
8414 MockRead(false, OK), 8415 MockRead(SYNCHRONOUS, OK),
8415 }; 8416 };
8416 8417
8417 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 8418 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
8418 data_writes1, arraysize(data_writes1)); 8419 data_writes1, arraysize(data_writes1));
8419 session_deps.socket_factory.AddSocketDataProvider(&data1); 8420 session_deps.socket_factory.AddSocketDataProvider(&data1);
8420 SSLSocketDataProvider ssl(true, OK); 8421 SSLSocketDataProvider ssl(ASYNC, OK);
8421 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8422 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8422 8423
8423 TestCompletionCallback callback1; 8424 TestCompletionCallback callback1;
8424 8425
8425 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 8426 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
8426 8427
8427 int rv = trans->Start(&request, callback1.callback(), log.bound()); 8428 int rv = trans->Start(&request, callback1.callback(), log.bound());
8428 EXPECT_EQ(ERR_IO_PENDING, rv); 8429 EXPECT_EQ(ERR_IO_PENDING, rv);
8429 8430
8430 rv = callback1.WaitForResult(); 8431 rv = callback1.WaitForResult();
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
8466 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" 8467 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n"
8467 "Host: www.google.com\r\n" 8468 "Host: www.google.com\r\n"
8468 "Proxy-Connection: keep-alive\r\n\r\n"), 8469 "Proxy-Connection: keep-alive\r\n\r\n"),
8469 8470
8470 MockWrite("GET / HTTP/1.1\r\n" 8471 MockWrite("GET / HTTP/1.1\r\n"
8471 "Host: www.google.com\r\n" 8472 "Host: www.google.com\r\n"
8472 "Connection: keep-alive\r\n\r\n"), 8473 "Connection: keep-alive\r\n\r\n"),
8473 }; 8474 };
8474 8475
8475 MockRead data_reads1[] = { 8476 MockRead data_reads1[] = {
8476 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 8477 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
8477 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 8478 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
8478 MockRead(true, 0, 0), // EOF 8479 MockRead(ASYNC, 0, 0), // EOF
8479 }; 8480 };
8480 8481
8481 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), 8482 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1),
8482 data_writes1, arraysize(data_writes1)); 8483 data_writes1, arraysize(data_writes1));
8483 session_deps.socket_factory.AddSocketDataProvider(&data1); 8484 session_deps.socket_factory.AddSocketDataProvider(&data1);
8484 SSLSocketDataProvider ssl(true, OK); 8485 SSLSocketDataProvider ssl(ASYNC, OK);
8485 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8486 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8486 8487
8487 TestCompletionCallback callback1; 8488 TestCompletionCallback callback1;
8488 8489
8489 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); 8490 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session));
8490 8491
8491 int rv = trans->Start(&request, callback1.callback(), log.bound()); 8492 int rv = trans->Start(&request, callback1.callback(), log.bound());
8492 EXPECT_EQ(ERR_IO_PENDING, rv); 8493 EXPECT_EQ(ERR_IO_PENDING, rv);
8493 8494
8494 rv = callback1.WaitForResult(); 8495 rv = callback1.WaitForResult();
(...skipping 15 matching lines...) Expand all
8510 8511
8511 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet( 8512 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(
8512 "https://www.google.com", false, 1, LOWEST)); 8513 "https://www.google.com", false, 1, LOWEST));
8513 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; 8514 MockWrite spdy_writes[] = { CreateMockWrite(*req) };
8514 8515
8515 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 8516 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
8516 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); 8517 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true));
8517 MockRead spdy_reads[] = { 8518 MockRead spdy_reads[] = {
8518 CreateMockRead(*resp), 8519 CreateMockRead(*resp),
8519 CreateMockRead(*data), 8520 CreateMockRead(*data),
8520 MockRead(true, 0, 0), 8521 MockRead(ASYNC, 0, 0),
8521 }; 8522 };
8522 8523
8523 scoped_ptr<DelayedSocketData> spdy_data( 8524 scoped_ptr<DelayedSocketData> spdy_data(
8524 new DelayedSocketData( 8525 new DelayedSocketData(
8525 1, // wait for one write to finish before reading. 8526 1, // wait for one write to finish before reading.
8526 spdy_reads, arraysize(spdy_reads), 8527 spdy_reads, arraysize(spdy_reads),
8527 spdy_writes, arraysize(spdy_writes))); 8528 spdy_writes, arraysize(spdy_writes)));
8528 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 8529 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
8529 8530
8530 SSLSocketDataProvider ssl(true, OK); 8531 SSLSocketDataProvider ssl(ASYNC, OK);
8531 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8532 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8532 ssl.next_proto = "spdy/2.1"; 8533 ssl.next_proto = "spdy/2.1";
8533 ssl.was_npn_negotiated = true; 8534 ssl.was_npn_negotiated = true;
8534 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 8535 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
8535 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8536 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8536 8537
8537 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8538 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8538 8539
8539 // Set up an initial SpdySession in the pool to reuse. 8540 // Set up an initial SpdySession in the pool to reuse.
8540 HostPortPair host_port_pair("www.google.com", 443); 8541 HostPortPair host_port_pair("www.google.com", 443);
(...skipping 22 matching lines...) Expand all
8563 8564
8564 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8565 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8565 8566
8566 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 8567 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
8567 EXPECT_EQ(ERR_IO_PENDING, rv); 8568 EXPECT_EQ(ERR_IO_PENDING, rv);
8568 EXPECT_EQ(OK, callback.WaitForResult()); 8569 EXPECT_EQ(OK, callback.WaitForResult());
8569 } 8570 }
8570 8571
8571 // Given a net error, cause that error to be returned from the first Write() 8572 // Given a net error, cause that error to be returned from the first Write()
8572 // call and verify that the HttpTransaction fails with that error. 8573 // call and verify that the HttpTransaction fails with that error.
8573 static void CheckErrorIsPassedBack(int error, bool async) { 8574 static void CheckErrorIsPassedBack(int error, IoMode mode) {
8574 net::HttpRequestInfo request_info; 8575 net::HttpRequestInfo request_info;
8575 request_info.url = GURL("https://www.example.com/"); 8576 request_info.url = GURL("https://www.example.com/");
8576 request_info.method = "GET"; 8577 request_info.method = "GET";
8577 request_info.load_flags = net::LOAD_NORMAL; 8578 request_info.load_flags = net::LOAD_NORMAL;
8578 8579
8579 SessionDependencies session_deps; 8580 SessionDependencies session_deps;
8580 8581
8581 SSLSocketDataProvider ssl_data(async, OK); 8582 SSLSocketDataProvider ssl_data(mode, OK);
8582 net::MockWrite data_writes[] = { 8583 net::MockWrite data_writes[] = {
8583 net::MockWrite(async, error), 8584 net::MockWrite(mode, error),
8584 }; 8585 };
8585 net::StaticSocketDataProvider data(NULL, 0, 8586 net::StaticSocketDataProvider data(NULL, 0,
8586 data_writes, arraysize(data_writes)); 8587 data_writes, arraysize(data_writes));
8587 session_deps.socket_factory.AddSocketDataProvider(&data); 8588 session_deps.socket_factory.AddSocketDataProvider(&data);
8588 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data); 8589 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data);
8589 8590
8590 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8591 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8591 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8592 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8592 8593
8593 TestCompletionCallback callback; 8594 TestCompletionCallback callback;
8594 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog()); 8595 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog());
8595 if (rv == net::ERR_IO_PENDING) 8596 if (rv == net::ERR_IO_PENDING)
8596 rv = callback.WaitForResult(); 8597 rv = callback.WaitForResult();
8597 ASSERT_EQ(error, rv); 8598 ASSERT_EQ(error, rv);
8598 } 8599 }
8599 8600
8600 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) { 8601 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) {
8601 // Just check a grab bag of cert errors. 8602 // Just check a grab bag of cert errors.
8602 static const int kErrors[] = { 8603 static const int kErrors[] = {
8603 ERR_CERT_COMMON_NAME_INVALID, 8604 ERR_CERT_COMMON_NAME_INVALID,
8604 ERR_CERT_AUTHORITY_INVALID, 8605 ERR_CERT_AUTHORITY_INVALID,
8605 ERR_CERT_DATE_INVALID, 8606 ERR_CERT_DATE_INVALID,
8606 }; 8607 };
8607 for (size_t i = 0; i < arraysize(kErrors); i++) { 8608 for (size_t i = 0; i < arraysize(kErrors); i++) {
8608 CheckErrorIsPassedBack(kErrors[i], false /* not async */); 8609 CheckErrorIsPassedBack(kErrors[i], ASYNC);
8609 CheckErrorIsPassedBack(kErrors[i], true /* async */); 8610 CheckErrorIsPassedBack(kErrors[i], SYNCHRONOUS);
8610 } 8611 }
8611 } 8612 }
8612 8613
8613 // Ensure that a client certificate is removed from the SSL client auth 8614 // Ensure that a client certificate is removed from the SSL client auth
8614 // cache when: 8615 // cache when:
8615 // 1) No proxy is involved. 8616 // 1) No proxy is involved.
8616 // 2) TLS False Start is disabled. 8617 // 2) TLS False Start is disabled.
8617 // 3) The initial TLS handshake requests a client certificate. 8618 // 3) The initial TLS handshake requests a client certificate.
8618 // 4) The client supplies an invalid/unacceptable certificate. 8619 // 4) The client supplies an invalid/unacceptable certificate.
8619 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) { 8620 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) {
8620 net::HttpRequestInfo request_info; 8621 net::HttpRequestInfo request_info;
8621 request_info.url = GURL("https://www.example.com/"); 8622 request_info.url = GURL("https://www.example.com/");
8622 request_info.method = "GET"; 8623 request_info.method = "GET";
8623 request_info.load_flags = net::LOAD_NORMAL; 8624 request_info.load_flags = net::LOAD_NORMAL;
8624 8625
8625 SessionDependencies session_deps; 8626 SessionDependencies session_deps;
8626 8627
8627 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); 8628 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo());
8628 cert_request->host_and_port = "www.example.com:443"; 8629 cert_request->host_and_port = "www.example.com:443";
8629 8630
8630 // [ssl_]data1 contains the data for the first SSL handshake. When a 8631 // [ssl_]data1 contains the data for the first SSL handshake. When a
8631 // CertificateRequest is received for the first time, the handshake will 8632 // CertificateRequest is received for the first time, the handshake will
8632 // be aborted to allow the caller to provide a certificate. 8633 // be aborted to allow the caller to provide a certificate.
8633 SSLSocketDataProvider ssl_data1(true /* async */, 8634 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8634 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8635 ssl_data1.cert_request_info = cert_request.get(); 8635 ssl_data1.cert_request_info = cert_request.get();
8636 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); 8636 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1);
8637 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); 8637 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0);
8638 session_deps.socket_factory.AddSocketDataProvider(&data1); 8638 session_deps.socket_factory.AddSocketDataProvider(&data1);
8639 8639
8640 // [ssl_]data2 contains the data for the second SSL handshake. When TLS 8640 // [ssl_]data2 contains the data for the second SSL handshake. When TLS
8641 // False Start is not being used, the result of the SSL handshake will be 8641 // False Start is not being used, the result of the SSL handshake will be
8642 // returned as part of the SSLClientSocket::Connect() call. This test 8642 // returned as part of the SSLClientSocket::Connect() call. This test
8643 // matches the result of a server sending a handshake_failure alert, 8643 // matches the result of a server sending a handshake_failure alert,
8644 // rather than a Finished message, because it requires a client 8644 // rather than a Finished message, because it requires a client
8645 // certificate and none was supplied. 8645 // certificate and none was supplied.
8646 SSLSocketDataProvider ssl_data2(true /* async */, 8646 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8647 net::ERR_SSL_PROTOCOL_ERROR);
8648 ssl_data2.cert_request_info = cert_request.get(); 8647 ssl_data2.cert_request_info = cert_request.get();
8649 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); 8648 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2);
8650 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); 8649 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0);
8651 session_deps.socket_factory.AddSocketDataProvider(&data2); 8650 session_deps.socket_factory.AddSocketDataProvider(&data2);
8652 8651
8653 // [ssl_]data3 contains the data for the third SSL handshake. When a 8652 // [ssl_]data3 contains the data for the third SSL handshake. When a
8654 // connection to a server fails during an SSL handshake, 8653 // connection to a server fails during an SSL handshake,
8655 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial 8654 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial
8656 // connection was attempted with TLSv1. This is transparent to the caller 8655 // connection was attempted with TLSv1. This is transparent to the caller
8657 // of the HttpNetworkTransaction. Because this test failure is due to 8656 // of the HttpNetworkTransaction. Because this test failure is due to
8658 // requiring a client certificate, this fallback handshake should also 8657 // requiring a client certificate, this fallback handshake should also
8659 // fail. 8658 // fail.
8660 SSLSocketDataProvider ssl_data3(true /* async */, 8659 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8661 net::ERR_SSL_PROTOCOL_ERROR);
8662 ssl_data3.cert_request_info = cert_request.get(); 8660 ssl_data3.cert_request_info = cert_request.get();
8663 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); 8661 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3);
8664 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); 8662 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0);
8665 session_deps.socket_factory.AddSocketDataProvider(&data3); 8663 session_deps.socket_factory.AddSocketDataProvider(&data3);
8666 8664
8667 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8665 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8668 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8666 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8669 8667
8670 // Begin the SSL handshake with the peer. This consumes ssl_data1. 8668 // Begin the SSL handshake with the peer. This consumes ssl_data1.
8671 TestCompletionCallback callback; 8669 TestCompletionCallback callback;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
8728 // The actual handshake will be finished when SSLClientSocket::Read() is 8726 // The actual handshake will be finished when SSLClientSocket::Read() is
8729 // called, which expects to process the peer's ChangeCipherSpec and 8727 // called, which expects to process the peer's ChangeCipherSpec and
8730 // Finished messages. If there was an error negotiating with the peer, 8728 // Finished messages. If there was an error negotiating with the peer,
8731 // such as due to the peer requiring a client certificate when none was 8729 // such as due to the peer requiring a client certificate when none was
8732 // supplied, the alert sent by the peer won't be processed until Read() is 8730 // supplied, the alert sent by the peer won't be processed until Read() is
8733 // called. 8731 // called.
8734 8732
8735 // Like the non-False Start case, when a client certificate is requested by 8733 // Like the non-False Start case, when a client certificate is requested by
8736 // the peer, the handshake is aborted during the Connect() call. 8734 // the peer, the handshake is aborted during the Connect() call.
8737 // [ssl_]data1 represents the initial SSL handshake with the peer. 8735 // [ssl_]data1 represents the initial SSL handshake with the peer.
8738 SSLSocketDataProvider ssl_data1(true /* async */, 8736 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8739 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8740 ssl_data1.cert_request_info = cert_request.get(); 8737 ssl_data1.cert_request_info = cert_request.get();
8741 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); 8738 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1);
8742 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); 8739 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0);
8743 session_deps.socket_factory.AddSocketDataProvider(&data1); 8740 session_deps.socket_factory.AddSocketDataProvider(&data1);
8744 8741
8745 // When a client certificate is supplied, Connect() will not be aborted 8742 // When a client certificate is supplied, Connect() will not be aborted
8746 // when the peer requests the certificate. Instead, the handshake will 8743 // when the peer requests the certificate. Instead, the handshake will
8747 // artificially succeed, allowing the caller to write the HTTP request to 8744 // artificially succeed, allowing the caller to write the HTTP request to
8748 // the socket. The handshake messages are not processed until Read() is 8745 // the socket. The handshake messages are not processed until Read() is
8749 // called, which then detects that the handshake was aborted, due to the 8746 // called, which then detects that the handshake was aborted, due to the
8750 // peer sending a handshake_failure because it requires a client 8747 // peer sending a handshake_failure because it requires a client
8751 // certificate. 8748 // certificate.
8752 SSLSocketDataProvider ssl_data2(true /* async */, net::OK); 8749 SSLSocketDataProvider ssl_data2(ASYNC, net::OK);
8753 ssl_data2.cert_request_info = cert_request.get(); 8750 ssl_data2.cert_request_info = cert_request.get();
8754 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); 8751 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2);
8755 net::MockRead data2_reads[] = { 8752 net::MockRead data2_reads[] = {
8756 net::MockRead(true /* async */, net::ERR_SSL_PROTOCOL_ERROR), 8753 net::MockRead(ASYNC /* async */, net::ERR_SSL_PROTOCOL_ERROR),
8757 }; 8754 };
8758 net::StaticSocketDataProvider data2( 8755 net::StaticSocketDataProvider data2(
8759 data2_reads, arraysize(data2_reads), NULL, 0); 8756 data2_reads, arraysize(data2_reads), NULL, 0);
8760 session_deps.socket_factory.AddSocketDataProvider(&data2); 8757 session_deps.socket_factory.AddSocketDataProvider(&data2);
8761 8758
8762 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is 8759 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is
8763 // the data for the SSL handshake once the TLSv1 connection falls back to 8760 // the data for the SSL handshake once the TLSv1 connection falls back to
8764 // SSLv3. It has the same behaviour as [ssl_]data2. 8761 // SSLv3. It has the same behaviour as [ssl_]data2.
8765 SSLSocketDataProvider ssl_data3(true /* async */, net::OK); 8762 SSLSocketDataProvider ssl_data3(ASYNC, net::OK);
8766 ssl_data3.cert_request_info = cert_request.get(); 8763 ssl_data3.cert_request_info = cert_request.get();
8767 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); 8764 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3);
8768 net::StaticSocketDataProvider data3( 8765 net::StaticSocketDataProvider data3(
8769 data2_reads, arraysize(data2_reads), NULL, 0); 8766 data2_reads, arraysize(data2_reads), NULL, 0);
8770 session_deps.socket_factory.AddSocketDataProvider(&data3); 8767 session_deps.socket_factory.AddSocketDataProvider(&data3);
8771 8768
8772 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); 8769 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps));
8773 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); 8770 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session));
8774 8771
8775 // Begin the initial SSL handshake. 8772 // Begin the initial SSL handshake.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
8823 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); 8820 CapturingBoundNetLog log(CapturingNetLog::kUnbounded);
8824 session_deps.net_log = log.bound().net_log(); 8821 session_deps.net_log = log.bound().net_log();
8825 8822
8826 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); 8823 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo());
8827 cert_request->host_and_port = "proxy:70"; 8824 cert_request->host_and_port = "proxy:70";
8828 8825
8829 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of 8826 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of
8830 // [ssl_]data[1-3]. Rather than represending the endpoint 8827 // [ssl_]data[1-3]. Rather than represending the endpoint
8831 // (www.example.com:443), they represent failures with the HTTPS proxy 8828 // (www.example.com:443), they represent failures with the HTTPS proxy
8832 // (proxy:70). 8829 // (proxy:70).
8833 SSLSocketDataProvider ssl_data1(true /* async */, 8830 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8834 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED);
8835 ssl_data1.cert_request_info = cert_request.get(); 8831 ssl_data1.cert_request_info = cert_request.get();
8836 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); 8832 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1);
8837 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); 8833 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0);
8838 session_deps.socket_factory.AddSocketDataProvider(&data1); 8834 session_deps.socket_factory.AddSocketDataProvider(&data1);
8839 8835
8840 SSLSocketDataProvider ssl_data2(true /* async */, 8836 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8841 net::ERR_SSL_PROTOCOL_ERROR);
8842 ssl_data2.cert_request_info = cert_request.get(); 8837 ssl_data2.cert_request_info = cert_request.get();
8843 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); 8838 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2);
8844 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); 8839 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0);
8845 session_deps.socket_factory.AddSocketDataProvider(&data2); 8840 session_deps.socket_factory.AddSocketDataProvider(&data2);
8846 8841
8847 SSLSocketDataProvider ssl_data3(true /* async */, 8842 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR);
8848 net::ERR_SSL_PROTOCOL_ERROR);
8849 ssl_data3.cert_request_info = cert_request.get(); 8843 ssl_data3.cert_request_info = cert_request.get();
8850 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); 8844 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3);
8851 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); 8845 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0);
8852 session_deps.socket_factory.AddSocketDataProvider(&data3); 8846 session_deps.socket_factory.AddSocketDataProvider(&data3);
8853 8847
8854 net::HttpRequestInfo requests[2]; 8848 net::HttpRequestInfo requests[2];
8855 requests[0].url = GURL("https://www.example.com/"); 8849 requests[0].url = GURL("https://www.example.com/");
8856 requests[0].method = "GET"; 8850 requests[0].method = "GET";
8857 requests[0].load_flags = net::LOAD_NORMAL; 8851 requests[0].load_flags = net::LOAD_NORMAL;
8858 8852
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
8957 params.proxy_service = session_deps.proxy_service.get(); 8951 params.proxy_service = session_deps.proxy_service.get();
8958 params.ssl_config_service = session_deps.ssl_config_service; 8952 params.ssl_config_service = session_deps.ssl_config_service;
8959 params.http_auth_handler_factory = 8953 params.http_auth_handler_factory =
8960 session_deps.http_auth_handler_factory.get(); 8954 session_deps.http_auth_handler_factory.get();
8961 params.http_server_properties = &session_deps.http_server_properties; 8955 params.http_server_properties = &session_deps.http_server_properties;
8962 params.net_log = session_deps.net_log; 8956 params.net_log = session_deps.net_log;
8963 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); 8957 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params));
8964 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 8958 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
8965 pool_peer.DisableDomainAuthenticationVerification(); 8959 pool_peer.DisableDomainAuthenticationVerification();
8966 8960
8967 SSLSocketDataProvider ssl(true, OK); 8961 SSLSocketDataProvider ssl(ASYNC, OK);
8968 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 8962 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
8969 ssl.next_proto = "spdy/2.1"; 8963 ssl.next_proto = "spdy/2.1";
8970 ssl.was_npn_negotiated = true; 8964 ssl.was_npn_negotiated = true;
8971 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 8965 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
8972 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 8966 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
8973 8967
8974 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( 8968 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet(
8975 "https://www.google.com", false, 1, LOWEST)); 8969 "https://www.google.com", false, 1, LOWEST));
8976 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( 8970 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet(
8977 "https://www.gmail.com", false, 3, LOWEST)); 8971 "https://www.gmail.com", false, 3, LOWEST));
8978 MockWrite spdy_writes[] = { 8972 MockWrite spdy_writes[] = {
8979 CreateMockWrite(*host1_req, 1), 8973 CreateMockWrite(*host1_req, 1),
8980 CreateMockWrite(*host2_req, 4), 8974 CreateMockWrite(*host2_req, 4),
8981 }; 8975 };
8982 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 8976 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1));
8983 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); 8977 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true));
8984 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); 8978 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3));
8985 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); 8979 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true));
8986 MockRead spdy_reads[] = { 8980 MockRead spdy_reads[] = {
8987 CreateMockRead(*host1_resp, 2), 8981 CreateMockRead(*host1_resp, 2),
8988 CreateMockRead(*host1_resp_body, 3), 8982 CreateMockRead(*host1_resp_body, 3),
8989 CreateMockRead(*host2_resp, 5), 8983 CreateMockRead(*host2_resp, 5),
8990 CreateMockRead(*host2_resp_body, 6), 8984 CreateMockRead(*host2_resp_body, 6),
8991 MockRead(true, 0, 7), 8985 MockRead(ASYNC, 0, 7),
8992 }; 8986 };
8993 8987
8994 scoped_ptr<OrderedSocketData> spdy_data( 8988 scoped_ptr<OrderedSocketData> spdy_data(
8995 new OrderedSocketData( 8989 new OrderedSocketData(
8996 spdy_reads, arraysize(spdy_reads), 8990 spdy_reads, arraysize(spdy_reads),
8997 spdy_writes, arraysize(spdy_writes))); 8991 spdy_writes, arraysize(spdy_writes)));
8998 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 8992 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
8999 8993
9000 TestCompletionCallback callback; 8994 TestCompletionCallback callback;
9001 HttpRequestInfo request1; 8995 HttpRequestInfo request1;
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
9111 params.proxy_service = session_deps.proxy_service.get(); 9105 params.proxy_service = session_deps.proxy_service.get();
9112 params.ssl_config_service = session_deps.ssl_config_service; 9106 params.ssl_config_service = session_deps.ssl_config_service;
9113 params.http_auth_handler_factory = 9107 params.http_auth_handler_factory =
9114 session_deps.http_auth_handler_factory.get(); 9108 session_deps.http_auth_handler_factory.get();
9115 params.http_server_properties = &session_deps.http_server_properties; 9109 params.http_server_properties = &session_deps.http_server_properties;
9116 params.net_log = session_deps.net_log; 9110 params.net_log = session_deps.net_log;
9117 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); 9111 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params));
9118 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); 9112 SpdySessionPoolPeer pool_peer(session->spdy_session_pool());
9119 pool_peer.DisableDomainAuthenticationVerification(); 9113 pool_peer.DisableDomainAuthenticationVerification();
9120 9114
9121 SSLSocketDataProvider ssl(true, OK); 9115 SSLSocketDataProvider ssl(ASYNC, OK);
9122 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; 9116 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated;
9123 ssl.next_proto = "spdy/2.1"; 9117 ssl.next_proto = "spdy/2.1";
9124 ssl.was_npn_negotiated = true; 9118 ssl.was_npn_negotiated = true;
9125 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; 9119 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21;
9126 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); 9120 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl);
9127 9121
9128 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( 9122 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet(
9129 "https://www.google.com", false, 1, LOWEST)); 9123 "https://www.google.com", false, 1, LOWEST));
9130 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( 9124 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet(
9131 "https://www.gmail.com", false, 3, LOWEST)); 9125 "https://www.gmail.com", false, 3, LOWEST));
9132 MockWrite spdy_writes[] = { 9126 MockWrite spdy_writes[] = {
9133 CreateMockWrite(*host1_req, 1), 9127 CreateMockWrite(*host1_req, 1),
9134 CreateMockWrite(*host2_req, 4), 9128 CreateMockWrite(*host2_req, 4),
9135 }; 9129 };
9136 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); 9130 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1));
9137 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); 9131 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true));
9138 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); 9132 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3));
9139 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); 9133 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true));
9140 MockRead spdy_reads[] = { 9134 MockRead spdy_reads[] = {
9141 CreateMockRead(*host1_resp, 2), 9135 CreateMockRead(*host1_resp, 2),
9142 CreateMockRead(*host1_resp_body, 3), 9136 CreateMockRead(*host1_resp_body, 3),
9143 CreateMockRead(*host2_resp, 5), 9137 CreateMockRead(*host2_resp, 5),
9144 CreateMockRead(*host2_resp_body, 6), 9138 CreateMockRead(*host2_resp_body, 6),
9145 MockRead(true, 0, 7), 9139 MockRead(ASYNC, 0, 7),
9146 }; 9140 };
9147 9141
9148 scoped_ptr<OrderedSocketData> spdy_data( 9142 scoped_ptr<OrderedSocketData> spdy_data(
9149 new OrderedSocketData( 9143 new OrderedSocketData(
9150 spdy_reads, arraysize(spdy_reads), 9144 spdy_reads, arraysize(spdy_reads),
9151 spdy_writes, arraysize(spdy_writes))); 9145 spdy_writes, arraysize(spdy_writes)));
9152 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); 9146 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get());
9153 9147
9154 TestCompletionCallback callback; 9148 TestCompletionCallback callback;
9155 HttpRequestInfo request1; 9149 HttpRequestInfo request1;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
9204 EXPECT_TRUE(response->was_npn_negotiated); 9198 EXPECT_TRUE(response->was_npn_negotiated);
9205 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); 9199 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data));
9206 EXPECT_EQ("hello!", response_data); 9200 EXPECT_EQ("hello!", response_data);
9207 9201
9208 HttpStreamFactory::set_next_protos(std::vector<std::string>()); 9202 HttpStreamFactory::set_next_protos(std::vector<std::string>());
9209 HttpStreamFactory::set_use_alternate_protocols(false); 9203 HttpStreamFactory::set_use_alternate_protocols(false);
9210 } 9204 }
9211 9205
9212 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { 9206 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) {
9213 MockRead data_reads1[] = { 9207 MockRead data_reads1[] = {
9214 MockRead(false, ERR_PIPELINE_EVICTION), 9208 MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION),
9215 }; 9209 };
9216 MockRead data_reads2[] = { 9210 MockRead data_reads2[] = {
9217 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 9211 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
9218 MockRead("hello world"), 9212 MockRead("hello world"),
9219 MockRead(false, OK), 9213 MockRead(SYNCHRONOUS, OK),
9220 }; 9214 };
9221 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); 9215 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0);
9222 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); 9216 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0);
9223 StaticSocketDataProvider* data[] = { &data1, &data2 }; 9217 StaticSocketDataProvider* data[] = { &data1, &data2 };
9224 9218
9225 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); 9219 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
9226 9220
9227 EXPECT_EQ(OK, out.rv); 9221 EXPECT_EQ(OK, out.rv);
9228 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 9222 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
9229 EXPECT_EQ("hello world", out.response_data); 9223 EXPECT_EQ("hello world", out.response_data);
9230 } 9224 }
9231 9225
9232 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { 9226 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) {
9233 MockWrite data_writes1[] = { 9227 MockWrite data_writes1[] = {
9234 MockWrite(false, ERR_PIPELINE_EVICTION), 9228 MockWrite(SYNCHRONOUS, ERR_PIPELINE_EVICTION),
9235 }; 9229 };
9236 MockWrite data_writes2[] = { 9230 MockWrite data_writes2[] = {
9237 MockWrite("GET / HTTP/1.1\r\n" 9231 MockWrite("GET / HTTP/1.1\r\n"
9238 "Host: www.google.com\r\n" 9232 "Host: www.google.com\r\n"
9239 "Connection: keep-alive\r\n\r\n"), 9233 "Connection: keep-alive\r\n\r\n"),
9240 }; 9234 };
9241 MockRead data_reads2[] = { 9235 MockRead data_reads2[] = {
9242 MockRead("HTTP/1.0 200 OK\r\n\r\n"), 9236 MockRead("HTTP/1.0 200 OK\r\n\r\n"),
9243 MockRead("hello world"), 9237 MockRead("hello world"),
9244 MockRead(false, OK), 9238 MockRead(SYNCHRONOUS, OK),
9245 }; 9239 };
9246 StaticSocketDataProvider data1(NULL, 0, 9240 StaticSocketDataProvider data1(NULL, 0,
9247 data_writes1, arraysize(data_writes1)); 9241 data_writes1, arraysize(data_writes1));
9248 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), 9242 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2),
9249 data_writes2, arraysize(data_writes2)); 9243 data_writes2, arraysize(data_writes2));
9250 StaticSocketDataProvider* data[] = { &data1, &data2 }; 9244 StaticSocketDataProvider* data[] = { &data1, &data2 };
9251 9245
9252 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); 9246 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data));
9253 9247
9254 EXPECT_EQ(OK, out.rv); 9248 EXPECT_EQ(OK, out.rv);
9255 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); 9249 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line);
9256 EXPECT_EQ("hello world", out.response_data); 9250 EXPECT_EQ("hello world", out.response_data);
9257 } 9251 }
9258 9252
9259 } // namespace net 9253 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698