| 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 |