OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |