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.SetNextProto(SSLClientSocket::kProtoSPDY21); | 2159 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
2160 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2160 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
2161 | 2161 |
2162 TestCompletionCallback callback1; | 2162 TestCompletionCallback callback1; |
2163 | 2163 |
2164 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2164 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
2165 | 2165 |
2166 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2166 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2167 EXPECT_EQ(ERR_IO_PENDING, rv); | 2167 EXPECT_EQ(ERR_IO_PENDING, rv); |
2168 | 2168 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2224 1)); | 2224 1)); |
2225 scoped_ptr<spdy::SpdyFrame> body_authentication( | 2225 scoped_ptr<spdy::SpdyFrame> body_authentication( |
2226 ConstructSpdyBodyFrame(1, true)); | 2226 ConstructSpdyBodyFrame(1, true)); |
2227 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); | 2227 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); |
2228 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); | 2228 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); |
2229 MockRead spdy_reads[] = { | 2229 MockRead spdy_reads[] = { |
2230 CreateMockRead(*resp_authentication, 2), | 2230 CreateMockRead(*resp_authentication, 2), |
2231 CreateMockRead(*body_authentication, 3), | 2231 CreateMockRead(*body_authentication, 3), |
2232 CreateMockRead(*resp_data, 5), | 2232 CreateMockRead(*resp_data, 5), |
2233 CreateMockRead(*body_data, 6), | 2233 CreateMockRead(*body_data, 6), |
2234 MockRead(true, 0, 7), | 2234 MockRead(ASYNC, 0, 7), |
2235 }; | 2235 }; |
2236 | 2236 |
2237 scoped_ptr<OrderedSocketData> data( | 2237 scoped_ptr<OrderedSocketData> data( |
2238 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), | 2238 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), |
2239 spdy_writes, arraysize(spdy_writes))); | 2239 spdy_writes, arraysize(spdy_writes))); |
2240 session_deps.socket_factory.AddSocketDataProvider(data.get()); | 2240 session_deps.socket_factory.AddSocketDataProvider(data.get()); |
2241 | 2241 |
2242 SSLSocketDataProvider ssl(true, OK); | 2242 SSLSocketDataProvider ssl(ASYNC, OK); |
2243 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 2243 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
2244 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2244 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
2245 | 2245 |
2246 TestCompletionCallback callback1; | 2246 TestCompletionCallback callback1; |
2247 | 2247 |
2248 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2248 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
2249 | 2249 |
2250 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2250 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2251 EXPECT_EQ(ERR_IO_PENDING, rv); | 2251 EXPECT_EQ(ERR_IO_PENDING, rv); |
2252 | 2252 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2314 scoped_ptr<spdy::SpdyFrame> window_update( | 2314 scoped_ptr<spdy::SpdyFrame> window_update( |
2315 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length())); | 2315 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length())); |
2316 | 2316 |
2317 MockWrite spdy_writes[] = { | 2317 MockWrite spdy_writes[] = { |
2318 CreateMockWrite(*connect, 1), | 2318 CreateMockWrite(*connect, 1), |
2319 CreateMockWrite(*wrapped_get, 3), | 2319 CreateMockWrite(*wrapped_get, 3), |
2320 CreateMockWrite(*window_update, 5) | 2320 CreateMockWrite(*window_update, 5) |
2321 }; | 2321 }; |
2322 | 2322 |
2323 MockRead spdy_reads[] = { | 2323 MockRead spdy_reads[] = { |
2324 CreateMockRead(*conn_resp, 2, true), | 2324 CreateMockRead(*conn_resp, 2, ASYNC), |
2325 CreateMockRead(*wrapped_get_resp, 4, true), | 2325 CreateMockRead(*wrapped_get_resp, 4, ASYNC), |
2326 CreateMockRead(*wrapped_body, 6, true), | 2326 CreateMockRead(*wrapped_body, 6, ASYNC), |
2327 CreateMockRead(*wrapped_body, 7, true), | 2327 CreateMockRead(*wrapped_body, 7, ASYNC), |
2328 MockRead(true, 0, 8), | 2328 MockRead(ASYNC, 0, 8), |
2329 }; | 2329 }; |
2330 | 2330 |
2331 scoped_ptr<OrderedSocketData> spdy_data( | 2331 scoped_ptr<OrderedSocketData> spdy_data( |
2332 new OrderedSocketData( | 2332 new OrderedSocketData( |
2333 spdy_reads, arraysize(spdy_reads), | 2333 spdy_reads, arraysize(spdy_reads), |
2334 spdy_writes, arraysize(spdy_writes))); | 2334 spdy_writes, arraysize(spdy_writes))); |
2335 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 2335 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
2336 | 2336 |
2337 SSLSocketDataProvider ssl(true, OK); | 2337 SSLSocketDataProvider ssl(ASYNC, OK); |
2338 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 2338 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
2339 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2339 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
2340 SSLSocketDataProvider ssl2(true, OK); | 2340 SSLSocketDataProvider ssl2(ASYNC, OK); |
2341 ssl2.was_npn_negotiated = false; | 2341 ssl2.was_npn_negotiated = false; |
2342 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown; | 2342 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown; |
2343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 2343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
2344 | 2344 |
2345 TestCompletionCallback callback1; | 2345 TestCompletionCallback callback1; |
2346 | 2346 |
2347 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2347 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2348 EXPECT_EQ(ERR_IO_PENDING, rv); | 2348 EXPECT_EQ(ERR_IO_PENDING, rv); |
2349 | 2349 |
2350 rv = callback1.WaitForResult(); | 2350 rv = callback1.WaitForResult(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2394 ConstructSpdyWindowUpdate(1, wrapped_body->length())); | 2394 ConstructSpdyWindowUpdate(1, wrapped_body->length())); |
2395 | 2395 |
2396 MockWrite spdy_writes[] = { | 2396 MockWrite spdy_writes[] = { |
2397 CreateMockWrite(*connect, 1), | 2397 CreateMockWrite(*connect, 1), |
2398 CreateMockWrite(*wrapped_get, 3), | 2398 CreateMockWrite(*wrapped_get, 3), |
2399 CreateMockWrite(*window_update_get_resp, 5), | 2399 CreateMockWrite(*window_update_get_resp, 5), |
2400 CreateMockWrite(*window_update_body, 7), | 2400 CreateMockWrite(*window_update_body, 7), |
2401 }; | 2401 }; |
2402 | 2402 |
2403 MockRead spdy_reads[] = { | 2403 MockRead spdy_reads[] = { |
2404 CreateMockRead(*conn_resp, 2, true), | 2404 CreateMockRead(*conn_resp, 2, ASYNC), |
2405 CreateMockRead(*wrapped_get_resp, 4, true), | 2405 CreateMockRead(*wrapped_get_resp, 4, ASYNC), |
2406 CreateMockRead(*wrapped_body, 6, true), | 2406 CreateMockRead(*wrapped_body, 6, ASYNC), |
2407 MockRead(true, 0, 8), | 2407 MockRead(ASYNC, 0, 8), |
2408 }; | 2408 }; |
2409 | 2409 |
2410 scoped_ptr<OrderedSocketData> spdy_data( | 2410 scoped_ptr<OrderedSocketData> spdy_data( |
2411 new OrderedSocketData( | 2411 new OrderedSocketData( |
2412 spdy_reads, arraysize(spdy_reads), | 2412 spdy_reads, arraysize(spdy_reads), |
2413 spdy_writes, arraysize(spdy_writes))); | 2413 spdy_writes, arraysize(spdy_writes))); |
2414 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 2414 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
2415 | 2415 |
2416 SSLSocketDataProvider ssl(true, OK); | 2416 SSLSocketDataProvider ssl(ASYNC, OK); |
2417 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 2417 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
2418 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2418 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
2419 SSLSocketDataProvider ssl2(true, OK); | 2419 SSLSocketDataProvider ssl2(ASYNC, OK); |
2420 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21); | 2420 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21); |
2421 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2421 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
2422 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 2422 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
2423 | 2423 |
2424 TestCompletionCallback callback1; | 2424 TestCompletionCallback callback1; |
2425 | 2425 |
2426 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2426 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2427 EXPECT_EQ(ERR_IO_PENDING, rv); | 2427 EXPECT_EQ(ERR_IO_PENDING, rv); |
2428 | 2428 |
2429 rv = callback1.WaitForResult(); | 2429 rv = callback1.WaitForResult(); |
(...skipping 30 matching lines...) Expand all Loading... |
2460 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL)); | 2460 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL)); |
2461 | 2461 |
2462 MockWrite spdy_writes[] = { | 2462 MockWrite spdy_writes[] = { |
2463 CreateMockWrite(*connect, 1), | 2463 CreateMockWrite(*connect, 1), |
2464 CreateMockWrite(*get, 3), | 2464 CreateMockWrite(*get, 3), |
2465 }; | 2465 }; |
2466 | 2466 |
2467 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1)); | 2467 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1)); |
2468 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 2468 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
2469 MockRead spdy_reads[] = { | 2469 MockRead spdy_reads[] = { |
2470 CreateMockRead(*resp, 2, true), | 2470 CreateMockRead(*resp, 2, ASYNC), |
2471 MockRead(true, 0, 4), | 2471 MockRead(ASYNC, 0, 4), |
2472 }; | 2472 }; |
2473 | 2473 |
2474 scoped_ptr<OrderedSocketData> spdy_data( | 2474 scoped_ptr<OrderedSocketData> spdy_data( |
2475 new OrderedSocketData( | 2475 new OrderedSocketData( |
2476 spdy_reads, arraysize(spdy_reads), | 2476 spdy_reads, arraysize(spdy_reads), |
2477 spdy_writes, arraysize(spdy_writes))); | 2477 spdy_writes, arraysize(spdy_writes))); |
2478 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 2478 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
2479 | 2479 |
2480 SSLSocketDataProvider ssl(true, OK); | 2480 SSLSocketDataProvider ssl(ASYNC, OK); |
2481 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 2481 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
2482 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2482 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
2483 SSLSocketDataProvider ssl2(true, OK); | 2483 SSLSocketDataProvider ssl2(ASYNC, OK); |
2484 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21); | 2484 ssl2.SetNextProto(SSLClientSocket::kProtoSPDY21); |
2485 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 2485 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
2486 | 2486 |
2487 TestCompletionCallback callback1; | 2487 TestCompletionCallback callback1; |
2488 | 2488 |
2489 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2489 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2490 EXPECT_EQ(ERR_IO_PENDING, rv); | 2490 EXPECT_EQ(ERR_IO_PENDING, rv); |
2491 | 2491 |
2492 rv = callback1.WaitForResult(); | 2492 rv = callback1.WaitForResult(); |
2493 EXPECT_EQ(OK, rv); | 2493 EXPECT_EQ(OK, rv); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2531 MockRead data_reads1[] = { | 2531 MockRead data_reads1[] = { |
2532 // No credentials. | 2532 // No credentials. |
2533 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), | 2533 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
2534 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 2534 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
2535 MockRead("Proxy-Connection: keep-alive\r\n"), | 2535 MockRead("Proxy-Connection: keep-alive\r\n"), |
2536 MockRead("Content-Length: 0\r\n\r\n"), | 2536 MockRead("Content-Length: 0\r\n\r\n"), |
2537 | 2537 |
2538 MockRead("HTTP/1.1 200 OK\r\n"), | 2538 MockRead("HTTP/1.1 200 OK\r\n"), |
2539 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2539 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
2540 MockRead("Content-Length: 100\r\n\r\n"), | 2540 MockRead("Content-Length: 100\r\n\r\n"), |
2541 MockRead(false, OK), | 2541 MockRead(SYNCHRONOUS, OK), |
2542 }; | 2542 }; |
2543 | 2543 |
2544 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 2544 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
2545 data_writes1, arraysize(data_writes1)); | 2545 data_writes1, arraysize(data_writes1)); |
2546 session_deps.socket_factory.AddSocketDataProvider(&data1); | 2546 session_deps.socket_factory.AddSocketDataProvider(&data1); |
2547 SSLSocketDataProvider ssl(true, OK); | 2547 SSLSocketDataProvider ssl(ASYNC, OK); |
2548 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2548 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
2549 | 2549 |
2550 TestCompletionCallback callback1; | 2550 TestCompletionCallback callback1; |
2551 | 2551 |
2552 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2552 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
2553 | 2553 |
2554 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2554 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
2555 EXPECT_EQ(ERR_IO_PENDING, rv); | 2555 EXPECT_EQ(ERR_IO_PENDING, rv); |
2556 | 2556 |
2557 rv = callback1.WaitForResult(); | 2557 rv = callback1.WaitForResult(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2601 MockWrite data_writes[] = { | 2601 MockWrite data_writes[] = { |
2602 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 2602 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
2603 "Host: www.google.com\r\n" | 2603 "Host: www.google.com\r\n" |
2604 "Proxy-Connection: keep-alive\r\n\r\n"), | 2604 "Proxy-Connection: keep-alive\r\n\r\n"), |
2605 }; | 2605 }; |
2606 | 2606 |
2607 MockRead data_reads[] = { | 2607 MockRead data_reads[] = { |
2608 status, | 2608 status, |
2609 MockRead("Content-Length: 10\r\n\r\n"), | 2609 MockRead("Content-Length: 10\r\n\r\n"), |
2610 // No response body because the test stops reading here. | 2610 // No response body because the test stops reading here. |
2611 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 2611 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
2612 }; | 2612 }; |
2613 | 2613 |
2614 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 2614 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
2615 data_writes, arraysize(data_writes)); | 2615 data_writes, arraysize(data_writes)); |
2616 session_deps.socket_factory.AddSocketDataProvider(&data); | 2616 session_deps.socket_factory.AddSocketDataProvider(&data); |
2617 | 2617 |
2618 TestCompletionCallback callback; | 2618 TestCompletionCallback callback; |
2619 | 2619 |
2620 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2620 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
2621 | 2621 |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2819 MockRead data_reads1[] = { | 2819 MockRead data_reads1[] = { |
2820 MockRead("HTTP/1.0 407 Unauthorized\r\n"), | 2820 MockRead("HTTP/1.0 407 Unauthorized\r\n"), |
2821 // Give a couple authenticate options (only the middle one is actually | 2821 // Give a couple authenticate options (only the middle one is actually |
2822 // supported). | 2822 // supported). |
2823 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed. | 2823 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed. |
2824 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 2824 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
2825 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), | 2825 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), |
2826 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2826 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
2827 // Large content-length -- won't matter, as connection will be reset. | 2827 // Large content-length -- won't matter, as connection will be reset. |
2828 MockRead("Content-Length: 10000\r\n\r\n"), | 2828 MockRead("Content-Length: 10000\r\n\r\n"), |
2829 MockRead(false, ERR_FAILED), | 2829 MockRead(SYNCHRONOUS, ERR_FAILED), |
2830 }; | 2830 }; |
2831 | 2831 |
2832 // After calling trans->RestartWithAuth() the first time, this is the | 2832 // After calling trans->RestartWithAuth() the first time, this is the |
2833 // request we should be issuing -- the final header line contains the | 2833 // request we should be issuing -- the final header line contains the |
2834 // proxy's credentials. | 2834 // proxy's credentials. |
2835 MockWrite data_writes2[] = { | 2835 MockWrite data_writes2[] = { |
2836 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 2836 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
2837 "Host: www.google.com\r\n" | 2837 "Host: www.google.com\r\n" |
2838 "Proxy-Connection: keep-alive\r\n" | 2838 "Proxy-Connection: keep-alive\r\n" |
2839 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 2839 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
2840 }; | 2840 }; |
2841 | 2841 |
2842 // Now the proxy server lets the request pass through to origin server. | 2842 // Now the proxy server lets the request pass through to origin server. |
2843 // The origin server responds with a 401. | 2843 // The origin server responds with a 401. |
2844 MockRead data_reads2[] = { | 2844 MockRead data_reads2[] = { |
2845 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 2845 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
2846 // Note: We are using the same realm-name as the proxy server. This is | 2846 // Note: We are using the same realm-name as the proxy server. This is |
2847 // completely valid, as realms are unique across hosts. | 2847 // completely valid, as realms are unique across hosts. |
2848 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 2848 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
2849 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2849 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
2850 MockRead("Content-Length: 2000\r\n\r\n"), | 2850 MockRead("Content-Length: 2000\r\n\r\n"), |
2851 MockRead(false, ERR_FAILED), // Won't be reached. | 2851 MockRead(SYNCHRONOUS, ERR_FAILED), // Won't be reached. |
2852 }; | 2852 }; |
2853 | 2853 |
2854 // After calling trans->RestartWithAuth() the second time, we should send | 2854 // After calling trans->RestartWithAuth() the second time, we should send |
2855 // the credentials for both the proxy and origin server. | 2855 // the credentials for both the proxy and origin server. |
2856 MockWrite data_writes3[] = { | 2856 MockWrite data_writes3[] = { |
2857 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 2857 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
2858 "Host: www.google.com\r\n" | 2858 "Host: www.google.com\r\n" |
2859 "Proxy-Connection: keep-alive\r\n" | 2859 "Proxy-Connection: keep-alive\r\n" |
2860 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" | 2860 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" |
2861 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), | 2861 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), |
2862 }; | 2862 }; |
2863 | 2863 |
2864 // Lastly we get the desired content. | 2864 // Lastly we get the desired content. |
2865 MockRead data_reads3[] = { | 2865 MockRead data_reads3[] = { |
2866 MockRead("HTTP/1.0 200 OK\r\n"), | 2866 MockRead("HTTP/1.0 200 OK\r\n"), |
2867 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2867 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
2868 MockRead("Content-Length: 100\r\n\r\n"), | 2868 MockRead("Content-Length: 100\r\n\r\n"), |
2869 MockRead(false, OK), | 2869 MockRead(SYNCHRONOUS, OK), |
2870 }; | 2870 }; |
2871 | 2871 |
2872 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 2872 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
2873 data_writes1, arraysize(data_writes1)); | 2873 data_writes1, arraysize(data_writes1)); |
2874 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 2874 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
2875 data_writes2, arraysize(data_writes2)); | 2875 data_writes2, arraysize(data_writes2)); |
2876 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), | 2876 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
2877 data_writes3, arraysize(data_writes3)); | 2877 data_writes3, arraysize(data_writes3)); |
2878 session_deps.socket_factory.AddSocketDataProvider(&data1); | 2878 session_deps.socket_factory.AddSocketDataProvider(&data1); |
2879 session_deps.socket_factory.AddSocketDataProvider(&data2); | 2879 session_deps.socket_factory.AddSocketDataProvider(&data2); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2947 MockRead data_reads1[] = { | 2947 MockRead data_reads1[] = { |
2948 MockRead("HTTP/1.1 401 Access Denied\r\n"), | 2948 MockRead("HTTP/1.1 401 Access Denied\r\n"), |
2949 // Negotiate and NTLM are often requested together. However, we only want | 2949 // Negotiate and NTLM are often requested together. However, we only want |
2950 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip | 2950 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip |
2951 // the header that requests Negotiate for this test. | 2951 // the header that requests Negotiate for this test. |
2952 MockRead("WWW-Authenticate: NTLM\r\n"), | 2952 MockRead("WWW-Authenticate: NTLM\r\n"), |
2953 MockRead("Connection: close\r\n"), | 2953 MockRead("Connection: close\r\n"), |
2954 MockRead("Content-Length: 42\r\n"), | 2954 MockRead("Content-Length: 42\r\n"), |
2955 MockRead("Content-Type: text/html\r\n\r\n"), | 2955 MockRead("Content-Type: text/html\r\n\r\n"), |
2956 // Missing content -- won't matter, as connection will be reset. | 2956 // Missing content -- won't matter, as connection will be reset. |
2957 MockRead(false, ERR_UNEXPECTED), | 2957 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), |
2958 }; | 2958 }; |
2959 | 2959 |
2960 MockWrite data_writes2[] = { | 2960 MockWrite data_writes2[] = { |
2961 // After restarting with a null identity, this is the | 2961 // After restarting with a null identity, this is the |
2962 // request we should be issuing -- the final header line contains a Type | 2962 // request we should be issuing -- the final header line contains a Type |
2963 // 1 message. | 2963 // 1 message. |
2964 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" | 2964 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" |
2965 "Host: 172.22.68.17\r\n" | 2965 "Host: 172.22.68.17\r\n" |
2966 "Connection: keep-alive\r\n" | 2966 "Connection: keep-alive\r\n" |
2967 "Authorization: NTLM " | 2967 "Authorization: NTLM " |
(...skipping 25 matching lines...) Expand all Loading... |
2993 "BtAAAAAAA=\r\n"), | 2993 "BtAAAAAAA=\r\n"), |
2994 MockRead("Content-Length: 42\r\n"), | 2994 MockRead("Content-Length: 42\r\n"), |
2995 MockRead("Content-Type: text/html\r\n\r\n"), | 2995 MockRead("Content-Type: text/html\r\n\r\n"), |
2996 MockRead("You are not authorized to view this page\r\n"), | 2996 MockRead("You are not authorized to view this page\r\n"), |
2997 | 2997 |
2998 // Lastly we get the desired content. | 2998 // Lastly we get the desired content. |
2999 MockRead("HTTP/1.1 200 OK\r\n"), | 2999 MockRead("HTTP/1.1 200 OK\r\n"), |
3000 MockRead("Content-Type: text/html; charset=utf-8\r\n"), | 3000 MockRead("Content-Type: text/html; charset=utf-8\r\n"), |
3001 MockRead("Content-Length: 13\r\n\r\n"), | 3001 MockRead("Content-Length: 13\r\n\r\n"), |
3002 MockRead("Please Login\r\n"), | 3002 MockRead("Please Login\r\n"), |
3003 MockRead(false, OK), | 3003 MockRead(SYNCHRONOUS, OK), |
3004 }; | 3004 }; |
3005 | 3005 |
3006 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3006 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3007 data_writes1, arraysize(data_writes1)); | 3007 data_writes1, arraysize(data_writes1)); |
3008 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3008 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
3009 data_writes2, arraysize(data_writes2)); | 3009 data_writes2, arraysize(data_writes2)); |
3010 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3010 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3011 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3011 session_deps.socket_factory.AddSocketDataProvider(&data2); |
3012 | 3012 |
3013 TestCompletionCallback callback1; | 3013 TestCompletionCallback callback1; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3076 MockRead data_reads1[] = { | 3076 MockRead data_reads1[] = { |
3077 MockRead("HTTP/1.1 401 Access Denied\r\n"), | 3077 MockRead("HTTP/1.1 401 Access Denied\r\n"), |
3078 // Negotiate and NTLM are often requested together. However, we only want | 3078 // Negotiate and NTLM are often requested together. However, we only want |
3079 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip | 3079 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip |
3080 // the header that requests Negotiate for this test. | 3080 // the header that requests Negotiate for this test. |
3081 MockRead("WWW-Authenticate: NTLM\r\n"), | 3081 MockRead("WWW-Authenticate: NTLM\r\n"), |
3082 MockRead("Connection: close\r\n"), | 3082 MockRead("Connection: close\r\n"), |
3083 MockRead("Content-Length: 42\r\n"), | 3083 MockRead("Content-Length: 42\r\n"), |
3084 MockRead("Content-Type: text/html\r\n\r\n"), | 3084 MockRead("Content-Type: text/html\r\n\r\n"), |
3085 // Missing content -- won't matter, as connection will be reset. | 3085 // Missing content -- won't matter, as connection will be reset. |
3086 MockRead(false, ERR_UNEXPECTED), | 3086 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), |
3087 }; | 3087 }; |
3088 | 3088 |
3089 MockWrite data_writes2[] = { | 3089 MockWrite data_writes2[] = { |
3090 // After restarting with a null identity, this is the | 3090 // After restarting with a null identity, this is the |
3091 // request we should be issuing -- the final header line contains a Type | 3091 // request we should be issuing -- the final header line contains a Type |
3092 // 1 message. | 3092 // 1 message. |
3093 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" | 3093 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" |
3094 "Host: 172.22.68.17\r\n" | 3094 "Host: 172.22.68.17\r\n" |
3095 "Connection: keep-alive\r\n" | 3095 "Connection: keep-alive\r\n" |
3096 "Authorization: NTLM " | 3096 "Authorization: NTLM " |
(...skipping 27 matching lines...) Expand all Loading... |
3124 MockRead("Content-Type: text/html\r\n\r\n"), | 3124 MockRead("Content-Type: text/html\r\n\r\n"), |
3125 MockRead("You are not authorized to view this page\r\n"), | 3125 MockRead("You are not authorized to view this page\r\n"), |
3126 | 3126 |
3127 // Wrong password. | 3127 // Wrong password. |
3128 MockRead("HTTP/1.1 401 Access Denied\r\n"), | 3128 MockRead("HTTP/1.1 401 Access Denied\r\n"), |
3129 MockRead("WWW-Authenticate: NTLM\r\n"), | 3129 MockRead("WWW-Authenticate: NTLM\r\n"), |
3130 MockRead("Connection: close\r\n"), | 3130 MockRead("Connection: close\r\n"), |
3131 MockRead("Content-Length: 42\r\n"), | 3131 MockRead("Content-Length: 42\r\n"), |
3132 MockRead("Content-Type: text/html\r\n\r\n"), | 3132 MockRead("Content-Type: text/html\r\n\r\n"), |
3133 // Missing content -- won't matter, as connection will be reset. | 3133 // Missing content -- won't matter, as connection will be reset. |
3134 MockRead(false, ERR_UNEXPECTED), | 3134 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), |
3135 }; | 3135 }; |
3136 | 3136 |
3137 MockWrite data_writes3[] = { | 3137 MockWrite data_writes3[] = { |
3138 // After restarting with a null identity, this is the | 3138 // After restarting with a null identity, this is the |
3139 // request we should be issuing -- the final header line contains a Type | 3139 // request we should be issuing -- the final header line contains a Type |
3140 // 1 message. | 3140 // 1 message. |
3141 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" | 3141 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" |
3142 "Host: 172.22.68.17\r\n" | 3142 "Host: 172.22.68.17\r\n" |
3143 "Connection: keep-alive\r\n" | 3143 "Connection: keep-alive\r\n" |
3144 "Authorization: NTLM " | 3144 "Authorization: NTLM " |
(...skipping 25 matching lines...) Expand all Loading... |
3170 "BtAAAAAAA=\r\n"), | 3170 "BtAAAAAAA=\r\n"), |
3171 MockRead("Content-Length: 42\r\n"), | 3171 MockRead("Content-Length: 42\r\n"), |
3172 MockRead("Content-Type: text/html\r\n\r\n"), | 3172 MockRead("Content-Type: text/html\r\n\r\n"), |
3173 MockRead("You are not authorized to view this page\r\n"), | 3173 MockRead("You are not authorized to view this page\r\n"), |
3174 | 3174 |
3175 // Lastly we get the desired content. | 3175 // Lastly we get the desired content. |
3176 MockRead("HTTP/1.1 200 OK\r\n"), | 3176 MockRead("HTTP/1.1 200 OK\r\n"), |
3177 MockRead("Content-Type: text/html; charset=utf-8\r\n"), | 3177 MockRead("Content-Type: text/html; charset=utf-8\r\n"), |
3178 MockRead("Content-Length: 13\r\n\r\n"), | 3178 MockRead("Content-Length: 13\r\n\r\n"), |
3179 MockRead("Please Login\r\n"), | 3179 MockRead("Please Login\r\n"), |
3180 MockRead(false, OK), | 3180 MockRead(SYNCHRONOUS, OK), |
3181 }; | 3181 }; |
3182 | 3182 |
3183 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3183 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3184 data_writes1, arraysize(data_writes1)); | 3184 data_writes1, arraysize(data_writes1)); |
3185 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3185 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
3186 data_writes2, arraysize(data_writes2)); | 3186 data_writes2, arraysize(data_writes2)); |
3187 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), | 3187 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
3188 data_writes3, arraysize(data_writes3)); | 3188 data_writes3, arraysize(data_writes3)); |
3189 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3189 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3190 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3190 session_deps.socket_factory.AddSocketDataProvider(&data2); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3267 SessionDependencies session_deps; | 3267 SessionDependencies session_deps; |
3268 scoped_ptr<HttpTransaction> trans( | 3268 scoped_ptr<HttpTransaction> trans( |
3269 new HttpNetworkTransaction(CreateSession(&session_deps))); | 3269 new HttpNetworkTransaction(CreateSession(&session_deps))); |
3270 | 3270 |
3271 // Respond with 300 kb of headers (we should fail after 256 kb). | 3271 // Respond with 300 kb of headers (we should fail after 256 kb). |
3272 std::string large_headers_string; | 3272 std::string large_headers_string; |
3273 FillLargeHeadersString(&large_headers_string, 300 * 1024); | 3273 FillLargeHeadersString(&large_headers_string, 300 * 1024); |
3274 | 3274 |
3275 MockRead data_reads[] = { | 3275 MockRead data_reads[] = { |
3276 MockRead("HTTP/1.0 200 OK\r\n"), | 3276 MockRead("HTTP/1.0 200 OK\r\n"), |
3277 MockRead(true, large_headers_string.data(), large_headers_string.size()), | 3277 MockRead(ASYNC, large_headers_string.data(), large_headers_string.size()), |
3278 MockRead("\r\nBODY"), | 3278 MockRead("\r\nBODY"), |
3279 MockRead(false, OK), | 3279 MockRead(SYNCHRONOUS, OK), |
3280 }; | 3280 }; |
3281 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 3281 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
3282 session_deps.socket_factory.AddSocketDataProvider(&data); | 3282 session_deps.socket_factory.AddSocketDataProvider(&data); |
3283 | 3283 |
3284 TestCompletionCallback callback; | 3284 TestCompletionCallback callback; |
3285 | 3285 |
3286 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 3286 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
3287 EXPECT_EQ(ERR_IO_PENDING, rv); | 3287 EXPECT_EQ(ERR_IO_PENDING, rv); |
3288 | 3288 |
3289 rv = callback.WaitForResult(); | 3289 rv = callback.WaitForResult(); |
(...skipping 25 matching lines...) Expand all Loading... |
3315 "Host: www.google.com\r\n" | 3315 "Host: www.google.com\r\n" |
3316 "Proxy-Connection: keep-alive\r\n\r\n"), | 3316 "Proxy-Connection: keep-alive\r\n\r\n"), |
3317 }; | 3317 }; |
3318 | 3318 |
3319 // The proxy responds to the connect with a 404, using a persistent | 3319 // The proxy responds to the connect with a 404, using a persistent |
3320 // connection. Usually a proxy would return 501 (not implemented), | 3320 // connection. Usually a proxy would return 501 (not implemented), |
3321 // or 200 (tunnel established). | 3321 // or 200 (tunnel established). |
3322 MockRead data_reads1[] = { | 3322 MockRead data_reads1[] = { |
3323 MockRead("HTTP/1.1 404 Not Found\r\n"), | 3323 MockRead("HTTP/1.1 404 Not Found\r\n"), |
3324 MockRead("Content-Length: 10\r\n\r\n"), | 3324 MockRead("Content-Length: 10\r\n\r\n"), |
3325 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 3325 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
3326 }; | 3326 }; |
3327 | 3327 |
3328 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3328 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3329 data_writes1, arraysize(data_writes1)); | 3329 data_writes1, arraysize(data_writes1)); |
3330 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3330 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3331 | 3331 |
3332 TestCompletionCallback callback1; | 3332 TestCompletionCallback callback1; |
3333 | 3333 |
3334 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 3334 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
3335 EXPECT_EQ(ERR_IO_PENDING, rv); | 3335 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 29 matching lines...) Expand all Loading... |
3365 | 3365 |
3366 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 3366 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
3367 | 3367 |
3368 MockRead data_reads[] = { | 3368 MockRead data_reads[] = { |
3369 // A part of the response body is received with the response headers. | 3369 // A part of the response body is received with the response headers. |
3370 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"), | 3370 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"), |
3371 // The rest of the response body is received in two parts. | 3371 // The rest of the response body is received in two parts. |
3372 MockRead("lo"), | 3372 MockRead("lo"), |
3373 MockRead(" world"), | 3373 MockRead(" world"), |
3374 MockRead("junk"), // Should not be read!! | 3374 MockRead("junk"), // Should not be read!! |
3375 MockRead(false, OK), | 3375 MockRead(SYNCHRONOUS, OK), |
3376 }; | 3376 }; |
3377 | 3377 |
3378 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 3378 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
3379 session_deps.socket_factory.AddSocketDataProvider(&data); | 3379 session_deps.socket_factory.AddSocketDataProvider(&data); |
3380 | 3380 |
3381 TestCompletionCallback callback; | 3381 TestCompletionCallback callback; |
3382 | 3382 |
3383 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 3383 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
3384 EXPECT_EQ(ERR_IO_PENDING, rv); | 3384 EXPECT_EQ(ERR_IO_PENDING, rv); |
3385 | 3385 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3420 MockWrite data_writes[] = { | 3420 MockWrite data_writes[] = { |
3421 MockWrite("GET / HTTP/1.1\r\n" | 3421 MockWrite("GET / HTTP/1.1\r\n" |
3422 "Host: www.google.com\r\n" | 3422 "Host: www.google.com\r\n" |
3423 "Connection: keep-alive\r\n\r\n"), | 3423 "Connection: keep-alive\r\n\r\n"), |
3424 }; | 3424 }; |
3425 | 3425 |
3426 MockRead data_reads[] = { | 3426 MockRead data_reads[] = { |
3427 MockRead("HTTP/1.1 200 OK\r\n"), | 3427 MockRead("HTTP/1.1 200 OK\r\n"), |
3428 MockRead("Content-Length: 11\r\n\r\n"), | 3428 MockRead("Content-Length: 11\r\n\r\n"), |
3429 MockRead("hello world"), | 3429 MockRead("hello world"), |
3430 MockRead(false, OK), | 3430 MockRead(SYNCHRONOUS, OK), |
3431 }; | 3431 }; |
3432 | 3432 |
3433 SSLSocketDataProvider ssl(true, OK); | 3433 SSLSocketDataProvider ssl(ASYNC, OK); |
3434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 3434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
3435 | 3435 |
3436 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 3436 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
3437 data_writes, arraysize(data_writes)); | 3437 data_writes, arraysize(data_writes)); |
3438 session_deps.socket_factory.AddSocketDataProvider(&data); | 3438 session_deps.socket_factory.AddSocketDataProvider(&data); |
3439 | 3439 |
3440 TestCompletionCallback callback; | 3440 TestCompletionCallback callback; |
3441 | 3441 |
3442 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 3442 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
3443 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 3443 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3481 "Host: www.google.com\r\n" | 3481 "Host: www.google.com\r\n" |
3482 "Connection: keep-alive\r\n\r\n"), | 3482 "Connection: keep-alive\r\n\r\n"), |
3483 MockWrite("GET / HTTP/1.1\r\n" | 3483 MockWrite("GET / HTTP/1.1\r\n" |
3484 "Host: www.google.com\r\n" | 3484 "Host: www.google.com\r\n" |
3485 "Connection: keep-alive\r\n\r\n"), | 3485 "Connection: keep-alive\r\n\r\n"), |
3486 }; | 3486 }; |
3487 | 3487 |
3488 MockRead data_reads[] = { | 3488 MockRead data_reads[] = { |
3489 MockRead("HTTP/1.1 200 OK\r\n"), | 3489 MockRead("HTTP/1.1 200 OK\r\n"), |
3490 MockRead("Content-Length: 11\r\n\r\n"), | 3490 MockRead("Content-Length: 11\r\n\r\n"), |
3491 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 3491 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
3492 MockRead("hello world"), | 3492 MockRead("hello world"), |
3493 MockRead(true, 0, 0) // EOF | 3493 MockRead(ASYNC, 0, 0) // EOF |
3494 }; | 3494 }; |
3495 | 3495 |
3496 SSLSocketDataProvider ssl(true, OK); | 3496 SSLSocketDataProvider ssl(ASYNC, OK); |
3497 SSLSocketDataProvider ssl2(true, OK); | 3497 SSLSocketDataProvider ssl2(ASYNC, OK); |
3498 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 3498 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
3499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 3499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
3500 | 3500 |
3501 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 3501 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
3502 data_writes, arraysize(data_writes)); | 3502 data_writes, arraysize(data_writes)); |
3503 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), | 3503 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), |
3504 data_writes, arraysize(data_writes)); | 3504 data_writes, arraysize(data_writes)); |
3505 session_deps.socket_factory.AddSocketDataProvider(&data); | 3505 session_deps.socket_factory.AddSocketDataProvider(&data); |
3506 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3506 session_deps.socket_factory.AddSocketDataProvider(&data2); |
3507 | 3507 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3576 SessionDependencies session_deps; | 3576 SessionDependencies session_deps; |
3577 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 3577 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
3578 | 3578 |
3579 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 3579 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
3580 | 3580 |
3581 MockRead data_reads[] = { | 3581 MockRead data_reads[] = { |
3582 MockRead("HTTP/1.1 204 No Content\r\n" | 3582 MockRead("HTTP/1.1 204 No Content\r\n" |
3583 "Content-Length: 0\r\n" | 3583 "Content-Length: 0\r\n" |
3584 "Content-Type: text/html\r\n\r\n"), | 3584 "Content-Type: text/html\r\n\r\n"), |
3585 MockRead("junk"), // Should not be read!! | 3585 MockRead("junk"), // Should not be read!! |
3586 MockRead(false, OK), | 3586 MockRead(SYNCHRONOUS, OK), |
3587 }; | 3587 }; |
3588 | 3588 |
3589 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 3589 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
3590 session_deps.socket_factory.AddSocketDataProvider(&data); | 3590 session_deps.socket_factory.AddSocketDataProvider(&data); |
3591 | 3591 |
3592 TestCompletionCallback callback; | 3592 TestCompletionCallback callback; |
3593 | 3593 |
3594 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 3594 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
3595 EXPECT_EQ(ERR_IO_PENDING, rv); | 3595 EXPECT_EQ(ERR_IO_PENDING, rv); |
3596 | 3596 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3639 SessionDependencies session_deps; | 3639 SessionDependencies session_deps; |
3640 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 3640 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
3641 | 3641 |
3642 // The first socket is used for transaction 1 and the first attempt of | 3642 // The first socket is used for transaction 1 and the first attempt of |
3643 // transaction 2. | 3643 // transaction 2. |
3644 | 3644 |
3645 // The response of transaction 1. | 3645 // The response of transaction 1. |
3646 MockRead data_reads1[] = { | 3646 MockRead data_reads1[] = { |
3647 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"), | 3647 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"), |
3648 MockRead("hello world"), | 3648 MockRead("hello world"), |
3649 MockRead(false, OK), | 3649 MockRead(SYNCHRONOUS, OK), |
3650 }; | 3650 }; |
3651 // The mock write results of transaction 1 and the first attempt of | 3651 // The mock write results of transaction 1 and the first attempt of |
3652 // transaction 2. | 3652 // transaction 2. |
3653 MockWrite data_writes1[] = { | 3653 MockWrite data_writes1[] = { |
3654 MockWrite(false, 64), // GET | 3654 MockWrite(SYNCHRONOUS, 64), // GET |
3655 MockWrite(false, 93), // POST | 3655 MockWrite(SYNCHRONOUS, 93), // POST |
3656 MockWrite(false, ERR_CONNECTION_ABORTED), // POST data | 3656 MockWrite(SYNCHRONOUS, ERR_CONNECTION_ABORTED), // POST data |
3657 }; | 3657 }; |
3658 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3658 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3659 data_writes1, arraysize(data_writes1)); | 3659 data_writes1, arraysize(data_writes1)); |
3660 | 3660 |
3661 // The second socket is used for the second attempt of transaction 2. | 3661 // The second socket is used for the second attempt of transaction 2. |
3662 | 3662 |
3663 // The response of transaction 2. | 3663 // The response of transaction 2. |
3664 MockRead data_reads2[] = { | 3664 MockRead data_reads2[] = { |
3665 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"), | 3665 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"), |
3666 MockRead("welcome"), | 3666 MockRead("welcome"), |
3667 MockRead(false, OK), | 3667 MockRead(SYNCHRONOUS, OK), |
3668 }; | 3668 }; |
3669 // The mock write results of the second attempt of transaction 2. | 3669 // The mock write results of the second attempt of transaction 2. |
3670 MockWrite data_writes2[] = { | 3670 MockWrite data_writes2[] = { |
3671 MockWrite(false, 93), // POST | 3671 MockWrite(SYNCHRONOUS, 93), // POST |
3672 MockWrite(false, 3), // POST data | 3672 MockWrite(SYNCHRONOUS, 3), // POST data |
3673 }; | 3673 }; |
3674 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3674 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
3675 data_writes2, arraysize(data_writes2)); | 3675 data_writes2, arraysize(data_writes2)); |
3676 | 3676 |
3677 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3677 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3678 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3678 session_deps.socket_factory.AddSocketDataProvider(&data2); |
3679 | 3679 |
3680 const char* kExpectedResponseData[] = { | 3680 const char* kExpectedResponseData[] = { |
3681 "hello world", "welcome" | 3681 "hello world", "welcome" |
3682 }; | 3682 }; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3726 MockWrite data_writes1[] = { | 3726 MockWrite data_writes1[] = { |
3727 MockWrite("GET / HTTP/1.1\r\n" | 3727 MockWrite("GET / HTTP/1.1\r\n" |
3728 "Host: www.google.com\r\n" | 3728 "Host: www.google.com\r\n" |
3729 "Connection: keep-alive\r\n\r\n"), | 3729 "Connection: keep-alive\r\n\r\n"), |
3730 }; | 3730 }; |
3731 | 3731 |
3732 MockRead data_reads1[] = { | 3732 MockRead data_reads1[] = { |
3733 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 3733 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
3734 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 3734 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
3735 MockRead("Content-Length: 10\r\n\r\n"), | 3735 MockRead("Content-Length: 10\r\n\r\n"), |
3736 MockRead(false, ERR_FAILED), | 3736 MockRead(SYNCHRONOUS, ERR_FAILED), |
3737 }; | 3737 }; |
3738 | 3738 |
3739 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3739 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3740 data_writes1, arraysize(data_writes1)); | 3740 data_writes1, arraysize(data_writes1)); |
3741 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3741 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3742 | 3742 |
3743 TestCompletionCallback callback1; | 3743 TestCompletionCallback callback1; |
3744 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 3744 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
3745 EXPECT_EQ(ERR_IO_PENDING, rv); | 3745 EXPECT_EQ(ERR_IO_PENDING, rv); |
3746 rv = callback1.WaitForResult(); | 3746 rv = callback1.WaitForResult(); |
(...skipping 21 matching lines...) Expand all Loading... |
3768 MockWrite data_writes1[] = { | 3768 MockWrite data_writes1[] = { |
3769 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 3769 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
3770 "Host: www.google.com\r\n" | 3770 "Host: www.google.com\r\n" |
3771 "Connection: keep-alive\r\n\r\n"), | 3771 "Connection: keep-alive\r\n\r\n"), |
3772 }; | 3772 }; |
3773 | 3773 |
3774 MockRead data_reads1[] = { | 3774 MockRead data_reads1[] = { |
3775 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 3775 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
3776 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 3776 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
3777 MockRead("Content-Length: 10000\r\n\r\n"), | 3777 MockRead("Content-Length: 10000\r\n\r\n"), |
3778 MockRead(false, ERR_FAILED), | 3778 MockRead(SYNCHRONOUS, ERR_FAILED), |
3779 }; | 3779 }; |
3780 | 3780 |
3781 // Resend with authorization (username=foo, password=bar) | 3781 // Resend with authorization (username=foo, password=bar) |
3782 MockWrite data_writes2[] = { | 3782 MockWrite data_writes2[] = { |
3783 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 3783 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
3784 "Host: www.google.com\r\n" | 3784 "Host: www.google.com\r\n" |
3785 "Connection: keep-alive\r\n" | 3785 "Connection: keep-alive\r\n" |
3786 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 3786 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
3787 }; | 3787 }; |
3788 | 3788 |
3789 // Sever accepts the authorization. | 3789 // Sever accepts the authorization. |
3790 MockRead data_reads2[] = { | 3790 MockRead data_reads2[] = { |
3791 MockRead("HTTP/1.0 200 OK\r\n"), | 3791 MockRead("HTTP/1.0 200 OK\r\n"), |
3792 MockRead("Content-Length: 100\r\n\r\n"), | 3792 MockRead("Content-Length: 100\r\n\r\n"), |
3793 MockRead(false, OK), | 3793 MockRead(SYNCHRONOUS, OK), |
3794 }; | 3794 }; |
3795 | 3795 |
3796 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3796 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3797 data_writes1, arraysize(data_writes1)); | 3797 data_writes1, arraysize(data_writes1)); |
3798 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3798 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
3799 data_writes2, arraysize(data_writes2)); | 3799 data_writes2, arraysize(data_writes2)); |
3800 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3800 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3801 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3801 session_deps.socket_factory.AddSocketDataProvider(&data2); |
3802 | 3802 |
3803 TestCompletionCallback callback1; | 3803 TestCompletionCallback callback1; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3847 // Send preemptive authorization for MyRealm1 | 3847 // Send preemptive authorization for MyRealm1 |
3848 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 3848 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
3849 }; | 3849 }; |
3850 | 3850 |
3851 // The server didn't like the preemptive authorization, and | 3851 // The server didn't like the preemptive authorization, and |
3852 // challenges us for a different realm (MyRealm2). | 3852 // challenges us for a different realm (MyRealm2). |
3853 MockRead data_reads1[] = { | 3853 MockRead data_reads1[] = { |
3854 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 3854 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
3855 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"), | 3855 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"), |
3856 MockRead("Content-Length: 10000\r\n\r\n"), | 3856 MockRead("Content-Length: 10000\r\n\r\n"), |
3857 MockRead(false, ERR_FAILED), | 3857 MockRead(SYNCHRONOUS, ERR_FAILED), |
3858 }; | 3858 }; |
3859 | 3859 |
3860 // Resend with authorization for MyRealm2 (username=foo2, password=bar2) | 3860 // Resend with authorization for MyRealm2 (username=foo2, password=bar2) |
3861 MockWrite data_writes2[] = { | 3861 MockWrite data_writes2[] = { |
3862 MockWrite("GET /x/y/a/b HTTP/1.1\r\n" | 3862 MockWrite("GET /x/y/a/b HTTP/1.1\r\n" |
3863 "Host: www.google.com\r\n" | 3863 "Host: www.google.com\r\n" |
3864 "Connection: keep-alive\r\n" | 3864 "Connection: keep-alive\r\n" |
3865 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), | 3865 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), |
3866 }; | 3866 }; |
3867 | 3867 |
3868 // Sever accepts the authorization. | 3868 // Sever accepts the authorization. |
3869 MockRead data_reads2[] = { | 3869 MockRead data_reads2[] = { |
3870 MockRead("HTTP/1.0 200 OK\r\n"), | 3870 MockRead("HTTP/1.0 200 OK\r\n"), |
3871 MockRead("Content-Length: 100\r\n\r\n"), | 3871 MockRead("Content-Length: 100\r\n\r\n"), |
3872 MockRead(false, OK), | 3872 MockRead(SYNCHRONOUS, OK), |
3873 }; | 3873 }; |
3874 | 3874 |
3875 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3875 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3876 data_writes1, arraysize(data_writes1)); | 3876 data_writes1, arraysize(data_writes1)); |
3877 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3877 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
3878 data_writes2, arraysize(data_writes2)); | 3878 data_writes2, arraysize(data_writes2)); |
3879 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3879 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3880 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3880 session_deps.socket_factory.AddSocketDataProvider(&data2); |
3881 | 3881 |
3882 TestCompletionCallback callback1; | 3882 TestCompletionCallback callback1; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3929 "Connection: keep-alive\r\n" | 3929 "Connection: keep-alive\r\n" |
3930 // The authorization for MyRealm1 gets sent preemptively | 3930 // The authorization for MyRealm1 gets sent preemptively |
3931 // (since the url is in the same protection space) | 3931 // (since the url is in the same protection space) |
3932 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 3932 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
3933 }; | 3933 }; |
3934 | 3934 |
3935 // Sever accepts the preemptive authorization | 3935 // Sever accepts the preemptive authorization |
3936 MockRead data_reads1[] = { | 3936 MockRead data_reads1[] = { |
3937 MockRead("HTTP/1.0 200 OK\r\n"), | 3937 MockRead("HTTP/1.0 200 OK\r\n"), |
3938 MockRead("Content-Length: 100\r\n\r\n"), | 3938 MockRead("Content-Length: 100\r\n\r\n"), |
3939 MockRead(false, OK), | 3939 MockRead(SYNCHRONOUS, OK), |
3940 }; | 3940 }; |
3941 | 3941 |
3942 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3942 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
3943 data_writes1, arraysize(data_writes1)); | 3943 data_writes1, arraysize(data_writes1)); |
3944 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3944 session_deps.socket_factory.AddSocketDataProvider(&data1); |
3945 | 3945 |
3946 TestCompletionCallback callback1; | 3946 TestCompletionCallback callback1; |
3947 | 3947 |
3948 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 3948 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
3949 EXPECT_EQ(ERR_IO_PENDING, rv); | 3949 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 23 matching lines...) Expand all Loading... |
3973 MockWrite data_writes1[] = { | 3973 MockWrite data_writes1[] = { |
3974 MockWrite("GET /x/1 HTTP/1.1\r\n" | 3974 MockWrite("GET /x/1 HTTP/1.1\r\n" |
3975 "Host: www.google.com\r\n" | 3975 "Host: www.google.com\r\n" |
3976 "Connection: keep-alive\r\n\r\n"), | 3976 "Connection: keep-alive\r\n\r\n"), |
3977 }; | 3977 }; |
3978 | 3978 |
3979 MockRead data_reads1[] = { | 3979 MockRead data_reads1[] = { |
3980 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 3980 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
3981 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 3981 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
3982 MockRead("Content-Length: 10000\r\n\r\n"), | 3982 MockRead("Content-Length: 10000\r\n\r\n"), |
3983 MockRead(false, ERR_FAILED), | 3983 MockRead(SYNCHRONOUS, ERR_FAILED), |
3984 }; | 3984 }; |
3985 | 3985 |
3986 // Resend with authorization from MyRealm's cache. | 3986 // Resend with authorization from MyRealm's cache. |
3987 MockWrite data_writes2[] = { | 3987 MockWrite data_writes2[] = { |
3988 MockWrite("GET /x/1 HTTP/1.1\r\n" | 3988 MockWrite("GET /x/1 HTTP/1.1\r\n" |
3989 "Host: www.google.com\r\n" | 3989 "Host: www.google.com\r\n" |
3990 "Connection: keep-alive\r\n" | 3990 "Connection: keep-alive\r\n" |
3991 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 3991 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
3992 }; | 3992 }; |
3993 | 3993 |
3994 // Sever accepts the authorization. | 3994 // Sever accepts the authorization. |
3995 MockRead data_reads2[] = { | 3995 MockRead data_reads2[] = { |
3996 MockRead("HTTP/1.0 200 OK\r\n"), | 3996 MockRead("HTTP/1.0 200 OK\r\n"), |
3997 MockRead("Content-Length: 100\r\n\r\n"), | 3997 MockRead("Content-Length: 100\r\n\r\n"), |
3998 MockRead(false, OK), | 3998 MockRead(SYNCHRONOUS, OK), |
3999 }; | 3999 }; |
4000 | 4000 |
4001 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4001 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
4002 data_writes1, arraysize(data_writes1)); | 4002 data_writes1, arraysize(data_writes1)); |
4003 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4003 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
4004 data_writes2, arraysize(data_writes2)); | 4004 data_writes2, arraysize(data_writes2)); |
4005 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4005 session_deps.socket_factory.AddSocketDataProvider(&data1); |
4006 session_deps.socket_factory.AddSocketDataProvider(&data2); | 4006 session_deps.socket_factory.AddSocketDataProvider(&data2); |
4007 | 4007 |
4008 TestCompletionCallback callback1; | 4008 TestCompletionCallback callback1; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4042 MockWrite data_writes1[] = { | 4042 MockWrite data_writes1[] = { |
4043 MockWrite("GET /p/q/t HTTP/1.1\r\n" | 4043 MockWrite("GET /p/q/t HTTP/1.1\r\n" |
4044 "Host: www.google.com\r\n" | 4044 "Host: www.google.com\r\n" |
4045 "Connection: keep-alive\r\n\r\n"), | 4045 "Connection: keep-alive\r\n\r\n"), |
4046 }; | 4046 }; |
4047 | 4047 |
4048 MockRead data_reads1[] = { | 4048 MockRead data_reads1[] = { |
4049 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 4049 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
4050 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 4050 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
4051 MockRead("Content-Length: 10000\r\n\r\n"), | 4051 MockRead("Content-Length: 10000\r\n\r\n"), |
4052 MockRead(false, ERR_FAILED), | 4052 MockRead(SYNCHRONOUS, ERR_FAILED), |
4053 }; | 4053 }; |
4054 | 4054 |
4055 // Resend with authorization from cache for MyRealm. | 4055 // Resend with authorization from cache for MyRealm. |
4056 MockWrite data_writes2[] = { | 4056 MockWrite data_writes2[] = { |
4057 MockWrite("GET /p/q/t HTTP/1.1\r\n" | 4057 MockWrite("GET /p/q/t HTTP/1.1\r\n" |
4058 "Host: www.google.com\r\n" | 4058 "Host: www.google.com\r\n" |
4059 "Connection: keep-alive\r\n" | 4059 "Connection: keep-alive\r\n" |
4060 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 4060 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
4061 }; | 4061 }; |
4062 | 4062 |
4063 // Sever rejects the authorization. | 4063 // Sever rejects the authorization. |
4064 MockRead data_reads2[] = { | 4064 MockRead data_reads2[] = { |
4065 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 4065 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
4066 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 4066 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
4067 MockRead("Content-Length: 10000\r\n\r\n"), | 4067 MockRead("Content-Length: 10000\r\n\r\n"), |
4068 MockRead(false, ERR_FAILED), | 4068 MockRead(SYNCHRONOUS, ERR_FAILED), |
4069 }; | 4069 }; |
4070 | 4070 |
4071 // At this point we should prompt for new credentials for MyRealm. | 4071 // At this point we should prompt for new credentials for MyRealm. |
4072 // Restart with username=foo3, password=foo4. | 4072 // Restart with username=foo3, password=foo4. |
4073 MockWrite data_writes3[] = { | 4073 MockWrite data_writes3[] = { |
4074 MockWrite("GET /p/q/t HTTP/1.1\r\n" | 4074 MockWrite("GET /p/q/t HTTP/1.1\r\n" |
4075 "Host: www.google.com\r\n" | 4075 "Host: www.google.com\r\n" |
4076 "Connection: keep-alive\r\n" | 4076 "Connection: keep-alive\r\n" |
4077 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"), | 4077 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"), |
4078 }; | 4078 }; |
4079 | 4079 |
4080 // Sever accepts the authorization. | 4080 // Sever accepts the authorization. |
4081 MockRead data_reads3[] = { | 4081 MockRead data_reads3[] = { |
4082 MockRead("HTTP/1.0 200 OK\r\n"), | 4082 MockRead("HTTP/1.0 200 OK\r\n"), |
4083 MockRead("Content-Length: 100\r\n\r\n"), | 4083 MockRead("Content-Length: 100\r\n\r\n"), |
4084 MockRead(false, OK), | 4084 MockRead(SYNCHRONOUS, OK), |
4085 }; | 4085 }; |
4086 | 4086 |
4087 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4087 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
4088 data_writes1, arraysize(data_writes1)); | 4088 data_writes1, arraysize(data_writes1)); |
4089 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4089 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
4090 data_writes2, arraysize(data_writes2)); | 4090 data_writes2, arraysize(data_writes2)); |
4091 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), | 4091 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
4092 data_writes3, arraysize(data_writes3)); | 4092 data_writes3, arraysize(data_writes3)); |
4093 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4093 session_deps.socket_factory.AddSocketDataProvider(&data1); |
4094 session_deps.socket_factory.AddSocketDataProvider(&data2); | 4094 session_deps.socket_factory.AddSocketDataProvider(&data2); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4154 MockWrite data_writes1[] = { | 4154 MockWrite data_writes1[] = { |
4155 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 4155 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
4156 "Host: www.google.com\r\n" | 4156 "Host: www.google.com\r\n" |
4157 "Connection: keep-alive\r\n\r\n"), | 4157 "Connection: keep-alive\r\n\r\n"), |
4158 }; | 4158 }; |
4159 | 4159 |
4160 MockRead data_reads1[] = { | 4160 MockRead data_reads1[] = { |
4161 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 4161 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
4162 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", " | 4162 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", " |
4163 "algorithm=MD5, qop=\"auth\"\r\n\r\n"), | 4163 "algorithm=MD5, qop=\"auth\"\r\n\r\n"), |
4164 MockRead(false, OK), | 4164 MockRead(SYNCHRONOUS, OK), |
4165 }; | 4165 }; |
4166 | 4166 |
4167 // Resend with authorization (username=foo, password=bar) | 4167 // Resend with authorization (username=foo, password=bar) |
4168 MockWrite data_writes2[] = { | 4168 MockWrite data_writes2[] = { |
4169 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 4169 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
4170 "Host: www.google.com\r\n" | 4170 "Host: www.google.com\r\n" |
4171 "Connection: keep-alive\r\n" | 4171 "Connection: keep-alive\r\n" |
4172 "Authorization: Digest username=\"foo\", realm=\"digestive\", " | 4172 "Authorization: Digest username=\"foo\", realm=\"digestive\", " |
4173 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, " | 4173 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, " |
4174 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, " | 4174 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, " |
4175 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"), | 4175 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"), |
4176 }; | 4176 }; |
4177 | 4177 |
4178 // Sever accepts the authorization. | 4178 // Sever accepts the authorization. |
4179 MockRead data_reads2[] = { | 4179 MockRead data_reads2[] = { |
4180 MockRead("HTTP/1.0 200 OK\r\n"), | 4180 MockRead("HTTP/1.0 200 OK\r\n"), |
4181 MockRead(false, OK), | 4181 MockRead(SYNCHRONOUS, OK), |
4182 }; | 4182 }; |
4183 | 4183 |
4184 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4184 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
4185 data_writes1, arraysize(data_writes1)); | 4185 data_writes1, arraysize(data_writes1)); |
4186 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4186 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
4187 data_writes2, arraysize(data_writes2)); | 4187 data_writes2, arraysize(data_writes2)); |
4188 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4188 session_deps.socket_factory.AddSocketDataProvider(&data1); |
4189 session_deps.socket_factory.AddSocketDataProvider(&data2); | 4189 session_deps.socket_factory.AddSocketDataProvider(&data2); |
4190 | 4190 |
4191 TestCompletionCallback callback1; | 4191 TestCompletionCallback callback1; |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4236 "Authorization: Digest username=\"foo\", realm=\"digestive\", " | 4236 "Authorization: Digest username=\"foo\", realm=\"digestive\", " |
4237 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, " | 4237 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, " |
4238 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, " | 4238 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, " |
4239 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"), | 4239 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"), |
4240 }; | 4240 }; |
4241 | 4241 |
4242 // Sever accepts the authorization. | 4242 // Sever accepts the authorization. |
4243 MockRead data_reads1[] = { | 4243 MockRead data_reads1[] = { |
4244 MockRead("HTTP/1.0 200 OK\r\n"), | 4244 MockRead("HTTP/1.0 200 OK\r\n"), |
4245 MockRead("Content-Length: 100\r\n\r\n"), | 4245 MockRead("Content-Length: 100\r\n\r\n"), |
4246 MockRead(false, OK), | 4246 MockRead(SYNCHRONOUS, OK), |
4247 }; | 4247 }; |
4248 | 4248 |
4249 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4249 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
4250 data_writes1, arraysize(data_writes1)); | 4250 data_writes1, arraysize(data_writes1)); |
4251 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4251 session_deps.socket_factory.AddSocketDataProvider(&data1); |
4252 | 4252 |
4253 TestCompletionCallback callback1; | 4253 TestCompletionCallback callback1; |
4254 | 4254 |
4255 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 4255 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
4256 EXPECT_EQ(ERR_IO_PENDING, rv); | 4256 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4321 MockWrite data_writes[] = { | 4321 MockWrite data_writes[] = { |
4322 MockWrite("GET / HTTP/1.1\r\n" | 4322 MockWrite("GET / HTTP/1.1\r\n" |
4323 "Host: www.google.com\r\n" | 4323 "Host: www.google.com\r\n" |
4324 "Connection: keep-alive\r\n\r\n"), | 4324 "Connection: keep-alive\r\n\r\n"), |
4325 }; | 4325 }; |
4326 | 4326 |
4327 MockRead data_reads[] = { | 4327 MockRead data_reads[] = { |
4328 MockRead("HTTP/1.0 200 OK\r\n"), | 4328 MockRead("HTTP/1.0 200 OK\r\n"), |
4329 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4329 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4330 MockRead("Content-Length: 100\r\n\r\n"), | 4330 MockRead("Content-Length: 100\r\n\r\n"), |
4331 MockRead(false, OK), | 4331 MockRead(SYNCHRONOUS, OK), |
4332 }; | 4332 }; |
4333 | 4333 |
4334 StaticSocketDataProvider ssl_bad_certificate; | 4334 StaticSocketDataProvider ssl_bad_certificate; |
4335 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4335 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4336 data_writes, arraysize(data_writes)); | 4336 data_writes, arraysize(data_writes)); |
4337 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); | 4337 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID); |
4338 SSLSocketDataProvider ssl(true, OK); | 4338 SSLSocketDataProvider ssl(ASYNC, OK); |
4339 | 4339 |
4340 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); | 4340 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); |
4341 session_deps.socket_factory.AddSocketDataProvider(&data); | 4341 session_deps.socket_factory.AddSocketDataProvider(&data); |
4342 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); | 4342 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); |
4343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4343 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
4344 | 4344 |
4345 TestCompletionCallback callback; | 4345 TestCompletionCallback callback; |
4346 | 4346 |
4347 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4347 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
4348 EXPECT_EQ(ERR_IO_PENDING, rv); | 4348 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 24 matching lines...) Expand all Loading... |
4373 request.load_flags = 0; | 4373 request.load_flags = 0; |
4374 | 4374 |
4375 MockWrite proxy_writes[] = { | 4375 MockWrite proxy_writes[] = { |
4376 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4376 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
4377 "Host: www.google.com\r\n" | 4377 "Host: www.google.com\r\n" |
4378 "Proxy-Connection: keep-alive\r\n\r\n"), | 4378 "Proxy-Connection: keep-alive\r\n\r\n"), |
4379 }; | 4379 }; |
4380 | 4380 |
4381 MockRead proxy_reads[] = { | 4381 MockRead proxy_reads[] = { |
4382 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4382 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
4383 MockRead(false, OK) | 4383 MockRead(SYNCHRONOUS, OK) |
4384 }; | 4384 }; |
4385 | 4385 |
4386 MockWrite data_writes[] = { | 4386 MockWrite data_writes[] = { |
4387 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4387 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
4388 "Host: www.google.com\r\n" | 4388 "Host: www.google.com\r\n" |
4389 "Proxy-Connection: keep-alive\r\n\r\n"), | 4389 "Proxy-Connection: keep-alive\r\n\r\n"), |
4390 MockWrite("GET / HTTP/1.1\r\n" | 4390 MockWrite("GET / HTTP/1.1\r\n" |
4391 "Host: www.google.com\r\n" | 4391 "Host: www.google.com\r\n" |
4392 "Connection: keep-alive\r\n\r\n"), | 4392 "Connection: keep-alive\r\n\r\n"), |
4393 }; | 4393 }; |
4394 | 4394 |
4395 MockRead data_reads[] = { | 4395 MockRead data_reads[] = { |
4396 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4396 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
4397 MockRead("HTTP/1.0 200 OK\r\n"), | 4397 MockRead("HTTP/1.0 200 OK\r\n"), |
4398 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4398 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4399 MockRead("Content-Length: 100\r\n\r\n"), | 4399 MockRead("Content-Length: 100\r\n\r\n"), |
4400 MockRead(false, OK), | 4400 MockRead(SYNCHRONOUS, OK), |
4401 }; | 4401 }; |
4402 | 4402 |
4403 StaticSocketDataProvider ssl_bad_certificate( | 4403 StaticSocketDataProvider ssl_bad_certificate( |
4404 proxy_reads, arraysize(proxy_reads), | 4404 proxy_reads, arraysize(proxy_reads), |
4405 proxy_writes, arraysize(proxy_writes)); | 4405 proxy_writes, arraysize(proxy_writes)); |
4406 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4406 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4407 data_writes, arraysize(data_writes)); | 4407 data_writes, arraysize(data_writes)); |
4408 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); | 4408 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID); |
4409 SSLSocketDataProvider ssl(true, OK); | 4409 SSLSocketDataProvider ssl(ASYNC, OK); |
4410 | 4410 |
4411 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); | 4411 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); |
4412 session_deps.socket_factory.AddSocketDataProvider(&data); | 4412 session_deps.socket_factory.AddSocketDataProvider(&data); |
4413 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); | 4413 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); |
4414 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4414 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
4415 | 4415 |
4416 TestCompletionCallback callback; | 4416 TestCompletionCallback callback; |
4417 | 4417 |
4418 for (int i = 0; i < 2; i++) { | 4418 for (int i = 0; i < 2; i++) { |
4419 session_deps.socket_factory.ResetNextMockIndexes(); | 4419 session_deps.socket_factory.ResetNextMockIndexes(); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4458 MockWrite("GET / HTTP/1.1\r\n" | 4458 MockWrite("GET / HTTP/1.1\r\n" |
4459 "Host: www.google.com\r\n" | 4459 "Host: www.google.com\r\n" |
4460 "Connection: keep-alive\r\n\r\n"), | 4460 "Connection: keep-alive\r\n\r\n"), |
4461 }; | 4461 }; |
4462 | 4462 |
4463 MockRead data_reads[] = { | 4463 MockRead data_reads[] = { |
4464 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4464 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
4465 MockRead("HTTP/1.1 200 OK\r\n"), | 4465 MockRead("HTTP/1.1 200 OK\r\n"), |
4466 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4466 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4467 MockRead("Content-Length: 100\r\n\r\n"), | 4467 MockRead("Content-Length: 100\r\n\r\n"), |
4468 MockRead(false, OK), | 4468 MockRead(SYNCHRONOUS, OK), |
4469 }; | 4469 }; |
4470 | 4470 |
4471 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4471 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4472 data_writes, arraysize(data_writes)); | 4472 data_writes, arraysize(data_writes)); |
4473 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4473 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
4474 SSLSocketDataProvider tunnel_ssl(true, OK); // SSL through the tunnel | 4474 SSLSocketDataProvider tunnel_ssl(ASYNC, OK); // SSL through the tunnel |
4475 | 4475 |
4476 session_deps.socket_factory.AddSocketDataProvider(&data); | 4476 session_deps.socket_factory.AddSocketDataProvider(&data); |
4477 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4477 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
4478 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl); | 4478 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl); |
4479 | 4479 |
4480 TestCompletionCallback callback; | 4480 TestCompletionCallback callback; |
4481 | 4481 |
4482 scoped_ptr<HttpTransaction> trans( | 4482 scoped_ptr<HttpTransaction> trans( |
4483 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4483 new HttpNetworkTransaction(CreateSession(&session_deps))); |
4484 | 4484 |
(...skipping 25 matching lines...) Expand all Loading... |
4510 MockWrite data_writes[] = { | 4510 MockWrite data_writes[] = { |
4511 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4511 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
4512 "Host: www.google.com\r\n" | 4512 "Host: www.google.com\r\n" |
4513 "Proxy-Connection: keep-alive\r\n\r\n"), | 4513 "Proxy-Connection: keep-alive\r\n\r\n"), |
4514 }; | 4514 }; |
4515 | 4515 |
4516 MockRead data_reads[] = { | 4516 MockRead data_reads[] = { |
4517 MockRead("HTTP/1.1 302 Redirect\r\n"), | 4517 MockRead("HTTP/1.1 302 Redirect\r\n"), |
4518 MockRead("Location: http://login.example.com/\r\n"), | 4518 MockRead("Location: http://login.example.com/\r\n"), |
4519 MockRead("Content-Length: 0\r\n\r\n"), | 4519 MockRead("Content-Length: 0\r\n\r\n"), |
4520 MockRead(false, OK), | 4520 MockRead(SYNCHRONOUS, OK), |
4521 }; | 4521 }; |
4522 | 4522 |
4523 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4523 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4524 data_writes, arraysize(data_writes)); | 4524 data_writes, arraysize(data_writes)); |
4525 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4525 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
4526 | 4526 |
4527 session_deps.socket_factory.AddSocketDataProvider(&data); | 4527 session_deps.socket_factory.AddSocketDataProvider(&data); |
4528 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4528 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
4529 | 4529 |
4530 TestCompletionCallback callback; | 4530 TestCompletionCallback callback; |
4531 | 4531 |
4532 scoped_ptr<HttpTransaction> trans( | 4532 scoped_ptr<HttpTransaction> trans( |
4533 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4533 new HttpNetworkTransaction(CreateSession(&session_deps))); |
4534 | 4534 |
4535 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4535 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
(...skipping 17 matching lines...) Expand all Loading... |
4553 ProxyService::CreateFixed("https://proxy:70")); | 4553 ProxyService::CreateFixed("https://proxy:70")); |
4554 | 4554 |
4555 HttpRequestInfo request; | 4555 HttpRequestInfo request; |
4556 request.method = "GET"; | 4556 request.method = "GET"; |
4557 request.url = GURL("https://www.google.com/"); | 4557 request.url = GURL("https://www.google.com/"); |
4558 request.load_flags = 0; | 4558 request.load_flags = 0; |
4559 | 4559 |
4560 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); | 4560 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); |
4561 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); | 4561 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); |
4562 MockWrite data_writes[] = { | 4562 MockWrite data_writes[] = { |
4563 CreateMockWrite(*conn.get(), 0, false), | 4563 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS), |
4564 }; | 4564 }; |
4565 | 4565 |
4566 static const char* const kExtraHeaders[] = { | 4566 static const char* const kExtraHeaders[] = { |
4567 "location", | 4567 "location", |
4568 "http://login.example.com/", | 4568 "http://login.example.com/", |
4569 }; | 4569 }; |
4570 scoped_ptr<spdy::SpdyFrame> resp( | 4570 scoped_ptr<spdy::SpdyFrame> resp( |
4571 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, | 4571 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, |
4572 arraysize(kExtraHeaders)/2, 1)); | 4572 arraysize(kExtraHeaders)/2, 1)); |
4573 MockRead data_reads[] = { | 4573 MockRead data_reads[] = { |
4574 CreateMockRead(*resp.get(), 1, false), | 4574 CreateMockRead(*resp.get(), 1, SYNCHRONOUS), |
4575 MockRead(true, 0, 2), // EOF | 4575 MockRead(ASYNC, 0, 2), // EOF |
4576 }; | 4576 }; |
4577 | 4577 |
4578 scoped_ptr<DelayedSocketData> data( | 4578 scoped_ptr<DelayedSocketData> data( |
4579 new DelayedSocketData( | 4579 new DelayedSocketData( |
4580 1, // wait for one write to finish before reading. | 4580 1, // wait for one write to finish before reading. |
4581 data_reads, arraysize(data_reads), | 4581 data_reads, arraysize(data_reads), |
4582 data_writes, arraysize(data_writes))); | 4582 data_writes, arraysize(data_writes))); |
4583 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4583 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
4584 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 4584 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
4585 | 4585 |
4586 session_deps.socket_factory.AddSocketDataProvider(data.get()); | 4586 session_deps.socket_factory.AddSocketDataProvider(data.get()); |
4587 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4587 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
4588 | 4588 |
4589 TestCompletionCallback callback; | 4589 TestCompletionCallback callback; |
4590 | 4590 |
4591 scoped_ptr<HttpTransaction> trans( | 4591 scoped_ptr<HttpTransaction> trans( |
4592 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4592 new HttpNetworkTransaction(CreateSession(&session_deps))); |
4593 | 4593 |
(...skipping 25 matching lines...) Expand all Loading... |
4619 MockWrite data_writes[] = { | 4619 MockWrite data_writes[] = { |
4620 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4620 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
4621 "Host: www.google.com\r\n" | 4621 "Host: www.google.com\r\n" |
4622 "Proxy-Connection: keep-alive\r\n\r\n"), | 4622 "Proxy-Connection: keep-alive\r\n\r\n"), |
4623 }; | 4623 }; |
4624 | 4624 |
4625 MockRead data_reads[] = { | 4625 MockRead data_reads[] = { |
4626 MockRead("HTTP/1.1 404 Not Found\r\n"), | 4626 MockRead("HTTP/1.1 404 Not Found\r\n"), |
4627 MockRead("Content-Length: 23\r\n\r\n"), | 4627 MockRead("Content-Length: 23\r\n\r\n"), |
4628 MockRead("The host does not exist"), | 4628 MockRead("The host does not exist"), |
4629 MockRead(false, OK), | 4629 MockRead(SYNCHRONOUS, OK), |
4630 }; | 4630 }; |
4631 | 4631 |
4632 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4632 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4633 data_writes, arraysize(data_writes)); | 4633 data_writes, arraysize(data_writes)); |
4634 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4634 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
4635 | 4635 |
4636 session_deps.socket_factory.AddSocketDataProvider(&data); | 4636 session_deps.socket_factory.AddSocketDataProvider(&data); |
4637 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4637 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
4638 | 4638 |
4639 TestCompletionCallback callback; | 4639 TestCompletionCallback callback; |
4640 | 4640 |
4641 scoped_ptr<HttpTransaction> trans( | 4641 scoped_ptr<HttpTransaction> trans( |
4642 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4642 new HttpNetworkTransaction(CreateSession(&session_deps))); |
4643 | 4643 |
4644 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4644 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
(...skipping 22 matching lines...) Expand all Loading... |
4667 ProxyService::CreateFixed("https://proxy:70")); | 4667 ProxyService::CreateFixed("https://proxy:70")); |
4668 | 4668 |
4669 HttpRequestInfo request; | 4669 HttpRequestInfo request; |
4670 request.method = "GET"; | 4670 request.method = "GET"; |
4671 request.url = GURL("https://www.google.com/"); | 4671 request.url = GURL("https://www.google.com/"); |
4672 request.load_flags = 0; | 4672 request.load_flags = 0; |
4673 | 4673 |
4674 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); | 4674 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); |
4675 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); | 4675 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); |
4676 MockWrite data_writes[] = { | 4676 MockWrite data_writes[] = { |
4677 CreateMockWrite(*conn.get(), 0, false), | 4677 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS), |
4678 }; | 4678 }; |
4679 | 4679 |
4680 static const char* const kExtraHeaders[] = { | 4680 static const char* const kExtraHeaders[] = { |
4681 "location", | 4681 "location", |
4682 "http://login.example.com/", | 4682 "http://login.example.com/", |
4683 }; | 4683 }; |
4684 scoped_ptr<spdy::SpdyFrame> resp( | 4684 scoped_ptr<spdy::SpdyFrame> resp( |
4685 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, | 4685 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, |
4686 arraysize(kExtraHeaders)/2, 1)); | 4686 arraysize(kExtraHeaders)/2, 1)); |
4687 scoped_ptr<spdy::SpdyFrame> body( | 4687 scoped_ptr<spdy::SpdyFrame> body( |
4688 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true)); | 4688 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true)); |
4689 MockRead data_reads[] = { | 4689 MockRead data_reads[] = { |
4690 CreateMockRead(*resp.get(), 1, false), | 4690 CreateMockRead(*resp.get(), 1, SYNCHRONOUS), |
4691 CreateMockRead(*body.get(), 2, false), | 4691 CreateMockRead(*body.get(), 2, SYNCHRONOUS), |
4692 MockRead(true, 0, 3), // EOF | 4692 MockRead(ASYNC, 0, 3), // EOF |
4693 }; | 4693 }; |
4694 | 4694 |
4695 scoped_ptr<DelayedSocketData> data( | 4695 scoped_ptr<DelayedSocketData> data( |
4696 new DelayedSocketData( | 4696 new DelayedSocketData( |
4697 1, // wait for one write to finish before reading. | 4697 1, // wait for one write to finish before reading. |
4698 data_reads, arraysize(data_reads), | 4698 data_reads, arraysize(data_reads), |
4699 data_writes, arraysize(data_writes))); | 4699 data_writes, arraysize(data_writes))); |
4700 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4700 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
4701 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 4701 proxy_ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
4702 | 4702 |
4703 session_deps.socket_factory.AddSocketDataProvider(data.get()); | 4703 session_deps.socket_factory.AddSocketDataProvider(data.get()); |
4704 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4704 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
4705 | 4705 |
4706 TestCompletionCallback callback; | 4706 TestCompletionCallback callback; |
4707 | 4707 |
4708 scoped_ptr<HttpTransaction> trans( | 4708 scoped_ptr<HttpTransaction> trans( |
4709 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4709 new HttpNetworkTransaction(CreateSession(&session_deps))); |
4710 | 4710 |
(...skipping 27 matching lines...) Expand all Loading... |
4738 | 4738 |
4739 // Attempt to fetch the URL from a server with a bad cert | 4739 // Attempt to fetch the URL from a server with a bad cert |
4740 MockWrite bad_cert_writes[] = { | 4740 MockWrite bad_cert_writes[] = { |
4741 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4741 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
4742 "Host: www.google.com\r\n" | 4742 "Host: www.google.com\r\n" |
4743 "Proxy-Connection: keep-alive\r\n\r\n"), | 4743 "Proxy-Connection: keep-alive\r\n\r\n"), |
4744 }; | 4744 }; |
4745 | 4745 |
4746 MockRead bad_cert_reads[] = { | 4746 MockRead bad_cert_reads[] = { |
4747 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4747 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
4748 MockRead(false, OK) | 4748 MockRead(SYNCHRONOUS, OK) |
4749 }; | 4749 }; |
4750 | 4750 |
4751 // Attempt to fetch the URL with a good cert | 4751 // Attempt to fetch the URL with a good cert |
4752 MockWrite good_data_writes[] = { | 4752 MockWrite good_data_writes[] = { |
4753 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4753 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
4754 "Host: www.google.com\r\n" | 4754 "Host: www.google.com\r\n" |
4755 "Proxy-Connection: keep-alive\r\n\r\n"), | 4755 "Proxy-Connection: keep-alive\r\n\r\n"), |
4756 MockWrite("GET / HTTP/1.1\r\n" | 4756 MockWrite("GET / HTTP/1.1\r\n" |
4757 "Host: www.google.com\r\n" | 4757 "Host: www.google.com\r\n" |
4758 "Connection: keep-alive\r\n\r\n"), | 4758 "Connection: keep-alive\r\n\r\n"), |
4759 }; | 4759 }; |
4760 | 4760 |
4761 MockRead good_cert_reads[] = { | 4761 MockRead good_cert_reads[] = { |
4762 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4762 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
4763 MockRead("HTTP/1.0 200 OK\r\n"), | 4763 MockRead("HTTP/1.0 200 OK\r\n"), |
4764 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4764 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4765 MockRead("Content-Length: 100\r\n\r\n"), | 4765 MockRead("Content-Length: 100\r\n\r\n"), |
4766 MockRead(false, OK), | 4766 MockRead(SYNCHRONOUS, OK), |
4767 }; | 4767 }; |
4768 | 4768 |
4769 StaticSocketDataProvider ssl_bad_certificate( | 4769 StaticSocketDataProvider ssl_bad_certificate( |
4770 bad_cert_reads, arraysize(bad_cert_reads), | 4770 bad_cert_reads, arraysize(bad_cert_reads), |
4771 bad_cert_writes, arraysize(bad_cert_writes)); | 4771 bad_cert_writes, arraysize(bad_cert_writes)); |
4772 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads), | 4772 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads), |
4773 good_data_writes, arraysize(good_data_writes)); | 4773 good_data_writes, arraysize(good_data_writes)); |
4774 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); | 4774 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID); |
4775 SSLSocketDataProvider ssl(true, OK); | 4775 SSLSocketDataProvider ssl(ASYNC, OK); |
4776 | 4776 |
4777 // SSL to the proxy, then CONNECT request, then SSL with bad certificate | 4777 // SSL to the proxy, then CONNECT request, then SSL with bad certificate |
4778 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4778 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
4779 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); | 4779 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); |
4780 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); | 4780 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); |
4781 | 4781 |
4782 // SSL to the proxy, then CONNECT request, then valid SSL certificate | 4782 // SSL to the proxy, then CONNECT request, then valid SSL certificate |
4783 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4783 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
4784 session_deps.socket_factory.AddSocketDataProvider(&data); | 4784 session_deps.socket_factory.AddSocketDataProvider(&data); |
4785 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4785 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4823 "Host: www.google.com\r\n" | 4823 "Host: www.google.com\r\n" |
4824 "Connection: keep-alive\r\n" | 4824 "Connection: keep-alive\r\n" |
4825 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"), | 4825 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"), |
4826 }; | 4826 }; |
4827 | 4827 |
4828 // Lastly, the server responds with the actual content. | 4828 // Lastly, the server responds with the actual content. |
4829 MockRead data_reads[] = { | 4829 MockRead data_reads[] = { |
4830 MockRead("HTTP/1.0 200 OK\r\n"), | 4830 MockRead("HTTP/1.0 200 OK\r\n"), |
4831 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4831 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4832 MockRead("Content-Length: 100\r\n\r\n"), | 4832 MockRead("Content-Length: 100\r\n\r\n"), |
4833 MockRead(false, OK), | 4833 MockRead(SYNCHRONOUS, OK), |
4834 }; | 4834 }; |
4835 | 4835 |
4836 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4836 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4837 data_writes, arraysize(data_writes)); | 4837 data_writes, arraysize(data_writes)); |
4838 session_deps.socket_factory.AddSocketDataProvider(&data); | 4838 session_deps.socket_factory.AddSocketDataProvider(&data); |
4839 | 4839 |
4840 TestCompletionCallback callback; | 4840 TestCompletionCallback callback; |
4841 | 4841 |
4842 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4842 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
4843 EXPECT_EQ(ERR_IO_PENDING, rv); | 4843 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4901 "Host: www.google.com\r\n" | 4901 "Host: www.google.com\r\n" |
4902 "Connection: keep-alive\r\n" | 4902 "Connection: keep-alive\r\n" |
4903 "Referer: http://the.previous.site.com/\r\n\r\n"), | 4903 "Referer: http://the.previous.site.com/\r\n\r\n"), |
4904 }; | 4904 }; |
4905 | 4905 |
4906 // Lastly, the server responds with the actual content. | 4906 // Lastly, the server responds with the actual content. |
4907 MockRead data_reads[] = { | 4907 MockRead data_reads[] = { |
4908 MockRead("HTTP/1.0 200 OK\r\n"), | 4908 MockRead("HTTP/1.0 200 OK\r\n"), |
4909 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4909 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4910 MockRead("Content-Length: 100\r\n\r\n"), | 4910 MockRead("Content-Length: 100\r\n\r\n"), |
4911 MockRead(false, OK), | 4911 MockRead(SYNCHRONOUS, OK), |
4912 }; | 4912 }; |
4913 | 4913 |
4914 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4914 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4915 data_writes, arraysize(data_writes)); | 4915 data_writes, arraysize(data_writes)); |
4916 session_deps.socket_factory.AddSocketDataProvider(&data); | 4916 session_deps.socket_factory.AddSocketDataProvider(&data); |
4917 | 4917 |
4918 TestCompletionCallback callback; | 4918 TestCompletionCallback callback; |
4919 | 4919 |
4920 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4920 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
4921 EXPECT_EQ(ERR_IO_PENDING, rv); | 4921 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 16 matching lines...) Expand all Loading... |
4938 "Host: www.google.com\r\n" | 4938 "Host: www.google.com\r\n" |
4939 "Connection: keep-alive\r\n" | 4939 "Connection: keep-alive\r\n" |
4940 "Content-Length: 0\r\n\r\n"), | 4940 "Content-Length: 0\r\n\r\n"), |
4941 }; | 4941 }; |
4942 | 4942 |
4943 // Lastly, the server responds with the actual content. | 4943 // Lastly, the server responds with the actual content. |
4944 MockRead data_reads[] = { | 4944 MockRead data_reads[] = { |
4945 MockRead("HTTP/1.0 200 OK\r\n"), | 4945 MockRead("HTTP/1.0 200 OK\r\n"), |
4946 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4946 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4947 MockRead("Content-Length: 100\r\n\r\n"), | 4947 MockRead("Content-Length: 100\r\n\r\n"), |
4948 MockRead(false, OK), | 4948 MockRead(SYNCHRONOUS, OK), |
4949 }; | 4949 }; |
4950 | 4950 |
4951 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4951 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4952 data_writes, arraysize(data_writes)); | 4952 data_writes, arraysize(data_writes)); |
4953 session_deps.socket_factory.AddSocketDataProvider(&data); | 4953 session_deps.socket_factory.AddSocketDataProvider(&data); |
4954 | 4954 |
4955 TestCompletionCallback callback; | 4955 TestCompletionCallback callback; |
4956 | 4956 |
4957 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4957 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
4958 EXPECT_EQ(ERR_IO_PENDING, rv); | 4958 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 16 matching lines...) Expand all Loading... |
4975 "Host: www.google.com\r\n" | 4975 "Host: www.google.com\r\n" |
4976 "Connection: keep-alive\r\n" | 4976 "Connection: keep-alive\r\n" |
4977 "Content-Length: 0\r\n\r\n"), | 4977 "Content-Length: 0\r\n\r\n"), |
4978 }; | 4978 }; |
4979 | 4979 |
4980 // Lastly, the server responds with the actual content. | 4980 // Lastly, the server responds with the actual content. |
4981 MockRead data_reads[] = { | 4981 MockRead data_reads[] = { |
4982 MockRead("HTTP/1.0 200 OK\r\n"), | 4982 MockRead("HTTP/1.0 200 OK\r\n"), |
4983 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4983 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
4984 MockRead("Content-Length: 100\r\n\r\n"), | 4984 MockRead("Content-Length: 100\r\n\r\n"), |
4985 MockRead(false, OK), | 4985 MockRead(SYNCHRONOUS, OK), |
4986 }; | 4986 }; |
4987 | 4987 |
4988 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4988 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
4989 data_writes, arraysize(data_writes)); | 4989 data_writes, arraysize(data_writes)); |
4990 session_deps.socket_factory.AddSocketDataProvider(&data); | 4990 session_deps.socket_factory.AddSocketDataProvider(&data); |
4991 | 4991 |
4992 TestCompletionCallback callback; | 4992 TestCompletionCallback callback; |
4993 | 4993 |
4994 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4994 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
4995 EXPECT_EQ(ERR_IO_PENDING, rv); | 4995 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 16 matching lines...) Expand all Loading... |
5012 "Host: www.google.com\r\n" | 5012 "Host: www.google.com\r\n" |
5013 "Connection: keep-alive\r\n" | 5013 "Connection: keep-alive\r\n" |
5014 "Content-Length: 0\r\n\r\n"), | 5014 "Content-Length: 0\r\n\r\n"), |
5015 }; | 5015 }; |
5016 | 5016 |
5017 // Lastly, the server responds with the actual content. | 5017 // Lastly, the server responds with the actual content. |
5018 MockRead data_reads[] = { | 5018 MockRead data_reads[] = { |
5019 MockRead("HTTP/1.0 200 OK\r\n"), | 5019 MockRead("HTTP/1.0 200 OK\r\n"), |
5020 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5020 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
5021 MockRead("Content-Length: 100\r\n\r\n"), | 5021 MockRead("Content-Length: 100\r\n\r\n"), |
5022 MockRead(false, OK), | 5022 MockRead(SYNCHRONOUS, OK), |
5023 }; | 5023 }; |
5024 | 5024 |
5025 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5025 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5026 data_writes, arraysize(data_writes)); | 5026 data_writes, arraysize(data_writes)); |
5027 session_deps.socket_factory.AddSocketDataProvider(&data); | 5027 session_deps.socket_factory.AddSocketDataProvider(&data); |
5028 | 5028 |
5029 TestCompletionCallback callback; | 5029 TestCompletionCallback callback; |
5030 | 5030 |
5031 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5031 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5032 EXPECT_EQ(ERR_IO_PENDING, rv); | 5032 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 18 matching lines...) Expand all Loading... |
5051 "Connection: keep-alive\r\n" | 5051 "Connection: keep-alive\r\n" |
5052 "Pragma: no-cache\r\n" | 5052 "Pragma: no-cache\r\n" |
5053 "Cache-Control: no-cache\r\n\r\n"), | 5053 "Cache-Control: no-cache\r\n\r\n"), |
5054 }; | 5054 }; |
5055 | 5055 |
5056 // Lastly, the server responds with the actual content. | 5056 // Lastly, the server responds with the actual content. |
5057 MockRead data_reads[] = { | 5057 MockRead data_reads[] = { |
5058 MockRead("HTTP/1.0 200 OK\r\n"), | 5058 MockRead("HTTP/1.0 200 OK\r\n"), |
5059 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5059 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
5060 MockRead("Content-Length: 100\r\n\r\n"), | 5060 MockRead("Content-Length: 100\r\n\r\n"), |
5061 MockRead(false, OK), | 5061 MockRead(SYNCHRONOUS, OK), |
5062 }; | 5062 }; |
5063 | 5063 |
5064 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5064 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5065 data_writes, arraysize(data_writes)); | 5065 data_writes, arraysize(data_writes)); |
5066 session_deps.socket_factory.AddSocketDataProvider(&data); | 5066 session_deps.socket_factory.AddSocketDataProvider(&data); |
5067 | 5067 |
5068 TestCompletionCallback callback; | 5068 TestCompletionCallback callback; |
5069 | 5069 |
5070 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5070 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5071 EXPECT_EQ(ERR_IO_PENDING, rv); | 5071 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 18 matching lines...) Expand all Loading... |
5090 "Host: www.google.com\r\n" | 5090 "Host: www.google.com\r\n" |
5091 "Connection: keep-alive\r\n" | 5091 "Connection: keep-alive\r\n" |
5092 "Cache-Control: max-age=0\r\n\r\n"), | 5092 "Cache-Control: max-age=0\r\n\r\n"), |
5093 }; | 5093 }; |
5094 | 5094 |
5095 // Lastly, the server responds with the actual content. | 5095 // Lastly, the server responds with the actual content. |
5096 MockRead data_reads[] = { | 5096 MockRead data_reads[] = { |
5097 MockRead("HTTP/1.0 200 OK\r\n"), | 5097 MockRead("HTTP/1.0 200 OK\r\n"), |
5098 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5098 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
5099 MockRead("Content-Length: 100\r\n\r\n"), | 5099 MockRead("Content-Length: 100\r\n\r\n"), |
5100 MockRead(false, OK), | 5100 MockRead(SYNCHRONOUS, OK), |
5101 }; | 5101 }; |
5102 | 5102 |
5103 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5103 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5104 data_writes, arraysize(data_writes)); | 5104 data_writes, arraysize(data_writes)); |
5105 session_deps.socket_factory.AddSocketDataProvider(&data); | 5105 session_deps.socket_factory.AddSocketDataProvider(&data); |
5106 | 5106 |
5107 TestCompletionCallback callback; | 5107 TestCompletionCallback callback; |
5108 | 5108 |
5109 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5109 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5110 EXPECT_EQ(ERR_IO_PENDING, rv); | 5110 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 17 matching lines...) Expand all Loading... |
5128 "Host: www.google.com\r\n" | 5128 "Host: www.google.com\r\n" |
5129 "Connection: keep-alive\r\n" | 5129 "Connection: keep-alive\r\n" |
5130 "FooHeader: Bar\r\n\r\n"), | 5130 "FooHeader: Bar\r\n\r\n"), |
5131 }; | 5131 }; |
5132 | 5132 |
5133 // Lastly, the server responds with the actual content. | 5133 // Lastly, the server responds with the actual content. |
5134 MockRead data_reads[] = { | 5134 MockRead data_reads[] = { |
5135 MockRead("HTTP/1.0 200 OK\r\n"), | 5135 MockRead("HTTP/1.0 200 OK\r\n"), |
5136 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5136 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
5137 MockRead("Content-Length: 100\r\n\r\n"), | 5137 MockRead("Content-Length: 100\r\n\r\n"), |
5138 MockRead(false, OK), | 5138 MockRead(SYNCHRONOUS, OK), |
5139 }; | 5139 }; |
5140 | 5140 |
5141 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5141 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5142 data_writes, arraysize(data_writes)); | 5142 data_writes, arraysize(data_writes)); |
5143 session_deps.socket_factory.AddSocketDataProvider(&data); | 5143 session_deps.socket_factory.AddSocketDataProvider(&data); |
5144 | 5144 |
5145 TestCompletionCallback callback; | 5145 TestCompletionCallback callback; |
5146 | 5146 |
5147 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5147 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5148 EXPECT_EQ(ERR_IO_PENDING, rv); | 5148 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 21 matching lines...) Expand all Loading... |
5170 "referer: www.foo.com\r\n" | 5170 "referer: www.foo.com\r\n" |
5171 "hEllo: Kitty\r\n" | 5171 "hEllo: Kitty\r\n" |
5172 "FoO: bar\r\n\r\n"), | 5172 "FoO: bar\r\n\r\n"), |
5173 }; | 5173 }; |
5174 | 5174 |
5175 // Lastly, the server responds with the actual content. | 5175 // Lastly, the server responds with the actual content. |
5176 MockRead data_reads[] = { | 5176 MockRead data_reads[] = { |
5177 MockRead("HTTP/1.0 200 OK\r\n"), | 5177 MockRead("HTTP/1.0 200 OK\r\n"), |
5178 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5178 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
5179 MockRead("Content-Length: 100\r\n\r\n"), | 5179 MockRead("Content-Length: 100\r\n\r\n"), |
5180 MockRead(false, OK), | 5180 MockRead(SYNCHRONOUS, OK), |
5181 }; | 5181 }; |
5182 | 5182 |
5183 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5183 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5184 data_writes, arraysize(data_writes)); | 5184 data_writes, arraysize(data_writes)); |
5185 session_deps.socket_factory.AddSocketDataProvider(&data); | 5185 session_deps.socket_factory.AddSocketDataProvider(&data); |
5186 | 5186 |
5187 TestCompletionCallback callback; | 5187 TestCompletionCallback callback; |
5188 | 5188 |
5189 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5189 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5190 EXPECT_EQ(ERR_IO_PENDING, rv); | 5190 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 18 matching lines...) Expand all Loading... |
5209 SessionDependencies session_deps( | 5209 SessionDependencies session_deps( |
5210 ProxyService::CreateFixed("socks4://myproxy:1080")); | 5210 ProxyService::CreateFixed("socks4://myproxy:1080")); |
5211 | 5211 |
5212 scoped_ptr<HttpTransaction> trans( | 5212 scoped_ptr<HttpTransaction> trans( |
5213 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5213 new HttpNetworkTransaction(CreateSession(&session_deps))); |
5214 | 5214 |
5215 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; | 5215 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; |
5216 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; | 5216 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; |
5217 | 5217 |
5218 MockWrite data_writes[] = { | 5218 MockWrite data_writes[] = { |
5219 MockWrite(true, write_buffer, arraysize(write_buffer)), | 5219 MockWrite(ASYNC, write_buffer, arraysize(write_buffer)), |
5220 MockWrite("GET / HTTP/1.1\r\n" | 5220 MockWrite("GET / HTTP/1.1\r\n" |
5221 "Host: www.google.com\r\n" | 5221 "Host: www.google.com\r\n" |
5222 "Connection: keep-alive\r\n\r\n") | 5222 "Connection: keep-alive\r\n\r\n") |
5223 }; | 5223 }; |
5224 | 5224 |
5225 MockRead data_reads[] = { | 5225 MockRead data_reads[] = { |
5226 MockRead(true, read_buffer, arraysize(read_buffer)), | 5226 MockRead(ASYNC, read_buffer, arraysize(read_buffer)), |
5227 MockRead("HTTP/1.0 200 OK\r\n"), | 5227 MockRead("HTTP/1.0 200 OK\r\n"), |
5228 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5228 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
5229 MockRead("Payload"), | 5229 MockRead("Payload"), |
5230 MockRead(false, OK) | 5230 MockRead(SYNCHRONOUS, OK) |
5231 }; | 5231 }; |
5232 | 5232 |
5233 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5233 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5234 data_writes, arraysize(data_writes)); | 5234 data_writes, arraysize(data_writes)); |
5235 session_deps.socket_factory.AddSocketDataProvider(&data); | 5235 session_deps.socket_factory.AddSocketDataProvider(&data); |
5236 | 5236 |
5237 TestCompletionCallback callback; | 5237 TestCompletionCallback callback; |
5238 | 5238 |
5239 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5239 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5240 EXPECT_EQ(ERR_IO_PENDING, rv); | 5240 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 26 matching lines...) Expand all Loading... |
5267 SessionDependencies session_deps( | 5267 SessionDependencies session_deps( |
5268 ProxyService::CreateFixed("socks4://myproxy:1080")); | 5268 ProxyService::CreateFixed("socks4://myproxy:1080")); |
5269 | 5269 |
5270 scoped_ptr<HttpTransaction> trans( | 5270 scoped_ptr<HttpTransaction> trans( |
5271 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5271 new HttpNetworkTransaction(CreateSession(&session_deps))); |
5272 | 5272 |
5273 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; | 5273 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; |
5274 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; | 5274 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; |
5275 | 5275 |
5276 MockWrite data_writes[] = { | 5276 MockWrite data_writes[] = { |
5277 MockWrite(true, reinterpret_cast<char*>(write_buffer), | 5277 MockWrite(ASYNC, reinterpret_cast<char*>(write_buffer), |
5278 arraysize(write_buffer)), | 5278 arraysize(write_buffer)), |
5279 MockWrite("GET / HTTP/1.1\r\n" | 5279 MockWrite("GET / HTTP/1.1\r\n" |
5280 "Host: www.google.com\r\n" | 5280 "Host: www.google.com\r\n" |
5281 "Connection: keep-alive\r\n\r\n") | 5281 "Connection: keep-alive\r\n\r\n") |
5282 }; | 5282 }; |
5283 | 5283 |
5284 MockRead data_reads[] = { | 5284 MockRead data_reads[] = { |
5285 MockWrite(true, reinterpret_cast<char*>(read_buffer), | 5285 MockWrite(ASYNC, reinterpret_cast<char*>(read_buffer), |
5286 arraysize(read_buffer)), | 5286 arraysize(read_buffer)), |
5287 MockRead("HTTP/1.0 200 OK\r\n"), | 5287 MockRead("HTTP/1.0 200 OK\r\n"), |
5288 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5288 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
5289 MockRead("Payload"), | 5289 MockRead("Payload"), |
5290 MockRead(false, OK) | 5290 MockRead(SYNCHRONOUS, OK) |
5291 }; | 5291 }; |
5292 | 5292 |
5293 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5293 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5294 data_writes, arraysize(data_writes)); | 5294 data_writes, arraysize(data_writes)); |
5295 session_deps.socket_factory.AddSocketDataProvider(&data); | 5295 session_deps.socket_factory.AddSocketDataProvider(&data); |
5296 | 5296 |
5297 SSLSocketDataProvider ssl(true, OK); | 5297 SSLSocketDataProvider ssl(ASYNC, OK); |
5298 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5298 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
5299 | 5299 |
5300 TestCompletionCallback callback; | 5300 TestCompletionCallback callback; |
5301 | 5301 |
5302 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5302 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5303 EXPECT_EQ(ERR_IO_PENDING, rv); | 5303 EXPECT_EQ(ERR_IO_PENDING, rv); |
5304 | 5304 |
5305 rv = callback.WaitForResult(); | 5305 rv = callback.WaitForResult(); |
5306 EXPECT_EQ(OK, rv); | 5306 EXPECT_EQ(OK, rv); |
5307 | 5307 |
(...skipping 27 matching lines...) Expand all Loading... |
5335 0x03, // Address type (DOMAINNAME). | 5335 0x03, // Address type (DOMAINNAME). |
5336 0x0E, // Length of domain (14) | 5336 0x0E, // Length of domain (14) |
5337 // Domain string: | 5337 // Domain string: |
5338 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', | 5338 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', |
5339 0x00, 0x50, // 16-bit port (80) | 5339 0x00, 0x50, // 16-bit port (80) |
5340 }; | 5340 }; |
5341 const char kSOCKS5OkResponse[] = | 5341 const char kSOCKS5OkResponse[] = |
5342 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; | 5342 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; |
5343 | 5343 |
5344 MockWrite data_writes[] = { | 5344 MockWrite data_writes[] = { |
5345 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), | 5345 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), |
5346 MockWrite(true, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), | 5346 MockWrite(ASYNC, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), |
5347 MockWrite("GET / HTTP/1.1\r\n" | 5347 MockWrite("GET / HTTP/1.1\r\n" |
5348 "Host: www.google.com\r\n" | 5348 "Host: www.google.com\r\n" |
5349 "Connection: keep-alive\r\n\r\n") | 5349 "Connection: keep-alive\r\n\r\n") |
5350 }; | 5350 }; |
5351 | 5351 |
5352 MockRead data_reads[] = { | 5352 MockRead data_reads[] = { |
5353 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), | 5353 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), |
5354 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), | 5354 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), |
5355 MockRead("HTTP/1.0 200 OK\r\n"), | 5355 MockRead("HTTP/1.0 200 OK\r\n"), |
5356 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5356 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
5357 MockRead("Payload"), | 5357 MockRead("Payload"), |
5358 MockRead(false, OK) | 5358 MockRead(SYNCHRONOUS, OK) |
5359 }; | 5359 }; |
5360 | 5360 |
5361 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5361 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5362 data_writes, arraysize(data_writes)); | 5362 data_writes, arraysize(data_writes)); |
5363 session_deps.socket_factory.AddSocketDataProvider(&data); | 5363 session_deps.socket_factory.AddSocketDataProvider(&data); |
5364 | 5364 |
5365 TestCompletionCallback callback; | 5365 TestCompletionCallback callback; |
5366 | 5366 |
5367 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5367 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5368 EXPECT_EQ(ERR_IO_PENDING, rv); | 5368 EXPECT_EQ(ERR_IO_PENDING, rv); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5401 0x0E, // Length of domain (14) | 5401 0x0E, // Length of domain (14) |
5402 // Domain string: | 5402 // Domain string: |
5403 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', | 5403 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', |
5404 0x01, 0xBB, // 16-bit port (443) | 5404 0x01, 0xBB, // 16-bit port (443) |
5405 }; | 5405 }; |
5406 | 5406 |
5407 const char kSOCKS5OkResponse[] = | 5407 const char kSOCKS5OkResponse[] = |
5408 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; | 5408 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; |
5409 | 5409 |
5410 MockWrite data_writes[] = { | 5410 MockWrite data_writes[] = { |
5411 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), | 5411 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), |
5412 MockWrite(true, reinterpret_cast<const char*>(kSOCKS5OkRequest), | 5412 MockWrite(ASYNC, reinterpret_cast<const char*>(kSOCKS5OkRequest), |
5413 arraysize(kSOCKS5OkRequest)), | 5413 arraysize(kSOCKS5OkRequest)), |
5414 MockWrite("GET / HTTP/1.1\r\n" | 5414 MockWrite("GET / HTTP/1.1\r\n" |
5415 "Host: www.google.com\r\n" | 5415 "Host: www.google.com\r\n" |
5416 "Connection: keep-alive\r\n\r\n") | 5416 "Connection: keep-alive\r\n\r\n") |
5417 }; | 5417 }; |
5418 | 5418 |
5419 MockRead data_reads[] = { | 5419 MockRead data_reads[] = { |
5420 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), | 5420 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), |
5421 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), | 5421 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), |
5422 MockRead("HTTP/1.0 200 OK\r\n"), | 5422 MockRead("HTTP/1.0 200 OK\r\n"), |
5423 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5423 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
5424 MockRead("Payload"), | 5424 MockRead("Payload"), |
5425 MockRead(false, OK) | 5425 MockRead(SYNCHRONOUS, OK) |
5426 }; | 5426 }; |
5427 | 5427 |
5428 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5428 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
5429 data_writes, arraysize(data_writes)); | 5429 data_writes, arraysize(data_writes)); |
5430 session_deps.socket_factory.AddSocketDataProvider(&data); | 5430 session_deps.socket_factory.AddSocketDataProvider(&data); |
5431 | 5431 |
5432 SSLSocketDataProvider ssl(true, OK); | 5432 SSLSocketDataProvider ssl(ASYNC, OK); |
5433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
5434 | 5434 |
5435 TestCompletionCallback callback; | 5435 TestCompletionCallback callback; |
5436 | 5436 |
5437 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5437 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5438 EXPECT_EQ(ERR_IO_PENDING, rv); | 5438 EXPECT_EQ(ERR_IO_PENDING, rv); |
5439 | 5439 |
5440 rv = callback.WaitForResult(); | 5440 rv = callback.WaitForResult(); |
5441 EXPECT_EQ(OK, rv); | 5441 EXPECT_EQ(OK, rv); |
5442 | 5442 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5747 callback.callback(), NULL, BoundNetLog()); | 5747 callback.callback(), NULL, BoundNetLog()); |
5748 ASSERT_EQ(OK, rv); | 5748 ASSERT_EQ(OK, rv); |
5749 | 5749 |
5750 // Inject a failure the next time that "www.google.com" is resolved. This way | 5750 // Inject a failure the next time that "www.google.com" is resolved. This way |
5751 // we can tell if the next lookup hit the cache, or the "network". | 5751 // we can tell if the next lookup hit the cache, or the "network". |
5752 // (cache --> success, "network" --> failure). | 5752 // (cache --> success, "network" --> failure). |
5753 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); | 5753 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); |
5754 | 5754 |
5755 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the | 5755 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the |
5756 // first read -- this won't be reached as the host resolution will fail first. | 5756 // first read -- this won't be reached as the host resolution will fail first. |
5757 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; | 5757 MockRead data_reads[] = { MockRead(SYNCHRONOUS, ERR_UNEXPECTED) }; |
5758 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 5758 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
5759 session_deps.socket_factory.AddSocketDataProvider(&data); | 5759 session_deps.socket_factory.AddSocketDataProvider(&data); |
5760 | 5760 |
5761 // Run the request. | 5761 // Run the request. |
5762 rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5762 rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5763 ASSERT_EQ(ERR_IO_PENDING, rv); | 5763 ASSERT_EQ(ERR_IO_PENDING, rv); |
5764 rv = callback.WaitForResult(); | 5764 rv = callback.WaitForResult(); |
5765 | 5765 |
5766 // If we bypassed the cache, we would have gotten a failure while resolving | 5766 // If we bypassed the cache, we would have gotten a failure while resolving |
5767 // "www.google.com". | 5767 // "www.google.com". |
(...skipping 18 matching lines...) Expand all Loading... |
5786 TEST_F(HttpNetworkTransactionTest, RequestWriteError) { | 5786 TEST_F(HttpNetworkTransactionTest, RequestWriteError) { |
5787 SessionDependencies session_deps; | 5787 SessionDependencies session_deps; |
5788 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 5788 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
5789 | 5789 |
5790 HttpRequestInfo request; | 5790 HttpRequestInfo request; |
5791 request.method = "GET"; | 5791 request.method = "GET"; |
5792 request.url = GURL("http://www.foo.com/"); | 5792 request.url = GURL("http://www.foo.com/"); |
5793 request.load_flags = 0; | 5793 request.load_flags = 0; |
5794 | 5794 |
5795 MockWrite write_failure[] = { | 5795 MockWrite write_failure[] = { |
5796 MockWrite(true, ERR_CONNECTION_RESET), | 5796 MockWrite(ASYNC, ERR_CONNECTION_RESET), |
5797 }; | 5797 }; |
5798 StaticSocketDataProvider data(NULL, 0, | 5798 StaticSocketDataProvider data(NULL, 0, |
5799 write_failure, arraysize(write_failure)); | 5799 write_failure, arraysize(write_failure)); |
5800 session_deps.socket_factory.AddSocketDataProvider(&data); | 5800 session_deps.socket_factory.AddSocketDataProvider(&data); |
5801 | 5801 |
5802 TestCompletionCallback callback; | 5802 TestCompletionCallback callback; |
5803 | 5803 |
5804 scoped_ptr<HttpTransaction> trans( | 5804 scoped_ptr<HttpTransaction> trans( |
5805 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5805 new HttpNetworkTransaction(CreateSession(&session_deps))); |
5806 | 5806 |
5807 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5807 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5808 EXPECT_EQ(ERR_IO_PENDING, rv); | 5808 EXPECT_EQ(ERR_IO_PENDING, rv); |
5809 | 5809 |
5810 rv = callback.WaitForResult(); | 5810 rv = callback.WaitForResult(); |
5811 EXPECT_EQ(ERR_CONNECTION_RESET, rv); | 5811 EXPECT_EQ(ERR_CONNECTION_RESET, rv); |
5812 } | 5812 } |
5813 | 5813 |
5814 // Check that a connection closed after the start of the headers finishes ok. | 5814 // Check that a connection closed after the start of the headers finishes ok. |
5815 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { | 5815 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { |
5816 SessionDependencies session_deps; | 5816 SessionDependencies session_deps; |
5817 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 5817 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
5818 | 5818 |
5819 HttpRequestInfo request; | 5819 HttpRequestInfo request; |
5820 request.method = "GET"; | 5820 request.method = "GET"; |
5821 request.url = GURL("http://www.foo.com/"); | 5821 request.url = GURL("http://www.foo.com/"); |
5822 request.load_flags = 0; | 5822 request.load_flags = 0; |
5823 | 5823 |
5824 MockRead data_reads[] = { | 5824 MockRead data_reads[] = { |
5825 MockRead("HTTP/1."), | 5825 MockRead("HTTP/1."), |
5826 MockRead(false, OK), | 5826 MockRead(SYNCHRONOUS, OK), |
5827 }; | 5827 }; |
5828 | 5828 |
5829 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 5829 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
5830 session_deps.socket_factory.AddSocketDataProvider(&data); | 5830 session_deps.socket_factory.AddSocketDataProvider(&data); |
5831 | 5831 |
5832 TestCompletionCallback callback; | 5832 TestCompletionCallback callback; |
5833 | 5833 |
5834 scoped_ptr<HttpTransaction> trans( | 5834 scoped_ptr<HttpTransaction> trans( |
5835 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5835 new HttpNetworkTransaction(CreateSession(&session_deps))); |
5836 | 5836 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5868 "Host: www.google.com\r\n" | 5868 "Host: www.google.com\r\n" |
5869 "Connection: keep-alive\r\n\r\n"), | 5869 "Connection: keep-alive\r\n\r\n"), |
5870 }; | 5870 }; |
5871 | 5871 |
5872 MockRead data_reads1[] = { | 5872 MockRead data_reads1[] = { |
5873 MockRead("HTTP/1.1 401 Unauthorized\r\n"), | 5873 MockRead("HTTP/1.1 401 Unauthorized\r\n"), |
5874 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 5874 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
5875 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5875 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
5876 MockRead("Content-Length: 14\r\n\r\n"), | 5876 MockRead("Content-Length: 14\r\n\r\n"), |
5877 MockRead("Unauth"), | 5877 MockRead("Unauth"), |
5878 MockRead(true, ERR_CONNECTION_RESET), | 5878 MockRead(ASYNC, ERR_CONNECTION_RESET), |
5879 }; | 5879 }; |
5880 | 5880 |
5881 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 5881 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
5882 data_writes1, arraysize(data_writes1)); | 5882 data_writes1, arraysize(data_writes1)); |
5883 session_deps.socket_factory.AddSocketDataProvider(&data1); | 5883 session_deps.socket_factory.AddSocketDataProvider(&data1); |
5884 | 5884 |
5885 // After calling trans->RestartWithAuth(), this is the request we should | 5885 // After calling trans->RestartWithAuth(), this is the request we should |
5886 // be issuing -- the final header line contains the credentials. | 5886 // be issuing -- the final header line contains the credentials. |
5887 MockWrite data_writes2[] = { | 5887 MockWrite data_writes2[] = { |
5888 MockWrite("GET / HTTP/1.1\r\n" | 5888 MockWrite("GET / HTTP/1.1\r\n" |
5889 "Host: www.google.com\r\n" | 5889 "Host: www.google.com\r\n" |
5890 "Connection: keep-alive\r\n" | 5890 "Connection: keep-alive\r\n" |
5891 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 5891 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
5892 }; | 5892 }; |
5893 | 5893 |
5894 // Lastly, the server responds with the actual content. | 5894 // Lastly, the server responds with the actual content. |
5895 MockRead data_reads2[] = { | 5895 MockRead data_reads2[] = { |
5896 MockRead("HTTP/1.1 200 OK\r\n"), | 5896 MockRead("HTTP/1.1 200 OK\r\n"), |
5897 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5897 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
5898 MockRead("Content-Length: 100\r\n\r\n"), | 5898 MockRead("Content-Length: 100\r\n\r\n"), |
5899 MockRead(false, OK), | 5899 MockRead(SYNCHRONOUS, OK), |
5900 }; | 5900 }; |
5901 | 5901 |
5902 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 5902 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
5903 data_writes2, arraysize(data_writes2)); | 5903 data_writes2, arraysize(data_writes2)); |
5904 session_deps.socket_factory.AddSocketDataProvider(&data2); | 5904 session_deps.socket_factory.AddSocketDataProvider(&data2); |
5905 | 5905 |
5906 TestCompletionCallback callback1; | 5906 TestCompletionCallback callback1; |
5907 | 5907 |
5908 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 5908 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
5909 | 5909 |
(...skipping 26 matching lines...) Expand all Loading... |
5936 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { | 5936 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { |
5937 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70")); | 5937 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70")); |
5938 | 5938 |
5939 HttpRequestInfo request; | 5939 HttpRequestInfo request; |
5940 request.method = "GET"; | 5940 request.method = "GET"; |
5941 request.url = GURL("https://www.google.com/"); | 5941 request.url = GURL("https://www.google.com/"); |
5942 request.load_flags = 0; | 5942 request.load_flags = 0; |
5943 | 5943 |
5944 MockRead proxy_reads[] = { | 5944 MockRead proxy_reads[] = { |
5945 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), | 5945 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), |
5946 MockRead(false, OK) | 5946 MockRead(SYNCHRONOUS, OK) |
5947 }; | 5947 }; |
5948 | 5948 |
5949 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0); | 5949 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0); |
5950 SSLSocketDataProvider ssl(true, OK); | 5950 SSLSocketDataProvider ssl(ASYNC, OK); |
5951 | 5951 |
5952 session_deps.socket_factory.AddSocketDataProvider(&data); | 5952 session_deps.socket_factory.AddSocketDataProvider(&data); |
5953 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5953 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
5954 | 5954 |
5955 TestCompletionCallback callback; | 5955 TestCompletionCallback callback; |
5956 | 5956 |
5957 session_deps.socket_factory.ResetNextMockIndexes(); | 5957 session_deps.socket_factory.ResetNextMockIndexes(); |
5958 | 5958 |
5959 scoped_ptr<HttpTransaction> trans( | 5959 scoped_ptr<HttpTransaction> trans( |
5960 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5960 new HttpNetworkTransaction(CreateSession(&session_deps))); |
(...skipping 10 matching lines...) Expand all Loading... |
5971 request.method = "GET"; | 5971 request.method = "GET"; |
5972 request.url = GURL("http://www.google.com/"); | 5972 request.url = GURL("http://www.google.com/"); |
5973 request.load_flags = 0; | 5973 request.load_flags = 0; |
5974 | 5974 |
5975 SessionDependencies session_deps; | 5975 SessionDependencies session_deps; |
5976 scoped_ptr<HttpTransaction> trans( | 5976 scoped_ptr<HttpTransaction> trans( |
5977 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5977 new HttpNetworkTransaction(CreateSession(&session_deps))); |
5978 | 5978 |
5979 MockRead data_reads[] = { | 5979 MockRead data_reads[] = { |
5980 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), | 5980 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), |
5981 MockRead(false, OK), | 5981 MockRead(SYNCHRONOUS, OK), |
5982 }; | 5982 }; |
5983 | 5983 |
5984 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 5984 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
5985 session_deps.socket_factory.AddSocketDataProvider(&data); | 5985 session_deps.socket_factory.AddSocketDataProvider(&data); |
5986 | 5986 |
5987 TestCompletionCallback callback; | 5987 TestCompletionCallback callback; |
5988 | 5988 |
5989 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5989 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
5990 EXPECT_EQ(ERR_IO_PENDING, rv); | 5990 EXPECT_EQ(ERR_IO_PENDING, rv); |
5991 | 5991 |
(...skipping 29 matching lines...) Expand all Loading... |
6021 UploadData::Element element; | 6021 UploadData::Element element; |
6022 element.SetToFilePath(temp_file_path); | 6022 element.SetToFilePath(temp_file_path); |
6023 element.SetContentLength(kFakeSize); | 6023 element.SetContentLength(kFakeSize); |
6024 elements.push_back(element); | 6024 elements.push_back(element); |
6025 request.upload_data->SetElements(elements); | 6025 request.upload_data->SetElements(elements); |
6026 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync()); | 6026 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync()); |
6027 | 6027 |
6028 MockRead data_reads[] = { | 6028 MockRead data_reads[] = { |
6029 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 6029 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
6030 MockRead("hello world"), | 6030 MockRead("hello world"), |
6031 MockRead(false, OK), | 6031 MockRead(SYNCHRONOUS, OK), |
6032 }; | 6032 }; |
6033 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 6033 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
6034 session_deps.socket_factory.AddSocketDataProvider(&data); | 6034 session_deps.socket_factory.AddSocketDataProvider(&data); |
6035 | 6035 |
6036 TestCompletionCallback callback; | 6036 TestCompletionCallback callback; |
6037 | 6037 |
6038 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 6038 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
6039 EXPECT_EQ(ERR_IO_PENDING, rv); | 6039 EXPECT_EQ(ERR_IO_PENDING, rv); |
6040 | 6040 |
6041 rv = callback.WaitForResult(); | 6041 rv = callback.WaitForResult(); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6076 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); | 6076 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); |
6077 | 6077 |
6078 std::vector<UploadData::Element> elements; | 6078 std::vector<UploadData::Element> elements; |
6079 UploadData::Element element; | 6079 UploadData::Element element; |
6080 element.SetToFilePath(temp_file); | 6080 element.SetToFilePath(temp_file); |
6081 elements.push_back(element); | 6081 elements.push_back(element); |
6082 request.upload_data->SetElements(elements); | 6082 request.upload_data->SetElements(elements); |
6083 | 6083 |
6084 MockRead data_reads[] = { | 6084 MockRead data_reads[] = { |
6085 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 6085 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
6086 MockRead(false, OK), | 6086 MockRead(SYNCHRONOUS, OK), |
6087 }; | 6087 }; |
6088 MockWrite data_writes[] = { | 6088 MockWrite data_writes[] = { |
6089 MockWrite("POST /upload HTTP/1.1\r\n" | 6089 MockWrite("POST /upload HTTP/1.1\r\n" |
6090 "Host: www.google.com\r\n" | 6090 "Host: www.google.com\r\n" |
6091 "Connection: keep-alive\r\n" | 6091 "Connection: keep-alive\r\n" |
6092 "Content-Length: 0\r\n\r\n"), | 6092 "Content-Length: 0\r\n\r\n"), |
6093 MockWrite(false, OK), | 6093 MockWrite(SYNCHRONOUS, OK), |
6094 }; | 6094 }; |
6095 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, | 6095 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, |
6096 arraysize(data_writes)); | 6096 arraysize(data_writes)); |
6097 session_deps.socket_factory.AddSocketDataProvider(&data); | 6097 session_deps.socket_factory.AddSocketDataProvider(&data); |
6098 | 6098 |
6099 TestCompletionCallback callback; | 6099 TestCompletionCallback callback; |
6100 | 6100 |
6101 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 6101 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
6102 EXPECT_EQ(ERR_IO_PENDING, rv); | 6102 EXPECT_EQ(ERR_IO_PENDING, rv); |
6103 | 6103 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6136 elements.push_back(element); | 6136 elements.push_back(element); |
6137 request.upload_data->SetElements(elements); | 6137 request.upload_data->SetElements(elements); |
6138 | 6138 |
6139 MockRead data_reads[] = { | 6139 MockRead data_reads[] = { |
6140 MockRead("HTTP/1.1 401 Unauthorized\r\n"), | 6140 MockRead("HTTP/1.1 401 Unauthorized\r\n"), |
6141 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 6141 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
6142 MockRead("Content-Length: 0\r\n\r\n"), // No response body. | 6142 MockRead("Content-Length: 0\r\n\r\n"), // No response body. |
6143 | 6143 |
6144 MockRead("HTTP/1.1 200 OK\r\n"), | 6144 MockRead("HTTP/1.1 200 OK\r\n"), |
6145 MockRead("Content-Length: 0\r\n\r\n"), | 6145 MockRead("Content-Length: 0\r\n\r\n"), |
6146 MockRead(false, OK), | 6146 MockRead(SYNCHRONOUS, OK), |
6147 }; | 6147 }; |
6148 MockWrite data_writes[] = { | 6148 MockWrite data_writes[] = { |
6149 MockWrite("POST /upload HTTP/1.1\r\n" | 6149 MockWrite("POST /upload HTTP/1.1\r\n" |
6150 "Host: www.google.com\r\n" | 6150 "Host: www.google.com\r\n" |
6151 "Connection: keep-alive\r\n" | 6151 "Connection: keep-alive\r\n" |
6152 "Content-Length: 16\r\n\r\n"), | 6152 "Content-Length: 16\r\n\r\n"), |
6153 MockWrite(false, temp_file_contents.c_str()), | 6153 MockWrite(SYNCHRONOUS, temp_file_contents.c_str()), |
6154 | 6154 |
6155 MockWrite("POST /upload HTTP/1.1\r\n" | 6155 MockWrite("POST /upload HTTP/1.1\r\n" |
6156 "Host: www.google.com\r\n" | 6156 "Host: www.google.com\r\n" |
6157 "Connection: keep-alive\r\n" | 6157 "Connection: keep-alive\r\n" |
6158 "Content-Length: 16\r\n" | 6158 "Content-Length: 16\r\n" |
6159 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 6159 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
6160 MockWrite(false, unreadable_contents.c_str(), temp_file_contents.length()), | 6160 MockWrite(SYNCHRONOUS, unreadable_contents.c_str(), |
6161 MockWrite(false, OK), | 6161 temp_file_contents.length()), |
| 6162 MockWrite(SYNCHRONOUS, OK), |
6162 }; | 6163 }; |
6163 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, | 6164 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, |
6164 arraysize(data_writes)); | 6165 arraysize(data_writes)); |
6165 session_deps.socket_factory.AddSocketDataProvider(&data); | 6166 session_deps.socket_factory.AddSocketDataProvider(&data); |
6166 | 6167 |
6167 TestCompletionCallback callback1; | 6168 TestCompletionCallback callback1; |
6168 | 6169 |
6169 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 6170 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
6170 EXPECT_EQ(ERR_IO_PENDING, rv); | 6171 EXPECT_EQ(ERR_IO_PENDING, rv); |
6171 | 6172 |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6355 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { | 6356 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { |
6356 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL)); | 6357 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL)); |
6357 HttpStreamFactory::set_use_alternate_protocols(true); | 6358 HttpStreamFactory::set_use_alternate_protocols(true); |
6358 | 6359 |
6359 SessionDependencies session_deps; | 6360 SessionDependencies session_deps; |
6360 | 6361 |
6361 MockRead data_reads[] = { | 6362 MockRead data_reads[] = { |
6362 MockRead("HTTP/1.1 200 OK\r\n"), | 6363 MockRead("HTTP/1.1 200 OK\r\n"), |
6363 MockRead(kAlternateProtocolHttpHeader), | 6364 MockRead(kAlternateProtocolHttpHeader), |
6364 MockRead("hello world"), | 6365 MockRead("hello world"), |
6365 MockRead(false, OK), | 6366 MockRead(SYNCHRONOUS, OK), |
6366 }; | 6367 }; |
6367 | 6368 |
6368 HttpRequestInfo request; | 6369 HttpRequestInfo request; |
6369 request.method = "GET"; | 6370 request.method = "GET"; |
6370 request.url = GURL("http://www.google.com/"); | 6371 request.url = GURL("http://www.google.com/"); |
6371 request.load_flags = 0; | 6372 request.load_flags = 0; |
6372 | 6373 |
6373 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 6374 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
6374 | 6375 |
6375 session_deps.socket_factory.AddSocketDataProvider(&data); | 6376 session_deps.socket_factory.AddSocketDataProvider(&data); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6423 request.load_flags = 0; | 6424 request.load_flags = 0; |
6424 | 6425 |
6425 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6426 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
6426 StaticSocketDataProvider first_data; | 6427 StaticSocketDataProvider first_data; |
6427 first_data.set_connect_data(mock_connect); | 6428 first_data.set_connect_data(mock_connect); |
6428 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6429 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
6429 | 6430 |
6430 MockRead data_reads[] = { | 6431 MockRead data_reads[] = { |
6431 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6432 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
6432 MockRead("hello world"), | 6433 MockRead("hello world"), |
6433 MockRead(true, OK), | 6434 MockRead(ASYNC, OK), |
6434 }; | 6435 }; |
6435 StaticSocketDataProvider second_data( | 6436 StaticSocketDataProvider second_data( |
6436 data_reads, arraysize(data_reads), NULL, 0); | 6437 data_reads, arraysize(data_reads), NULL, 0); |
6437 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6438 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
6438 | 6439 |
6439 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6440 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
6440 | 6441 |
6441 HttpServerProperties* http_server_properties = | 6442 HttpServerProperties* http_server_properties = |
6442 session->http_server_properties(); | 6443 session->http_server_properties(); |
6443 // Port must be < 1024, or the header will be ignored (since initial port was | 6444 // Port must be < 1024, or the header will be ignored (since initial port was |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6486 restricted_port_request.load_flags = 0; | 6487 restricted_port_request.load_flags = 0; |
6487 | 6488 |
6488 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6489 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
6489 StaticSocketDataProvider first_data; | 6490 StaticSocketDataProvider first_data; |
6490 first_data.set_connect_data(mock_connect); | 6491 first_data.set_connect_data(mock_connect); |
6491 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6492 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
6492 | 6493 |
6493 MockRead data_reads[] = { | 6494 MockRead data_reads[] = { |
6494 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6495 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
6495 MockRead("hello world"), | 6496 MockRead("hello world"), |
6496 MockRead(true, OK), | 6497 MockRead(ASYNC, OK), |
6497 }; | 6498 }; |
6498 StaticSocketDataProvider second_data( | 6499 StaticSocketDataProvider second_data( |
6499 data_reads, arraysize(data_reads), NULL, 0); | 6500 data_reads, arraysize(data_reads), NULL, 0); |
6500 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6501 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
6501 | 6502 |
6502 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6503 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
6503 | 6504 |
6504 HttpServerProperties* http_server_properties = | 6505 HttpServerProperties* http_server_properties = |
6505 session->http_server_properties(); | 6506 session->http_server_properties(); |
6506 const int kUnrestrictedAlternatePort = 1024; | 6507 const int kUnrestrictedAlternatePort = 1024; |
(...skipping 28 matching lines...) Expand all Loading... |
6535 restricted_port_request.load_flags = 0; | 6536 restricted_port_request.load_flags = 0; |
6536 | 6537 |
6537 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6538 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
6538 StaticSocketDataProvider first_data; | 6539 StaticSocketDataProvider first_data; |
6539 first_data.set_connect_data(mock_connect); | 6540 first_data.set_connect_data(mock_connect); |
6540 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6541 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
6541 | 6542 |
6542 MockRead data_reads[] = { | 6543 MockRead data_reads[] = { |
6543 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6544 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
6544 MockRead("hello world"), | 6545 MockRead("hello world"), |
6545 MockRead(true, OK), | 6546 MockRead(ASYNC, OK), |
6546 }; | 6547 }; |
6547 StaticSocketDataProvider second_data( | 6548 StaticSocketDataProvider second_data( |
6548 data_reads, arraysize(data_reads), NULL, 0); | 6549 data_reads, arraysize(data_reads), NULL, 0); |
6549 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6550 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
6550 | 6551 |
6551 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6552 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
6552 | 6553 |
6553 HttpServerProperties* http_server_properties = | 6554 HttpServerProperties* http_server_properties = |
6554 session->http_server_properties(); | 6555 session->http_server_properties(); |
6555 const int kRestrictedAlternatePort = 80; | 6556 const int kRestrictedAlternatePort = 80; |
(...skipping 28 matching lines...) Expand all Loading... |
6584 unrestricted_port_request.load_flags = 0; | 6585 unrestricted_port_request.load_flags = 0; |
6585 | 6586 |
6586 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6587 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
6587 StaticSocketDataProvider first_data; | 6588 StaticSocketDataProvider first_data; |
6588 first_data.set_connect_data(mock_connect); | 6589 first_data.set_connect_data(mock_connect); |
6589 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6590 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
6590 | 6591 |
6591 MockRead data_reads[] = { | 6592 MockRead data_reads[] = { |
6592 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6593 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
6593 MockRead("hello world"), | 6594 MockRead("hello world"), |
6594 MockRead(true, OK), | 6595 MockRead(ASYNC, OK), |
6595 }; | 6596 }; |
6596 StaticSocketDataProvider second_data( | 6597 StaticSocketDataProvider second_data( |
6597 data_reads, arraysize(data_reads), NULL, 0); | 6598 data_reads, arraysize(data_reads), NULL, 0); |
6598 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6599 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
6599 | 6600 |
6600 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6601 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
6601 | 6602 |
6602 HttpServerProperties* http_server_properties = | 6603 HttpServerProperties* http_server_properties = |
6603 session->http_server_properties(); | 6604 session->http_server_properties(); |
6604 const int kRestrictedAlternatePort = 80; | 6605 const int kRestrictedAlternatePort = 80; |
(...skipping 28 matching lines...) Expand all Loading... |
6633 unrestricted_port_request.load_flags = 0; | 6634 unrestricted_port_request.load_flags = 0; |
6634 | 6635 |
6635 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6636 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
6636 StaticSocketDataProvider first_data; | 6637 StaticSocketDataProvider first_data; |
6637 first_data.set_connect_data(mock_connect); | 6638 first_data.set_connect_data(mock_connect); |
6638 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6639 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
6639 | 6640 |
6640 MockRead data_reads[] = { | 6641 MockRead data_reads[] = { |
6641 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6642 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
6642 MockRead("hello world"), | 6643 MockRead("hello world"), |
6643 MockRead(true, OK), | 6644 MockRead(ASYNC, OK), |
6644 }; | 6645 }; |
6645 StaticSocketDataProvider second_data( | 6646 StaticSocketDataProvider second_data( |
6646 data_reads, arraysize(data_reads), NULL, 0); | 6647 data_reads, arraysize(data_reads), NULL, 0); |
6647 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6648 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
6648 | 6649 |
6649 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6650 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
6650 | 6651 |
6651 HttpServerProperties* http_server_properties = | 6652 HttpServerProperties* http_server_properties = |
6652 session->http_server_properties(); | 6653 session->http_server_properties(); |
6653 const int kUnrestrictedAlternatePort = 1024; | 6654 const int kUnrestrictedAlternatePort = 1024; |
(...skipping 24 matching lines...) Expand all Loading... |
6678 HttpRequestInfo request; | 6679 HttpRequestInfo request; |
6679 request.method = "GET"; | 6680 request.method = "GET"; |
6680 request.url = GURL("http://www.google.com/"); | 6681 request.url = GURL("http://www.google.com/"); |
6681 request.load_flags = 0; | 6682 request.load_flags = 0; |
6682 | 6683 |
6683 // The alternate protocol request will error out before we attempt to connect, | 6684 // The alternate protocol request will error out before we attempt to connect, |
6684 // so only the standard HTTP request will try to connect. | 6685 // so only the standard HTTP request will try to connect. |
6685 MockRead data_reads[] = { | 6686 MockRead data_reads[] = { |
6686 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6687 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
6687 MockRead("hello world"), | 6688 MockRead("hello world"), |
6688 MockRead(true, OK), | 6689 MockRead(ASYNC, OK), |
6689 }; | 6690 }; |
6690 StaticSocketDataProvider data( | 6691 StaticSocketDataProvider data( |
6691 data_reads, arraysize(data_reads), NULL, 0); | 6692 data_reads, arraysize(data_reads), NULL, 0); |
6692 session_deps.socket_factory.AddSocketDataProvider(&data); | 6693 session_deps.socket_factory.AddSocketDataProvider(&data); |
6693 | 6694 |
6694 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6695 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
6695 | 6696 |
6696 HttpServerProperties* http_server_properties = | 6697 HttpServerProperties* http_server_properties = |
6697 session->http_server_properties(); | 6698 session->http_server_properties(); |
6698 const int kUnsafePort = 7; | 6699 const int kUnsafePort = 7; |
(...skipping 30 matching lines...) Expand all Loading... |
6729 | 6730 |
6730 HttpRequestInfo request; | 6731 HttpRequestInfo request; |
6731 request.method = "GET"; | 6732 request.method = "GET"; |
6732 request.url = GURL("http://www.google.com/"); | 6733 request.url = GURL("http://www.google.com/"); |
6733 request.load_flags = 0; | 6734 request.load_flags = 0; |
6734 | 6735 |
6735 MockRead data_reads[] = { | 6736 MockRead data_reads[] = { |
6736 MockRead("HTTP/1.1 200 OK\r\n"), | 6737 MockRead("HTTP/1.1 200 OK\r\n"), |
6737 MockRead(kAlternateProtocolHttpHeader), | 6738 MockRead(kAlternateProtocolHttpHeader), |
6738 MockRead("hello world"), | 6739 MockRead("hello world"), |
6739 MockRead(true, OK), | 6740 MockRead(ASYNC, OK), |
6740 }; | 6741 }; |
6741 | 6742 |
6742 StaticSocketDataProvider first_transaction( | 6743 StaticSocketDataProvider first_transaction( |
6743 data_reads, arraysize(data_reads), NULL, 0); | 6744 data_reads, arraysize(data_reads), NULL, 0); |
6744 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 6745 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
6745 | 6746 |
6746 SSLSocketDataProvider ssl(true, OK); | 6747 SSLSocketDataProvider ssl(ASYNC, OK); |
6747 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 6748 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
6748 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6749 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
6749 | 6750 |
6750 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 6751 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
6751 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 6752 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
6752 | 6753 |
6753 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 6754 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
6754 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 6755 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
6755 MockRead spdy_reads[] = { | 6756 MockRead spdy_reads[] = { |
6756 CreateMockRead(*resp), | 6757 CreateMockRead(*resp), |
6757 CreateMockRead(*data), | 6758 CreateMockRead(*data), |
6758 MockRead(true, 0, 0), | 6759 MockRead(ASYNC, 0, 0), |
6759 }; | 6760 }; |
6760 | 6761 |
6761 scoped_ptr<DelayedSocketData> spdy_data( | 6762 scoped_ptr<DelayedSocketData> spdy_data( |
6762 new DelayedSocketData( | 6763 new DelayedSocketData( |
6763 1, // wait for one write to finish before reading. | 6764 1, // wait for one write to finish before reading. |
6764 spdy_reads, arraysize(spdy_reads), | 6765 spdy_reads, arraysize(spdy_reads), |
6765 spdy_writes, arraysize(spdy_writes))); | 6766 spdy_writes, arraysize(spdy_writes))); |
6766 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 6767 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
6767 | 6768 |
6768 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 6769 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6818 | 6819 |
6819 HttpRequestInfo request; | 6820 HttpRequestInfo request; |
6820 request.method = "GET"; | 6821 request.method = "GET"; |
6821 request.url = GURL("http://www.google.com/"); | 6822 request.url = GURL("http://www.google.com/"); |
6822 request.load_flags = 0; | 6823 request.load_flags = 0; |
6823 | 6824 |
6824 MockRead data_reads[] = { | 6825 MockRead data_reads[] = { |
6825 MockRead("HTTP/1.1 200 OK\r\n"), | 6826 MockRead("HTTP/1.1 200 OK\r\n"), |
6826 MockRead(kAlternateProtocolHttpHeader), | 6827 MockRead(kAlternateProtocolHttpHeader), |
6827 MockRead("hello world"), | 6828 MockRead("hello world"), |
6828 MockRead(true, OK), | 6829 MockRead(ASYNC, OK), |
6829 }; | 6830 }; |
6830 | 6831 |
6831 StaticSocketDataProvider first_transaction( | 6832 StaticSocketDataProvider first_transaction( |
6832 data_reads, arraysize(data_reads), NULL, 0); | 6833 data_reads, arraysize(data_reads), NULL, 0); |
6833 // Socket 1 is the HTTP transaction with the Alternate-Protocol header. | 6834 // Socket 1 is the HTTP transaction with the Alternate-Protocol header. |
6834 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 6835 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
6835 | 6836 |
6836 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 6837 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
6837 StaticSocketDataProvider hanging_socket( | 6838 StaticSocketDataProvider hanging_socket( |
6838 NULL, 0, NULL, 0); | 6839 NULL, 0, NULL, 0); |
6839 hanging_socket.set_connect_data(never_finishing_connect); | 6840 hanging_socket.set_connect_data(never_finishing_connect); |
6840 // Socket 2 and 3 are the hanging Alternate-Protocol and | 6841 // Socket 2 and 3 are the hanging Alternate-Protocol and |
6841 // non-Alternate-Protocol jobs from the 2nd transaction. | 6842 // non-Alternate-Protocol jobs from the 2nd transaction. |
6842 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); | 6843 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); |
6843 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); | 6844 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); |
6844 | 6845 |
6845 SSLSocketDataProvider ssl(true, OK); | 6846 SSLSocketDataProvider ssl(ASYNC, OK); |
6846 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 6847 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
6847 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6848 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
6848 | 6849 |
6849 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 6850 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
6850 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); | 6851 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); |
6851 MockWrite spdy_writes[] = { | 6852 MockWrite spdy_writes[] = { |
6852 CreateMockWrite(*req1), | 6853 CreateMockWrite(*req1), |
6853 CreateMockWrite(*req2), | 6854 CreateMockWrite(*req2), |
6854 }; | 6855 }; |
6855 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); | 6856 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
6856 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true)); | 6857 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true)); |
6857 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); | 6858 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
6858 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true)); | 6859 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true)); |
6859 MockRead spdy_reads[] = { | 6860 MockRead spdy_reads[] = { |
6860 CreateMockRead(*resp1), | 6861 CreateMockRead(*resp1), |
6861 CreateMockRead(*data1), | 6862 CreateMockRead(*data1), |
6862 CreateMockRead(*resp2), | 6863 CreateMockRead(*resp2), |
6863 CreateMockRead(*data2), | 6864 CreateMockRead(*data2), |
6864 MockRead(true, 0, 0), | 6865 MockRead(ASYNC, 0, 0), |
6865 }; | 6866 }; |
6866 | 6867 |
6867 scoped_ptr<DelayedSocketData> spdy_data( | 6868 scoped_ptr<DelayedSocketData> spdy_data( |
6868 new DelayedSocketData( | 6869 new DelayedSocketData( |
6869 2, // wait for writes to finish before reading. | 6870 2, // wait for writes to finish before reading. |
6870 spdy_reads, arraysize(spdy_reads), | 6871 spdy_reads, arraysize(spdy_reads), |
6871 spdy_writes, arraysize(spdy_writes))); | 6872 spdy_writes, arraysize(spdy_writes))); |
6872 // Socket 4 is the successful Alternate-Protocol for transaction 3. | 6873 // Socket 4 is the successful Alternate-Protocol for transaction 3. |
6873 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 6874 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
6874 | 6875 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6934 | 6935 |
6935 HttpRequestInfo request; | 6936 HttpRequestInfo request; |
6936 request.method = "GET"; | 6937 request.method = "GET"; |
6937 request.url = GURL("http://www.google.com/"); | 6938 request.url = GURL("http://www.google.com/"); |
6938 request.load_flags = 0; | 6939 request.load_flags = 0; |
6939 | 6940 |
6940 MockRead data_reads[] = { | 6941 MockRead data_reads[] = { |
6941 MockRead("HTTP/1.1 200 OK\r\n"), | 6942 MockRead("HTTP/1.1 200 OK\r\n"), |
6942 MockRead(kAlternateProtocolHttpHeader), | 6943 MockRead(kAlternateProtocolHttpHeader), |
6943 MockRead("hello world"), | 6944 MockRead("hello world"), |
6944 MockRead(true, OK), | 6945 MockRead(ASYNC, OK), |
6945 }; | 6946 }; |
6946 | 6947 |
6947 StaticSocketDataProvider first_transaction( | 6948 StaticSocketDataProvider first_transaction( |
6948 data_reads, arraysize(data_reads), NULL, 0); | 6949 data_reads, arraysize(data_reads), NULL, 0); |
6949 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 6950 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
6950 | 6951 |
6951 SSLSocketDataProvider ssl(true, OK); | 6952 SSLSocketDataProvider ssl(ASYNC, OK); |
6952 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 6953 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
6953 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6954 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
6954 | 6955 |
6955 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 6956 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
6956 StaticSocketDataProvider hanging_alternate_protocol_socket( | 6957 StaticSocketDataProvider hanging_alternate_protocol_socket( |
6957 NULL, 0, NULL, 0); | 6958 NULL, 0, NULL, 0); |
6958 hanging_alternate_protocol_socket.set_connect_data( | 6959 hanging_alternate_protocol_socket.set_connect_data( |
6959 never_finishing_connect); | 6960 never_finishing_connect); |
6960 session_deps.socket_factory.AddSocketDataProvider( | 6961 session_deps.socket_factory.AddSocketDataProvider( |
6961 &hanging_alternate_protocol_socket); | 6962 &hanging_alternate_protocol_socket); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7066 | 7067 |
7067 HttpRequestInfo request; | 7068 HttpRequestInfo request; |
7068 request.method = "GET"; | 7069 request.method = "GET"; |
7069 request.url = GURL("http://www.google.com/"); | 7070 request.url = GURL("http://www.google.com/"); |
7070 request.load_flags = 0; | 7071 request.load_flags = 0; |
7071 | 7072 |
7072 MockRead data_reads[] = { | 7073 MockRead data_reads[] = { |
7073 MockRead("HTTP/1.1 200 OK\r\n"), | 7074 MockRead("HTTP/1.1 200 OK\r\n"), |
7074 MockRead(kAlternateProtocolHttpHeader), | 7075 MockRead(kAlternateProtocolHttpHeader), |
7075 MockRead("hello world"), | 7076 MockRead("hello world"), |
7076 MockRead(true, OK), | 7077 MockRead(ASYNC, OK), |
7077 }; | 7078 }; |
7078 | 7079 |
7079 StaticSocketDataProvider first_transaction( | 7080 StaticSocketDataProvider first_transaction( |
7080 data_reads, arraysize(data_reads), NULL, 0); | 7081 data_reads, arraysize(data_reads), NULL, 0); |
7081 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 7082 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
7082 | 7083 |
7083 SSLSocketDataProvider ssl(true, OK); | 7084 SSLSocketDataProvider ssl(ASYNC, OK); |
7084 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 7085 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
7085 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 7086 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
7086 | 7087 |
7087 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 7088 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
7088 MockWrite spdy_writes[] = { | 7089 MockWrite spdy_writes[] = { |
7089 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 7090 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
7090 "Host: www.google.com\r\n" | 7091 "Host: www.google.com\r\n" |
7091 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 | 7092 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 |
7092 CreateMockWrite(*req) // 3 | 7093 CreateMockWrite(*req) // 3 |
7093 }; | 7094 }; |
7094 | 7095 |
7095 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; | 7096 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; |
7096 | 7097 |
7097 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 7098 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
7098 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 7099 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
7099 MockRead spdy_reads[] = { | 7100 MockRead spdy_reads[] = { |
7100 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 | 7101 MockRead(ASYNC, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 |
7101 CreateMockRead(*resp.get(), 4), // 2, 4 | 7102 CreateMockRead(*resp.get(), 4), // 2, 4 |
7102 CreateMockRead(*data.get(), 4), // 5 | 7103 CreateMockRead(*data.get(), 4), // 5 |
7103 MockRead(true, 0, 0, 4), // 6 | 7104 MockRead(ASYNC, 0, 0, 4), // 6 |
7104 }; | 7105 }; |
7105 | 7106 |
7106 scoped_ptr<OrderedSocketData> spdy_data( | 7107 scoped_ptr<OrderedSocketData> spdy_data( |
7107 new OrderedSocketData( | 7108 new OrderedSocketData( |
7108 spdy_reads, arraysize(spdy_reads), | 7109 spdy_reads, arraysize(spdy_reads), |
7109 spdy_writes, arraysize(spdy_writes))); | 7110 spdy_writes, arraysize(spdy_writes))); |
7110 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 7111 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
7111 | 7112 |
7112 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 7113 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
7113 StaticSocketDataProvider hanging_non_alternate_protocol_socket( | 7114 StaticSocketDataProvider hanging_non_alternate_protocol_socket( |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7170 | 7171 |
7171 HttpRequestInfo request; | 7172 HttpRequestInfo request; |
7172 request.method = "GET"; | 7173 request.method = "GET"; |
7173 request.url = GURL("http://www.google.com/"); | 7174 request.url = GURL("http://www.google.com/"); |
7174 request.load_flags = 0; | 7175 request.load_flags = 0; |
7175 | 7176 |
7176 MockRead data_reads[] = { | 7177 MockRead data_reads[] = { |
7177 MockRead("HTTP/1.1 200 OK\r\n"), | 7178 MockRead("HTTP/1.1 200 OK\r\n"), |
7178 MockRead(kAlternateProtocolHttpHeader), | 7179 MockRead(kAlternateProtocolHttpHeader), |
7179 MockRead("hello world"), | 7180 MockRead("hello world"), |
7180 MockRead(true, OK), | 7181 MockRead(ASYNC, OK), |
7181 }; | 7182 }; |
7182 | 7183 |
7183 StaticSocketDataProvider first_transaction( | 7184 StaticSocketDataProvider first_transaction( |
7184 data_reads, arraysize(data_reads), NULL, 0); | 7185 data_reads, arraysize(data_reads), NULL, 0); |
7185 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 7186 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
7186 | 7187 |
7187 SSLSocketDataProvider ssl(true, OK); | 7188 SSLSocketDataProvider ssl(ASYNC, OK); |
7188 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 7189 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
7189 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 7190 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
7190 // Make sure we use ssl for spdy here. | 7191 // Make sure we use ssl for spdy here. |
7191 SpdySession::SetSSLMode(true); | 7192 SpdySession::SetSSLMode(true); |
7192 | 7193 |
7193 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 7194 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
7194 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 7195 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
7195 | 7196 |
7196 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 7197 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
7197 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 7198 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
7198 MockRead spdy_reads[] = { | 7199 MockRead spdy_reads[] = { |
7199 CreateMockRead(*resp), | 7200 CreateMockRead(*resp), |
7200 CreateMockRead(*data), | 7201 CreateMockRead(*data), |
7201 MockRead(true, 0, 0), | 7202 MockRead(ASYNC, 0, 0), |
7202 }; | 7203 }; |
7203 | 7204 |
7204 scoped_ptr<DelayedSocketData> spdy_data( | 7205 scoped_ptr<DelayedSocketData> spdy_data( |
7205 new DelayedSocketData( | 7206 new DelayedSocketData( |
7206 1, // wait for one write to finish before reading. | 7207 1, // wait for one write to finish before reading. |
7207 spdy_reads, arraysize(spdy_reads), | 7208 spdy_reads, arraysize(spdy_reads), |
7208 spdy_writes, arraysize(spdy_writes))); | 7209 spdy_writes, arraysize(spdy_writes))); |
7209 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 7210 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
7210 | 7211 |
7211 TestCompletionCallback callback; | 7212 TestCompletionCallback callback; |
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7651 size_t length_writes = 1; | 7652 size_t length_writes = 1; |
7652 if (read_write_round.extra_write) { | 7653 if (read_write_round.extra_write) { |
7653 writes[1] = *read_write_round.extra_write; | 7654 writes[1] = *read_write_round.extra_write; |
7654 length_writes = 2; | 7655 length_writes = 2; |
7655 } | 7656 } |
7656 StaticSocketDataProvider data_provider( | 7657 StaticSocketDataProvider data_provider( |
7657 reads, length_reads, writes, length_writes); | 7658 reads, length_reads, writes, length_writes); |
7658 session_deps.socket_factory.AddSocketDataProvider(&data_provider); | 7659 session_deps.socket_factory.AddSocketDataProvider(&data_provider); |
7659 | 7660 |
7660 // Add an SSL sequence if necessary. | 7661 // Add an SSL sequence if necessary. |
7661 SSLSocketDataProvider ssl_socket_data_provider(false, OK); | 7662 SSLSocketDataProvider ssl_socket_data_provider(SYNCHRONOUS, OK); |
7662 if (round >= test_config.first_ssl_round) | 7663 if (round >= test_config.first_ssl_round) |
7663 session_deps.socket_factory.AddSSLSocketDataProvider( | 7664 session_deps.socket_factory.AddSSLSocketDataProvider( |
7664 &ssl_socket_data_provider); | 7665 &ssl_socket_data_provider); |
7665 | 7666 |
7666 // Start or restart the transaction. | 7667 // Start or restart the transaction. |
7667 TestCompletionCallback callback; | 7668 TestCompletionCallback callback; |
7668 int rv; | 7669 int rv; |
7669 if (round == 0) { | 7670 if (round == 0) { |
7670 rv = trans.Start(&request, callback.callback(), BoundNetLog()); | 7671 rv = trans.Start(&request, callback.callback(), BoundNetLog()); |
7671 } else { | 7672 } else { |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7881 } | 7882 } |
7882 | 7883 |
7883 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider { | 7884 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider { |
7884 public: | 7885 public: |
7885 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all) | 7886 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all) |
7886 : fail_all_(fail_all) { | 7887 : fail_all_(fail_all) { |
7887 } | 7888 } |
7888 | 7889 |
7889 virtual MockRead GetNextRead() { | 7890 virtual MockRead GetNextRead() { |
7890 if (fail_all_) | 7891 if (fail_all_) |
7891 return MockRead(false /* async */, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); | 7892 return MockRead(SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); |
7892 | 7893 |
7893 return MockRead(false /* async */, | 7894 return MockRead(SYNCHRONOUS, |
7894 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n"); | 7895 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n"); |
7895 } | 7896 } |
7896 | 7897 |
7897 virtual MockWriteResult OnWrite(const std::string& data) { | 7898 virtual MockWriteResult OnWrite(const std::string& data) { |
7898 return MockWriteResult(false /* async */, data.size()); | 7899 return MockWriteResult(SYNCHRONOUS /* async */, data.size()); |
7899 } | 7900 } |
7900 | 7901 |
7901 void Reset() { | 7902 void Reset() { |
7902 } | 7903 } |
7903 | 7904 |
7904 private: | 7905 private: |
7905 const bool fail_all_; | 7906 const bool fail_all_; |
7906 }; | 7907 }; |
7907 | 7908 |
7908 // Test that we restart a connection when we see a decompression failure from | 7909 // Test that we restart a connection when we see a decompression failure from |
7909 // the peer during the handshake. (In the real world we'll restart with SSLv3 | 7910 // the peer during the handshake. (In the real world we'll restart with SSLv3 |
7910 // and we won't offer DEFLATE in that case.) | 7911 // and we won't offer DEFLATE in that case.) |
7911 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) { | 7912 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) { |
7912 HttpRequestInfo request; | 7913 HttpRequestInfo request; |
7913 request.method = "GET"; | 7914 request.method = "GET"; |
7914 request.url = GURL("https://tlsdecompressionfailure.example.com/"); | 7915 request.url = GURL("https://tlsdecompressionfailure.example.com/"); |
7915 request.load_flags = 0; | 7916 request.load_flags = 0; |
7916 | 7917 |
7917 SessionDependencies session_deps; | 7918 SessionDependencies session_deps; |
7918 TLSDecompressionFailureSocketDataProvider socket_data_provider1( | 7919 TLSDecompressionFailureSocketDataProvider socket_data_provider1( |
7919 false /* fail all reads */); | 7920 false /* fail all reads */); |
7920 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); | 7921 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); |
7921 SSLSocketDataProvider ssl_socket_data_provider1( | 7922 SSLSocketDataProvider ssl_socket_data_provider1( |
7922 false, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); | 7923 SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); |
7923 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); | 7924 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK); |
7924 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); | 7925 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); |
7925 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); | 7926 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); |
7926 session_deps.socket_factory.AddSSLSocketDataProvider( | 7927 session_deps.socket_factory.AddSSLSocketDataProvider( |
7927 &ssl_socket_data_provider1); | 7928 &ssl_socket_data_provider1); |
7928 session_deps.socket_factory.AddSSLSocketDataProvider( | 7929 session_deps.socket_factory.AddSSLSocketDataProvider( |
7929 &ssl_socket_data_provider2); | 7930 &ssl_socket_data_provider2); |
7930 | 7931 |
7931 // Work around http://crbug.com/37454 | 7932 // Work around http://crbug.com/37454 |
7932 StaticSocketDataProvider bug37454_connection; | 7933 StaticSocketDataProvider bug37454_connection; |
7933 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED)); | 7934 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED)); |
(...skipping 25 matching lines...) Expand all Loading... |
7959 RestartAfterTLSDecompressionFailureWithFalseStart) { | 7960 RestartAfterTLSDecompressionFailureWithFalseStart) { |
7960 HttpRequestInfo request; | 7961 HttpRequestInfo request; |
7961 request.method = "GET"; | 7962 request.method = "GET"; |
7962 request.url = GURL("https://tlsdecompressionfailure2.example.com/"); | 7963 request.url = GURL("https://tlsdecompressionfailure2.example.com/"); |
7963 request.load_flags = 0; | 7964 request.load_flags = 0; |
7964 | 7965 |
7965 SessionDependencies session_deps; | 7966 SessionDependencies session_deps; |
7966 TLSDecompressionFailureSocketDataProvider socket_data_provider1( | 7967 TLSDecompressionFailureSocketDataProvider socket_data_provider1( |
7967 true /* fail all reads */); | 7968 true /* fail all reads */); |
7968 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); | 7969 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); |
7969 SSLSocketDataProvider ssl_socket_data_provider1(false, OK); | 7970 SSLSocketDataProvider ssl_socket_data_provider1(SYNCHRONOUS, OK); |
7970 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); | 7971 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK); |
7971 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); | 7972 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); |
7972 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); | 7973 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); |
7973 session_deps.socket_factory.AddSSLSocketDataProvider( | 7974 session_deps.socket_factory.AddSSLSocketDataProvider( |
7974 &ssl_socket_data_provider1); | 7975 &ssl_socket_data_provider1); |
7975 session_deps.socket_factory.AddSSLSocketDataProvider( | 7976 session_deps.socket_factory.AddSSLSocketDataProvider( |
7976 &ssl_socket_data_provider2); | 7977 &ssl_socket_data_provider2); |
7977 | 7978 |
7978 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 7979 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
7979 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 7980 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
7980 TestCompletionCallback callback; | 7981 TestCompletionCallback callback; |
(...skipping 27 matching lines...) Expand all Loading... |
8008 MockWrite data_writes[] = { | 8009 MockWrite data_writes[] = { |
8009 MockWrite("GET / HTTP/1.1\r\n" | 8010 MockWrite("GET / HTTP/1.1\r\n" |
8010 "Host: www.google.com\r\n" | 8011 "Host: www.google.com\r\n" |
8011 "Connection: keep-alive\r\n\r\n"), | 8012 "Connection: keep-alive\r\n\r\n"), |
8012 }; | 8013 }; |
8013 | 8014 |
8014 MockRead data_reads[] = { | 8015 MockRead data_reads[] = { |
8015 MockRead("HTTP/1.1 200 OK\r\n"), | 8016 MockRead("HTTP/1.1 200 OK\r\n"), |
8016 MockRead(kAlternateProtocolHttpHeader), | 8017 MockRead(kAlternateProtocolHttpHeader), |
8017 MockRead("hello world"), | 8018 MockRead("hello world"), |
8018 MockRead(false, OK), | 8019 MockRead(SYNCHRONOUS, OK), |
8019 }; | 8020 }; |
8020 | 8021 |
8021 SSLSocketDataProvider ssl(true, OK); | 8022 SSLSocketDataProvider ssl(ASYNC, OK); |
8022 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8023 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
8023 ssl.next_proto = "http/1.1"; | 8024 ssl.next_proto = "http/1.1"; |
8024 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; | 8025 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; |
8025 | 8026 |
8026 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8027 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
8027 | 8028 |
8028 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 8029 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
8029 data_writes, arraysize(data_writes)); | 8030 data_writes, arraysize(data_writes)); |
8030 session_deps.socket_factory.AddSocketDataProvider(&data); | 8031 session_deps.socket_factory.AddSocketDataProvider(&data); |
8031 | 8032 |
(...skipping 29 matching lines...) Expand all Loading... |
8061 // Fix crash: http://crbug.com/46369 | 8062 // Fix crash: http://crbug.com/46369 |
8062 HttpStreamFactory::set_use_alternate_protocols(true); | 8063 HttpStreamFactory::set_use_alternate_protocols(true); |
8063 HttpStreamFactory::set_next_protos(SpdyNextProtos()); | 8064 HttpStreamFactory::set_next_protos(SpdyNextProtos()); |
8064 SessionDependencies session_deps; | 8065 SessionDependencies session_deps; |
8065 | 8066 |
8066 HttpRequestInfo request; | 8067 HttpRequestInfo request; |
8067 request.method = "GET"; | 8068 request.method = "GET"; |
8068 request.url = GURL("https://www.google.com/"); | 8069 request.url = GURL("https://www.google.com/"); |
8069 request.load_flags = 0; | 8070 request.load_flags = 0; |
8070 | 8071 |
8071 SSLSocketDataProvider ssl(true, OK); | 8072 SSLSocketDataProvider ssl(ASYNC, OK); |
8072 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); | 8073 ssl.SetNextProto(SSLClientSocket::kProtoSPDY21); |
8073 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8074 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
8074 | 8075 |
8075 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 8076 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
8076 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 8077 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
8077 | 8078 |
8078 MockRead spdy_reads[] = { | 8079 MockRead spdy_reads[] = { |
8079 MockRead(false, 0, 0) // Not async - return 0 immediately. | 8080 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately. |
8080 }; | 8081 }; |
8081 | 8082 |
8082 scoped_ptr<DelayedSocketData> spdy_data( | 8083 scoped_ptr<DelayedSocketData> spdy_data( |
8083 new DelayedSocketData( | 8084 new DelayedSocketData( |
8084 0, // don't wait in this case, immediate hangup. | 8085 0, // don't wait in this case, immediate hangup. |
8085 spdy_reads, arraysize(spdy_reads), | 8086 spdy_reads, arraysize(spdy_reads), |
8086 spdy_writes, arraysize(spdy_writes))); | 8087 spdy_writes, arraysize(spdy_writes))); |
8087 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 8088 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
8088 | 8089 |
8089 TestCompletionCallback callback; | 8090 TestCompletionCallback callback; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8121 request.load_flags = 0; | 8122 request.load_flags = 0; |
8122 | 8123 |
8123 // First round goes unauthenticated through the proxy. | 8124 // First round goes unauthenticated through the proxy. |
8124 MockWrite data_writes_1[] = { | 8125 MockWrite data_writes_1[] = { |
8125 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 8126 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
8126 "Host: www.google.com\r\n" | 8127 "Host: www.google.com\r\n" |
8127 "Proxy-Connection: keep-alive\r\n" | 8128 "Proxy-Connection: keep-alive\r\n" |
8128 "\r\n"), | 8129 "\r\n"), |
8129 }; | 8130 }; |
8130 MockRead data_reads_1[] = { | 8131 MockRead data_reads_1[] = { |
8131 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 8132 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
8132 MockRead("HTTP/1.1 200 OK\r\n" | 8133 MockRead("HTTP/1.1 200 OK\r\n" |
8133 "Alternate-Protocol: 443:npn-spdy/2.1\r\n" | 8134 "Alternate-Protocol: 443:npn-spdy/2.1\r\n" |
8134 "Proxy-Connection: close\r\n" | 8135 "Proxy-Connection: close\r\n" |
8135 "\r\n"), | 8136 "\r\n"), |
8136 }; | 8137 }; |
8137 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1), | 8138 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1), |
8138 data_writes_1, arraysize(data_writes_1)); | 8139 data_writes_1, arraysize(data_writes_1)); |
8139 | 8140 |
8140 // Second round tries to tunnel to www.google.com due to the | 8141 // Second round tries to tunnel to www.google.com due to the |
8141 // Alternate-Protocol announcement in the first round. It fails due | 8142 // Alternate-Protocol announcement in the first round. It fails due |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8175 // SPDY request | 8176 // SPDY request |
8176 CreateMockWrite(*req), | 8177 CreateMockWrite(*req), |
8177 }; | 8178 }; |
8178 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n" | 8179 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n" |
8179 "Proxy-Authenticate: Mock\r\n" | 8180 "Proxy-Authenticate: Mock\r\n" |
8180 "Proxy-Connection: close\r\n" | 8181 "Proxy-Connection: close\r\n" |
8181 "\r\n"); | 8182 "\r\n"); |
8182 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; | 8183 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; |
8183 MockRead data_reads_2[] = { | 8184 MockRead data_reads_2[] = { |
8184 // First connection attempt fails | 8185 // First connection attempt fails |
8185 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1), | 8186 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1), |
8186 MockRead(true, kRejectConnectResponse, | 8187 MockRead(ASYNC, kRejectConnectResponse, |
8187 arraysize(kRejectConnectResponse) - 1, 1), | 8188 arraysize(kRejectConnectResponse) - 1, 1), |
8188 | 8189 |
8189 // Second connection attempt passes | 8190 // Second connection attempt passes |
8190 MockRead(true, kAcceptConnectResponse, | 8191 MockRead(ASYNC, kAcceptConnectResponse, |
8191 arraysize(kAcceptConnectResponse) -1, 4), | 8192 arraysize(kAcceptConnectResponse) -1, 4), |
8192 | 8193 |
8193 // SPDY response | 8194 // SPDY response |
8194 CreateMockRead(*resp.get(), 6), | 8195 CreateMockRead(*resp.get(), 6), |
8195 CreateMockRead(*data.get(), 6), | 8196 CreateMockRead(*data.get(), 6), |
8196 MockRead(true, 0, 0, 6), | 8197 MockRead(ASYNC, 0, 0, 6), |
8197 }; | 8198 }; |
8198 scoped_ptr<OrderedSocketData> data_2( | 8199 scoped_ptr<OrderedSocketData> data_2( |
8199 new OrderedSocketData(data_reads_2, arraysize(data_reads_2), | 8200 new OrderedSocketData(data_reads_2, arraysize(data_reads_2), |
8200 data_writes_2, arraysize(data_writes_2))); | 8201 data_writes_2, arraysize(data_writes_2))); |
8201 | 8202 |
8202 SSLSocketDataProvider ssl(true, OK); | 8203 SSLSocketDataProvider ssl(ASYNC, OK); |
8203 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8204 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
8204 ssl.next_proto = "spdy/2.1"; | 8205 ssl.next_proto = "spdy/2.1"; |
8205 ssl.was_npn_negotiated = true; | 8206 ssl.was_npn_negotiated = true; |
8206 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 8207 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
8207 | 8208 |
8208 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 8209 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
8209 StaticSocketDataProvider hanging_non_alternate_protocol_socket( | 8210 StaticSocketDataProvider hanging_non_alternate_protocol_socket( |
8210 NULL, 0, NULL, 0); | 8211 NULL, 0, NULL, 0); |
8211 hanging_non_alternate_protocol_socket.set_connect_data( | 8212 hanging_non_alternate_protocol_socket.set_connect_data( |
8212 never_finishing_connect); | 8213 never_finishing_connect); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8255 // Test that if we cancel the transaction as the connection is completing, that | 8256 // Test that if we cancel the transaction as the connection is completing, that |
8256 // everything tears down correctly. | 8257 // everything tears down correctly. |
8257 TEST_F(HttpNetworkTransactionTest, SimpleCancel) { | 8258 TEST_F(HttpNetworkTransactionTest, SimpleCancel) { |
8258 // Setup everything about the connection to complete synchronously, so that | 8259 // Setup everything about the connection to complete synchronously, so that |
8259 // after calling HttpNetworkTransaction::Start, the only thing we're waiting | 8260 // after calling HttpNetworkTransaction::Start, the only thing we're waiting |
8260 // for is the callback from the HttpStreamRequest. | 8261 // for is the callback from the HttpStreamRequest. |
8261 // Then cancel the transaction. | 8262 // Then cancel the transaction. |
8262 // Verify that we don't crash. | 8263 // Verify that we don't crash. |
8263 MockConnect mock_connect(SYNCHRONOUS, OK); | 8264 MockConnect mock_connect(SYNCHRONOUS, OK); |
8264 MockRead data_reads[] = { | 8265 MockRead data_reads[] = { |
8265 MockRead(false, "HTTP/1.0 200 OK\r\n\r\n"), | 8266 MockRead(SYNCHRONOUS, "HTTP/1.0 200 OK\r\n\r\n"), |
8266 MockRead(false, "hello world"), | 8267 MockRead(SYNCHRONOUS, "hello world"), |
8267 MockRead(false, OK), | 8268 MockRead(SYNCHRONOUS, OK), |
8268 }; | 8269 }; |
8269 | 8270 |
8270 HttpRequestInfo request; | 8271 HttpRequestInfo request; |
8271 request.method = "GET"; | 8272 request.method = "GET"; |
8272 request.url = GURL("http://www.google.com/"); | 8273 request.url = GURL("http://www.google.com/"); |
8273 request.load_flags = 0; | 8274 request.load_flags = 0; |
8274 | 8275 |
8275 SessionDependencies session_deps; | 8276 SessionDependencies session_deps; |
8276 session_deps.host_resolver->set_synchronous_mode(true); | 8277 session_deps.host_resolver->set_synchronous_mode(true); |
8277 scoped_ptr<HttpTransaction> trans( | 8278 scoped_ptr<HttpTransaction> trans( |
(...skipping 27 matching lines...) Expand all Loading... |
8305 MockWrite data_writes1[] = { | 8306 MockWrite data_writes1[] = { |
8306 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 8307 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
8307 "Host: www.google.com\r\n" | 8308 "Host: www.google.com\r\n" |
8308 "Proxy-Connection: keep-alive\r\n\r\n"), | 8309 "Proxy-Connection: keep-alive\r\n\r\n"), |
8309 }; | 8310 }; |
8310 | 8311 |
8311 MockRead data_reads1[] = { | 8312 MockRead data_reads1[] = { |
8312 MockRead("HTTP/1.1 200 OK\r\n"), | 8313 MockRead("HTTP/1.1 200 OK\r\n"), |
8313 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 8314 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
8314 MockRead("Content-Length: 100\r\n\r\n"), | 8315 MockRead("Content-Length: 100\r\n\r\n"), |
8315 MockRead(false, OK), | 8316 MockRead(SYNCHRONOUS, OK), |
8316 }; | 8317 }; |
8317 | 8318 |
8318 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 8319 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
8319 data_writes1, arraysize(data_writes1)); | 8320 data_writes1, arraysize(data_writes1)); |
8320 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8321 session_deps.socket_factory.AddSocketDataProvider(&data1); |
8321 | 8322 |
8322 TestCompletionCallback callback1; | 8323 TestCompletionCallback callback1; |
8323 | 8324 |
8324 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 8325 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
8325 | 8326 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8360 "Host: www.google.com\r\n" | 8361 "Host: www.google.com\r\n" |
8361 "Connection: keep-alive\r\n\r\n"), | 8362 "Connection: keep-alive\r\n\r\n"), |
8362 }; | 8363 }; |
8363 | 8364 |
8364 MockRead data_reads1[] = { | 8365 MockRead data_reads1[] = { |
8365 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 8366 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
8366 | 8367 |
8367 MockRead("HTTP/1.1 200 OK\r\n"), | 8368 MockRead("HTTP/1.1 200 OK\r\n"), |
8368 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 8369 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
8369 MockRead("Content-Length: 100\r\n\r\n"), | 8370 MockRead("Content-Length: 100\r\n\r\n"), |
8370 MockRead(false, OK), | 8371 MockRead(SYNCHRONOUS, OK), |
8371 }; | 8372 }; |
8372 | 8373 |
8373 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 8374 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
8374 data_writes1, arraysize(data_writes1)); | 8375 data_writes1, arraysize(data_writes1)); |
8375 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8376 session_deps.socket_factory.AddSocketDataProvider(&data1); |
8376 SSLSocketDataProvider ssl(true, OK); | 8377 SSLSocketDataProvider ssl(ASYNC, OK); |
8377 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8378 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
8378 | 8379 |
8379 TestCompletionCallback callback1; | 8380 TestCompletionCallback callback1; |
8380 | 8381 |
8381 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 8382 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
8382 | 8383 |
8383 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 8384 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
8384 EXPECT_EQ(ERR_IO_PENDING, rv); | 8385 EXPECT_EQ(ERR_IO_PENDING, rv); |
8385 | 8386 |
8386 rv = callback1.WaitForResult(); | 8387 rv = callback1.WaitForResult(); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8422 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 8423 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
8423 "Host: www.google.com\r\n" | 8424 "Host: www.google.com\r\n" |
8424 "Proxy-Connection: keep-alive\r\n\r\n"), | 8425 "Proxy-Connection: keep-alive\r\n\r\n"), |
8425 | 8426 |
8426 MockWrite("GET / HTTP/1.1\r\n" | 8427 MockWrite("GET / HTTP/1.1\r\n" |
8427 "Host: www.google.com\r\n" | 8428 "Host: www.google.com\r\n" |
8428 "Connection: keep-alive\r\n\r\n"), | 8429 "Connection: keep-alive\r\n\r\n"), |
8429 }; | 8430 }; |
8430 | 8431 |
8431 MockRead data_reads1[] = { | 8432 MockRead data_reads1[] = { |
8432 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 8433 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
8433 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 8434 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
8434 MockRead(true, 0, 0), // EOF | 8435 MockRead(ASYNC, 0, 0), // EOF |
8435 }; | 8436 }; |
8436 | 8437 |
8437 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 8438 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
8438 data_writes1, arraysize(data_writes1)); | 8439 data_writes1, arraysize(data_writes1)); |
8439 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8440 session_deps.socket_factory.AddSocketDataProvider(&data1); |
8440 SSLSocketDataProvider ssl(true, OK); | 8441 SSLSocketDataProvider ssl(ASYNC, OK); |
8441 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8442 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
8442 | 8443 |
8443 TestCompletionCallback callback1; | 8444 TestCompletionCallback callback1; |
8444 | 8445 |
8445 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 8446 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
8446 | 8447 |
8447 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 8448 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
8448 EXPECT_EQ(ERR_IO_PENDING, rv); | 8449 EXPECT_EQ(ERR_IO_PENDING, rv); |
8449 | 8450 |
8450 rv = callback1.WaitForResult(); | 8451 rv = callback1.WaitForResult(); |
(...skipping 15 matching lines...) Expand all Loading... |
8466 | 8467 |
8467 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet( | 8468 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet( |
8468 "https://www.google.com", false, 1, LOWEST)); | 8469 "https://www.google.com", false, 1, LOWEST)); |
8469 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 8470 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
8470 | 8471 |
8471 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 8472 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
8472 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 8473 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
8473 MockRead spdy_reads[] = { | 8474 MockRead spdy_reads[] = { |
8474 CreateMockRead(*resp), | 8475 CreateMockRead(*resp), |
8475 CreateMockRead(*data), | 8476 CreateMockRead(*data), |
8476 MockRead(true, 0, 0), | 8477 MockRead(ASYNC, 0, 0), |
8477 }; | 8478 }; |
8478 | 8479 |
8479 scoped_ptr<DelayedSocketData> spdy_data( | 8480 scoped_ptr<DelayedSocketData> spdy_data( |
8480 new DelayedSocketData( | 8481 new DelayedSocketData( |
8481 1, // wait for one write to finish before reading. | 8482 1, // wait for one write to finish before reading. |
8482 spdy_reads, arraysize(spdy_reads), | 8483 spdy_reads, arraysize(spdy_reads), |
8483 spdy_writes, arraysize(spdy_writes))); | 8484 spdy_writes, arraysize(spdy_writes))); |
8484 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 8485 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
8485 | 8486 |
8486 SSLSocketDataProvider ssl(true, OK); | 8487 SSLSocketDataProvider ssl(ASYNC, OK); |
8487 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8488 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
8488 ssl.next_proto = "spdy/2.1"; | 8489 ssl.next_proto = "spdy/2.1"; |
8489 ssl.was_npn_negotiated = true; | 8490 ssl.was_npn_negotiated = true; |
8490 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 8491 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
8491 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8492 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
8492 | 8493 |
8493 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8494 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
8494 | 8495 |
8495 // Set up an initial SpdySession in the pool to reuse. | 8496 // Set up an initial SpdySession in the pool to reuse. |
8496 HostPortPair host_port_pair("www.google.com", 443); | 8497 HostPortPair host_port_pair("www.google.com", 443); |
(...skipping 22 matching lines...) Expand all Loading... |
8519 | 8520 |
8520 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8521 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
8521 | 8522 |
8522 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 8523 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
8523 EXPECT_EQ(ERR_IO_PENDING, rv); | 8524 EXPECT_EQ(ERR_IO_PENDING, rv); |
8524 EXPECT_EQ(OK, callback.WaitForResult()); | 8525 EXPECT_EQ(OK, callback.WaitForResult()); |
8525 } | 8526 } |
8526 | 8527 |
8527 // Given a net error, cause that error to be returned from the first Write() | 8528 // Given a net error, cause that error to be returned from the first Write() |
8528 // call and verify that the HttpTransaction fails with that error. | 8529 // call and verify that the HttpTransaction fails with that error. |
8529 static void CheckErrorIsPassedBack(int error, bool async) { | 8530 static void CheckErrorIsPassedBack(int error, IoMode mode) { |
8530 net::HttpRequestInfo request_info; | 8531 net::HttpRequestInfo request_info; |
8531 request_info.url = GURL("https://www.example.com/"); | 8532 request_info.url = GURL("https://www.example.com/"); |
8532 request_info.method = "GET"; | 8533 request_info.method = "GET"; |
8533 request_info.load_flags = net::LOAD_NORMAL; | 8534 request_info.load_flags = net::LOAD_NORMAL; |
8534 | 8535 |
8535 SessionDependencies session_deps; | 8536 SessionDependencies session_deps; |
8536 | 8537 |
8537 SSLSocketDataProvider ssl_data(async, OK); | 8538 SSLSocketDataProvider ssl_data(mode, OK); |
8538 net::MockWrite data_writes[] = { | 8539 net::MockWrite data_writes[] = { |
8539 net::MockWrite(async, error), | 8540 net::MockWrite(mode, error), |
8540 }; | 8541 }; |
8541 net::StaticSocketDataProvider data(NULL, 0, | 8542 net::StaticSocketDataProvider data(NULL, 0, |
8542 data_writes, arraysize(data_writes)); | 8543 data_writes, arraysize(data_writes)); |
8543 session_deps.socket_factory.AddSocketDataProvider(&data); | 8544 session_deps.socket_factory.AddSocketDataProvider(&data); |
8544 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data); | 8545 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data); |
8545 | 8546 |
8546 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8547 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
8547 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8548 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
8548 | 8549 |
8549 TestCompletionCallback callback; | 8550 TestCompletionCallback callback; |
8550 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog()); | 8551 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog()); |
8551 if (rv == net::ERR_IO_PENDING) | 8552 if (rv == net::ERR_IO_PENDING) |
8552 rv = callback.WaitForResult(); | 8553 rv = callback.WaitForResult(); |
8553 ASSERT_EQ(error, rv); | 8554 ASSERT_EQ(error, rv); |
8554 } | 8555 } |
8555 | 8556 |
8556 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) { | 8557 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) { |
8557 // Just check a grab bag of cert errors. | 8558 // Just check a grab bag of cert errors. |
8558 static const int kErrors[] = { | 8559 static const int kErrors[] = { |
8559 ERR_CERT_COMMON_NAME_INVALID, | 8560 ERR_CERT_COMMON_NAME_INVALID, |
8560 ERR_CERT_AUTHORITY_INVALID, | 8561 ERR_CERT_AUTHORITY_INVALID, |
8561 ERR_CERT_DATE_INVALID, | 8562 ERR_CERT_DATE_INVALID, |
8562 }; | 8563 }; |
8563 for (size_t i = 0; i < arraysize(kErrors); i++) { | 8564 for (size_t i = 0; i < arraysize(kErrors); i++) { |
8564 CheckErrorIsPassedBack(kErrors[i], false /* not async */); | 8565 CheckErrorIsPassedBack(kErrors[i], ASYNC); |
8565 CheckErrorIsPassedBack(kErrors[i], true /* async */); | 8566 CheckErrorIsPassedBack(kErrors[i], SYNCHRONOUS); |
8566 } | 8567 } |
8567 } | 8568 } |
8568 | 8569 |
8569 // Ensure that a client certificate is removed from the SSL client auth | 8570 // Ensure that a client certificate is removed from the SSL client auth |
8570 // cache when: | 8571 // cache when: |
8571 // 1) No proxy is involved. | 8572 // 1) No proxy is involved. |
8572 // 2) TLS False Start is disabled. | 8573 // 2) TLS False Start is disabled. |
8573 // 3) The initial TLS handshake requests a client certificate. | 8574 // 3) The initial TLS handshake requests a client certificate. |
8574 // 4) The client supplies an invalid/unacceptable certificate. | 8575 // 4) The client supplies an invalid/unacceptable certificate. |
8575 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) { | 8576 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) { |
8576 net::HttpRequestInfo request_info; | 8577 net::HttpRequestInfo request_info; |
8577 request_info.url = GURL("https://www.example.com/"); | 8578 request_info.url = GURL("https://www.example.com/"); |
8578 request_info.method = "GET"; | 8579 request_info.method = "GET"; |
8579 request_info.load_flags = net::LOAD_NORMAL; | 8580 request_info.load_flags = net::LOAD_NORMAL; |
8580 | 8581 |
8581 SessionDependencies session_deps; | 8582 SessionDependencies session_deps; |
8582 | 8583 |
8583 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); | 8584 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); |
8584 cert_request->host_and_port = "www.example.com:443"; | 8585 cert_request->host_and_port = "www.example.com:443"; |
8585 | 8586 |
8586 // [ssl_]data1 contains the data for the first SSL handshake. When a | 8587 // [ssl_]data1 contains the data for the first SSL handshake. When a |
8587 // CertificateRequest is received for the first time, the handshake will | 8588 // CertificateRequest is received for the first time, the handshake will |
8588 // be aborted to allow the caller to provide a certificate. | 8589 // be aborted to allow the caller to provide a certificate. |
8589 SSLSocketDataProvider ssl_data1(true /* async */, | 8590 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); |
8590 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); | |
8591 ssl_data1.cert_request_info = cert_request.get(); | 8591 ssl_data1.cert_request_info = cert_request.get(); |
8592 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); | 8592 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); |
8593 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); | 8593 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); |
8594 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8594 session_deps.socket_factory.AddSocketDataProvider(&data1); |
8595 | 8595 |
8596 // [ssl_]data2 contains the data for the second SSL handshake. When TLS | 8596 // [ssl_]data2 contains the data for the second SSL handshake. When TLS |
8597 // False Start is not being used, the result of the SSL handshake will be | 8597 // False Start is not being used, the result of the SSL handshake will be |
8598 // returned as part of the SSLClientSocket::Connect() call. This test | 8598 // returned as part of the SSLClientSocket::Connect() call. This test |
8599 // matches the result of a server sending a handshake_failure alert, | 8599 // matches the result of a server sending a handshake_failure alert, |
8600 // rather than a Finished message, because it requires a client | 8600 // rather than a Finished message, because it requires a client |
8601 // certificate and none was supplied. | 8601 // certificate and none was supplied. |
8602 SSLSocketDataProvider ssl_data2(true /* async */, | 8602 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
8603 net::ERR_SSL_PROTOCOL_ERROR); | |
8604 ssl_data2.cert_request_info = cert_request.get(); | 8603 ssl_data2.cert_request_info = cert_request.get(); |
8605 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); | 8604 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); |
8606 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); | 8605 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); |
8607 session_deps.socket_factory.AddSocketDataProvider(&data2); | 8606 session_deps.socket_factory.AddSocketDataProvider(&data2); |
8608 | 8607 |
8609 // [ssl_]data3 contains the data for the third SSL handshake. When a | 8608 // [ssl_]data3 contains the data for the third SSL handshake. When a |
8610 // connection to a server fails during an SSL handshake, | 8609 // connection to a server fails during an SSL handshake, |
8611 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial | 8610 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial |
8612 // connection was attempted with TLSv1. This is transparent to the caller | 8611 // connection was attempted with TLSv1. This is transparent to the caller |
8613 // of the HttpNetworkTransaction. Because this test failure is due to | 8612 // of the HttpNetworkTransaction. Because this test failure is due to |
8614 // requiring a client certificate, this fallback handshake should also | 8613 // requiring a client certificate, this fallback handshake should also |
8615 // fail. | 8614 // fail. |
8616 SSLSocketDataProvider ssl_data3(true /* async */, | 8615 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
8617 net::ERR_SSL_PROTOCOL_ERROR); | |
8618 ssl_data3.cert_request_info = cert_request.get(); | 8616 ssl_data3.cert_request_info = cert_request.get(); |
8619 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); | 8617 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); |
8620 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); | 8618 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); |
8621 session_deps.socket_factory.AddSocketDataProvider(&data3); | 8619 session_deps.socket_factory.AddSocketDataProvider(&data3); |
8622 | 8620 |
8623 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8621 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
8624 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8622 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
8625 | 8623 |
8626 // Begin the SSL handshake with the peer. This consumes ssl_data1. | 8624 // Begin the SSL handshake with the peer. This consumes ssl_data1. |
8627 TestCompletionCallback callback; | 8625 TestCompletionCallback callback; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8684 // The actual handshake will be finished when SSLClientSocket::Read() is | 8682 // The actual handshake will be finished when SSLClientSocket::Read() is |
8685 // called, which expects to process the peer's ChangeCipherSpec and | 8683 // called, which expects to process the peer's ChangeCipherSpec and |
8686 // Finished messages. If there was an error negotiating with the peer, | 8684 // Finished messages. If there was an error negotiating with the peer, |
8687 // such as due to the peer requiring a client certificate when none was | 8685 // such as due to the peer requiring a client certificate when none was |
8688 // supplied, the alert sent by the peer won't be processed until Read() is | 8686 // supplied, the alert sent by the peer won't be processed until Read() is |
8689 // called. | 8687 // called. |
8690 | 8688 |
8691 // Like the non-False Start case, when a client certificate is requested by | 8689 // Like the non-False Start case, when a client certificate is requested by |
8692 // the peer, the handshake is aborted during the Connect() call. | 8690 // the peer, the handshake is aborted during the Connect() call. |
8693 // [ssl_]data1 represents the initial SSL handshake with the peer. | 8691 // [ssl_]data1 represents the initial SSL handshake with the peer. |
8694 SSLSocketDataProvider ssl_data1(true /* async */, | 8692 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); |
8695 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); | |
8696 ssl_data1.cert_request_info = cert_request.get(); | 8693 ssl_data1.cert_request_info = cert_request.get(); |
8697 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); | 8694 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); |
8698 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); | 8695 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); |
8699 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8696 session_deps.socket_factory.AddSocketDataProvider(&data1); |
8700 | 8697 |
8701 // When a client certificate is supplied, Connect() will not be aborted | 8698 // When a client certificate is supplied, Connect() will not be aborted |
8702 // when the peer requests the certificate. Instead, the handshake will | 8699 // when the peer requests the certificate. Instead, the handshake will |
8703 // artificially succeed, allowing the caller to write the HTTP request to | 8700 // artificially succeed, allowing the caller to write the HTTP request to |
8704 // the socket. The handshake messages are not processed until Read() is | 8701 // the socket. The handshake messages are not processed until Read() is |
8705 // called, which then detects that the handshake was aborted, due to the | 8702 // called, which then detects that the handshake was aborted, due to the |
8706 // peer sending a handshake_failure because it requires a client | 8703 // peer sending a handshake_failure because it requires a client |
8707 // certificate. | 8704 // certificate. |
8708 SSLSocketDataProvider ssl_data2(true /* async */, net::OK); | 8705 SSLSocketDataProvider ssl_data2(ASYNC, net::OK); |
8709 ssl_data2.cert_request_info = cert_request.get(); | 8706 ssl_data2.cert_request_info = cert_request.get(); |
8710 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); | 8707 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); |
8711 net::MockRead data2_reads[] = { | 8708 net::MockRead data2_reads[] = { |
8712 net::MockRead(true /* async */, net::ERR_SSL_PROTOCOL_ERROR), | 8709 net::MockRead(ASYNC /* async */, net::ERR_SSL_PROTOCOL_ERROR), |
8713 }; | 8710 }; |
8714 net::StaticSocketDataProvider data2( | 8711 net::StaticSocketDataProvider data2( |
8715 data2_reads, arraysize(data2_reads), NULL, 0); | 8712 data2_reads, arraysize(data2_reads), NULL, 0); |
8716 session_deps.socket_factory.AddSocketDataProvider(&data2); | 8713 session_deps.socket_factory.AddSocketDataProvider(&data2); |
8717 | 8714 |
8718 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is | 8715 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is |
8719 // the data for the SSL handshake once the TLSv1 connection falls back to | 8716 // the data for the SSL handshake once the TLSv1 connection falls back to |
8720 // SSLv3. It has the same behaviour as [ssl_]data2. | 8717 // SSLv3. It has the same behaviour as [ssl_]data2. |
8721 SSLSocketDataProvider ssl_data3(true /* async */, net::OK); | 8718 SSLSocketDataProvider ssl_data3(ASYNC, net::OK); |
8722 ssl_data3.cert_request_info = cert_request.get(); | 8719 ssl_data3.cert_request_info = cert_request.get(); |
8723 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); | 8720 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); |
8724 net::StaticSocketDataProvider data3( | 8721 net::StaticSocketDataProvider data3( |
8725 data2_reads, arraysize(data2_reads), NULL, 0); | 8722 data2_reads, arraysize(data2_reads), NULL, 0); |
8726 session_deps.socket_factory.AddSocketDataProvider(&data3); | 8723 session_deps.socket_factory.AddSocketDataProvider(&data3); |
8727 | 8724 |
8728 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8725 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
8729 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8726 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
8730 | 8727 |
8731 // Begin the initial SSL handshake. | 8728 // Begin the initial SSL handshake. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8779 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); | 8776 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); |
8780 session_deps.net_log = log.bound().net_log(); | 8777 session_deps.net_log = log.bound().net_log(); |
8781 | 8778 |
8782 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); | 8779 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); |
8783 cert_request->host_and_port = "proxy:70"; | 8780 cert_request->host_and_port = "proxy:70"; |
8784 | 8781 |
8785 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of | 8782 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of |
8786 // [ssl_]data[1-3]. Rather than represending the endpoint | 8783 // [ssl_]data[1-3]. Rather than represending the endpoint |
8787 // (www.example.com:443), they represent failures with the HTTPS proxy | 8784 // (www.example.com:443), they represent failures with the HTTPS proxy |
8788 // (proxy:70). | 8785 // (proxy:70). |
8789 SSLSocketDataProvider ssl_data1(true /* async */, | 8786 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); |
8790 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); | |
8791 ssl_data1.cert_request_info = cert_request.get(); | 8787 ssl_data1.cert_request_info = cert_request.get(); |
8792 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); | 8788 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); |
8793 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); | 8789 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); |
8794 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8790 session_deps.socket_factory.AddSocketDataProvider(&data1); |
8795 | 8791 |
8796 SSLSocketDataProvider ssl_data2(true /* async */, | 8792 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
8797 net::ERR_SSL_PROTOCOL_ERROR); | |
8798 ssl_data2.cert_request_info = cert_request.get(); | 8793 ssl_data2.cert_request_info = cert_request.get(); |
8799 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); | 8794 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); |
8800 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); | 8795 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); |
8801 session_deps.socket_factory.AddSocketDataProvider(&data2); | 8796 session_deps.socket_factory.AddSocketDataProvider(&data2); |
8802 | 8797 |
8803 SSLSocketDataProvider ssl_data3(true /* async */, | 8798 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
8804 net::ERR_SSL_PROTOCOL_ERROR); | |
8805 ssl_data3.cert_request_info = cert_request.get(); | 8799 ssl_data3.cert_request_info = cert_request.get(); |
8806 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); | 8800 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); |
8807 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); | 8801 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); |
8808 session_deps.socket_factory.AddSocketDataProvider(&data3); | 8802 session_deps.socket_factory.AddSocketDataProvider(&data3); |
8809 | 8803 |
8810 net::HttpRequestInfo requests[2]; | 8804 net::HttpRequestInfo requests[2]; |
8811 requests[0].url = GURL("https://www.example.com/"); | 8805 requests[0].url = GURL("https://www.example.com/"); |
8812 requests[0].method = "GET"; | 8806 requests[0].method = "GET"; |
8813 requests[0].load_flags = net::LOAD_NORMAL; | 8807 requests[0].load_flags = net::LOAD_NORMAL; |
8814 | 8808 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8913 params.proxy_service = session_deps.proxy_service.get(); | 8907 params.proxy_service = session_deps.proxy_service.get(); |
8914 params.ssl_config_service = session_deps.ssl_config_service; | 8908 params.ssl_config_service = session_deps.ssl_config_service; |
8915 params.http_auth_handler_factory = | 8909 params.http_auth_handler_factory = |
8916 session_deps.http_auth_handler_factory.get(); | 8910 session_deps.http_auth_handler_factory.get(); |
8917 params.http_server_properties = &session_deps.http_server_properties; | 8911 params.http_server_properties = &session_deps.http_server_properties; |
8918 params.net_log = session_deps.net_log; | 8912 params.net_log = session_deps.net_log; |
8919 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); | 8913 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); |
8920 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); | 8914 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); |
8921 pool_peer.DisableDomainAuthenticationVerification(); | 8915 pool_peer.DisableDomainAuthenticationVerification(); |
8922 | 8916 |
8923 SSLSocketDataProvider ssl(true, OK); | 8917 SSLSocketDataProvider ssl(ASYNC, OK); |
8924 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8918 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
8925 ssl.next_proto = "spdy/2.1"; | 8919 ssl.next_proto = "spdy/2.1"; |
8926 ssl.was_npn_negotiated = true; | 8920 ssl.was_npn_negotiated = true; |
8927 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 8921 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
8928 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8922 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
8929 | 8923 |
8930 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( | 8924 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( |
8931 "https://www.google.com", false, 1, LOWEST)); | 8925 "https://www.google.com", false, 1, LOWEST)); |
8932 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( | 8926 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( |
8933 "https://www.gmail.com", false, 3, LOWEST)); | 8927 "https://www.gmail.com", false, 3, LOWEST)); |
8934 MockWrite spdy_writes[] = { | 8928 MockWrite spdy_writes[] = { |
8935 CreateMockWrite(*host1_req, 1), | 8929 CreateMockWrite(*host1_req, 1), |
8936 CreateMockWrite(*host2_req, 4), | 8930 CreateMockWrite(*host2_req, 4), |
8937 }; | 8931 }; |
8938 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 8932 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
8939 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); | 8933 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
8940 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); | 8934 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
8941 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); | 8935 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); |
8942 MockRead spdy_reads[] = { | 8936 MockRead spdy_reads[] = { |
8943 CreateMockRead(*host1_resp, 2), | 8937 CreateMockRead(*host1_resp, 2), |
8944 CreateMockRead(*host1_resp_body, 3), | 8938 CreateMockRead(*host1_resp_body, 3), |
8945 CreateMockRead(*host2_resp, 5), | 8939 CreateMockRead(*host2_resp, 5), |
8946 CreateMockRead(*host2_resp_body, 6), | 8940 CreateMockRead(*host2_resp_body, 6), |
8947 MockRead(true, 0, 7), | 8941 MockRead(ASYNC, 0, 7), |
8948 }; | 8942 }; |
8949 | 8943 |
8950 scoped_ptr<OrderedSocketData> spdy_data( | 8944 scoped_ptr<OrderedSocketData> spdy_data( |
8951 new OrderedSocketData( | 8945 new OrderedSocketData( |
8952 spdy_reads, arraysize(spdy_reads), | 8946 spdy_reads, arraysize(spdy_reads), |
8953 spdy_writes, arraysize(spdy_writes))); | 8947 spdy_writes, arraysize(spdy_writes))); |
8954 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 8948 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
8955 | 8949 |
8956 TestCompletionCallback callback; | 8950 TestCompletionCallback callback; |
8957 HttpRequestInfo request1; | 8951 HttpRequestInfo request1; |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9067 params.proxy_service = session_deps.proxy_service.get(); | 9061 params.proxy_service = session_deps.proxy_service.get(); |
9068 params.ssl_config_service = session_deps.ssl_config_service; | 9062 params.ssl_config_service = session_deps.ssl_config_service; |
9069 params.http_auth_handler_factory = | 9063 params.http_auth_handler_factory = |
9070 session_deps.http_auth_handler_factory.get(); | 9064 session_deps.http_auth_handler_factory.get(); |
9071 params.http_server_properties = &session_deps.http_server_properties; | 9065 params.http_server_properties = &session_deps.http_server_properties; |
9072 params.net_log = session_deps.net_log; | 9066 params.net_log = session_deps.net_log; |
9073 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); | 9067 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); |
9074 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); | 9068 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); |
9075 pool_peer.DisableDomainAuthenticationVerification(); | 9069 pool_peer.DisableDomainAuthenticationVerification(); |
9076 | 9070 |
9077 SSLSocketDataProvider ssl(true, OK); | 9071 SSLSocketDataProvider ssl(ASYNC, OK); |
9078 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 9072 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
9079 ssl.next_proto = "spdy/2.1"; | 9073 ssl.next_proto = "spdy/2.1"; |
9080 ssl.was_npn_negotiated = true; | 9074 ssl.was_npn_negotiated = true; |
9081 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 9075 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
9082 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 9076 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
9083 | 9077 |
9084 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( | 9078 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( |
9085 "https://www.google.com", false, 1, LOWEST)); | 9079 "https://www.google.com", false, 1, LOWEST)); |
9086 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( | 9080 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( |
9087 "https://www.gmail.com", false, 3, LOWEST)); | 9081 "https://www.gmail.com", false, 3, LOWEST)); |
9088 MockWrite spdy_writes[] = { | 9082 MockWrite spdy_writes[] = { |
9089 CreateMockWrite(*host1_req, 1), | 9083 CreateMockWrite(*host1_req, 1), |
9090 CreateMockWrite(*host2_req, 4), | 9084 CreateMockWrite(*host2_req, 4), |
9091 }; | 9085 }; |
9092 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 9086 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
9093 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); | 9087 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
9094 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); | 9088 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
9095 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); | 9089 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); |
9096 MockRead spdy_reads[] = { | 9090 MockRead spdy_reads[] = { |
9097 CreateMockRead(*host1_resp, 2), | 9091 CreateMockRead(*host1_resp, 2), |
9098 CreateMockRead(*host1_resp_body, 3), | 9092 CreateMockRead(*host1_resp_body, 3), |
9099 CreateMockRead(*host2_resp, 5), | 9093 CreateMockRead(*host2_resp, 5), |
9100 CreateMockRead(*host2_resp_body, 6), | 9094 CreateMockRead(*host2_resp_body, 6), |
9101 MockRead(true, 0, 7), | 9095 MockRead(ASYNC, 0, 7), |
9102 }; | 9096 }; |
9103 | 9097 |
9104 scoped_ptr<OrderedSocketData> spdy_data( | 9098 scoped_ptr<OrderedSocketData> spdy_data( |
9105 new OrderedSocketData( | 9099 new OrderedSocketData( |
9106 spdy_reads, arraysize(spdy_reads), | 9100 spdy_reads, arraysize(spdy_reads), |
9107 spdy_writes, arraysize(spdy_writes))); | 9101 spdy_writes, arraysize(spdy_writes))); |
9108 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 9102 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
9109 | 9103 |
9110 TestCompletionCallback callback; | 9104 TestCompletionCallback callback; |
9111 HttpRequestInfo request1; | 9105 HttpRequestInfo request1; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9160 EXPECT_TRUE(response->was_npn_negotiated); | 9154 EXPECT_TRUE(response->was_npn_negotiated); |
9161 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 9155 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
9162 EXPECT_EQ("hello!", response_data); | 9156 EXPECT_EQ("hello!", response_data); |
9163 | 9157 |
9164 HttpStreamFactory::set_next_protos(std::vector<std::string>()); | 9158 HttpStreamFactory::set_next_protos(std::vector<std::string>()); |
9165 HttpStreamFactory::set_use_alternate_protocols(false); | 9159 HttpStreamFactory::set_use_alternate_protocols(false); |
9166 } | 9160 } |
9167 | 9161 |
9168 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { | 9162 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { |
9169 MockRead data_reads1[] = { | 9163 MockRead data_reads1[] = { |
9170 MockRead(false, ERR_PIPELINE_EVICTION), | 9164 MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |
9171 }; | 9165 }; |
9172 MockRead data_reads2[] = { | 9166 MockRead data_reads2[] = { |
9173 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 9167 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
9174 MockRead("hello world"), | 9168 MockRead("hello world"), |
9175 MockRead(false, OK), | 9169 MockRead(SYNCHRONOUS, OK), |
9176 }; | 9170 }; |
9177 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); | 9171 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); |
9178 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); | 9172 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); |
9179 StaticSocketDataProvider* data[] = { &data1, &data2 }; | 9173 StaticSocketDataProvider* data[] = { &data1, &data2 }; |
9180 | 9174 |
9181 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | 9175 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |
9182 | 9176 |
9183 EXPECT_EQ(OK, out.rv); | 9177 EXPECT_EQ(OK, out.rv); |
9184 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 9178 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
9185 EXPECT_EQ("hello world", out.response_data); | 9179 EXPECT_EQ("hello world", out.response_data); |
9186 } | 9180 } |
9187 | 9181 |
9188 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { | 9182 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { |
9189 MockWrite data_writes1[] = { | 9183 MockWrite data_writes1[] = { |
9190 MockWrite(false, ERR_PIPELINE_EVICTION), | 9184 MockWrite(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |
9191 }; | 9185 }; |
9192 MockWrite data_writes2[] = { | 9186 MockWrite data_writes2[] = { |
9193 MockWrite("GET / HTTP/1.1\r\n" | 9187 MockWrite("GET / HTTP/1.1\r\n" |
9194 "Host: www.google.com\r\n" | 9188 "Host: www.google.com\r\n" |
9195 "Connection: keep-alive\r\n\r\n"), | 9189 "Connection: keep-alive\r\n\r\n"), |
9196 }; | 9190 }; |
9197 MockRead data_reads2[] = { | 9191 MockRead data_reads2[] = { |
9198 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 9192 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
9199 MockRead("hello world"), | 9193 MockRead("hello world"), |
9200 MockRead(false, OK), | 9194 MockRead(SYNCHRONOUS, OK), |
9201 }; | 9195 }; |
9202 StaticSocketDataProvider data1(NULL, 0, | 9196 StaticSocketDataProvider data1(NULL, 0, |
9203 data_writes1, arraysize(data_writes1)); | 9197 data_writes1, arraysize(data_writes1)); |
9204 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 9198 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
9205 data_writes2, arraysize(data_writes2)); | 9199 data_writes2, arraysize(data_writes2)); |
9206 StaticSocketDataProvider* data[] = { &data1, &data2 }; | 9200 StaticSocketDataProvider* data[] = { &data1, &data2 }; |
9207 | 9201 |
9208 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | 9202 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |
9209 | 9203 |
9210 EXPECT_EQ(OK, out.rv); | 9204 EXPECT_EQ(OK, out.rv); |
9211 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 9205 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
9212 EXPECT_EQ("hello world", out.response_data); | 9206 EXPECT_EQ("hello world", out.response_data); |
9213 } | 9207 } |
9214 | 9208 |
9215 } // namespace net | 9209 } // namespace net |
OLD | NEW |