Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/http/http_network_transaction.h" | 5 #include "net/http/http_network_transaction.h" |
| 6 | 6 |
| 7 #include <math.h> // ceil | 7 #include <math.h> // ceil |
| 8 #include <stdarg.h> | 8 #include <stdarg.h> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 424 TEST_F(HttpNetworkTransactionTest, Basic) { | 424 TEST_F(HttpNetworkTransactionTest, Basic) { |
| 425 SessionDependencies session_deps; | 425 SessionDependencies session_deps; |
| 426 scoped_ptr<HttpTransaction> trans( | 426 scoped_ptr<HttpTransaction> trans( |
| 427 new HttpNetworkTransaction(CreateSession(&session_deps))); | 427 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 428 } | 428 } |
| 429 | 429 |
| 430 TEST_F(HttpNetworkTransactionTest, SimpleGET) { | 430 TEST_F(HttpNetworkTransactionTest, SimpleGET) { |
| 431 MockRead data_reads[] = { | 431 MockRead data_reads[] = { |
| 432 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 432 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
| 433 MockRead("hello world"), | 433 MockRead("hello world"), |
| 434 MockRead(false, OK), | 434 MockRead(SYNCHRONOUS, OK), |
| 435 }; | 435 }; |
| 436 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 436 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 437 arraysize(data_reads)); | 437 arraysize(data_reads)); |
| 438 EXPECT_EQ(OK, out.rv); | 438 EXPECT_EQ(OK, out.rv); |
| 439 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 439 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
| 440 EXPECT_EQ("hello world", out.response_data); | 440 EXPECT_EQ("hello world", out.response_data); |
| 441 } | 441 } |
| 442 | 442 |
| 443 // Response with no status line. | 443 // Response with no status line. |
| 444 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeaders) { | 444 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeaders) { |
| 445 MockRead data_reads[] = { | 445 MockRead data_reads[] = { |
| 446 MockRead("hello world"), | 446 MockRead("hello world"), |
| 447 MockRead(false, OK), | 447 MockRead(SYNCHRONOUS, OK), |
| 448 }; | 448 }; |
| 449 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 449 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 450 arraysize(data_reads)); | 450 arraysize(data_reads)); |
| 451 EXPECT_EQ(OK, out.rv); | 451 EXPECT_EQ(OK, out.rv); |
| 452 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); | 452 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); |
| 453 EXPECT_EQ("hello world", out.response_data); | 453 EXPECT_EQ("hello world", out.response_data); |
| 454 } | 454 } |
| 455 | 455 |
| 456 // Allow up to 4 bytes of junk to precede status line. | 456 // Allow up to 4 bytes of junk to precede status line. |
| 457 TEST_F(HttpNetworkTransactionTest, StatusLineJunk2Bytes) { | 457 TEST_F(HttpNetworkTransactionTest, StatusLineJunk2Bytes) { |
| 458 MockRead data_reads[] = { | 458 MockRead data_reads[] = { |
| 459 MockRead("xxxHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), | 459 MockRead("xxxHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), |
| 460 MockRead(false, OK), | 460 MockRead(SYNCHRONOUS, OK), |
| 461 }; | 461 }; |
| 462 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 462 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 463 arraysize(data_reads)); | 463 arraysize(data_reads)); |
| 464 EXPECT_EQ(OK, out.rv); | 464 EXPECT_EQ(OK, out.rv); |
| 465 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); | 465 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); |
| 466 EXPECT_EQ("DATA", out.response_data); | 466 EXPECT_EQ("DATA", out.response_data); |
| 467 } | 467 } |
| 468 | 468 |
| 469 // Allow up to 4 bytes of junk to precede status line. | 469 // Allow up to 4 bytes of junk to precede status line. |
| 470 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes) { | 470 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes) { |
| 471 MockRead data_reads[] = { | 471 MockRead data_reads[] = { |
| 472 MockRead("\n\nQJHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), | 472 MockRead("\n\nQJHTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), |
| 473 MockRead(false, OK), | 473 MockRead(SYNCHRONOUS, OK), |
| 474 }; | 474 }; |
| 475 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 475 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 476 arraysize(data_reads)); | 476 arraysize(data_reads)); |
| 477 EXPECT_EQ(OK, out.rv); | 477 EXPECT_EQ(OK, out.rv); |
| 478 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); | 478 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); |
| 479 EXPECT_EQ("DATA", out.response_data); | 479 EXPECT_EQ("DATA", out.response_data); |
| 480 } | 480 } |
| 481 | 481 |
| 482 // Beyond 4 bytes of slop and it should fail to find a status line. | 482 // Beyond 4 bytes of slop and it should fail to find a status line. |
| 483 TEST_F(HttpNetworkTransactionTest, StatusLineJunk5Bytes) { | 483 TEST_F(HttpNetworkTransactionTest, StatusLineJunk5Bytes) { |
| 484 MockRead data_reads[] = { | 484 MockRead data_reads[] = { |
| 485 MockRead("xxxxxHTTP/1.1 404 Not Found\nServer: blah"), | 485 MockRead("xxxxxHTTP/1.1 404 Not Found\nServer: blah"), |
| 486 MockRead(false, OK), | 486 MockRead(SYNCHRONOUS, OK), |
| 487 }; | 487 }; |
| 488 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 488 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 489 arraysize(data_reads)); | 489 arraysize(data_reads)); |
| 490 EXPECT_EQ(OK, out.rv); | 490 EXPECT_EQ(OK, out.rv); |
| 491 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); | 491 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); |
| 492 EXPECT_EQ("xxxxxHTTP/1.1 404 Not Found\nServer: blah", out.response_data); | 492 EXPECT_EQ("xxxxxHTTP/1.1 404 Not Found\nServer: blah", out.response_data); |
| 493 } | 493 } |
| 494 | 494 |
| 495 // Same as StatusLineJunk4Bytes, except the read chunks are smaller. | 495 // Same as StatusLineJunk4Bytes, except the read chunks are smaller. |
| 496 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) { | 496 TEST_F(HttpNetworkTransactionTest, StatusLineJunk4Bytes_Slow) { |
| 497 MockRead data_reads[] = { | 497 MockRead data_reads[] = { |
| 498 MockRead("\n"), | 498 MockRead("\n"), |
| 499 MockRead("\n"), | 499 MockRead("\n"), |
| 500 MockRead("Q"), | 500 MockRead("Q"), |
| 501 MockRead("J"), | 501 MockRead("J"), |
| 502 MockRead("HTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), | 502 MockRead("HTTP/1.0 404 Not Found\nServer: blah\n\nDATA"), |
| 503 MockRead(false, OK), | 503 MockRead(SYNCHRONOUS, OK), |
| 504 }; | 504 }; |
| 505 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 505 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 506 arraysize(data_reads)); | 506 arraysize(data_reads)); |
| 507 EXPECT_EQ(OK, out.rv); | 507 EXPECT_EQ(OK, out.rv); |
| 508 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); | 508 EXPECT_EQ("HTTP/1.0 404 Not Found", out.status_line); |
| 509 EXPECT_EQ("DATA", out.response_data); | 509 EXPECT_EQ("DATA", out.response_data); |
| 510 } | 510 } |
| 511 | 511 |
| 512 // Close the connection before enough bytes to have a status line. | 512 // Close the connection before enough bytes to have a status line. |
| 513 TEST_F(HttpNetworkTransactionTest, StatusLinePartial) { | 513 TEST_F(HttpNetworkTransactionTest, StatusLinePartial) { |
| 514 MockRead data_reads[] = { | 514 MockRead data_reads[] = { |
| 515 MockRead("HTT"), | 515 MockRead("HTT"), |
| 516 MockRead(false, OK), | 516 MockRead(SYNCHRONOUS, OK), |
| 517 }; | 517 }; |
| 518 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 518 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 519 arraysize(data_reads)); | 519 arraysize(data_reads)); |
| 520 EXPECT_EQ(OK, out.rv); | 520 EXPECT_EQ(OK, out.rv); |
| 521 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); | 521 EXPECT_EQ("HTTP/0.9 200 OK", out.status_line); |
| 522 EXPECT_EQ("HTT", out.response_data); | 522 EXPECT_EQ("HTT", out.response_data); |
| 523 } | 523 } |
| 524 | 524 |
| 525 // Simulate a 204 response, lacking a Content-Length header, sent over a | 525 // Simulate a 204 response, lacking a Content-Length header, sent over a |
| 526 // persistent connection. The response should still terminate since a 204 | 526 // persistent connection. The response should still terminate since a 204 |
| 527 // cannot have a response body. | 527 // cannot have a response body. |
| 528 TEST_F(HttpNetworkTransactionTest, StopsReading204) { | 528 TEST_F(HttpNetworkTransactionTest, StopsReading204) { |
| 529 MockRead data_reads[] = { | 529 MockRead data_reads[] = { |
| 530 MockRead("HTTP/1.1 204 No Content\r\n\r\n"), | 530 MockRead("HTTP/1.1 204 No Content\r\n\r\n"), |
| 531 MockRead("junk"), // Should not be read!! | 531 MockRead("junk"), // Should not be read!! |
| 532 MockRead(false, OK), | 532 MockRead(SYNCHRONOUS, OK), |
| 533 }; | 533 }; |
| 534 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 534 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 535 arraysize(data_reads)); | 535 arraysize(data_reads)); |
| 536 EXPECT_EQ(OK, out.rv); | 536 EXPECT_EQ(OK, out.rv); |
| 537 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); | 537 EXPECT_EQ("HTTP/1.1 204 No Content", out.status_line); |
| 538 EXPECT_EQ("", out.response_data); | 538 EXPECT_EQ("", out.response_data); |
| 539 } | 539 } |
| 540 | 540 |
| 541 // A simple request using chunked encoding with some extra data after. | 541 // A simple request using chunked encoding with some extra data after. |
| 542 // (Like might be seen in a pipelined response.) | 542 // (Like might be seen in a pipelined response.) |
| 543 TEST_F(HttpNetworkTransactionTest, ChunkedEncoding) { | 543 TEST_F(HttpNetworkTransactionTest, ChunkedEncoding) { |
| 544 MockRead data_reads[] = { | 544 MockRead data_reads[] = { |
| 545 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), | 545 MockRead("HTTP/1.1 200 OK\r\nTransfer-Encoding: chunked\r\n\r\n"), |
| 546 MockRead("5\r\nHello\r\n"), | 546 MockRead("5\r\nHello\r\n"), |
| 547 MockRead("1\r\n"), | 547 MockRead("1\r\n"), |
| 548 MockRead(" \r\n"), | 548 MockRead(" \r\n"), |
| 549 MockRead("5\r\nworld\r\n"), | 549 MockRead("5\r\nworld\r\n"), |
| 550 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"), | 550 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"), |
| 551 MockRead(false, OK), | 551 MockRead(SYNCHRONOUS, OK), |
| 552 }; | 552 }; |
| 553 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 553 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 554 arraysize(data_reads)); | 554 arraysize(data_reads)); |
| 555 EXPECT_EQ(OK, out.rv); | 555 EXPECT_EQ(OK, out.rv); |
| 556 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); | 556 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| 557 EXPECT_EQ("Hello world", out.response_data); | 557 EXPECT_EQ("Hello world", out.response_data); |
| 558 } | 558 } |
| 559 | 559 |
| 560 // Next tests deal with http://crbug.com/56344. | 560 // Next tests deal with http://crbug.com/56344. |
| 561 | 561 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 637 MockRead data_reads[] = { | 637 MockRead data_reads[] = { |
| 638 MockRead("HTTP/1.1 200 OK\r\n"), | 638 MockRead("HTTP/1.1 200 OK\r\n"), |
| 639 MockRead("Content-Length: 666\r\n"), | 639 MockRead("Content-Length: 666\r\n"), |
| 640 MockRead("Content-Length: 1337\r\n"), | 640 MockRead("Content-Length: 1337\r\n"), |
| 641 MockRead("Transfer-Encoding: chunked\r\n\r\n"), | 641 MockRead("Transfer-Encoding: chunked\r\n\r\n"), |
| 642 MockRead("5\r\nHello\r\n"), | 642 MockRead("5\r\nHello\r\n"), |
| 643 MockRead("1\r\n"), | 643 MockRead("1\r\n"), |
| 644 MockRead(" \r\n"), | 644 MockRead(" \r\n"), |
| 645 MockRead("5\r\nworld\r\n"), | 645 MockRead("5\r\nworld\r\n"), |
| 646 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"), | 646 MockRead("0\r\n\r\nHTTP/1.1 200 OK\r\n"), |
| 647 MockRead(false, OK), | 647 MockRead(SYNCHRONOUS, OK), |
| 648 }; | 648 }; |
| 649 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 649 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 650 arraysize(data_reads)); | 650 arraysize(data_reads)); |
| 651 EXPECT_EQ(OK, out.rv); | 651 EXPECT_EQ(OK, out.rv); |
| 652 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); | 652 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| 653 EXPECT_EQ("Hello world", out.response_data); | 653 EXPECT_EQ("Hello world", out.response_data); |
| 654 } | 654 } |
| 655 | 655 |
| 656 // Next tests deal with http://crbug.com/98895. | 656 // Next tests deal with http://crbug.com/98895. |
| 657 | 657 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 698 arraysize(data_reads)); | 698 arraysize(data_reads)); |
| 699 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION, out.rv); | 699 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION, out.rv); |
| 700 } | 700 } |
| 701 | 701 |
| 702 // Checks the behavior of a single Location header. | 702 // Checks the behavior of a single Location header. |
| 703 TEST_F(HttpNetworkTransactionTest, SingleLocationHeader) { | 703 TEST_F(HttpNetworkTransactionTest, SingleLocationHeader) { |
| 704 MockRead data_reads[] = { | 704 MockRead data_reads[] = { |
| 705 MockRead("HTTP/1.1 302 Redirect\r\n"), | 705 MockRead("HTTP/1.1 302 Redirect\r\n"), |
| 706 MockRead("Location: http://good.com/\r\n"), | 706 MockRead("Location: http://good.com/\r\n"), |
| 707 MockRead("Content-Length: 0\r\n\r\n"), | 707 MockRead("Content-Length: 0\r\n\r\n"), |
| 708 MockRead(false, OK), | 708 MockRead(SYNCHRONOUS, OK), |
| 709 }; | 709 }; |
| 710 | 710 |
| 711 HttpRequestInfo request; | 711 HttpRequestInfo request; |
| 712 request.method = "GET"; | 712 request.method = "GET"; |
| 713 request.url = GURL("http://redirect.com/"); | 713 request.url = GURL("http://redirect.com/"); |
| 714 request.load_flags = 0; | 714 request.load_flags = 0; |
| 715 | 715 |
| 716 SessionDependencies session_deps; | 716 SessionDependencies session_deps; |
| 717 scoped_ptr<HttpTransaction> trans( | 717 scoped_ptr<HttpTransaction> trans( |
| 718 new HttpNetworkTransaction(CreateSession(&session_deps))); | 718 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 735 EXPECT_EQ("http://good.com/", url); | 735 EXPECT_EQ("http://good.com/", url); |
| 736 } | 736 } |
| 737 | 737 |
| 738 // Checks that two identical Location headers result in an error. | 738 // Checks that two identical Location headers result in an error. |
| 739 TEST_F(HttpNetworkTransactionTest, DuplicateIdenticalLocationHeaders) { | 739 TEST_F(HttpNetworkTransactionTest, DuplicateIdenticalLocationHeaders) { |
| 740 MockRead data_reads[] = { | 740 MockRead data_reads[] = { |
| 741 MockRead("HTTP/1.1 302 Redirect\r\n"), | 741 MockRead("HTTP/1.1 302 Redirect\r\n"), |
| 742 MockRead("Location: http://good.com/\r\n"), | 742 MockRead("Location: http://good.com/\r\n"), |
| 743 MockRead("Location: http://good.com/\r\n"), | 743 MockRead("Location: http://good.com/\r\n"), |
| 744 MockRead("Content-Length: 0\r\n\r\n"), | 744 MockRead("Content-Length: 0\r\n\r\n"), |
| 745 MockRead(false, OK), | 745 MockRead(SYNCHRONOUS, OK), |
| 746 }; | 746 }; |
| 747 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 747 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 748 arraysize(data_reads)); | 748 arraysize(data_reads)); |
| 749 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv); | 749 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv); |
| 750 } | 750 } |
| 751 | 751 |
| 752 // Checks that two distinct Location headers result in an error. | 752 // Checks that two distinct Location headers result in an error. |
| 753 TEST_F(HttpNetworkTransactionTest, DuplicateDistinctLocationHeaders) { | 753 TEST_F(HttpNetworkTransactionTest, DuplicateDistinctLocationHeaders) { |
| 754 MockRead data_reads[] = { | 754 MockRead data_reads[] = { |
| 755 MockRead("HTTP/1.1 302 Redirect\r\n"), | 755 MockRead("HTTP/1.1 302 Redirect\r\n"), |
| 756 MockRead("Location: http://good.com/\r\n"), | 756 MockRead("Location: http://good.com/\r\n"), |
| 757 MockRead("Location: http://evil.com/\r\n"), | 757 MockRead("Location: http://evil.com/\r\n"), |
| 758 MockRead("Content-Length: 0\r\n\r\n"), | 758 MockRead("Content-Length: 0\r\n\r\n"), |
| 759 MockRead(false, OK), | 759 MockRead(SYNCHRONOUS, OK), |
| 760 }; | 760 }; |
| 761 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 761 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 762 arraysize(data_reads)); | 762 arraysize(data_reads)); |
| 763 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv); | 763 EXPECT_EQ(ERR_RESPONSE_HEADERS_MULTIPLE_LOCATION, out.rv); |
| 764 } | 764 } |
| 765 | 765 |
| 766 // Do a request using the HEAD method. Verify that we don't try to read the | 766 // Do a request using the HEAD method. Verify that we don't try to read the |
| 767 // message body (since HEAD has none). | 767 // message body (since HEAD has none). |
| 768 TEST_F(HttpNetworkTransactionTest, Head) { | 768 TEST_F(HttpNetworkTransactionTest, Head) { |
| 769 HttpRequestInfo request; | 769 HttpRequestInfo request; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 780 "Host: www.google.com\r\n" | 780 "Host: www.google.com\r\n" |
| 781 "Connection: keep-alive\r\n" | 781 "Connection: keep-alive\r\n" |
| 782 "Content-Length: 0\r\n\r\n"), | 782 "Content-Length: 0\r\n\r\n"), |
| 783 }; | 783 }; |
| 784 MockRead data_reads1[] = { | 784 MockRead data_reads1[] = { |
| 785 MockRead("HTTP/1.1 404 Not Found\r\n"), | 785 MockRead("HTTP/1.1 404 Not Found\r\n"), |
| 786 MockRead("Server: Blah\r\n"), | 786 MockRead("Server: Blah\r\n"), |
| 787 MockRead("Content-Length: 1234\r\n\r\n"), | 787 MockRead("Content-Length: 1234\r\n\r\n"), |
| 788 | 788 |
| 789 // No response body because the test stops reading here. | 789 // No response body because the test stops reading here. |
| 790 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 790 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
| 791 }; | 791 }; |
| 792 | 792 |
| 793 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 793 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 794 data_writes1, arraysize(data_writes1)); | 794 data_writes1, arraysize(data_writes1)); |
| 795 session_deps.socket_factory.AddSocketDataProvider(&data1); | 795 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 796 | 796 |
| 797 TestCompletionCallback callback1; | 797 TestCompletionCallback callback1; |
| 798 | 798 |
| 799 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 799 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
| 800 EXPECT_EQ(ERR_IO_PENDING, rv); | 800 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 827 | 827 |
| 828 TEST_F(HttpNetworkTransactionTest, ReuseConnection) { | 828 TEST_F(HttpNetworkTransactionTest, ReuseConnection) { |
| 829 SessionDependencies session_deps; | 829 SessionDependencies session_deps; |
| 830 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 830 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 831 | 831 |
| 832 MockRead data_reads[] = { | 832 MockRead data_reads[] = { |
| 833 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), | 833 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), |
| 834 MockRead("hello"), | 834 MockRead("hello"), |
| 835 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), | 835 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), |
| 836 MockRead("world"), | 836 MockRead("world"), |
| 837 MockRead(false, OK), | 837 MockRead(SYNCHRONOUS, OK), |
| 838 }; | 838 }; |
| 839 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 839 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 840 session_deps.socket_factory.AddSocketDataProvider(&data); | 840 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 841 | 841 |
| 842 const char* const kExpectedResponseData[] = { | 842 const char* const kExpectedResponseData[] = { |
| 843 "hello", "world" | 843 "hello", "world" |
| 844 }; | 844 }; |
| 845 | 845 |
| 846 for (int i = 0; i < 2; ++i) { | 846 for (int i = 0; i < 2; ++i) { |
| 847 HttpRequestInfo request; | 847 HttpRequestInfo request; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 881 request.load_flags = 0; | 881 request.load_flags = 0; |
| 882 | 882 |
| 883 SessionDependencies session_deps; | 883 SessionDependencies session_deps; |
| 884 scoped_ptr<HttpTransaction> trans( | 884 scoped_ptr<HttpTransaction> trans( |
| 885 new HttpNetworkTransaction(CreateSession(&session_deps))); | 885 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 886 | 886 |
| 887 MockRead data_reads[] = { | 887 MockRead data_reads[] = { |
| 888 MockRead("HTTP/1.0 100 Continue\r\n\r\n"), | 888 MockRead("HTTP/1.0 100 Continue\r\n\r\n"), |
| 889 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 889 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
| 890 MockRead("hello world"), | 890 MockRead("hello world"), |
| 891 MockRead(false, OK), | 891 MockRead(SYNCHRONOUS, OK), |
| 892 }; | 892 }; |
| 893 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 893 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 894 session_deps.socket_factory.AddSocketDataProvider(&data); | 894 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 895 | 895 |
| 896 TestCompletionCallback callback; | 896 TestCompletionCallback callback; |
| 897 | 897 |
| 898 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 898 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 899 EXPECT_EQ(ERR_IO_PENDING, rv); | 899 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 900 | 900 |
| 901 rv = callback.WaitForResult(); | 901 rv = callback.WaitForResult(); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 923 request.load_flags = 0; | 923 request.load_flags = 0; |
| 924 | 924 |
| 925 SessionDependencies session_deps; | 925 SessionDependencies session_deps; |
| 926 scoped_ptr<HttpTransaction> trans( | 926 scoped_ptr<HttpTransaction> trans( |
| 927 new HttpNetworkTransaction(CreateSession(&session_deps))); | 927 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 928 | 928 |
| 929 MockRead data_reads[] = { | 929 MockRead data_reads[] = { |
| 930 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n" | 930 MockRead("HTTP/1.1 102 Unspecified status code\r\n\r\n" |
| 931 "HTTP/1.1 200 OK\r\n\r\n"), | 931 "HTTP/1.1 200 OK\r\n\r\n"), |
| 932 MockRead("hello world"), | 932 MockRead("hello world"), |
| 933 MockRead(false, OK), | 933 MockRead(SYNCHRONOUS, OK), |
| 934 }; | 934 }; |
| 935 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 935 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 936 session_deps.socket_factory.AddSocketDataProvider(&data); | 936 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 937 | 937 |
| 938 TestCompletionCallback callback; | 938 TestCompletionCallback callback; |
| 939 | 939 |
| 940 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 940 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 941 EXPECT_EQ(ERR_IO_PENDING, rv); | 941 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 942 | 942 |
| 943 rv = callback.WaitForResult(); | 943 rv = callback.WaitForResult(); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 959 HttpRequestInfo request; | 959 HttpRequestInfo request; |
| 960 request.method = "POST"; | 960 request.method = "POST"; |
| 961 request.url = GURL("http://www.foo.com/"); | 961 request.url = GURL("http://www.foo.com/"); |
| 962 request.load_flags = 0; | 962 request.load_flags = 0; |
| 963 | 963 |
| 964 SessionDependencies session_deps; | 964 SessionDependencies session_deps; |
| 965 scoped_ptr<HttpTransaction> trans( | 965 scoped_ptr<HttpTransaction> trans( |
| 966 new HttpNetworkTransaction(CreateSession(&session_deps))); | 966 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 967 | 967 |
| 968 MockRead data_reads[] = { | 968 MockRead data_reads[] = { |
| 969 MockRead(false, "HTTP/1.0 100 Continue\r\n"), | 969 MockRead(SYNCHRONOUS, "HTTP/1.0 100 Continue\r\n"), |
| 970 MockRead(true, 0), | 970 MockRead(ASYNC, 0), |
| 971 }; | 971 }; |
| 972 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 972 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 973 session_deps.socket_factory.AddSocketDataProvider(&data); | 973 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 974 | 974 |
| 975 TestCompletionCallback callback; | 975 TestCompletionCallback callback; |
| 976 | 976 |
| 977 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 977 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 978 EXPECT_EQ(ERR_IO_PENDING, rv); | 978 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 979 | 979 |
| 980 rv = callback.WaitForResult(); | 980 rv = callback.WaitForResult(); |
| 981 EXPECT_EQ(OK, rv); | 981 EXPECT_EQ(OK, rv); |
| 982 | 982 |
| 983 std::string response_data; | 983 std::string response_data; |
| 984 rv = ReadTransaction(trans.get(), &response_data); | 984 rv = ReadTransaction(trans.get(), &response_data); |
| 985 EXPECT_EQ(OK, rv); | 985 EXPECT_EQ(OK, rv); |
| 986 EXPECT_EQ("", response_data); | 986 EXPECT_EQ("", response_data); |
| 987 } | 987 } |
| 988 | 988 |
| 989 TEST_F(HttpNetworkTransactionTest, EmptyResponse) { | 989 TEST_F(HttpNetworkTransactionTest, EmptyResponse) { |
| 990 HttpRequestInfo request; | 990 HttpRequestInfo request; |
| 991 request.method = "POST"; | 991 request.method = "POST"; |
| 992 request.url = GURL("http://www.foo.com/"); | 992 request.url = GURL("http://www.foo.com/"); |
| 993 request.load_flags = 0; | 993 request.load_flags = 0; |
| 994 | 994 |
| 995 SessionDependencies session_deps; | 995 SessionDependencies session_deps; |
| 996 scoped_ptr<HttpTransaction> trans( | 996 scoped_ptr<HttpTransaction> trans( |
| 997 new HttpNetworkTransaction(CreateSession(&session_deps))); | 997 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 998 | 998 |
| 999 MockRead data_reads[] = { | 999 MockRead data_reads[] = { |
| 1000 MockRead(true, 0), | 1000 MockRead(ASYNC, 0), |
| 1001 }; | 1001 }; |
| 1002 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 1002 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 1003 session_deps.socket_factory.AddSocketDataProvider(&data); | 1003 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 1004 | 1004 |
| 1005 TestCompletionCallback callback; | 1005 TestCompletionCallback callback; |
| 1006 | 1006 |
| 1007 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 1007 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 1008 EXPECT_EQ(ERR_IO_PENDING, rv); | 1008 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1009 | 1009 |
| 1010 rv = callback.WaitForResult(); | 1010 rv = callback.WaitForResult(); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 1029 "Connection: keep-alive\r\n\r\n"), | 1029 "Connection: keep-alive\r\n\r\n"), |
| 1030 MockWrite("GET / HTTP/1.1\r\n" | 1030 MockWrite("GET / HTTP/1.1\r\n" |
| 1031 "Host: www.foo.com\r\n" | 1031 "Host: www.foo.com\r\n" |
| 1032 "Connection: keep-alive\r\n\r\n") | 1032 "Connection: keep-alive\r\n\r\n") |
| 1033 }; | 1033 }; |
| 1034 | 1034 |
| 1035 // Read results for the first request. | 1035 // Read results for the first request. |
| 1036 MockRead data1_reads[] = { | 1036 MockRead data1_reads[] = { |
| 1037 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), | 1037 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), |
| 1038 MockRead("hello"), | 1038 MockRead("hello"), |
| 1039 MockRead(true, OK), | 1039 MockRead(ASYNC, OK), |
| 1040 }; | 1040 }; |
| 1041 | 1041 |
| 1042 if (write_failure) { | 1042 if (write_failure) { |
| 1043 ASSERT_TRUE(!read_failure); | 1043 ASSERT_TRUE(!read_failure); |
| 1044 data1_writes[1] = *write_failure; | 1044 data1_writes[1] = *write_failure; |
| 1045 } else { | 1045 } else { |
| 1046 ASSERT_TRUE(read_failure); | 1046 ASSERT_TRUE(read_failure); |
| 1047 data1_reads[2] = *read_failure; | 1047 data1_reads[2] = *read_failure; |
| 1048 } | 1048 } |
| 1049 | 1049 |
| 1050 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), | 1050 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), |
| 1051 data1_writes, arraysize(data1_writes)); | 1051 data1_writes, arraysize(data1_writes)); |
| 1052 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1052 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1053 | 1053 |
| 1054 MockRead data2_reads[] = { | 1054 MockRead data2_reads[] = { |
| 1055 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), | 1055 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), |
| 1056 MockRead("world"), | 1056 MockRead("world"), |
| 1057 MockRead(true, OK), | 1057 MockRead(ASYNC, OK), |
| 1058 }; | 1058 }; |
| 1059 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0); | 1059 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0); |
| 1060 session_deps.socket_factory.AddSocketDataProvider(&data2); | 1060 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 1061 | 1061 |
| 1062 const char* kExpectedResponseData[] = { | 1062 const char* kExpectedResponseData[] = { |
| 1063 "hello", "world" | 1063 "hello", "world" |
| 1064 }; | 1064 }; |
| 1065 | 1065 |
| 1066 for (int i = 0; i < 2; ++i) { | 1066 for (int i = 0; i < 2; ++i) { |
| 1067 TestCompletionCallback callback; | 1067 TestCompletionCallback callback; |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 1081 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 1081 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
| 1082 | 1082 |
| 1083 std::string response_data; | 1083 std::string response_data; |
| 1084 rv = ReadTransaction(trans.get(), &response_data); | 1084 rv = ReadTransaction(trans.get(), &response_data); |
| 1085 EXPECT_EQ(OK, rv); | 1085 EXPECT_EQ(OK, rv); |
| 1086 EXPECT_EQ(kExpectedResponseData[i], response_data); | 1086 EXPECT_EQ(kExpectedResponseData[i], response_data); |
| 1087 } | 1087 } |
| 1088 } | 1088 } |
| 1089 | 1089 |
| 1090 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionNotConnectedOnWrite) { | 1090 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionNotConnectedOnWrite) { |
| 1091 MockWrite write_failure(true, ERR_SOCKET_NOT_CONNECTED); | 1091 MockWrite write_failure(ASYNC, ERR_SOCKET_NOT_CONNECTED); |
| 1092 KeepAliveConnectionResendRequestTest(&write_failure, NULL); | 1092 KeepAliveConnectionResendRequestTest(&write_failure, NULL); |
| 1093 } | 1093 } |
| 1094 | 1094 |
| 1095 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionReset) { | 1095 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionReset) { |
| 1096 MockRead read_failure(true, ERR_CONNECTION_RESET); | 1096 MockRead read_failure(ASYNC, ERR_CONNECTION_RESET); |
| 1097 KeepAliveConnectionResendRequestTest(NULL, &read_failure); | 1097 KeepAliveConnectionResendRequestTest(NULL, &read_failure); |
| 1098 } | 1098 } |
| 1099 | 1099 |
| 1100 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionEOF) { | 1100 TEST_F(HttpNetworkTransactionTest, KeepAliveConnectionEOF) { |
| 1101 MockRead read_failure(false, OK); // EOF | 1101 MockRead read_failure(SYNCHRONOUS, OK); // EOF |
| 1102 KeepAliveConnectionResendRequestTest(NULL, &read_failure); | 1102 KeepAliveConnectionResendRequestTest(NULL, &read_failure); |
| 1103 } | 1103 } |
| 1104 | 1104 |
| 1105 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) { | 1105 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionReset) { |
| 1106 HttpRequestInfo request; | 1106 HttpRequestInfo request; |
| 1107 request.method = "GET"; | 1107 request.method = "GET"; |
| 1108 request.url = GURL("http://www.google.com/"); | 1108 request.url = GURL("http://www.google.com/"); |
| 1109 request.load_flags = 0; | 1109 request.load_flags = 0; |
| 1110 | 1110 |
| 1111 SessionDependencies session_deps; | 1111 SessionDependencies session_deps; |
| 1112 scoped_ptr<HttpTransaction> trans( | 1112 scoped_ptr<HttpTransaction> trans( |
| 1113 new HttpNetworkTransaction(CreateSession(&session_deps))); | 1113 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 1114 | 1114 |
| 1115 MockRead data_reads[] = { | 1115 MockRead data_reads[] = { |
| 1116 MockRead(true, ERR_CONNECTION_RESET), | 1116 MockRead(ASYNC, ERR_CONNECTION_RESET), |
| 1117 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used | 1117 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used |
| 1118 MockRead("hello world"), | 1118 MockRead("hello world"), |
| 1119 MockRead(false, OK), | 1119 MockRead(SYNCHRONOUS, OK), |
| 1120 }; | 1120 }; |
| 1121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 1121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 1122 session_deps.socket_factory.AddSocketDataProvider(&data); | 1122 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 1123 | 1123 |
| 1124 TestCompletionCallback callback; | 1124 TestCompletionCallback callback; |
| 1125 | 1125 |
| 1126 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 1126 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 1127 EXPECT_EQ(ERR_IO_PENDING, rv); | 1127 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1128 | 1128 |
| 1129 rv = callback.WaitForResult(); | 1129 rv = callback.WaitForResult(); |
| 1130 EXPECT_EQ(ERR_CONNECTION_RESET, rv); | 1130 EXPECT_EQ(ERR_CONNECTION_RESET, rv); |
| 1131 | 1131 |
| 1132 const HttpResponseInfo* response = trans->GetResponseInfo(); | 1132 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 1133 EXPECT_TRUE(response == NULL); | 1133 EXPECT_TRUE(response == NULL); |
| 1134 } | 1134 } |
| 1135 | 1135 |
| 1136 // What do various browsers do when the server closes a non-keepalive | 1136 // What do various browsers do when the server closes a non-keepalive |
| 1137 // connection without sending any response header or body? | 1137 // connection without sending any response header or body? |
| 1138 // | 1138 // |
| 1139 // IE7: error page | 1139 // IE7: error page |
| 1140 // Safari 3.1.2 (Windows): error page | 1140 // Safari 3.1.2 (Windows): error page |
| 1141 // Firefox 3.0.1: blank page | 1141 // Firefox 3.0.1: blank page |
| 1142 // Opera 9.52: after five attempts, blank page | 1142 // Opera 9.52: after five attempts, blank page |
| 1143 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE) | 1143 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE) |
| 1144 // Us: error page (EMPTY_RESPONSE) | 1144 // Us: error page (EMPTY_RESPONSE) |
| 1145 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) { | 1145 TEST_F(HttpNetworkTransactionTest, NonKeepAliveConnectionEOF) { |
| 1146 MockRead data_reads[] = { | 1146 MockRead data_reads[] = { |
| 1147 MockRead(false, OK), // EOF | 1147 MockRead(SYNCHRONOUS, OK), // EOF |
| 1148 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used | 1148 MockRead("HTTP/1.0 200 OK\r\n\r\n"), // Should not be used |
| 1149 MockRead("hello world"), | 1149 MockRead("hello world"), |
| 1150 MockRead(false, OK), | 1150 MockRead(SYNCHRONOUS, OK), |
| 1151 }; | 1151 }; |
| 1152 SimpleGetHelperResult out = SimpleGetHelper(data_reads, | 1152 SimpleGetHelperResult out = SimpleGetHelper(data_reads, |
| 1153 arraysize(data_reads)); | 1153 arraysize(data_reads)); |
| 1154 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv); | 1154 EXPECT_EQ(ERR_EMPTY_RESPONSE, out.rv); |
| 1155 } | 1155 } |
| 1156 | 1156 |
| 1157 // Test that we correctly reuse a keep-alive connection after not explicitly | 1157 // Test that we correctly reuse a keep-alive connection after not explicitly |
| 1158 // reading the body. | 1158 // reading the body. |
| 1159 TEST_F(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) { | 1159 TEST_F(HttpNetworkTransactionTest, KeepAliveAfterUnreadBody) { |
| 1160 HttpRequestInfo request; | 1160 HttpRequestInfo request; |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1182 MockRead("HTTP/1.1 301 Moved Permanently\r\n" | 1182 MockRead("HTTP/1.1 301 Moved Permanently\r\n" |
| 1183 "Content-Length: 5\r\n\r\n" | 1183 "Content-Length: 5\r\n\r\n" |
| 1184 "hello"), | 1184 "hello"), |
| 1185 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), | 1185 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 5\r\n\r\n"), |
| 1186 MockRead("hello"), | 1186 MockRead("hello"), |
| 1187 }; | 1187 }; |
| 1188 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), NULL, 0); | 1188 StaticSocketDataProvider data1(data1_reads, arraysize(data1_reads), NULL, 0); |
| 1189 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1189 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1190 | 1190 |
| 1191 MockRead data2_reads[] = { | 1191 MockRead data2_reads[] = { |
| 1192 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 1192 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
| 1193 }; | 1193 }; |
| 1194 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0); | 1194 StaticSocketDataProvider data2(data2_reads, arraysize(data2_reads), NULL, 0); |
| 1195 session_deps.socket_factory.AddSocketDataProvider(&data2); | 1195 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 1196 | 1196 |
| 1197 const int kNumUnreadBodies = arraysize(data1_reads) - 2; | 1197 const int kNumUnreadBodies = arraysize(data1_reads) - 2; |
| 1198 std::string response_lines[kNumUnreadBodies]; | 1198 std::string response_lines[kNumUnreadBodies]; |
| 1199 | 1199 |
| 1200 for (size_t i = 0; i < arraysize(data1_reads) - 2; ++i) { | 1200 for (size_t i = 0; i < arraysize(data1_reads) - 2; ++i) { |
| 1201 TestCompletionCallback callback; | 1201 TestCompletionCallback callback; |
| 1202 | 1202 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1270 MockRead data_reads1[] = { | 1270 MockRead data_reads1[] = { |
| 1271 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 1271 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 1272 // Give a couple authenticate options (only the middle one is actually | 1272 // Give a couple authenticate options (only the middle one is actually |
| 1273 // supported). | 1273 // supported). |
| 1274 MockRead("WWW-Authenticate: Basic invalid\r\n"), // Malformed. | 1274 MockRead("WWW-Authenticate: Basic invalid\r\n"), // Malformed. |
| 1275 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1275 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1276 MockRead("WWW-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), | 1276 MockRead("WWW-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), |
| 1277 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1277 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1278 // Large content-length -- won't matter, as connection will be reset. | 1278 // Large content-length -- won't matter, as connection will be reset. |
| 1279 MockRead("Content-Length: 10000\r\n\r\n"), | 1279 MockRead("Content-Length: 10000\r\n\r\n"), |
| 1280 MockRead(false, ERR_FAILED), | 1280 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 1281 }; | 1281 }; |
| 1282 | 1282 |
| 1283 // After calling trans->RestartWithAuth(), this is the request we should | 1283 // After calling trans->RestartWithAuth(), this is the request we should |
| 1284 // be issuing -- the final header line contains the credentials. | 1284 // be issuing -- the final header line contains the credentials. |
| 1285 MockWrite data_writes2[] = { | 1285 MockWrite data_writes2[] = { |
| 1286 MockWrite("GET / HTTP/1.1\r\n" | 1286 MockWrite("GET / HTTP/1.1\r\n" |
| 1287 "Host: www.google.com\r\n" | 1287 "Host: www.google.com\r\n" |
| 1288 "Connection: keep-alive\r\n" | 1288 "Connection: keep-alive\r\n" |
| 1289 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 1289 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 1290 }; | 1290 }; |
| 1291 | 1291 |
| 1292 // Lastly, the server responds with the actual content. | 1292 // Lastly, the server responds with the actual content. |
| 1293 MockRead data_reads2[] = { | 1293 MockRead data_reads2[] = { |
| 1294 MockRead("HTTP/1.0 200 OK\r\n"), | 1294 MockRead("HTTP/1.0 200 OK\r\n"), |
| 1295 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1295 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1296 MockRead("Content-Length: 100\r\n\r\n"), | 1296 MockRead("Content-Length: 100\r\n\r\n"), |
| 1297 MockRead(false, OK), | 1297 MockRead(SYNCHRONOUS, OK), |
| 1298 }; | 1298 }; |
| 1299 | 1299 |
| 1300 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 1300 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 1301 data_writes1, arraysize(data_writes1)); | 1301 data_writes1, arraysize(data_writes1)); |
| 1302 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 1302 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 1303 data_writes2, arraysize(data_writes2)); | 1303 data_writes2, arraysize(data_writes2)); |
| 1304 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1304 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1305 session_deps.socket_factory.AddSocketDataProvider(&data2); | 1305 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 1306 | 1306 |
| 1307 TestCompletionCallback callback1; | 1307 TestCompletionCallback callback1; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1346 "Host: www.google.com\r\n" | 1346 "Host: www.google.com\r\n" |
| 1347 "Connection: keep-alive\r\n\r\n"), | 1347 "Connection: keep-alive\r\n\r\n"), |
| 1348 }; | 1348 }; |
| 1349 | 1349 |
| 1350 MockRead data_reads[] = { | 1350 MockRead data_reads[] = { |
| 1351 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 1351 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 1352 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1352 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1353 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1353 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1354 // Large content-length -- won't matter, as connection will be reset. | 1354 // Large content-length -- won't matter, as connection will be reset. |
| 1355 MockRead("Content-Length: 10000\r\n\r\n"), | 1355 MockRead("Content-Length: 10000\r\n\r\n"), |
| 1356 MockRead(false, ERR_FAILED), | 1356 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 1357 }; | 1357 }; |
| 1358 | 1358 |
| 1359 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 1359 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 1360 data_writes, arraysize(data_writes)); | 1360 data_writes, arraysize(data_writes)); |
| 1361 session_deps.socket_factory.AddSocketDataProvider(&data); | 1361 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 1362 TestCompletionCallback callback; | 1362 TestCompletionCallback callback; |
| 1363 | 1363 |
| 1364 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 1364 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 1365 EXPECT_EQ(ERR_IO_PENDING, rv); | 1365 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1366 | 1366 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1406 // Lastly, the server responds with the actual content. | 1406 // Lastly, the server responds with the actual content. |
| 1407 MockRead("HTTP/1.1 200 OK\r\n"), | 1407 MockRead("HTTP/1.1 200 OK\r\n"), |
| 1408 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1408 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1409 MockRead("Content-Length: 5\r\n\r\n"), | 1409 MockRead("Content-Length: 5\r\n\r\n"), |
| 1410 MockRead("Hello"), | 1410 MockRead("Hello"), |
| 1411 }; | 1411 }; |
| 1412 | 1412 |
| 1413 // If there is a regression where we disconnect a Keep-Alive | 1413 // If there is a regression where we disconnect a Keep-Alive |
| 1414 // connection during an auth roundtrip, we'll end up reading this. | 1414 // connection during an auth roundtrip, we'll end up reading this. |
| 1415 MockRead data_reads2[] = { | 1415 MockRead data_reads2[] = { |
| 1416 MockRead(false, ERR_FAILED), | 1416 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 1417 }; | 1417 }; |
| 1418 | 1418 |
| 1419 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 1419 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 1420 data_writes1, arraysize(data_writes1)); | 1420 data_writes1, arraysize(data_writes1)); |
| 1421 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 1421 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 1422 NULL, 0); | 1422 NULL, 0); |
| 1423 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1423 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1424 session_deps.socket_factory.AddSocketDataProvider(&data2); | 1424 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 1425 | 1425 |
| 1426 TestCompletionCallback callback1; | 1426 TestCompletionCallback callback1; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1482 | 1482 |
| 1483 // Lastly, the server responds with the actual content. | 1483 // Lastly, the server responds with the actual content. |
| 1484 MockRead("HTTP/1.1 200 OK\r\n"), | 1484 MockRead("HTTP/1.1 200 OK\r\n"), |
| 1485 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1485 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1486 MockRead("Content-Length: 5\r\n\r\n"), | 1486 MockRead("Content-Length: 5\r\n\r\n"), |
| 1487 MockRead("hello"), | 1487 MockRead("hello"), |
| 1488 }; | 1488 }; |
| 1489 | 1489 |
| 1490 // An incorrect reconnect would cause this to be read. | 1490 // An incorrect reconnect would cause this to be read. |
| 1491 MockRead data_reads2[] = { | 1491 MockRead data_reads2[] = { |
| 1492 MockRead(false, ERR_FAILED), | 1492 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 1493 }; | 1493 }; |
| 1494 | 1494 |
| 1495 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 1495 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 1496 data_writes1, arraysize(data_writes1)); | 1496 data_writes1, arraysize(data_writes1)); |
| 1497 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 1497 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 1498 NULL, 0); | 1498 NULL, 0); |
| 1499 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1499 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1500 session_deps.socket_factory.AddSocketDataProvider(&data2); | 1500 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 1501 | 1501 |
| 1502 TestCompletionCallback callback1; | 1502 TestCompletionCallback callback1; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1555 std::string large_body_string("Unauthorized"); | 1555 std::string large_body_string("Unauthorized"); |
| 1556 large_body_string.append(5 * 1024, ' '); | 1556 large_body_string.append(5 * 1024, ' '); |
| 1557 large_body_string.append("\r\n"); | 1557 large_body_string.append("\r\n"); |
| 1558 | 1558 |
| 1559 MockRead data_reads1[] = { | 1559 MockRead data_reads1[] = { |
| 1560 MockRead("HTTP/1.1 401 Unauthorized\r\n"), | 1560 MockRead("HTTP/1.1 401 Unauthorized\r\n"), |
| 1561 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1561 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1562 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1562 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1563 // 5134 = 12 + 5 * 1024 + 2 | 1563 // 5134 = 12 + 5 * 1024 + 2 |
| 1564 MockRead("Content-Length: 5134\r\n\r\n"), | 1564 MockRead("Content-Length: 5134\r\n\r\n"), |
| 1565 MockRead(true, large_body_string.data(), large_body_string.size()), | 1565 MockRead(ASYNC, large_body_string.data(), large_body_string.size()), |
| 1566 | 1566 |
| 1567 // Lastly, the server responds with the actual content. | 1567 // Lastly, the server responds with the actual content. |
| 1568 MockRead("HTTP/1.1 200 OK\r\n"), | 1568 MockRead("HTTP/1.1 200 OK\r\n"), |
| 1569 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1569 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1570 MockRead("Content-Length: 5\r\n\r\n"), | 1570 MockRead("Content-Length: 5\r\n\r\n"), |
| 1571 MockRead("hello"), | 1571 MockRead("hello"), |
| 1572 }; | 1572 }; |
| 1573 | 1573 |
| 1574 // An incorrect reconnect would cause this to be read. | 1574 // An incorrect reconnect would cause this to be read. |
| 1575 MockRead data_reads2[] = { | 1575 MockRead data_reads2[] = { |
| 1576 MockRead(false, ERR_FAILED), | 1576 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 1577 }; | 1577 }; |
| 1578 | 1578 |
| 1579 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 1579 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 1580 data_writes1, arraysize(data_writes1)); | 1580 data_writes1, arraysize(data_writes1)); |
| 1581 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 1581 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 1582 NULL, 0); | 1582 NULL, 0); |
| 1583 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1583 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1584 session_deps.socket_factory.AddSocketDataProvider(&data2); | 1584 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 1585 | 1585 |
| 1586 TestCompletionCallback callback1; | 1586 TestCompletionCallback callback1; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1633 "Connection: keep-alive\r\n" | 1633 "Connection: keep-alive\r\n" |
| 1634 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 1634 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 1635 }; | 1635 }; |
| 1636 | 1636 |
| 1637 MockRead data_reads1[] = { | 1637 MockRead data_reads1[] = { |
| 1638 MockRead("HTTP/1.1 401 Unauthorized\r\n"), | 1638 MockRead("HTTP/1.1 401 Unauthorized\r\n"), |
| 1639 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1639 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1640 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1640 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1641 MockRead("Content-Length: 14\r\n\r\n"), | 1641 MockRead("Content-Length: 14\r\n\r\n"), |
| 1642 // Tell MockTCPClientSocket to simulate the server closing the connection. | 1642 // Tell MockTCPClientSocket to simulate the server closing the connection. |
| 1643 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1643 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 1644 MockRead("Unauthorized\r\n"), | 1644 MockRead("Unauthorized\r\n"), |
| 1645 MockRead(false, OK), // The server closes the connection. | 1645 MockRead(SYNCHRONOUS, OK), // The server closes the connection. |
| 1646 }; | 1646 }; |
| 1647 | 1647 |
| 1648 // After calling trans->RestartWithAuth(), this is the request we should | 1648 // After calling trans->RestartWithAuth(), this is the request we should |
| 1649 // be issuing -- the final header line contains the credentials. | 1649 // be issuing -- the final header line contains the credentials. |
| 1650 MockWrite data_writes2[] = { | 1650 MockWrite data_writes2[] = { |
| 1651 MockWrite("GET / HTTP/1.1\r\n" | 1651 MockWrite("GET / HTTP/1.1\r\n" |
| 1652 "Host: www.google.com\r\n" | 1652 "Host: www.google.com\r\n" |
| 1653 "Connection: keep-alive\r\n" | 1653 "Connection: keep-alive\r\n" |
| 1654 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 1654 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 1655 }; | 1655 }; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1736 // No credentials. | 1736 // No credentials. |
| 1737 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), | 1737 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
| 1738 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1738 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1739 MockRead("Proxy-Connection: close\r\n\r\n"), | 1739 MockRead("Proxy-Connection: close\r\n\r\n"), |
| 1740 | 1740 |
| 1741 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 1741 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
| 1742 | 1742 |
| 1743 MockRead("HTTP/1.1 200 OK\r\n"), | 1743 MockRead("HTTP/1.1 200 OK\r\n"), |
| 1744 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 1744 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 1745 MockRead("Content-Length: 5\r\n\r\n"), | 1745 MockRead("Content-Length: 5\r\n\r\n"), |
| 1746 MockRead(false, "hello"), | 1746 MockRead(SYNCHRONOUS, "hello"), |
| 1747 }; | 1747 }; |
| 1748 | 1748 |
| 1749 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 1749 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 1750 data_writes1, arraysize(data_writes1)); | 1750 data_writes1, arraysize(data_writes1)); |
| 1751 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1751 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1752 SSLSocketDataProvider ssl(true, OK); | 1752 SSLSocketDataProvider ssl(ASYNC, OK); |
| 1753 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 1753 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 1754 | 1754 |
| 1755 TestCompletionCallback callback1; | 1755 TestCompletionCallback callback1; |
| 1756 | 1756 |
| 1757 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 1757 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 1758 | 1758 |
| 1759 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 1759 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 1760 EXPECT_EQ(ERR_IO_PENDING, rv); | 1760 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1761 | 1761 |
| 1762 rv = callback1.WaitForResult(); | 1762 rv = callback1.WaitForResult(); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1841 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), | 1841 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
| 1842 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1842 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1843 MockRead("Content-Length: 10\r\n\r\n"), | 1843 MockRead("Content-Length: 10\r\n\r\n"), |
| 1844 MockRead("0123456789"), | 1844 MockRead("0123456789"), |
| 1845 | 1845 |
| 1846 // Wrong credentials (wrong password). | 1846 // Wrong credentials (wrong password). |
| 1847 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), | 1847 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
| 1848 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1848 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1849 MockRead("Content-Length: 10\r\n\r\n"), | 1849 MockRead("Content-Length: 10\r\n\r\n"), |
| 1850 // No response body because the test stops reading here. | 1850 // No response body because the test stops reading here. |
| 1851 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 1851 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
| 1852 }; | 1852 }; |
| 1853 | 1853 |
| 1854 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 1854 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 1855 data_writes1, arraysize(data_writes1)); | 1855 data_writes1, arraysize(data_writes1)); |
| 1856 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1856 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1857 | 1857 |
| 1858 TestCompletionCallback callback1; | 1858 TestCompletionCallback callback1; |
| 1859 | 1859 |
| 1860 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 1860 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 1861 EXPECT_EQ(ERR_IO_PENDING, rv); | 1861 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1925 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 1925 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 1926 "Host: www.google.com\r\n" | 1926 "Host: www.google.com\r\n" |
| 1927 "Proxy-Connection: keep-alive\r\n\r\n"), | 1927 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 1928 }; | 1928 }; |
| 1929 | 1929 |
| 1930 // The proxy responds to the connect with a 407. | 1930 // The proxy responds to the connect with a 407. |
| 1931 MockRead data_reads[] = { | 1931 MockRead data_reads[] = { |
| 1932 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), | 1932 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
| 1933 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1933 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1934 MockRead("Content-Length: 10\r\n\r\n"), | 1934 MockRead("Content-Length: 10\r\n\r\n"), |
| 1935 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 1935 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
| 1936 }; | 1936 }; |
| 1937 | 1937 |
| 1938 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 1938 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 1939 data_writes, arraysize(data_writes)); | 1939 data_writes, arraysize(data_writes)); |
| 1940 session_deps.socket_factory.AddSocketDataProvider(&data); | 1940 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 1941 | 1941 |
| 1942 TestCompletionCallback callback; | 1942 TestCompletionCallback callback; |
| 1943 | 1943 |
| 1944 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 1944 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 1945 EXPECT_EQ(ERR_IO_PENDING, rv); | 1945 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1980 MockWrite("GET / HTTP/1.1\r\n" | 1980 MockWrite("GET / HTTP/1.1\r\n" |
| 1981 "Host: www.google.com\r\n" | 1981 "Host: www.google.com\r\n" |
| 1982 "Connection: keep-alive\r\n\r\n"), | 1982 "Connection: keep-alive\r\n\r\n"), |
| 1983 }; | 1983 }; |
| 1984 | 1984 |
| 1985 MockRead data_reads1[] = { | 1985 MockRead data_reads1[] = { |
| 1986 MockRead("HTTP/1.0 407 Proxy Auth required\r\n"), | 1986 MockRead("HTTP/1.0 407 Proxy Auth required\r\n"), |
| 1987 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 1987 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 1988 // Large content-length -- won't matter, as connection will be reset. | 1988 // Large content-length -- won't matter, as connection will be reset. |
| 1989 MockRead("Content-Length: 10000\r\n\r\n"), | 1989 MockRead("Content-Length: 10000\r\n\r\n"), |
| 1990 MockRead(false, ERR_FAILED), | 1990 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 1991 }; | 1991 }; |
| 1992 | 1992 |
| 1993 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 1993 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 1994 data_writes1, arraysize(data_writes1)); | 1994 data_writes1, arraysize(data_writes1)); |
| 1995 session_deps.socket_factory.AddSocketDataProvider(&data1); | 1995 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 1996 | 1996 |
| 1997 TestCompletionCallback callback; | 1997 TestCompletionCallback callback; |
| 1998 | 1998 |
| 1999 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 1999 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 2000 EXPECT_EQ(ERR_IO_PENDING, rv); | 2000 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 2030 "Host: www.google.com\r\n" | 2030 "Host: www.google.com\r\n" |
| 2031 "Connection: keep-alive\r\n\r\n"), | 2031 "Connection: keep-alive\r\n\r\n"), |
| 2032 }; | 2032 }; |
| 2033 | 2033 |
| 2034 MockRead data_reads1[] = { | 2034 MockRead data_reads1[] = { |
| 2035 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 2035 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
| 2036 | 2036 |
| 2037 MockRead("HTTP/1.1 407 Unauthorized\r\n"), | 2037 MockRead("HTTP/1.1 407 Unauthorized\r\n"), |
| 2038 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 2038 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 2039 MockRead("\r\n"), | 2039 MockRead("\r\n"), |
| 2040 MockRead(false, OK), | 2040 MockRead(SYNCHRONOUS, OK), |
| 2041 }; | 2041 }; |
| 2042 | 2042 |
| 2043 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 2043 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 2044 data_writes1, arraysize(data_writes1)); | 2044 data_writes1, arraysize(data_writes1)); |
| 2045 session_deps.socket_factory.AddSocketDataProvider(&data1); | 2045 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 2046 SSLSocketDataProvider ssl(true, OK); | 2046 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2047 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2047 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2048 | 2048 |
| 2049 TestCompletionCallback callback1; | 2049 TestCompletionCallback callback1; |
| 2050 | 2050 |
| 2051 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2051 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 2052 | 2052 |
| 2053 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2053 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 2054 EXPECT_EQ(ERR_IO_PENDING, rv); | 2054 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2055 | 2055 |
| 2056 rv = callback1.WaitForResult(); | 2056 rv = callback1.WaitForResult(); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 2083 MockWrite data_writes1[] = { | 2083 MockWrite data_writes1[] = { |
| 2084 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 2084 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
| 2085 "Host: www.google.com\r\n" | 2085 "Host: www.google.com\r\n" |
| 2086 "Proxy-Connection: keep-alive\r\n\r\n"), | 2086 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 2087 }; | 2087 }; |
| 2088 | 2088 |
| 2089 MockRead data_reads1[] = { | 2089 MockRead data_reads1[] = { |
| 2090 MockRead("HTTP/1.1 200 OK\r\n"), | 2090 MockRead("HTTP/1.1 200 OK\r\n"), |
| 2091 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2091 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 2092 MockRead("Content-Length: 100\r\n\r\n"), | 2092 MockRead("Content-Length: 100\r\n\r\n"), |
| 2093 MockRead(false, OK), | 2093 MockRead(SYNCHRONOUS, OK), |
| 2094 }; | 2094 }; |
| 2095 | 2095 |
| 2096 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 2096 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 2097 data_writes1, arraysize(data_writes1)); | 2097 data_writes1, arraysize(data_writes1)); |
| 2098 session_deps.socket_factory.AddSocketDataProvider(&data1); | 2098 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 2099 SSLSocketDataProvider ssl(true, OK); | 2099 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2100 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2100 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2101 | 2101 |
| 2102 TestCompletionCallback callback1; | 2102 TestCompletionCallback callback1; |
| 2103 | 2103 |
| 2104 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2104 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 2105 | 2105 |
| 2106 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2106 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 2107 EXPECT_EQ(ERR_IO_PENDING, rv); | 2107 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2108 | 2108 |
| 2109 rv = callback1.WaitForResult(); | 2109 rv = callback1.WaitForResult(); |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 2138 // fetch http://www.google.com/ via SPDY | 2138 // fetch http://www.google.com/ via SPDY |
| 2139 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST, | 2139 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST, |
| 2140 false)); | 2140 false)); |
| 2141 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 2141 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 2142 | 2142 |
| 2143 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 2143 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 2144 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 2144 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 2145 MockRead spdy_reads[] = { | 2145 MockRead spdy_reads[] = { |
| 2146 CreateMockRead(*resp), | 2146 CreateMockRead(*resp), |
| 2147 CreateMockRead(*data), | 2147 CreateMockRead(*data), |
| 2148 MockRead(true, 0, 0), | 2148 MockRead(ASYNC, 0, 0), |
| 2149 }; | 2149 }; |
| 2150 | 2150 |
| 2151 scoped_ptr<DelayedSocketData> spdy_data( | 2151 scoped_ptr<DelayedSocketData> spdy_data( |
| 2152 new DelayedSocketData( | 2152 new DelayedSocketData( |
| 2153 1, // wait for one write to finish before reading. | 2153 1, // wait for one write to finish before reading. |
| 2154 spdy_reads, arraysize(spdy_reads), | 2154 spdy_reads, arraysize(spdy_reads), |
| 2155 spdy_writes, arraysize(spdy_writes))); | 2155 spdy_writes, arraysize(spdy_writes))); |
| 2156 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 2156 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 2157 | 2157 |
| 2158 SSLSocketDataProvider ssl(true, OK); | 2158 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2159 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 2159 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 2160 ssl.next_proto = "spdy/2.1"; | 2160 ssl.next_proto = "spdy/2.1"; |
| 2161 ssl.was_npn_negotiated = true; | 2161 ssl.was_npn_negotiated = true; |
| 2162 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2162 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 2163 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2163 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2164 | 2164 |
| 2165 TestCompletionCallback callback1; | 2165 TestCompletionCallback callback1; |
| 2166 | 2166 |
| 2167 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2167 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 2168 | 2168 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2227 1)); | 2227 1)); |
| 2228 scoped_ptr<spdy::SpdyFrame> body_authentication( | 2228 scoped_ptr<spdy::SpdyFrame> body_authentication( |
| 2229 ConstructSpdyBodyFrame(1, true)); | 2229 ConstructSpdyBodyFrame(1, true)); |
| 2230 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); | 2230 scoped_ptr<spdy::SpdyFrame> resp_data(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 2231 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); | 2231 scoped_ptr<spdy::SpdyFrame> body_data(ConstructSpdyBodyFrame(3, true)); |
| 2232 MockRead spdy_reads[] = { | 2232 MockRead spdy_reads[] = { |
| 2233 CreateMockRead(*resp_authentication, 2), | 2233 CreateMockRead(*resp_authentication, 2), |
| 2234 CreateMockRead(*body_authentication, 3), | 2234 CreateMockRead(*body_authentication, 3), |
| 2235 CreateMockRead(*resp_data, 5), | 2235 CreateMockRead(*resp_data, 5), |
| 2236 CreateMockRead(*body_data, 6), | 2236 CreateMockRead(*body_data, 6), |
| 2237 MockRead(true, 0, 7), | 2237 MockRead(ASYNC, 0, 7), |
| 2238 }; | 2238 }; |
| 2239 | 2239 |
| 2240 scoped_ptr<OrderedSocketData> data( | 2240 scoped_ptr<OrderedSocketData> data( |
| 2241 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), | 2241 new OrderedSocketData(spdy_reads, arraysize(spdy_reads), |
| 2242 spdy_writes, arraysize(spdy_writes))); | 2242 spdy_writes, arraysize(spdy_writes))); |
| 2243 session_deps.socket_factory.AddSocketDataProvider(data.get()); | 2243 session_deps.socket_factory.AddSocketDataProvider(data.get()); |
| 2244 | 2244 |
| 2245 SSLSocketDataProvider ssl(true, OK); | 2245 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2246 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 2246 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 2247 ssl.next_proto = "spdy/2.1"; | 2247 ssl.next_proto = "spdy/2.1"; |
| 2248 ssl.was_npn_negotiated = true; | 2248 ssl.was_npn_negotiated = true; |
| 2249 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2249 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 2250 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2250 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2251 | 2251 |
| 2252 TestCompletionCallback callback1; | 2252 TestCompletionCallback callback1; |
| 2253 | 2253 |
| 2254 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2254 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 2255 | 2255 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2320 scoped_ptr<spdy::SpdyFrame> window_update( | 2320 scoped_ptr<spdy::SpdyFrame> window_update( |
| 2321 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length())); | 2321 ConstructSpdyWindowUpdate(1, wrapped_get_resp->length())); |
| 2322 | 2322 |
| 2323 MockWrite spdy_writes[] = { | 2323 MockWrite spdy_writes[] = { |
| 2324 CreateMockWrite(*connect, 1), | 2324 CreateMockWrite(*connect, 1), |
| 2325 CreateMockWrite(*wrapped_get, 3), | 2325 CreateMockWrite(*wrapped_get, 3), |
| 2326 CreateMockWrite(*window_update, 5) | 2326 CreateMockWrite(*window_update, 5) |
| 2327 }; | 2327 }; |
| 2328 | 2328 |
| 2329 MockRead spdy_reads[] = { | 2329 MockRead spdy_reads[] = { |
| 2330 CreateMockRead(*conn_resp, 2, true), | 2330 CreateMockRead(*conn_resp, 2, ASYNC), |
| 2331 CreateMockRead(*wrapped_get_resp, 4, true), | 2331 CreateMockRead(*wrapped_get_resp, 4, ASYNC), |
| 2332 CreateMockRead(*wrapped_body, 6, true), | 2332 CreateMockRead(*wrapped_body, 6, ASYNC), |
| 2333 CreateMockRead(*wrapped_body, 7, true), | 2333 CreateMockRead(*wrapped_body, 7, ASYNC), |
| 2334 MockRead(true, 0, 8), | 2334 MockRead(ASYNC, 0, 8), |
| 2335 }; | 2335 }; |
| 2336 | 2336 |
| 2337 scoped_ptr<OrderedSocketData> spdy_data( | 2337 scoped_ptr<OrderedSocketData> spdy_data( |
| 2338 new OrderedSocketData( | 2338 new OrderedSocketData( |
| 2339 spdy_reads, arraysize(spdy_reads), | 2339 spdy_reads, arraysize(spdy_reads), |
| 2340 spdy_writes, arraysize(spdy_writes))); | 2340 spdy_writes, arraysize(spdy_writes))); |
| 2341 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 2341 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 2342 | 2342 |
| 2343 SSLSocketDataProvider ssl(true, OK); | 2343 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2344 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 2344 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 2345 ssl.next_proto = "spdy/2.1"; | 2345 ssl.next_proto = "spdy/2.1"; |
| 2346 ssl.was_npn_negotiated = true; | 2346 ssl.was_npn_negotiated = true; |
| 2347 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2347 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 2348 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2348 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2349 SSLSocketDataProvider ssl2(true, OK); | 2349 SSLSocketDataProvider ssl2(ASYNC, OK); |
| 2350 ssl2.was_npn_negotiated = false; | 2350 ssl2.was_npn_negotiated = false; |
| 2351 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown; | 2351 ssl2.protocol_negotiated = SSLClientSocket::kProtoUnknown; |
| 2352 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 2352 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
| 2353 | 2353 |
| 2354 TestCompletionCallback callback1; | 2354 TestCompletionCallback callback1; |
| 2355 | 2355 |
| 2356 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2356 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 2357 EXPECT_EQ(ERR_IO_PENDING, rv); | 2357 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2358 | 2358 |
| 2359 rv = callback1.WaitForResult(); | 2359 rv = callback1.WaitForResult(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2403 ConstructSpdyWindowUpdate(1, wrapped_body->length())); | 2403 ConstructSpdyWindowUpdate(1, wrapped_body->length())); |
| 2404 | 2404 |
| 2405 MockWrite spdy_writes[] = { | 2405 MockWrite spdy_writes[] = { |
| 2406 CreateMockWrite(*connect, 1), | 2406 CreateMockWrite(*connect, 1), |
| 2407 CreateMockWrite(*wrapped_get, 3), | 2407 CreateMockWrite(*wrapped_get, 3), |
| 2408 CreateMockWrite(*window_update_get_resp, 5), | 2408 CreateMockWrite(*window_update_get_resp, 5), |
| 2409 CreateMockWrite(*window_update_body, 7), | 2409 CreateMockWrite(*window_update_body, 7), |
| 2410 }; | 2410 }; |
| 2411 | 2411 |
| 2412 MockRead spdy_reads[] = { | 2412 MockRead spdy_reads[] = { |
| 2413 CreateMockRead(*conn_resp, 2, true), | 2413 CreateMockRead(*conn_resp, 2, ASYNC), |
| 2414 CreateMockRead(*wrapped_get_resp, 4, true), | 2414 CreateMockRead(*wrapped_get_resp, 4, ASYNC), |
| 2415 CreateMockRead(*wrapped_body, 6, true), | 2415 CreateMockRead(*wrapped_body, 6, ASYNC), |
| 2416 MockRead(true, 0, 8), | 2416 MockRead(ASYNC, 0, 8), |
| 2417 }; | 2417 }; |
| 2418 | 2418 |
| 2419 scoped_ptr<OrderedSocketData> spdy_data( | 2419 scoped_ptr<OrderedSocketData> spdy_data( |
| 2420 new OrderedSocketData( | 2420 new OrderedSocketData( |
| 2421 spdy_reads, arraysize(spdy_reads), | 2421 spdy_reads, arraysize(spdy_reads), |
| 2422 spdy_writes, arraysize(spdy_writes))); | 2422 spdy_writes, arraysize(spdy_writes))); |
| 2423 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 2423 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 2424 | 2424 |
| 2425 SSLSocketDataProvider ssl(true, OK); | 2425 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2426 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 2426 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 2427 ssl.next_proto = "spdy/2.1"; | 2427 ssl.next_proto = "spdy/2.1"; |
| 2428 ssl.was_npn_negotiated = true; | 2428 ssl.was_npn_negotiated = true; |
| 2429 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2429 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 2430 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2430 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2431 SSLSocketDataProvider ssl2(true, OK); | 2431 SSLSocketDataProvider ssl2(ASYNC, OK); |
| 2432 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 2432 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 2433 ssl2.next_proto = "spdy/2.1"; | 2433 ssl2.next_proto = "spdy/2.1"; |
| 2434 ssl2.was_npn_negotiated = true; | 2434 ssl2.was_npn_negotiated = true; |
| 2435 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2435 ssl2.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 2436 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 2436 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
| 2437 | 2437 |
| 2438 TestCompletionCallback callback1; | 2438 TestCompletionCallback callback1; |
| 2439 | 2439 |
| 2440 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2440 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 2441 EXPECT_EQ(ERR_IO_PENDING, rv); | 2441 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2474 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL)); | 2474 scoped_ptr<spdy::SpdyFrame> get(ConstructSpdyRstStream(1, spdy::CANCEL)); |
| 2475 | 2475 |
| 2476 MockWrite spdy_writes[] = { | 2476 MockWrite spdy_writes[] = { |
| 2477 CreateMockWrite(*connect, 1), | 2477 CreateMockWrite(*connect, 1), |
| 2478 CreateMockWrite(*get, 3), | 2478 CreateMockWrite(*get, 3), |
| 2479 }; | 2479 }; |
| 2480 | 2480 |
| 2481 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1)); | 2481 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdySynReplyError(1)); |
| 2482 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 2482 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 2483 MockRead spdy_reads[] = { | 2483 MockRead spdy_reads[] = { |
| 2484 CreateMockRead(*resp, 2, true), | 2484 CreateMockRead(*resp, 2, ASYNC), |
| 2485 MockRead(true, 0, 4), | 2485 MockRead(ASYNC, 0, 4), |
| 2486 }; | 2486 }; |
| 2487 | 2487 |
| 2488 scoped_ptr<OrderedSocketData> spdy_data( | 2488 scoped_ptr<OrderedSocketData> spdy_data( |
| 2489 new OrderedSocketData( | 2489 new OrderedSocketData( |
| 2490 spdy_reads, arraysize(spdy_reads), | 2490 spdy_reads, arraysize(spdy_reads), |
| 2491 spdy_writes, arraysize(spdy_writes))); | 2491 spdy_writes, arraysize(spdy_writes))); |
| 2492 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 2492 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 2493 | 2493 |
| 2494 SSLSocketDataProvider ssl(true, OK); | 2494 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2495 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 2495 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 2496 ssl.next_proto = "spdy/2.1"; | 2496 ssl.next_proto = "spdy/2.1"; |
| 2497 ssl.was_npn_negotiated = true; | 2497 ssl.was_npn_negotiated = true; |
| 2498 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2498 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 2499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2499 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2500 SSLSocketDataProvider ssl2(true, OK); | 2500 SSLSocketDataProvider ssl2(ASYNC, OK); |
| 2501 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 2501 ssl2.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 2502 ssl2.next_proto = "spdy/2.1"; | 2502 ssl2.next_proto = "spdy/2.1"; |
| 2503 ssl2.was_npn_negotiated = true; | 2503 ssl2.was_npn_negotiated = true; |
| 2504 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 2504 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 2505 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 2505 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
| 2506 | 2506 |
| 2507 TestCompletionCallback callback1; | 2507 TestCompletionCallback callback1; |
| 2508 | 2508 |
| 2509 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2509 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 2510 EXPECT_EQ(ERR_IO_PENDING, rv); | 2510 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2551 MockRead data_reads1[] = { | 2551 MockRead data_reads1[] = { |
| 2552 // No credentials. | 2552 // No credentials. |
| 2553 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), | 2553 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), |
| 2554 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 2554 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 2555 MockRead("Proxy-Connection: keep-alive\r\n"), | 2555 MockRead("Proxy-Connection: keep-alive\r\n"), |
| 2556 MockRead("Content-Length: 0\r\n\r\n"), | 2556 MockRead("Content-Length: 0\r\n\r\n"), |
| 2557 | 2557 |
| 2558 MockRead("HTTP/1.1 200 OK\r\n"), | 2558 MockRead("HTTP/1.1 200 OK\r\n"), |
| 2559 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2559 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 2560 MockRead("Content-Length: 100\r\n\r\n"), | 2560 MockRead("Content-Length: 100\r\n\r\n"), |
| 2561 MockRead(false, OK), | 2561 MockRead(SYNCHRONOUS, OK), |
| 2562 }; | 2562 }; |
| 2563 | 2563 |
| 2564 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 2564 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 2565 data_writes1, arraysize(data_writes1)); | 2565 data_writes1, arraysize(data_writes1)); |
| 2566 session_deps.socket_factory.AddSocketDataProvider(&data1); | 2566 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 2567 SSLSocketDataProvider ssl(true, OK); | 2567 SSLSocketDataProvider ssl(ASYNC, OK); |
| 2568 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 2568 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 2569 | 2569 |
| 2570 TestCompletionCallback callback1; | 2570 TestCompletionCallback callback1; |
| 2571 | 2571 |
| 2572 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2572 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 2573 | 2573 |
| 2574 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 2574 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 2575 EXPECT_EQ(ERR_IO_PENDING, rv); | 2575 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 2576 | 2576 |
| 2577 rv = callback1.WaitForResult(); | 2577 rv = callback1.WaitForResult(); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2621 MockWrite data_writes[] = { | 2621 MockWrite data_writes[] = { |
| 2622 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 2622 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 2623 "Host: www.google.com\r\n" | 2623 "Host: www.google.com\r\n" |
| 2624 "Proxy-Connection: keep-alive\r\n\r\n"), | 2624 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 2625 }; | 2625 }; |
| 2626 | 2626 |
| 2627 MockRead data_reads[] = { | 2627 MockRead data_reads[] = { |
| 2628 status, | 2628 status, |
| 2629 MockRead("Content-Length: 10\r\n\r\n"), | 2629 MockRead("Content-Length: 10\r\n\r\n"), |
| 2630 // No response body because the test stops reading here. | 2630 // No response body because the test stops reading here. |
| 2631 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 2631 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
| 2632 }; | 2632 }; |
| 2633 | 2633 |
| 2634 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 2634 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 2635 data_writes, arraysize(data_writes)); | 2635 data_writes, arraysize(data_writes)); |
| 2636 session_deps.socket_factory.AddSocketDataProvider(&data); | 2636 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 2637 | 2637 |
| 2638 TestCompletionCallback callback; | 2638 TestCompletionCallback callback; |
| 2639 | 2639 |
| 2640 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 2640 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 2641 | 2641 |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2839 MockRead data_reads1[] = { | 2839 MockRead data_reads1[] = { |
| 2840 MockRead("HTTP/1.0 407 Unauthorized\r\n"), | 2840 MockRead("HTTP/1.0 407 Unauthorized\r\n"), |
| 2841 // Give a couple authenticate options (only the middle one is actually | 2841 // Give a couple authenticate options (only the middle one is actually |
| 2842 // supported). | 2842 // supported). |
| 2843 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed. | 2843 MockRead("Proxy-Authenticate: Basic invalid\r\n"), // Malformed. |
| 2844 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 2844 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 2845 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), | 2845 MockRead("Proxy-Authenticate: UNSUPPORTED realm=\"FOO\"\r\n"), |
| 2846 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2846 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 2847 // Large content-length -- won't matter, as connection will be reset. | 2847 // Large content-length -- won't matter, as connection will be reset. |
| 2848 MockRead("Content-Length: 10000\r\n\r\n"), | 2848 MockRead("Content-Length: 10000\r\n\r\n"), |
| 2849 MockRead(false, ERR_FAILED), | 2849 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 2850 }; | 2850 }; |
| 2851 | 2851 |
| 2852 // After calling trans->RestartWithAuth() the first time, this is the | 2852 // After calling trans->RestartWithAuth() the first time, this is the |
| 2853 // request we should be issuing -- the final header line contains the | 2853 // request we should be issuing -- the final header line contains the |
| 2854 // proxy's credentials. | 2854 // proxy's credentials. |
| 2855 MockWrite data_writes2[] = { | 2855 MockWrite data_writes2[] = { |
| 2856 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 2856 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
| 2857 "Host: www.google.com\r\n" | 2857 "Host: www.google.com\r\n" |
| 2858 "Proxy-Connection: keep-alive\r\n" | 2858 "Proxy-Connection: keep-alive\r\n" |
| 2859 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 2859 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 2860 }; | 2860 }; |
| 2861 | 2861 |
| 2862 // Now the proxy server lets the request pass through to origin server. | 2862 // Now the proxy server lets the request pass through to origin server. |
| 2863 // The origin server responds with a 401. | 2863 // The origin server responds with a 401. |
| 2864 MockRead data_reads2[] = { | 2864 MockRead data_reads2[] = { |
| 2865 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 2865 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 2866 // Note: We are using the same realm-name as the proxy server. This is | 2866 // Note: We are using the same realm-name as the proxy server. This is |
| 2867 // completely valid, as realms are unique across hosts. | 2867 // completely valid, as realms are unique across hosts. |
| 2868 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 2868 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 2869 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2869 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 2870 MockRead("Content-Length: 2000\r\n\r\n"), | 2870 MockRead("Content-Length: 2000\r\n\r\n"), |
| 2871 MockRead(false, ERR_FAILED), // Won't be reached. | 2871 MockRead(SYNCHRONOUS, ERR_FAILED), // Won't be reached. |
| 2872 }; | 2872 }; |
| 2873 | 2873 |
| 2874 // After calling trans->RestartWithAuth() the second time, we should send | 2874 // After calling trans->RestartWithAuth() the second time, we should send |
| 2875 // the credentials for both the proxy and origin server. | 2875 // the credentials for both the proxy and origin server. |
| 2876 MockWrite data_writes3[] = { | 2876 MockWrite data_writes3[] = { |
| 2877 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 2877 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
| 2878 "Host: www.google.com\r\n" | 2878 "Host: www.google.com\r\n" |
| 2879 "Proxy-Connection: keep-alive\r\n" | 2879 "Proxy-Connection: keep-alive\r\n" |
| 2880 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" | 2880 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n" |
| 2881 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), | 2881 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), |
| 2882 }; | 2882 }; |
| 2883 | 2883 |
| 2884 // Lastly we get the desired content. | 2884 // Lastly we get the desired content. |
| 2885 MockRead data_reads3[] = { | 2885 MockRead data_reads3[] = { |
| 2886 MockRead("HTTP/1.0 200 OK\r\n"), | 2886 MockRead("HTTP/1.0 200 OK\r\n"), |
| 2887 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 2887 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 2888 MockRead("Content-Length: 100\r\n\r\n"), | 2888 MockRead("Content-Length: 100\r\n\r\n"), |
| 2889 MockRead(false, OK), | 2889 MockRead(SYNCHRONOUS, OK), |
| 2890 }; | 2890 }; |
| 2891 | 2891 |
| 2892 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 2892 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 2893 data_writes1, arraysize(data_writes1)); | 2893 data_writes1, arraysize(data_writes1)); |
| 2894 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 2894 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 2895 data_writes2, arraysize(data_writes2)); | 2895 data_writes2, arraysize(data_writes2)); |
| 2896 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), | 2896 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
| 2897 data_writes3, arraysize(data_writes3)); | 2897 data_writes3, arraysize(data_writes3)); |
| 2898 session_deps.socket_factory.AddSocketDataProvider(&data1); | 2898 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 2899 session_deps.socket_factory.AddSocketDataProvider(&data2); | 2899 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2967 MockRead data_reads1[] = { | 2967 MockRead data_reads1[] = { |
| 2968 MockRead("HTTP/1.1 401 Access Denied\r\n"), | 2968 MockRead("HTTP/1.1 401 Access Denied\r\n"), |
| 2969 // Negotiate and NTLM are often requested together. However, we only want | 2969 // Negotiate and NTLM are often requested together. However, we only want |
| 2970 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip | 2970 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip |
| 2971 // the header that requests Negotiate for this test. | 2971 // the header that requests Negotiate for this test. |
| 2972 MockRead("WWW-Authenticate: NTLM\r\n"), | 2972 MockRead("WWW-Authenticate: NTLM\r\n"), |
| 2973 MockRead("Connection: close\r\n"), | 2973 MockRead("Connection: close\r\n"), |
| 2974 MockRead("Content-Length: 42\r\n"), | 2974 MockRead("Content-Length: 42\r\n"), |
| 2975 MockRead("Content-Type: text/html\r\n\r\n"), | 2975 MockRead("Content-Type: text/html\r\n\r\n"), |
| 2976 // Missing content -- won't matter, as connection will be reset. | 2976 // Missing content -- won't matter, as connection will be reset. |
| 2977 MockRead(false, ERR_UNEXPECTED), | 2977 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), |
| 2978 }; | 2978 }; |
| 2979 | 2979 |
| 2980 MockWrite data_writes2[] = { | 2980 MockWrite data_writes2[] = { |
| 2981 // After restarting with a null identity, this is the | 2981 // After restarting with a null identity, this is the |
| 2982 // request we should be issuing -- the final header line contains a Type | 2982 // request we should be issuing -- the final header line contains a Type |
| 2983 // 1 message. | 2983 // 1 message. |
| 2984 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" | 2984 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" |
| 2985 "Host: 172.22.68.17\r\n" | 2985 "Host: 172.22.68.17\r\n" |
| 2986 "Connection: keep-alive\r\n" | 2986 "Connection: keep-alive\r\n" |
| 2987 "Authorization: NTLM " | 2987 "Authorization: NTLM " |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 3013 "BtAAAAAAA=\r\n"), | 3013 "BtAAAAAAA=\r\n"), |
| 3014 MockRead("Content-Length: 42\r\n"), | 3014 MockRead("Content-Length: 42\r\n"), |
| 3015 MockRead("Content-Type: text/html\r\n\r\n"), | 3015 MockRead("Content-Type: text/html\r\n\r\n"), |
| 3016 MockRead("You are not authorized to view this page\r\n"), | 3016 MockRead("You are not authorized to view this page\r\n"), |
| 3017 | 3017 |
| 3018 // Lastly we get the desired content. | 3018 // Lastly we get the desired content. |
| 3019 MockRead("HTTP/1.1 200 OK\r\n"), | 3019 MockRead("HTTP/1.1 200 OK\r\n"), |
| 3020 MockRead("Content-Type: text/html; charset=utf-8\r\n"), | 3020 MockRead("Content-Type: text/html; charset=utf-8\r\n"), |
| 3021 MockRead("Content-Length: 13\r\n\r\n"), | 3021 MockRead("Content-Length: 13\r\n\r\n"), |
| 3022 MockRead("Please Login\r\n"), | 3022 MockRead("Please Login\r\n"), |
| 3023 MockRead(false, OK), | 3023 MockRead(SYNCHRONOUS, OK), |
| 3024 }; | 3024 }; |
| 3025 | 3025 |
| 3026 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3026 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3027 data_writes1, arraysize(data_writes1)); | 3027 data_writes1, arraysize(data_writes1)); |
| 3028 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3028 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3029 data_writes2, arraysize(data_writes2)); | 3029 data_writes2, arraysize(data_writes2)); |
| 3030 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3030 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3031 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3031 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 3032 | 3032 |
| 3033 TestCompletionCallback callback1; | 3033 TestCompletionCallback callback1; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3096 MockRead data_reads1[] = { | 3096 MockRead data_reads1[] = { |
| 3097 MockRead("HTTP/1.1 401 Access Denied\r\n"), | 3097 MockRead("HTTP/1.1 401 Access Denied\r\n"), |
| 3098 // Negotiate and NTLM are often requested together. However, we only want | 3098 // Negotiate and NTLM are often requested together. However, we only want |
| 3099 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip | 3099 // to test NTLM. Since Negotiate is preferred over NTLM, we have to skip |
| 3100 // the header that requests Negotiate for this test. | 3100 // the header that requests Negotiate for this test. |
| 3101 MockRead("WWW-Authenticate: NTLM\r\n"), | 3101 MockRead("WWW-Authenticate: NTLM\r\n"), |
| 3102 MockRead("Connection: close\r\n"), | 3102 MockRead("Connection: close\r\n"), |
| 3103 MockRead("Content-Length: 42\r\n"), | 3103 MockRead("Content-Length: 42\r\n"), |
| 3104 MockRead("Content-Type: text/html\r\n\r\n"), | 3104 MockRead("Content-Type: text/html\r\n\r\n"), |
| 3105 // Missing content -- won't matter, as connection will be reset. | 3105 // Missing content -- won't matter, as connection will be reset. |
| 3106 MockRead(false, ERR_UNEXPECTED), | 3106 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), |
| 3107 }; | 3107 }; |
| 3108 | 3108 |
| 3109 MockWrite data_writes2[] = { | 3109 MockWrite data_writes2[] = { |
| 3110 // After restarting with a null identity, this is the | 3110 // After restarting with a null identity, this is the |
| 3111 // request we should be issuing -- the final header line contains a Type | 3111 // request we should be issuing -- the final header line contains a Type |
| 3112 // 1 message. | 3112 // 1 message. |
| 3113 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" | 3113 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" |
| 3114 "Host: 172.22.68.17\r\n" | 3114 "Host: 172.22.68.17\r\n" |
| 3115 "Connection: keep-alive\r\n" | 3115 "Connection: keep-alive\r\n" |
| 3116 "Authorization: NTLM " | 3116 "Authorization: NTLM " |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 3144 MockRead("Content-Type: text/html\r\n\r\n"), | 3144 MockRead("Content-Type: text/html\r\n\r\n"), |
| 3145 MockRead("You are not authorized to view this page\r\n"), | 3145 MockRead("You are not authorized to view this page\r\n"), |
| 3146 | 3146 |
| 3147 // Wrong password. | 3147 // Wrong password. |
| 3148 MockRead("HTTP/1.1 401 Access Denied\r\n"), | 3148 MockRead("HTTP/1.1 401 Access Denied\r\n"), |
| 3149 MockRead("WWW-Authenticate: NTLM\r\n"), | 3149 MockRead("WWW-Authenticate: NTLM\r\n"), |
| 3150 MockRead("Connection: close\r\n"), | 3150 MockRead("Connection: close\r\n"), |
| 3151 MockRead("Content-Length: 42\r\n"), | 3151 MockRead("Content-Length: 42\r\n"), |
| 3152 MockRead("Content-Type: text/html\r\n\r\n"), | 3152 MockRead("Content-Type: text/html\r\n\r\n"), |
| 3153 // Missing content -- won't matter, as connection will be reset. | 3153 // Missing content -- won't matter, as connection will be reset. |
| 3154 MockRead(false, ERR_UNEXPECTED), | 3154 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), |
| 3155 }; | 3155 }; |
| 3156 | 3156 |
| 3157 MockWrite data_writes3[] = { | 3157 MockWrite data_writes3[] = { |
| 3158 // After restarting with a null identity, this is the | 3158 // After restarting with a null identity, this is the |
| 3159 // request we should be issuing -- the final header line contains a Type | 3159 // request we should be issuing -- the final header line contains a Type |
| 3160 // 1 message. | 3160 // 1 message. |
| 3161 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" | 3161 MockWrite("GET /kids/login.aspx HTTP/1.1\r\n" |
| 3162 "Host: 172.22.68.17\r\n" | 3162 "Host: 172.22.68.17\r\n" |
| 3163 "Connection: keep-alive\r\n" | 3163 "Connection: keep-alive\r\n" |
| 3164 "Authorization: NTLM " | 3164 "Authorization: NTLM " |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 3190 "BtAAAAAAA=\r\n"), | 3190 "BtAAAAAAA=\r\n"), |
| 3191 MockRead("Content-Length: 42\r\n"), | 3191 MockRead("Content-Length: 42\r\n"), |
| 3192 MockRead("Content-Type: text/html\r\n\r\n"), | 3192 MockRead("Content-Type: text/html\r\n\r\n"), |
| 3193 MockRead("You are not authorized to view this page\r\n"), | 3193 MockRead("You are not authorized to view this page\r\n"), |
| 3194 | 3194 |
| 3195 // Lastly we get the desired content. | 3195 // Lastly we get the desired content. |
| 3196 MockRead("HTTP/1.1 200 OK\r\n"), | 3196 MockRead("HTTP/1.1 200 OK\r\n"), |
| 3197 MockRead("Content-Type: text/html; charset=utf-8\r\n"), | 3197 MockRead("Content-Type: text/html; charset=utf-8\r\n"), |
| 3198 MockRead("Content-Length: 13\r\n\r\n"), | 3198 MockRead("Content-Length: 13\r\n\r\n"), |
| 3199 MockRead("Please Login\r\n"), | 3199 MockRead("Please Login\r\n"), |
| 3200 MockRead(false, OK), | 3200 MockRead(SYNCHRONOUS, OK), |
| 3201 }; | 3201 }; |
| 3202 | 3202 |
| 3203 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3203 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3204 data_writes1, arraysize(data_writes1)); | 3204 data_writes1, arraysize(data_writes1)); |
| 3205 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3205 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3206 data_writes2, arraysize(data_writes2)); | 3206 data_writes2, arraysize(data_writes2)); |
| 3207 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), | 3207 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
| 3208 data_writes3, arraysize(data_writes3)); | 3208 data_writes3, arraysize(data_writes3)); |
| 3209 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3209 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3210 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3210 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3287 SessionDependencies session_deps; | 3287 SessionDependencies session_deps; |
| 3288 scoped_ptr<HttpTransaction> trans( | 3288 scoped_ptr<HttpTransaction> trans( |
| 3289 new HttpNetworkTransaction(CreateSession(&session_deps))); | 3289 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 3290 | 3290 |
| 3291 // Respond with 300 kb of headers (we should fail after 256 kb). | 3291 // Respond with 300 kb of headers (we should fail after 256 kb). |
| 3292 std::string large_headers_string; | 3292 std::string large_headers_string; |
| 3293 FillLargeHeadersString(&large_headers_string, 300 * 1024); | 3293 FillLargeHeadersString(&large_headers_string, 300 * 1024); |
| 3294 | 3294 |
| 3295 MockRead data_reads[] = { | 3295 MockRead data_reads[] = { |
| 3296 MockRead("HTTP/1.0 200 OK\r\n"), | 3296 MockRead("HTTP/1.0 200 OK\r\n"), |
| 3297 MockRead(true, large_headers_string.data(), large_headers_string.size()), | 3297 MockRead(ASYNC, large_headers_string.data(), large_headers_string.size()), |
| 3298 MockRead("\r\nBODY"), | 3298 MockRead("\r\nBODY"), |
| 3299 MockRead(false, OK), | 3299 MockRead(SYNCHRONOUS, OK), |
| 3300 }; | 3300 }; |
| 3301 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 3301 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 3302 session_deps.socket_factory.AddSocketDataProvider(&data); | 3302 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 3303 | 3303 |
| 3304 TestCompletionCallback callback; | 3304 TestCompletionCallback callback; |
| 3305 | 3305 |
| 3306 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 3306 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 3307 EXPECT_EQ(ERR_IO_PENDING, rv); | 3307 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 3308 | 3308 |
| 3309 rv = callback.WaitForResult(); | 3309 rv = callback.WaitForResult(); |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 3335 "Host: www.google.com\r\n" | 3335 "Host: www.google.com\r\n" |
| 3336 "Proxy-Connection: keep-alive\r\n\r\n"), | 3336 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 3337 }; | 3337 }; |
| 3338 | 3338 |
| 3339 // The proxy responds to the connect with a 404, using a persistent | 3339 // The proxy responds to the connect with a 404, using a persistent |
| 3340 // connection. Usually a proxy would return 501 (not implemented), | 3340 // connection. Usually a proxy would return 501 (not implemented), |
| 3341 // or 200 (tunnel established). | 3341 // or 200 (tunnel established). |
| 3342 MockRead data_reads1[] = { | 3342 MockRead data_reads1[] = { |
| 3343 MockRead("HTTP/1.1 404 Not Found\r\n"), | 3343 MockRead("HTTP/1.1 404 Not Found\r\n"), |
| 3344 MockRead("Content-Length: 10\r\n\r\n"), | 3344 MockRead("Content-Length: 10\r\n\r\n"), |
| 3345 MockRead(false, ERR_UNEXPECTED), // Should not be reached. | 3345 MockRead(SYNCHRONOUS, ERR_UNEXPECTED), // Should not be reached. |
| 3346 }; | 3346 }; |
| 3347 | 3347 |
| 3348 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3348 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3349 data_writes1, arraysize(data_writes1)); | 3349 data_writes1, arraysize(data_writes1)); |
| 3350 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3350 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3351 | 3351 |
| 3352 TestCompletionCallback callback1; | 3352 TestCompletionCallback callback1; |
| 3353 | 3353 |
| 3354 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 3354 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
| 3355 EXPECT_EQ(ERR_IO_PENDING, rv); | 3355 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 3385 | 3385 |
| 3386 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 3386 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 3387 | 3387 |
| 3388 MockRead data_reads[] = { | 3388 MockRead data_reads[] = { |
| 3389 // A part of the response body is received with the response headers. | 3389 // A part of the response body is received with the response headers. |
| 3390 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"), | 3390 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\nhel"), |
| 3391 // The rest of the response body is received in two parts. | 3391 // The rest of the response body is received in two parts. |
| 3392 MockRead("lo"), | 3392 MockRead("lo"), |
| 3393 MockRead(" world"), | 3393 MockRead(" world"), |
| 3394 MockRead("junk"), // Should not be read!! | 3394 MockRead("junk"), // Should not be read!! |
| 3395 MockRead(false, OK), | 3395 MockRead(SYNCHRONOUS, OK), |
| 3396 }; | 3396 }; |
| 3397 | 3397 |
| 3398 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 3398 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 3399 session_deps.socket_factory.AddSocketDataProvider(&data); | 3399 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 3400 | 3400 |
| 3401 TestCompletionCallback callback; | 3401 TestCompletionCallback callback; |
| 3402 | 3402 |
| 3403 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 3403 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 3404 EXPECT_EQ(ERR_IO_PENDING, rv); | 3404 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 3405 | 3405 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3440 MockWrite data_writes[] = { | 3440 MockWrite data_writes[] = { |
| 3441 MockWrite("GET / HTTP/1.1\r\n" | 3441 MockWrite("GET / HTTP/1.1\r\n" |
| 3442 "Host: www.google.com\r\n" | 3442 "Host: www.google.com\r\n" |
| 3443 "Connection: keep-alive\r\n\r\n"), | 3443 "Connection: keep-alive\r\n\r\n"), |
| 3444 }; | 3444 }; |
| 3445 | 3445 |
| 3446 MockRead data_reads[] = { | 3446 MockRead data_reads[] = { |
| 3447 MockRead("HTTP/1.1 200 OK\r\n"), | 3447 MockRead("HTTP/1.1 200 OK\r\n"), |
| 3448 MockRead("Content-Length: 11\r\n\r\n"), | 3448 MockRead("Content-Length: 11\r\n\r\n"), |
| 3449 MockRead("hello world"), | 3449 MockRead("hello world"), |
| 3450 MockRead(false, OK), | 3450 MockRead(SYNCHRONOUS, OK), |
| 3451 }; | 3451 }; |
| 3452 | 3452 |
| 3453 SSLSocketDataProvider ssl(true, OK); | 3453 SSLSocketDataProvider ssl(ASYNC, OK); |
| 3454 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 3454 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 3455 | 3455 |
| 3456 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 3456 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 3457 data_writes, arraysize(data_writes)); | 3457 data_writes, arraysize(data_writes)); |
| 3458 session_deps.socket_factory.AddSocketDataProvider(&data); | 3458 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 3459 | 3459 |
| 3460 TestCompletionCallback callback; | 3460 TestCompletionCallback callback; |
| 3461 | 3461 |
| 3462 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 3462 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 3463 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 3463 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3501 "Host: www.google.com\r\n" | 3501 "Host: www.google.com\r\n" |
| 3502 "Connection: keep-alive\r\n\r\n"), | 3502 "Connection: keep-alive\r\n\r\n"), |
| 3503 MockWrite("GET / HTTP/1.1\r\n" | 3503 MockWrite("GET / HTTP/1.1\r\n" |
| 3504 "Host: www.google.com\r\n" | 3504 "Host: www.google.com\r\n" |
| 3505 "Connection: keep-alive\r\n\r\n"), | 3505 "Connection: keep-alive\r\n\r\n"), |
| 3506 }; | 3506 }; |
| 3507 | 3507 |
| 3508 MockRead data_reads[] = { | 3508 MockRead data_reads[] = { |
| 3509 MockRead("HTTP/1.1 200 OK\r\n"), | 3509 MockRead("HTTP/1.1 200 OK\r\n"), |
| 3510 MockRead("Content-Length: 11\r\n\r\n"), | 3510 MockRead("Content-Length: 11\r\n\r\n"), |
| 3511 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 3511 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 3512 MockRead("hello world"), | 3512 MockRead("hello world"), |
| 3513 MockRead(true, 0, 0) // EOF | 3513 MockRead(ASYNC, 0, 0) // EOF |
| 3514 }; | 3514 }; |
| 3515 | 3515 |
| 3516 SSLSocketDataProvider ssl(true, OK); | 3516 SSLSocketDataProvider ssl(ASYNC, OK); |
| 3517 SSLSocketDataProvider ssl2(true, OK); | 3517 SSLSocketDataProvider ssl2(ASYNC, OK); |
| 3518 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 3518 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 3519 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); | 3519 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl2); |
| 3520 | 3520 |
| 3521 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 3521 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 3522 data_writes, arraysize(data_writes)); | 3522 data_writes, arraysize(data_writes)); |
| 3523 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), | 3523 StaticSocketDataProvider data2(data_reads, arraysize(data_reads), |
| 3524 data_writes, arraysize(data_writes)); | 3524 data_writes, arraysize(data_writes)); |
| 3525 session_deps.socket_factory.AddSocketDataProvider(&data); | 3525 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 3526 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3526 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 3527 | 3527 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3596 SessionDependencies session_deps; | 3596 SessionDependencies session_deps; |
| 3597 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 3597 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 3598 | 3598 |
| 3599 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 3599 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 3600 | 3600 |
| 3601 MockRead data_reads[] = { | 3601 MockRead data_reads[] = { |
| 3602 MockRead("HTTP/1.1 204 No Content\r\n" | 3602 MockRead("HTTP/1.1 204 No Content\r\n" |
| 3603 "Content-Length: 0\r\n" | 3603 "Content-Length: 0\r\n" |
| 3604 "Content-Type: text/html\r\n\r\n"), | 3604 "Content-Type: text/html\r\n\r\n"), |
| 3605 MockRead("junk"), // Should not be read!! | 3605 MockRead("junk"), // Should not be read!! |
| 3606 MockRead(false, OK), | 3606 MockRead(SYNCHRONOUS, OK), |
| 3607 }; | 3607 }; |
| 3608 | 3608 |
| 3609 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 3609 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 3610 session_deps.socket_factory.AddSocketDataProvider(&data); | 3610 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 3611 | 3611 |
| 3612 TestCompletionCallback callback; | 3612 TestCompletionCallback callback; |
| 3613 | 3613 |
| 3614 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 3614 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 3615 EXPECT_EQ(ERR_IO_PENDING, rv); | 3615 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 3616 | 3616 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3659 SessionDependencies session_deps; | 3659 SessionDependencies session_deps; |
| 3660 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 3660 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 3661 | 3661 |
| 3662 // The first socket is used for transaction 1 and the first attempt of | 3662 // The first socket is used for transaction 1 and the first attempt of |
| 3663 // transaction 2. | 3663 // transaction 2. |
| 3664 | 3664 |
| 3665 // The response of transaction 1. | 3665 // The response of transaction 1. |
| 3666 MockRead data_reads1[] = { | 3666 MockRead data_reads1[] = { |
| 3667 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"), | 3667 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 11\r\n\r\n"), |
| 3668 MockRead("hello world"), | 3668 MockRead("hello world"), |
| 3669 MockRead(false, OK), | 3669 MockRead(SYNCHRONOUS, OK), |
| 3670 }; | 3670 }; |
| 3671 // The mock write results of transaction 1 and the first attempt of | 3671 // The mock write results of transaction 1 and the first attempt of |
| 3672 // transaction 2. | 3672 // transaction 2. |
| 3673 MockWrite data_writes1[] = { | 3673 MockWrite data_writes1[] = { |
| 3674 MockWrite(false, 64), // GET | 3674 MockWrite(SYNCHRONOUS, 64), // GET |
| 3675 MockWrite(false, 93), // POST | 3675 MockWrite(SYNCHRONOUS, 93), // POST |
| 3676 MockWrite(false, ERR_CONNECTION_ABORTED), // POST data | 3676 MockWrite(SYNCHRONOUS, ERR_CONNECTION_ABORTED), // POST data |
| 3677 }; | 3677 }; |
| 3678 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3678 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3679 data_writes1, arraysize(data_writes1)); | 3679 data_writes1, arraysize(data_writes1)); |
| 3680 | 3680 |
| 3681 // The second socket is used for the second attempt of transaction 2. | 3681 // The second socket is used for the second attempt of transaction 2. |
| 3682 | 3682 |
| 3683 // The response of transaction 2. | 3683 // The response of transaction 2. |
| 3684 MockRead data_reads2[] = { | 3684 MockRead data_reads2[] = { |
| 3685 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"), | 3685 MockRead("HTTP/1.1 200 OK\r\nContent-Length: 7\r\n\r\n"), |
| 3686 MockRead("welcome"), | 3686 MockRead("welcome"), |
| 3687 MockRead(false, OK), | 3687 MockRead(SYNCHRONOUS, OK), |
| 3688 }; | 3688 }; |
| 3689 // The mock write results of the second attempt of transaction 2. | 3689 // The mock write results of the second attempt of transaction 2. |
| 3690 MockWrite data_writes2[] = { | 3690 MockWrite data_writes2[] = { |
| 3691 MockWrite(false, 93), // POST | 3691 MockWrite(SYNCHRONOUS, 93), // POST |
| 3692 MockWrite(false, 3), // POST data | 3692 MockWrite(SYNCHRONOUS, 3), // POST data |
| 3693 }; | 3693 }; |
| 3694 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3694 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3695 data_writes2, arraysize(data_writes2)); | 3695 data_writes2, arraysize(data_writes2)); |
| 3696 | 3696 |
| 3697 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3697 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3698 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3698 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 3699 | 3699 |
| 3700 const char* kExpectedResponseData[] = { | 3700 const char* kExpectedResponseData[] = { |
| 3701 "hello world", "welcome" | 3701 "hello world", "welcome" |
| 3702 }; | 3702 }; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3746 MockWrite data_writes1[] = { | 3746 MockWrite data_writes1[] = { |
| 3747 MockWrite("GET / HTTP/1.1\r\n" | 3747 MockWrite("GET / HTTP/1.1\r\n" |
| 3748 "Host: www.google.com\r\n" | 3748 "Host: www.google.com\r\n" |
| 3749 "Connection: keep-alive\r\n\r\n"), | 3749 "Connection: keep-alive\r\n\r\n"), |
| 3750 }; | 3750 }; |
| 3751 | 3751 |
| 3752 MockRead data_reads1[] = { | 3752 MockRead data_reads1[] = { |
| 3753 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 3753 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 3754 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 3754 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 3755 MockRead("Content-Length: 10\r\n\r\n"), | 3755 MockRead("Content-Length: 10\r\n\r\n"), |
| 3756 MockRead(false, ERR_FAILED), | 3756 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 3757 }; | 3757 }; |
| 3758 | 3758 |
| 3759 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3759 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3760 data_writes1, arraysize(data_writes1)); | 3760 data_writes1, arraysize(data_writes1)); |
| 3761 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3761 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3762 | 3762 |
| 3763 TestCompletionCallback callback1; | 3763 TestCompletionCallback callback1; |
| 3764 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 3764 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
| 3765 EXPECT_EQ(ERR_IO_PENDING, rv); | 3765 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 3766 rv = callback1.WaitForResult(); | 3766 rv = callback1.WaitForResult(); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 3788 MockWrite data_writes1[] = { | 3788 MockWrite data_writes1[] = { |
| 3789 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 3789 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
| 3790 "Host: www.google.com\r\n" | 3790 "Host: www.google.com\r\n" |
| 3791 "Connection: keep-alive\r\n\r\n"), | 3791 "Connection: keep-alive\r\n\r\n"), |
| 3792 }; | 3792 }; |
| 3793 | 3793 |
| 3794 MockRead data_reads1[] = { | 3794 MockRead data_reads1[] = { |
| 3795 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 3795 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 3796 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 3796 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 3797 MockRead("Content-Length: 10000\r\n\r\n"), | 3797 MockRead("Content-Length: 10000\r\n\r\n"), |
| 3798 MockRead(false, ERR_FAILED), | 3798 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 3799 }; | 3799 }; |
| 3800 | 3800 |
| 3801 // Resend with authorization (username=foo, password=bar) | 3801 // Resend with authorization (username=foo, password=bar) |
| 3802 MockWrite data_writes2[] = { | 3802 MockWrite data_writes2[] = { |
| 3803 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 3803 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
| 3804 "Host: www.google.com\r\n" | 3804 "Host: www.google.com\r\n" |
| 3805 "Connection: keep-alive\r\n" | 3805 "Connection: keep-alive\r\n" |
| 3806 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 3806 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 3807 }; | 3807 }; |
| 3808 | 3808 |
| 3809 // Sever accepts the authorization. | 3809 // Sever accepts the authorization. |
| 3810 MockRead data_reads2[] = { | 3810 MockRead data_reads2[] = { |
| 3811 MockRead("HTTP/1.0 200 OK\r\n"), | 3811 MockRead("HTTP/1.0 200 OK\r\n"), |
| 3812 MockRead("Content-Length: 100\r\n\r\n"), | 3812 MockRead("Content-Length: 100\r\n\r\n"), |
| 3813 MockRead(false, OK), | 3813 MockRead(SYNCHRONOUS, OK), |
| 3814 }; | 3814 }; |
| 3815 | 3815 |
| 3816 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3816 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3817 data_writes1, arraysize(data_writes1)); | 3817 data_writes1, arraysize(data_writes1)); |
| 3818 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3818 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3819 data_writes2, arraysize(data_writes2)); | 3819 data_writes2, arraysize(data_writes2)); |
| 3820 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3820 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3821 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3821 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 3822 | 3822 |
| 3823 TestCompletionCallback callback1; | 3823 TestCompletionCallback callback1; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3867 // Send preemptive authorization for MyRealm1 | 3867 // Send preemptive authorization for MyRealm1 |
| 3868 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 3868 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 3869 }; | 3869 }; |
| 3870 | 3870 |
| 3871 // The server didn't like the preemptive authorization, and | 3871 // The server didn't like the preemptive authorization, and |
| 3872 // challenges us for a different realm (MyRealm2). | 3872 // challenges us for a different realm (MyRealm2). |
| 3873 MockRead data_reads1[] = { | 3873 MockRead data_reads1[] = { |
| 3874 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 3874 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 3875 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"), | 3875 MockRead("WWW-Authenticate: Basic realm=\"MyRealm2\"\r\n"), |
| 3876 MockRead("Content-Length: 10000\r\n\r\n"), | 3876 MockRead("Content-Length: 10000\r\n\r\n"), |
| 3877 MockRead(false, ERR_FAILED), | 3877 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 3878 }; | 3878 }; |
| 3879 | 3879 |
| 3880 // Resend with authorization for MyRealm2 (username=foo2, password=bar2) | 3880 // Resend with authorization for MyRealm2 (username=foo2, password=bar2) |
| 3881 MockWrite data_writes2[] = { | 3881 MockWrite data_writes2[] = { |
| 3882 MockWrite("GET /x/y/a/b HTTP/1.1\r\n" | 3882 MockWrite("GET /x/y/a/b HTTP/1.1\r\n" |
| 3883 "Host: www.google.com\r\n" | 3883 "Host: www.google.com\r\n" |
| 3884 "Connection: keep-alive\r\n" | 3884 "Connection: keep-alive\r\n" |
| 3885 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), | 3885 "Authorization: Basic Zm9vMjpiYXIy\r\n\r\n"), |
| 3886 }; | 3886 }; |
| 3887 | 3887 |
| 3888 // Sever accepts the authorization. | 3888 // Sever accepts the authorization. |
| 3889 MockRead data_reads2[] = { | 3889 MockRead data_reads2[] = { |
| 3890 MockRead("HTTP/1.0 200 OK\r\n"), | 3890 MockRead("HTTP/1.0 200 OK\r\n"), |
| 3891 MockRead("Content-Length: 100\r\n\r\n"), | 3891 MockRead("Content-Length: 100\r\n\r\n"), |
| 3892 MockRead(false, OK), | 3892 MockRead(SYNCHRONOUS, OK), |
| 3893 }; | 3893 }; |
| 3894 | 3894 |
| 3895 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3895 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3896 data_writes1, arraysize(data_writes1)); | 3896 data_writes1, arraysize(data_writes1)); |
| 3897 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 3897 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 3898 data_writes2, arraysize(data_writes2)); | 3898 data_writes2, arraysize(data_writes2)); |
| 3899 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3899 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3900 session_deps.socket_factory.AddSocketDataProvider(&data2); | 3900 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 3901 | 3901 |
| 3902 TestCompletionCallback callback1; | 3902 TestCompletionCallback callback1; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3949 "Connection: keep-alive\r\n" | 3949 "Connection: keep-alive\r\n" |
| 3950 // The authorization for MyRealm1 gets sent preemptively | 3950 // The authorization for MyRealm1 gets sent preemptively |
| 3951 // (since the url is in the same protection space) | 3951 // (since the url is in the same protection space) |
| 3952 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 3952 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 3953 }; | 3953 }; |
| 3954 | 3954 |
| 3955 // Sever accepts the preemptive authorization | 3955 // Sever accepts the preemptive authorization |
| 3956 MockRead data_reads1[] = { | 3956 MockRead data_reads1[] = { |
| 3957 MockRead("HTTP/1.0 200 OK\r\n"), | 3957 MockRead("HTTP/1.0 200 OK\r\n"), |
| 3958 MockRead("Content-Length: 100\r\n\r\n"), | 3958 MockRead("Content-Length: 100\r\n\r\n"), |
| 3959 MockRead(false, OK), | 3959 MockRead(SYNCHRONOUS, OK), |
| 3960 }; | 3960 }; |
| 3961 | 3961 |
| 3962 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 3962 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 3963 data_writes1, arraysize(data_writes1)); | 3963 data_writes1, arraysize(data_writes1)); |
| 3964 session_deps.socket_factory.AddSocketDataProvider(&data1); | 3964 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 3965 | 3965 |
| 3966 TestCompletionCallback callback1; | 3966 TestCompletionCallback callback1; |
| 3967 | 3967 |
| 3968 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 3968 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
| 3969 EXPECT_EQ(ERR_IO_PENDING, rv); | 3969 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 3993 MockWrite data_writes1[] = { | 3993 MockWrite data_writes1[] = { |
| 3994 MockWrite("GET /x/1 HTTP/1.1\r\n" | 3994 MockWrite("GET /x/1 HTTP/1.1\r\n" |
| 3995 "Host: www.google.com\r\n" | 3995 "Host: www.google.com\r\n" |
| 3996 "Connection: keep-alive\r\n\r\n"), | 3996 "Connection: keep-alive\r\n\r\n"), |
| 3997 }; | 3997 }; |
| 3998 | 3998 |
| 3999 MockRead data_reads1[] = { | 3999 MockRead data_reads1[] = { |
| 4000 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 4000 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 4001 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 4001 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 4002 MockRead("Content-Length: 10000\r\n\r\n"), | 4002 MockRead("Content-Length: 10000\r\n\r\n"), |
| 4003 MockRead(false, ERR_FAILED), | 4003 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 4004 }; | 4004 }; |
| 4005 | 4005 |
| 4006 // Resend with authorization from MyRealm's cache. | 4006 // Resend with authorization from MyRealm's cache. |
| 4007 MockWrite data_writes2[] = { | 4007 MockWrite data_writes2[] = { |
| 4008 MockWrite("GET /x/1 HTTP/1.1\r\n" | 4008 MockWrite("GET /x/1 HTTP/1.1\r\n" |
| 4009 "Host: www.google.com\r\n" | 4009 "Host: www.google.com\r\n" |
| 4010 "Connection: keep-alive\r\n" | 4010 "Connection: keep-alive\r\n" |
| 4011 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 4011 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 4012 }; | 4012 }; |
| 4013 | 4013 |
| 4014 // Sever accepts the authorization. | 4014 // Sever accepts the authorization. |
| 4015 MockRead data_reads2[] = { | 4015 MockRead data_reads2[] = { |
| 4016 MockRead("HTTP/1.0 200 OK\r\n"), | 4016 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4017 MockRead("Content-Length: 100\r\n\r\n"), | 4017 MockRead("Content-Length: 100\r\n\r\n"), |
| 4018 MockRead(false, OK), | 4018 MockRead(SYNCHRONOUS, OK), |
| 4019 }; | 4019 }; |
| 4020 | 4020 |
| 4021 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4021 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4022 data_writes1, arraysize(data_writes1)); | 4022 data_writes1, arraysize(data_writes1)); |
| 4023 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4023 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4024 data_writes2, arraysize(data_writes2)); | 4024 data_writes2, arraysize(data_writes2)); |
| 4025 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4025 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 4026 session_deps.socket_factory.AddSocketDataProvider(&data2); | 4026 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 4027 | 4027 |
| 4028 TestCompletionCallback callback1; | 4028 TestCompletionCallback callback1; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4062 MockWrite data_writes1[] = { | 4062 MockWrite data_writes1[] = { |
| 4063 MockWrite("GET /p/q/t HTTP/1.1\r\n" | 4063 MockWrite("GET /p/q/t HTTP/1.1\r\n" |
| 4064 "Host: www.google.com\r\n" | 4064 "Host: www.google.com\r\n" |
| 4065 "Connection: keep-alive\r\n\r\n"), | 4065 "Connection: keep-alive\r\n\r\n"), |
| 4066 }; | 4066 }; |
| 4067 | 4067 |
| 4068 MockRead data_reads1[] = { | 4068 MockRead data_reads1[] = { |
| 4069 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 4069 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 4070 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 4070 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 4071 MockRead("Content-Length: 10000\r\n\r\n"), | 4071 MockRead("Content-Length: 10000\r\n\r\n"), |
| 4072 MockRead(false, ERR_FAILED), | 4072 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 4073 }; | 4073 }; |
| 4074 | 4074 |
| 4075 // Resend with authorization from cache for MyRealm. | 4075 // Resend with authorization from cache for MyRealm. |
| 4076 MockWrite data_writes2[] = { | 4076 MockWrite data_writes2[] = { |
| 4077 MockWrite("GET /p/q/t HTTP/1.1\r\n" | 4077 MockWrite("GET /p/q/t HTTP/1.1\r\n" |
| 4078 "Host: www.google.com\r\n" | 4078 "Host: www.google.com\r\n" |
| 4079 "Connection: keep-alive\r\n" | 4079 "Connection: keep-alive\r\n" |
| 4080 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 4080 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 4081 }; | 4081 }; |
| 4082 | 4082 |
| 4083 // Sever rejects the authorization. | 4083 // Sever rejects the authorization. |
| 4084 MockRead data_reads2[] = { | 4084 MockRead data_reads2[] = { |
| 4085 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 4085 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 4086 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 4086 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 4087 MockRead("Content-Length: 10000\r\n\r\n"), | 4087 MockRead("Content-Length: 10000\r\n\r\n"), |
| 4088 MockRead(false, ERR_FAILED), | 4088 MockRead(SYNCHRONOUS, ERR_FAILED), |
| 4089 }; | 4089 }; |
| 4090 | 4090 |
| 4091 // At this point we should prompt for new credentials for MyRealm. | 4091 // At this point we should prompt for new credentials for MyRealm. |
| 4092 // Restart with username=foo3, password=foo4. | 4092 // Restart with username=foo3, password=foo4. |
| 4093 MockWrite data_writes3[] = { | 4093 MockWrite data_writes3[] = { |
| 4094 MockWrite("GET /p/q/t HTTP/1.1\r\n" | 4094 MockWrite("GET /p/q/t HTTP/1.1\r\n" |
| 4095 "Host: www.google.com\r\n" | 4095 "Host: www.google.com\r\n" |
| 4096 "Connection: keep-alive\r\n" | 4096 "Connection: keep-alive\r\n" |
| 4097 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"), | 4097 "Authorization: Basic Zm9vMzpiYXIz\r\n\r\n"), |
| 4098 }; | 4098 }; |
| 4099 | 4099 |
| 4100 // Sever accepts the authorization. | 4100 // Sever accepts the authorization. |
| 4101 MockRead data_reads3[] = { | 4101 MockRead data_reads3[] = { |
| 4102 MockRead("HTTP/1.0 200 OK\r\n"), | 4102 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4103 MockRead("Content-Length: 100\r\n\r\n"), | 4103 MockRead("Content-Length: 100\r\n\r\n"), |
| 4104 MockRead(false, OK), | 4104 MockRead(SYNCHRONOUS, OK), |
| 4105 }; | 4105 }; |
| 4106 | 4106 |
| 4107 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4107 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4108 data_writes1, arraysize(data_writes1)); | 4108 data_writes1, arraysize(data_writes1)); |
| 4109 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4109 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4110 data_writes2, arraysize(data_writes2)); | 4110 data_writes2, arraysize(data_writes2)); |
| 4111 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), | 4111 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
| 4112 data_writes3, arraysize(data_writes3)); | 4112 data_writes3, arraysize(data_writes3)); |
| 4113 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4113 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 4114 session_deps.socket_factory.AddSocketDataProvider(&data2); | 4114 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4174 MockWrite data_writes1[] = { | 4174 MockWrite data_writes1[] = { |
| 4175 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 4175 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
| 4176 "Host: www.google.com\r\n" | 4176 "Host: www.google.com\r\n" |
| 4177 "Connection: keep-alive\r\n\r\n"), | 4177 "Connection: keep-alive\r\n\r\n"), |
| 4178 }; | 4178 }; |
| 4179 | 4179 |
| 4180 MockRead data_reads1[] = { | 4180 MockRead data_reads1[] = { |
| 4181 MockRead("HTTP/1.0 401 Unauthorized\r\n"), | 4181 MockRead("HTTP/1.0 401 Unauthorized\r\n"), |
| 4182 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", " | 4182 MockRead("WWW-Authenticate: Digest realm=\"digestive\", nonce=\"OU812\", " |
| 4183 "algorithm=MD5, qop=\"auth\"\r\n\r\n"), | 4183 "algorithm=MD5, qop=\"auth\"\r\n\r\n"), |
| 4184 MockRead(false, OK), | 4184 MockRead(SYNCHRONOUS, OK), |
| 4185 }; | 4185 }; |
| 4186 | 4186 |
| 4187 // Resend with authorization (username=foo, password=bar) | 4187 // Resend with authorization (username=foo, password=bar) |
| 4188 MockWrite data_writes2[] = { | 4188 MockWrite data_writes2[] = { |
| 4189 MockWrite("GET /x/y/z HTTP/1.1\r\n" | 4189 MockWrite("GET /x/y/z HTTP/1.1\r\n" |
| 4190 "Host: www.google.com\r\n" | 4190 "Host: www.google.com\r\n" |
| 4191 "Connection: keep-alive\r\n" | 4191 "Connection: keep-alive\r\n" |
| 4192 "Authorization: Digest username=\"foo\", realm=\"digestive\", " | 4192 "Authorization: Digest username=\"foo\", realm=\"digestive\", " |
| 4193 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, " | 4193 "nonce=\"OU812\", uri=\"/x/y/z\", algorithm=MD5, " |
| 4194 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, " | 4194 "response=\"03ffbcd30add722589c1de345d7a927f\", qop=auth, " |
| 4195 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"), | 4195 "nc=00000001, cnonce=\"0123456789abcdef\"\r\n\r\n"), |
| 4196 }; | 4196 }; |
| 4197 | 4197 |
| 4198 // Sever accepts the authorization. | 4198 // Sever accepts the authorization. |
| 4199 MockRead data_reads2[] = { | 4199 MockRead data_reads2[] = { |
| 4200 MockRead("HTTP/1.0 200 OK\r\n"), | 4200 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4201 MockRead(false, OK), | 4201 MockRead(SYNCHRONOUS, OK), |
| 4202 }; | 4202 }; |
| 4203 | 4203 |
| 4204 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4204 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4205 data_writes1, arraysize(data_writes1)); | 4205 data_writes1, arraysize(data_writes1)); |
| 4206 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 4206 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4207 data_writes2, arraysize(data_writes2)); | 4207 data_writes2, arraysize(data_writes2)); |
| 4208 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4208 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 4209 session_deps.socket_factory.AddSocketDataProvider(&data2); | 4209 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 4210 | 4210 |
| 4211 TestCompletionCallback callback1; | 4211 TestCompletionCallback callback1; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4256 "Authorization: Digest username=\"foo\", realm=\"digestive\", " | 4256 "Authorization: Digest username=\"foo\", realm=\"digestive\", " |
| 4257 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, " | 4257 "nonce=\"OU812\", uri=\"/x/y/a/b\", algorithm=MD5, " |
| 4258 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, " | 4258 "response=\"d6f9a2c07d1c5df7b89379dca1269b35\", qop=auth, " |
| 4259 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"), | 4259 "nc=00000002, cnonce=\"0123456789abcdef\"\r\n\r\n"), |
| 4260 }; | 4260 }; |
| 4261 | 4261 |
| 4262 // Sever accepts the authorization. | 4262 // Sever accepts the authorization. |
| 4263 MockRead data_reads1[] = { | 4263 MockRead data_reads1[] = { |
| 4264 MockRead("HTTP/1.0 200 OK\r\n"), | 4264 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4265 MockRead("Content-Length: 100\r\n\r\n"), | 4265 MockRead("Content-Length: 100\r\n\r\n"), |
| 4266 MockRead(false, OK), | 4266 MockRead(SYNCHRONOUS, OK), |
| 4267 }; | 4267 }; |
| 4268 | 4268 |
| 4269 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 4269 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4270 data_writes1, arraysize(data_writes1)); | 4270 data_writes1, arraysize(data_writes1)); |
| 4271 session_deps.socket_factory.AddSocketDataProvider(&data1); | 4271 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 4272 | 4272 |
| 4273 TestCompletionCallback callback1; | 4273 TestCompletionCallback callback1; |
| 4274 | 4274 |
| 4275 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 4275 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
| 4276 EXPECT_EQ(ERR_IO_PENDING, rv); | 4276 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4341 MockWrite data_writes[] = { | 4341 MockWrite data_writes[] = { |
| 4342 MockWrite("GET / HTTP/1.1\r\n" | 4342 MockWrite("GET / HTTP/1.1\r\n" |
| 4343 "Host: www.google.com\r\n" | 4343 "Host: www.google.com\r\n" |
| 4344 "Connection: keep-alive\r\n\r\n"), | 4344 "Connection: keep-alive\r\n\r\n"), |
| 4345 }; | 4345 }; |
| 4346 | 4346 |
| 4347 MockRead data_reads[] = { | 4347 MockRead data_reads[] = { |
| 4348 MockRead("HTTP/1.0 200 OK\r\n"), | 4348 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4349 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4349 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 4350 MockRead("Content-Length: 100\r\n\r\n"), | 4350 MockRead("Content-Length: 100\r\n\r\n"), |
| 4351 MockRead(false, OK), | 4351 MockRead(SYNCHRONOUS, OK), |
| 4352 }; | 4352 }; |
| 4353 | 4353 |
| 4354 StaticSocketDataProvider ssl_bad_certificate; | 4354 StaticSocketDataProvider ssl_bad_certificate; |
| 4355 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4355 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4356 data_writes, arraysize(data_writes)); | 4356 data_writes, arraysize(data_writes)); |
| 4357 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); | 4357 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID); |
| 4358 SSLSocketDataProvider ssl(true, OK); | 4358 SSLSocketDataProvider ssl(ASYNC, OK); |
| 4359 | 4359 |
| 4360 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); | 4360 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); |
| 4361 session_deps.socket_factory.AddSocketDataProvider(&data); | 4361 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4362 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); | 4362 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); |
| 4363 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4363 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 4364 | 4364 |
| 4365 TestCompletionCallback callback; | 4365 TestCompletionCallback callback; |
| 4366 | 4366 |
| 4367 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4367 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 4368 EXPECT_EQ(ERR_IO_PENDING, rv); | 4368 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 4393 request.load_flags = 0; | 4393 request.load_flags = 0; |
| 4394 | 4394 |
| 4395 MockWrite proxy_writes[] = { | 4395 MockWrite proxy_writes[] = { |
| 4396 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4396 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 4397 "Host: www.google.com\r\n" | 4397 "Host: www.google.com\r\n" |
| 4398 "Proxy-Connection: keep-alive\r\n\r\n"), | 4398 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 4399 }; | 4399 }; |
| 4400 | 4400 |
| 4401 MockRead proxy_reads[] = { | 4401 MockRead proxy_reads[] = { |
| 4402 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4402 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
| 4403 MockRead(false, OK) | 4403 MockRead(SYNCHRONOUS, OK) |
| 4404 }; | 4404 }; |
| 4405 | 4405 |
| 4406 MockWrite data_writes[] = { | 4406 MockWrite data_writes[] = { |
| 4407 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4407 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 4408 "Host: www.google.com\r\n" | 4408 "Host: www.google.com\r\n" |
| 4409 "Proxy-Connection: keep-alive\r\n\r\n"), | 4409 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 4410 MockWrite("GET / HTTP/1.1\r\n" | 4410 MockWrite("GET / HTTP/1.1\r\n" |
| 4411 "Host: www.google.com\r\n" | 4411 "Host: www.google.com\r\n" |
| 4412 "Connection: keep-alive\r\n\r\n"), | 4412 "Connection: keep-alive\r\n\r\n"), |
| 4413 }; | 4413 }; |
| 4414 | 4414 |
| 4415 MockRead data_reads[] = { | 4415 MockRead data_reads[] = { |
| 4416 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4416 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
| 4417 MockRead("HTTP/1.0 200 OK\r\n"), | 4417 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4418 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4418 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 4419 MockRead("Content-Length: 100\r\n\r\n"), | 4419 MockRead("Content-Length: 100\r\n\r\n"), |
| 4420 MockRead(false, OK), | 4420 MockRead(SYNCHRONOUS, OK), |
| 4421 }; | 4421 }; |
| 4422 | 4422 |
| 4423 StaticSocketDataProvider ssl_bad_certificate( | 4423 StaticSocketDataProvider ssl_bad_certificate( |
| 4424 proxy_reads, arraysize(proxy_reads), | 4424 proxy_reads, arraysize(proxy_reads), |
| 4425 proxy_writes, arraysize(proxy_writes)); | 4425 proxy_writes, arraysize(proxy_writes)); |
| 4426 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4426 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4427 data_writes, arraysize(data_writes)); | 4427 data_writes, arraysize(data_writes)); |
| 4428 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); | 4428 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID); |
| 4429 SSLSocketDataProvider ssl(true, OK); | 4429 SSLSocketDataProvider ssl(ASYNC, OK); |
| 4430 | 4430 |
| 4431 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); | 4431 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); |
| 4432 session_deps.socket_factory.AddSocketDataProvider(&data); | 4432 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); | 4433 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); |
| 4434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4434 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 4435 | 4435 |
| 4436 TestCompletionCallback callback; | 4436 TestCompletionCallback callback; |
| 4437 | 4437 |
| 4438 for (int i = 0; i < 2; i++) { | 4438 for (int i = 0; i < 2; i++) { |
| 4439 session_deps.socket_factory.ResetNextMockIndexes(); | 4439 session_deps.socket_factory.ResetNextMockIndexes(); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4478 MockWrite("GET / HTTP/1.1\r\n" | 4478 MockWrite("GET / HTTP/1.1\r\n" |
| 4479 "Host: www.google.com\r\n" | 4479 "Host: www.google.com\r\n" |
| 4480 "Connection: keep-alive\r\n\r\n"), | 4480 "Connection: keep-alive\r\n\r\n"), |
| 4481 }; | 4481 }; |
| 4482 | 4482 |
| 4483 MockRead data_reads[] = { | 4483 MockRead data_reads[] = { |
| 4484 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4484 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
| 4485 MockRead("HTTP/1.1 200 OK\r\n"), | 4485 MockRead("HTTP/1.1 200 OK\r\n"), |
| 4486 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4486 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 4487 MockRead("Content-Length: 100\r\n\r\n"), | 4487 MockRead("Content-Length: 100\r\n\r\n"), |
| 4488 MockRead(false, OK), | 4488 MockRead(SYNCHRONOUS, OK), |
| 4489 }; | 4489 }; |
| 4490 | 4490 |
| 4491 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4491 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4492 data_writes, arraysize(data_writes)); | 4492 data_writes, arraysize(data_writes)); |
| 4493 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4493 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
| 4494 SSLSocketDataProvider tunnel_ssl(true, OK); // SSL through the tunnel | 4494 SSLSocketDataProvider tunnel_ssl(ASYNC, OK); // SSL through the tunnel |
| 4495 | 4495 |
| 4496 session_deps.socket_factory.AddSocketDataProvider(&data); | 4496 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4497 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4497 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
| 4498 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl); | 4498 session_deps.socket_factory.AddSSLSocketDataProvider(&tunnel_ssl); |
| 4499 | 4499 |
| 4500 TestCompletionCallback callback; | 4500 TestCompletionCallback callback; |
| 4501 | 4501 |
| 4502 scoped_ptr<HttpTransaction> trans( | 4502 scoped_ptr<HttpTransaction> trans( |
| 4503 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4503 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 4504 | 4504 |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 4530 MockWrite data_writes[] = { | 4530 MockWrite data_writes[] = { |
| 4531 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4531 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 4532 "Host: www.google.com\r\n" | 4532 "Host: www.google.com\r\n" |
| 4533 "Proxy-Connection: keep-alive\r\n\r\n"), | 4533 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 4534 }; | 4534 }; |
| 4535 | 4535 |
| 4536 MockRead data_reads[] = { | 4536 MockRead data_reads[] = { |
| 4537 MockRead("HTTP/1.1 302 Redirect\r\n"), | 4537 MockRead("HTTP/1.1 302 Redirect\r\n"), |
| 4538 MockRead("Location: http://login.example.com/\r\n"), | 4538 MockRead("Location: http://login.example.com/\r\n"), |
| 4539 MockRead("Content-Length: 0\r\n\r\n"), | 4539 MockRead("Content-Length: 0\r\n\r\n"), |
| 4540 MockRead(false, OK), | 4540 MockRead(SYNCHRONOUS, OK), |
| 4541 }; | 4541 }; |
| 4542 | 4542 |
| 4543 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4543 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4544 data_writes, arraysize(data_writes)); | 4544 data_writes, arraysize(data_writes)); |
| 4545 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4545 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
| 4546 | 4546 |
| 4547 session_deps.socket_factory.AddSocketDataProvider(&data); | 4547 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4548 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4548 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
| 4549 | 4549 |
| 4550 TestCompletionCallback callback; | 4550 TestCompletionCallback callback; |
| 4551 | 4551 |
| 4552 scoped_ptr<HttpTransaction> trans( | 4552 scoped_ptr<HttpTransaction> trans( |
| 4553 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4553 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 4554 | 4554 |
| 4555 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4555 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 4573 ProxyService::CreateFixed("https://proxy:70")); | 4573 ProxyService::CreateFixed("https://proxy:70")); |
| 4574 | 4574 |
| 4575 HttpRequestInfo request; | 4575 HttpRequestInfo request; |
| 4576 request.method = "GET"; | 4576 request.method = "GET"; |
| 4577 request.url = GURL("https://www.google.com/"); | 4577 request.url = GURL("https://www.google.com/"); |
| 4578 request.load_flags = 0; | 4578 request.load_flags = 0; |
| 4579 | 4579 |
| 4580 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); | 4580 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); |
| 4581 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); | 4581 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); |
| 4582 MockWrite data_writes[] = { | 4582 MockWrite data_writes[] = { |
| 4583 CreateMockWrite(*conn.get(), 0, false), | 4583 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS), |
| 4584 }; | 4584 }; |
| 4585 | 4585 |
| 4586 static const char* const kExtraHeaders[] = { | 4586 static const char* const kExtraHeaders[] = { |
| 4587 "location", | 4587 "location", |
| 4588 "http://login.example.com/", | 4588 "http://login.example.com/", |
| 4589 }; | 4589 }; |
| 4590 scoped_ptr<spdy::SpdyFrame> resp( | 4590 scoped_ptr<spdy::SpdyFrame> resp( |
| 4591 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, | 4591 ConstructSpdySynReplyError("302 Redirect", kExtraHeaders, |
| 4592 arraysize(kExtraHeaders)/2, 1)); | 4592 arraysize(kExtraHeaders)/2, 1)); |
| 4593 MockRead data_reads[] = { | 4593 MockRead data_reads[] = { |
| 4594 CreateMockRead(*resp.get(), 1, false), | 4594 CreateMockRead(*resp.get(), 1, SYNCHRONOUS), |
| 4595 MockRead(true, 0, 2), // EOF | 4595 MockRead(ASYNC, 0, 2), // EOF |
| 4596 }; | 4596 }; |
| 4597 | 4597 |
| 4598 scoped_ptr<DelayedSocketData> data( | 4598 scoped_ptr<DelayedSocketData> data( |
| 4599 new DelayedSocketData( | 4599 new DelayedSocketData( |
| 4600 1, // wait for one write to finish before reading. | 4600 1, // wait for one write to finish before reading. |
| 4601 data_reads, arraysize(data_reads), | 4601 data_reads, arraysize(data_reads), |
| 4602 data_writes, arraysize(data_writes))); | 4602 data_writes, arraysize(data_writes))); |
| 4603 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4603 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
| 4604 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 4604 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 4605 proxy_ssl.next_proto = "spdy/2.1"; | 4605 proxy_ssl.next_proto = "spdy/2.1"; |
| 4606 proxy_ssl.was_npn_negotiated = true; | 4606 proxy_ssl.was_npn_negotiated = true; |
| 4607 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 4607 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 4608 | 4608 |
| 4609 session_deps.socket_factory.AddSocketDataProvider(data.get()); | 4609 session_deps.socket_factory.AddSocketDataProvider(data.get()); |
| 4610 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4610 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
| 4611 | 4611 |
| 4612 TestCompletionCallback callback; | 4612 TestCompletionCallback callback; |
| 4613 | 4613 |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 4642 MockWrite data_writes[] = { | 4642 MockWrite data_writes[] = { |
| 4643 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4643 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 4644 "Host: www.google.com\r\n" | 4644 "Host: www.google.com\r\n" |
| 4645 "Proxy-Connection: keep-alive\r\n\r\n"), | 4645 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 4646 }; | 4646 }; |
| 4647 | 4647 |
| 4648 MockRead data_reads[] = { | 4648 MockRead data_reads[] = { |
| 4649 MockRead("HTTP/1.1 404 Not Found\r\n"), | 4649 MockRead("HTTP/1.1 404 Not Found\r\n"), |
| 4650 MockRead("Content-Length: 23\r\n\r\n"), | 4650 MockRead("Content-Length: 23\r\n\r\n"), |
| 4651 MockRead("The host does not exist"), | 4651 MockRead("The host does not exist"), |
| 4652 MockRead(false, OK), | 4652 MockRead(SYNCHRONOUS, OK), |
| 4653 }; | 4653 }; |
| 4654 | 4654 |
| 4655 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4655 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4656 data_writes, arraysize(data_writes)); | 4656 data_writes, arraysize(data_writes)); |
| 4657 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4657 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
| 4658 | 4658 |
| 4659 session_deps.socket_factory.AddSocketDataProvider(&data); | 4659 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4660 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4660 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
| 4661 | 4661 |
| 4662 TestCompletionCallback callback; | 4662 TestCompletionCallback callback; |
| 4663 | 4663 |
| 4664 scoped_ptr<HttpTransaction> trans( | 4664 scoped_ptr<HttpTransaction> trans( |
| 4665 new HttpNetworkTransaction(CreateSession(&session_deps))); | 4665 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 4666 | 4666 |
| 4667 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4667 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 4690 ProxyService::CreateFixed("https://proxy:70")); | 4690 ProxyService::CreateFixed("https://proxy:70")); |
| 4691 | 4691 |
| 4692 HttpRequestInfo request; | 4692 HttpRequestInfo request; |
| 4693 request.method = "GET"; | 4693 request.method = "GET"; |
| 4694 request.url = GURL("https://www.google.com/"); | 4694 request.url = GURL("https://www.google.com/"); |
| 4695 request.load_flags = 0; | 4695 request.load_flags = 0; |
| 4696 | 4696 |
| 4697 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); | 4697 scoped_ptr<spdy::SpdyFrame> conn(ConstructSpdyConnect(NULL, 0, 1)); |
| 4698 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); | 4698 scoped_ptr<spdy::SpdyFrame> goaway(ConstructSpdyRstStream(1, spdy::CANCEL)); |
| 4699 MockWrite data_writes[] = { | 4699 MockWrite data_writes[] = { |
| 4700 CreateMockWrite(*conn.get(), 0, false), | 4700 CreateMockWrite(*conn.get(), 0, SYNCHRONOUS), |
| 4701 }; | 4701 }; |
| 4702 | 4702 |
| 4703 static const char* const kExtraHeaders[] = { | 4703 static const char* const kExtraHeaders[] = { |
| 4704 "location", | 4704 "location", |
| 4705 "http://login.example.com/", | 4705 "http://login.example.com/", |
| 4706 }; | 4706 }; |
| 4707 scoped_ptr<spdy::SpdyFrame> resp( | 4707 scoped_ptr<spdy::SpdyFrame> resp( |
| 4708 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, | 4708 ConstructSpdySynReplyError("404 Not Found", kExtraHeaders, |
| 4709 arraysize(kExtraHeaders)/2, 1)); | 4709 arraysize(kExtraHeaders)/2, 1)); |
| 4710 scoped_ptr<spdy::SpdyFrame> body( | 4710 scoped_ptr<spdy::SpdyFrame> body( |
| 4711 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true)); | 4711 ConstructSpdyBodyFrame(1, "The host does not exist", 23, true)); |
| 4712 MockRead data_reads[] = { | 4712 MockRead data_reads[] = { |
| 4713 CreateMockRead(*resp.get(), 1, false), | 4713 CreateMockRead(*resp.get(), 1, SYNCHRONOUS), |
| 4714 CreateMockRead(*body.get(), 2, false), | 4714 CreateMockRead(*body.get(), 2, SYNCHRONOUS), |
| 4715 MockRead(true, 0, 3), // EOF | 4715 MockRead(ASYNC, 0, 3), // EOF |
| 4716 }; | 4716 }; |
| 4717 | 4717 |
| 4718 scoped_ptr<DelayedSocketData> data( | 4718 scoped_ptr<DelayedSocketData> data( |
| 4719 new DelayedSocketData( | 4719 new DelayedSocketData( |
| 4720 1, // wait for one write to finish before reading. | 4720 1, // wait for one write to finish before reading. |
| 4721 data_reads, arraysize(data_reads), | 4721 data_reads, arraysize(data_reads), |
| 4722 data_writes, arraysize(data_writes))); | 4722 data_writes, arraysize(data_writes))); |
| 4723 SSLSocketDataProvider proxy_ssl(true, OK); // SSL to the proxy | 4723 SSLSocketDataProvider proxy_ssl(ASYNC, OK); // SSL to the proxy |
| 4724 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 4724 proxy_ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 4725 proxy_ssl.next_proto = "spdy/2.1"; | 4725 proxy_ssl.next_proto = "spdy/2.1"; |
| 4726 proxy_ssl.was_npn_negotiated = true; | 4726 proxy_ssl.was_npn_negotiated = true; |
| 4727 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 4727 proxy_ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 4728 | 4728 |
| 4729 session_deps.socket_factory.AddSocketDataProvider(data.get()); | 4729 session_deps.socket_factory.AddSocketDataProvider(data.get()); |
| 4730 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); | 4730 session_deps.socket_factory.AddSSLSocketDataProvider(&proxy_ssl); |
| 4731 | 4731 |
| 4732 TestCompletionCallback callback; | 4732 TestCompletionCallback callback; |
| 4733 | 4733 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 4764 | 4764 |
| 4765 // Attempt to fetch the URL from a server with a bad cert | 4765 // Attempt to fetch the URL from a server with a bad cert |
| 4766 MockWrite bad_cert_writes[] = { | 4766 MockWrite bad_cert_writes[] = { |
| 4767 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4767 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 4768 "Host: www.google.com\r\n" | 4768 "Host: www.google.com\r\n" |
| 4769 "Proxy-Connection: keep-alive\r\n\r\n"), | 4769 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 4770 }; | 4770 }; |
| 4771 | 4771 |
| 4772 MockRead bad_cert_reads[] = { | 4772 MockRead bad_cert_reads[] = { |
| 4773 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4773 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
| 4774 MockRead(false, OK) | 4774 MockRead(SYNCHRONOUS, OK) |
| 4775 }; | 4775 }; |
| 4776 | 4776 |
| 4777 // Attempt to fetch the URL with a good cert | 4777 // Attempt to fetch the URL with a good cert |
| 4778 MockWrite good_data_writes[] = { | 4778 MockWrite good_data_writes[] = { |
| 4779 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 4779 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 4780 "Host: www.google.com\r\n" | 4780 "Host: www.google.com\r\n" |
| 4781 "Proxy-Connection: keep-alive\r\n\r\n"), | 4781 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 4782 MockWrite("GET / HTTP/1.1\r\n" | 4782 MockWrite("GET / HTTP/1.1\r\n" |
| 4783 "Host: www.google.com\r\n" | 4783 "Host: www.google.com\r\n" |
| 4784 "Connection: keep-alive\r\n\r\n"), | 4784 "Connection: keep-alive\r\n\r\n"), |
| 4785 }; | 4785 }; |
| 4786 | 4786 |
| 4787 MockRead good_cert_reads[] = { | 4787 MockRead good_cert_reads[] = { |
| 4788 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), | 4788 MockRead("HTTP/1.0 200 Connected\r\n\r\n"), |
| 4789 MockRead("HTTP/1.0 200 OK\r\n"), | 4789 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4790 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4790 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 4791 MockRead("Content-Length: 100\r\n\r\n"), | 4791 MockRead("Content-Length: 100\r\n\r\n"), |
| 4792 MockRead(false, OK), | 4792 MockRead(SYNCHRONOUS, OK), |
| 4793 }; | 4793 }; |
| 4794 | 4794 |
| 4795 StaticSocketDataProvider ssl_bad_certificate( | 4795 StaticSocketDataProvider ssl_bad_certificate( |
| 4796 bad_cert_reads, arraysize(bad_cert_reads), | 4796 bad_cert_reads, arraysize(bad_cert_reads), |
| 4797 bad_cert_writes, arraysize(bad_cert_writes)); | 4797 bad_cert_writes, arraysize(bad_cert_writes)); |
| 4798 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads), | 4798 StaticSocketDataProvider data(good_cert_reads, arraysize(good_cert_reads), |
| 4799 good_data_writes, arraysize(good_data_writes)); | 4799 good_data_writes, arraysize(good_data_writes)); |
| 4800 SSLSocketDataProvider ssl_bad(true, ERR_CERT_AUTHORITY_INVALID); | 4800 SSLSocketDataProvider ssl_bad(ASYNC, ERR_CERT_AUTHORITY_INVALID); |
| 4801 SSLSocketDataProvider ssl(true, OK); | 4801 SSLSocketDataProvider ssl(ASYNC, OK); |
| 4802 | 4802 |
| 4803 // SSL to the proxy, then CONNECT request, then SSL with bad certificate | 4803 // SSL to the proxy, then CONNECT request, then SSL with bad certificate |
| 4804 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4804 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 4805 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); | 4805 session_deps.socket_factory.AddSocketDataProvider(&ssl_bad_certificate); |
| 4806 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); | 4806 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_bad); |
| 4807 | 4807 |
| 4808 // SSL to the proxy, then CONNECT request, then valid SSL certificate | 4808 // SSL to the proxy, then CONNECT request, then valid SSL certificate |
| 4809 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4809 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 4810 session_deps.socket_factory.AddSocketDataProvider(&data); | 4810 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4811 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 4811 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4849 "Host: www.google.com\r\n" | 4849 "Host: www.google.com\r\n" |
| 4850 "Connection: keep-alive\r\n" | 4850 "Connection: keep-alive\r\n" |
| 4851 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"), | 4851 "User-Agent: Chromium Ultra Awesome X Edition\r\n\r\n"), |
| 4852 }; | 4852 }; |
| 4853 | 4853 |
| 4854 // Lastly, the server responds with the actual content. | 4854 // Lastly, the server responds with the actual content. |
| 4855 MockRead data_reads[] = { | 4855 MockRead data_reads[] = { |
| 4856 MockRead("HTTP/1.0 200 OK\r\n"), | 4856 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4857 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4857 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 4858 MockRead("Content-Length: 100\r\n\r\n"), | 4858 MockRead("Content-Length: 100\r\n\r\n"), |
| 4859 MockRead(false, OK), | 4859 MockRead(SYNCHRONOUS, OK), |
| 4860 }; | 4860 }; |
| 4861 | 4861 |
| 4862 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4862 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4863 data_writes, arraysize(data_writes)); | 4863 data_writes, arraysize(data_writes)); |
| 4864 session_deps.socket_factory.AddSocketDataProvider(&data); | 4864 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4865 | 4865 |
| 4866 TestCompletionCallback callback; | 4866 TestCompletionCallback callback; |
| 4867 | 4867 |
| 4868 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4868 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 4869 EXPECT_EQ(ERR_IO_PENDING, rv); | 4869 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4927 "Host: www.google.com\r\n" | 4927 "Host: www.google.com\r\n" |
| 4928 "Connection: keep-alive\r\n" | 4928 "Connection: keep-alive\r\n" |
| 4929 "Referer: http://the.previous.site.com/\r\n\r\n"), | 4929 "Referer: http://the.previous.site.com/\r\n\r\n"), |
| 4930 }; | 4930 }; |
| 4931 | 4931 |
| 4932 // Lastly, the server responds with the actual content. | 4932 // Lastly, the server responds with the actual content. |
| 4933 MockRead data_reads[] = { | 4933 MockRead data_reads[] = { |
| 4934 MockRead("HTTP/1.0 200 OK\r\n"), | 4934 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4935 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4935 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 4936 MockRead("Content-Length: 100\r\n\r\n"), | 4936 MockRead("Content-Length: 100\r\n\r\n"), |
| 4937 MockRead(false, OK), | 4937 MockRead(SYNCHRONOUS, OK), |
| 4938 }; | 4938 }; |
| 4939 | 4939 |
| 4940 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4940 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4941 data_writes, arraysize(data_writes)); | 4941 data_writes, arraysize(data_writes)); |
| 4942 session_deps.socket_factory.AddSocketDataProvider(&data); | 4942 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4943 | 4943 |
| 4944 TestCompletionCallback callback; | 4944 TestCompletionCallback callback; |
| 4945 | 4945 |
| 4946 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4946 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 4947 EXPECT_EQ(ERR_IO_PENDING, rv); | 4947 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 4964 "Host: www.google.com\r\n" | 4964 "Host: www.google.com\r\n" |
| 4965 "Connection: keep-alive\r\n" | 4965 "Connection: keep-alive\r\n" |
| 4966 "Content-Length: 0\r\n\r\n"), | 4966 "Content-Length: 0\r\n\r\n"), |
| 4967 }; | 4967 }; |
| 4968 | 4968 |
| 4969 // Lastly, the server responds with the actual content. | 4969 // Lastly, the server responds with the actual content. |
| 4970 MockRead data_reads[] = { | 4970 MockRead data_reads[] = { |
| 4971 MockRead("HTTP/1.0 200 OK\r\n"), | 4971 MockRead("HTTP/1.0 200 OK\r\n"), |
| 4972 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 4972 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 4973 MockRead("Content-Length: 100\r\n\r\n"), | 4973 MockRead("Content-Length: 100\r\n\r\n"), |
| 4974 MockRead(false, OK), | 4974 MockRead(SYNCHRONOUS, OK), |
| 4975 }; | 4975 }; |
| 4976 | 4976 |
| 4977 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 4977 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 4978 data_writes, arraysize(data_writes)); | 4978 data_writes, arraysize(data_writes)); |
| 4979 session_deps.socket_factory.AddSocketDataProvider(&data); | 4979 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 4980 | 4980 |
| 4981 TestCompletionCallback callback; | 4981 TestCompletionCallback callback; |
| 4982 | 4982 |
| 4983 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 4983 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 4984 EXPECT_EQ(ERR_IO_PENDING, rv); | 4984 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 5001 "Host: www.google.com\r\n" | 5001 "Host: www.google.com\r\n" |
| 5002 "Connection: keep-alive\r\n" | 5002 "Connection: keep-alive\r\n" |
| 5003 "Content-Length: 0\r\n\r\n"), | 5003 "Content-Length: 0\r\n\r\n"), |
| 5004 }; | 5004 }; |
| 5005 | 5005 |
| 5006 // Lastly, the server responds with the actual content. | 5006 // Lastly, the server responds with the actual content. |
| 5007 MockRead data_reads[] = { | 5007 MockRead data_reads[] = { |
| 5008 MockRead("HTTP/1.0 200 OK\r\n"), | 5008 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5009 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5009 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5010 MockRead("Content-Length: 100\r\n\r\n"), | 5010 MockRead("Content-Length: 100\r\n\r\n"), |
| 5011 MockRead(false, OK), | 5011 MockRead(SYNCHRONOUS, OK), |
| 5012 }; | 5012 }; |
| 5013 | 5013 |
| 5014 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5014 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5015 data_writes, arraysize(data_writes)); | 5015 data_writes, arraysize(data_writes)); |
| 5016 session_deps.socket_factory.AddSocketDataProvider(&data); | 5016 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5017 | 5017 |
| 5018 TestCompletionCallback callback; | 5018 TestCompletionCallback callback; |
| 5019 | 5019 |
| 5020 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5020 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5021 EXPECT_EQ(ERR_IO_PENDING, rv); | 5021 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 5038 "Host: www.google.com\r\n" | 5038 "Host: www.google.com\r\n" |
| 5039 "Connection: keep-alive\r\n" | 5039 "Connection: keep-alive\r\n" |
| 5040 "Content-Length: 0\r\n\r\n"), | 5040 "Content-Length: 0\r\n\r\n"), |
| 5041 }; | 5041 }; |
| 5042 | 5042 |
| 5043 // Lastly, the server responds with the actual content. | 5043 // Lastly, the server responds with the actual content. |
| 5044 MockRead data_reads[] = { | 5044 MockRead data_reads[] = { |
| 5045 MockRead("HTTP/1.0 200 OK\r\n"), | 5045 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5046 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5046 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5047 MockRead("Content-Length: 100\r\n\r\n"), | 5047 MockRead("Content-Length: 100\r\n\r\n"), |
| 5048 MockRead(false, OK), | 5048 MockRead(SYNCHRONOUS, OK), |
| 5049 }; | 5049 }; |
| 5050 | 5050 |
| 5051 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5051 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5052 data_writes, arraysize(data_writes)); | 5052 data_writes, arraysize(data_writes)); |
| 5053 session_deps.socket_factory.AddSocketDataProvider(&data); | 5053 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5054 | 5054 |
| 5055 TestCompletionCallback callback; | 5055 TestCompletionCallback callback; |
| 5056 | 5056 |
| 5057 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5057 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5058 EXPECT_EQ(ERR_IO_PENDING, rv); | 5058 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 5077 "Connection: keep-alive\r\n" | 5077 "Connection: keep-alive\r\n" |
| 5078 "Pragma: no-cache\r\n" | 5078 "Pragma: no-cache\r\n" |
| 5079 "Cache-Control: no-cache\r\n\r\n"), | 5079 "Cache-Control: no-cache\r\n\r\n"), |
| 5080 }; | 5080 }; |
| 5081 | 5081 |
| 5082 // Lastly, the server responds with the actual content. | 5082 // Lastly, the server responds with the actual content. |
| 5083 MockRead data_reads[] = { | 5083 MockRead data_reads[] = { |
| 5084 MockRead("HTTP/1.0 200 OK\r\n"), | 5084 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5085 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5085 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5086 MockRead("Content-Length: 100\r\n\r\n"), | 5086 MockRead("Content-Length: 100\r\n\r\n"), |
| 5087 MockRead(false, OK), | 5087 MockRead(SYNCHRONOUS, OK), |
| 5088 }; | 5088 }; |
| 5089 | 5089 |
| 5090 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5090 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5091 data_writes, arraysize(data_writes)); | 5091 data_writes, arraysize(data_writes)); |
| 5092 session_deps.socket_factory.AddSocketDataProvider(&data); | 5092 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5093 | 5093 |
| 5094 TestCompletionCallback callback; | 5094 TestCompletionCallback callback; |
| 5095 | 5095 |
| 5096 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5096 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5097 EXPECT_EQ(ERR_IO_PENDING, rv); | 5097 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 5116 "Host: www.google.com\r\n" | 5116 "Host: www.google.com\r\n" |
| 5117 "Connection: keep-alive\r\n" | 5117 "Connection: keep-alive\r\n" |
| 5118 "Cache-Control: max-age=0\r\n\r\n"), | 5118 "Cache-Control: max-age=0\r\n\r\n"), |
| 5119 }; | 5119 }; |
| 5120 | 5120 |
| 5121 // Lastly, the server responds with the actual content. | 5121 // Lastly, the server responds with the actual content. |
| 5122 MockRead data_reads[] = { | 5122 MockRead data_reads[] = { |
| 5123 MockRead("HTTP/1.0 200 OK\r\n"), | 5123 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5124 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5124 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5125 MockRead("Content-Length: 100\r\n\r\n"), | 5125 MockRead("Content-Length: 100\r\n\r\n"), |
| 5126 MockRead(false, OK), | 5126 MockRead(SYNCHRONOUS, OK), |
| 5127 }; | 5127 }; |
| 5128 | 5128 |
| 5129 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5129 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5130 data_writes, arraysize(data_writes)); | 5130 data_writes, arraysize(data_writes)); |
| 5131 session_deps.socket_factory.AddSocketDataProvider(&data); | 5131 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5132 | 5132 |
| 5133 TestCompletionCallback callback; | 5133 TestCompletionCallback callback; |
| 5134 | 5134 |
| 5135 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5135 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5136 EXPECT_EQ(ERR_IO_PENDING, rv); | 5136 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 5154 "Host: www.google.com\r\n" | 5154 "Host: www.google.com\r\n" |
| 5155 "Connection: keep-alive\r\n" | 5155 "Connection: keep-alive\r\n" |
| 5156 "FooHeader: Bar\r\n\r\n"), | 5156 "FooHeader: Bar\r\n\r\n"), |
| 5157 }; | 5157 }; |
| 5158 | 5158 |
| 5159 // Lastly, the server responds with the actual content. | 5159 // Lastly, the server responds with the actual content. |
| 5160 MockRead data_reads[] = { | 5160 MockRead data_reads[] = { |
| 5161 MockRead("HTTP/1.0 200 OK\r\n"), | 5161 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5162 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5162 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5163 MockRead("Content-Length: 100\r\n\r\n"), | 5163 MockRead("Content-Length: 100\r\n\r\n"), |
| 5164 MockRead(false, OK), | 5164 MockRead(SYNCHRONOUS, OK), |
| 5165 }; | 5165 }; |
| 5166 | 5166 |
| 5167 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5167 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5168 data_writes, arraysize(data_writes)); | 5168 data_writes, arraysize(data_writes)); |
| 5169 session_deps.socket_factory.AddSocketDataProvider(&data); | 5169 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5170 | 5170 |
| 5171 TestCompletionCallback callback; | 5171 TestCompletionCallback callback; |
| 5172 | 5172 |
| 5173 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5173 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5174 EXPECT_EQ(ERR_IO_PENDING, rv); | 5174 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 5196 "referer: www.foo.com\r\n" | 5196 "referer: www.foo.com\r\n" |
| 5197 "hEllo: Kitty\r\n" | 5197 "hEllo: Kitty\r\n" |
| 5198 "FoO: bar\r\n\r\n"), | 5198 "FoO: bar\r\n\r\n"), |
| 5199 }; | 5199 }; |
| 5200 | 5200 |
| 5201 // Lastly, the server responds with the actual content. | 5201 // Lastly, the server responds with the actual content. |
| 5202 MockRead data_reads[] = { | 5202 MockRead data_reads[] = { |
| 5203 MockRead("HTTP/1.0 200 OK\r\n"), | 5203 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5204 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5204 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5205 MockRead("Content-Length: 100\r\n\r\n"), | 5205 MockRead("Content-Length: 100\r\n\r\n"), |
| 5206 MockRead(false, OK), | 5206 MockRead(SYNCHRONOUS, OK), |
| 5207 }; | 5207 }; |
| 5208 | 5208 |
| 5209 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5209 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5210 data_writes, arraysize(data_writes)); | 5210 data_writes, arraysize(data_writes)); |
| 5211 session_deps.socket_factory.AddSocketDataProvider(&data); | 5211 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5212 | 5212 |
| 5213 TestCompletionCallback callback; | 5213 TestCompletionCallback callback; |
| 5214 | 5214 |
| 5215 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5215 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5216 EXPECT_EQ(ERR_IO_PENDING, rv); | 5216 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 5235 SessionDependencies session_deps( | 5235 SessionDependencies session_deps( |
| 5236 ProxyService::CreateFixed("socks4://myproxy:1080")); | 5236 ProxyService::CreateFixed("socks4://myproxy:1080")); |
| 5237 | 5237 |
| 5238 scoped_ptr<HttpTransaction> trans( | 5238 scoped_ptr<HttpTransaction> trans( |
| 5239 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5239 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 5240 | 5240 |
| 5241 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; | 5241 char write_buffer[] = { 0x04, 0x01, 0x00, 0x50, 127, 0, 0, 1, 0 }; |
| 5242 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; | 5242 char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; |
| 5243 | 5243 |
| 5244 MockWrite data_writes[] = { | 5244 MockWrite data_writes[] = { |
| 5245 MockWrite(true, write_buffer, arraysize(write_buffer)), | 5245 MockWrite(ASYNC, write_buffer, arraysize(write_buffer)), |
| 5246 MockWrite("GET / HTTP/1.1\r\n" | 5246 MockWrite("GET / HTTP/1.1\r\n" |
| 5247 "Host: www.google.com\r\n" | 5247 "Host: www.google.com\r\n" |
| 5248 "Connection: keep-alive\r\n\r\n") | 5248 "Connection: keep-alive\r\n\r\n") |
| 5249 }; | 5249 }; |
| 5250 | 5250 |
| 5251 MockRead data_reads[] = { | 5251 MockRead data_reads[] = { |
| 5252 MockRead(true, read_buffer, arraysize(read_buffer)), | 5252 MockRead(ASYNC, read_buffer, arraysize(read_buffer)), |
| 5253 MockRead("HTTP/1.0 200 OK\r\n"), | 5253 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5254 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5254 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
| 5255 MockRead("Payload"), | 5255 MockRead("Payload"), |
| 5256 MockRead(false, OK) | 5256 MockRead(SYNCHRONOUS, OK) |
| 5257 }; | 5257 }; |
| 5258 | 5258 |
| 5259 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5259 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5260 data_writes, arraysize(data_writes)); | 5260 data_writes, arraysize(data_writes)); |
| 5261 session_deps.socket_factory.AddSocketDataProvider(&data); | 5261 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5262 | 5262 |
| 5263 TestCompletionCallback callback; | 5263 TestCompletionCallback callback; |
| 5264 | 5264 |
| 5265 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5265 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5266 EXPECT_EQ(ERR_IO_PENDING, rv); | 5266 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 5293 SessionDependencies session_deps( | 5293 SessionDependencies session_deps( |
| 5294 ProxyService::CreateFixed("socks4://myproxy:1080")); | 5294 ProxyService::CreateFixed("socks4://myproxy:1080")); |
| 5295 | 5295 |
| 5296 scoped_ptr<HttpTransaction> trans( | 5296 scoped_ptr<HttpTransaction> trans( |
| 5297 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5297 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 5298 | 5298 |
| 5299 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; | 5299 unsigned char write_buffer[] = { 0x04, 0x01, 0x01, 0xBB, 127, 0, 0, 1, 0 }; |
| 5300 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; | 5300 unsigned char read_buffer[] = { 0x00, 0x5A, 0x00, 0x00, 0, 0, 0, 0 }; |
| 5301 | 5301 |
| 5302 MockWrite data_writes[] = { | 5302 MockWrite data_writes[] = { |
| 5303 MockWrite(true, reinterpret_cast<char*>(write_buffer), | 5303 MockWrite(ASYNC, reinterpret_cast<char*>(write_buffer), |
| 5304 arraysize(write_buffer)), | 5304 arraysize(write_buffer)), |
| 5305 MockWrite("GET / HTTP/1.1\r\n" | 5305 MockWrite("GET / HTTP/1.1\r\n" |
| 5306 "Host: www.google.com\r\n" | 5306 "Host: www.google.com\r\n" |
| 5307 "Connection: keep-alive\r\n\r\n") | 5307 "Connection: keep-alive\r\n\r\n") |
| 5308 }; | 5308 }; |
| 5309 | 5309 |
| 5310 MockRead data_reads[] = { | 5310 MockRead data_reads[] = { |
| 5311 MockWrite(true, reinterpret_cast<char*>(read_buffer), | 5311 MockWrite(ASYNC, reinterpret_cast<char*>(read_buffer), |
| 5312 arraysize(read_buffer)), | 5312 arraysize(read_buffer)), |
| 5313 MockRead("HTTP/1.0 200 OK\r\n"), | 5313 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5314 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5314 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
| 5315 MockRead("Payload"), | 5315 MockRead("Payload"), |
| 5316 MockRead(false, OK) | 5316 MockRead(SYNCHRONOUS, OK) |
| 5317 }; | 5317 }; |
| 5318 | 5318 |
| 5319 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5319 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5320 data_writes, arraysize(data_writes)); | 5320 data_writes, arraysize(data_writes)); |
| 5321 session_deps.socket_factory.AddSocketDataProvider(&data); | 5321 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5322 | 5322 |
| 5323 SSLSocketDataProvider ssl(true, OK); | 5323 SSLSocketDataProvider ssl(ASYNC, OK); |
| 5324 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5324 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 5325 | 5325 |
| 5326 TestCompletionCallback callback; | 5326 TestCompletionCallback callback; |
| 5327 | 5327 |
| 5328 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5328 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5329 EXPECT_EQ(ERR_IO_PENDING, rv); | 5329 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 5330 | 5330 |
| 5331 rv = callback.WaitForResult(); | 5331 rv = callback.WaitForResult(); |
| 5332 EXPECT_EQ(OK, rv); | 5332 EXPECT_EQ(OK, rv); |
| 5333 | 5333 |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 5361 0x03, // Address type (DOMAINNAME). | 5361 0x03, // Address type (DOMAINNAME). |
| 5362 0x0E, // Length of domain (14) | 5362 0x0E, // Length of domain (14) |
| 5363 // Domain string: | 5363 // Domain string: |
| 5364 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', | 5364 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', |
| 5365 0x00, 0x50, // 16-bit port (80) | 5365 0x00, 0x50, // 16-bit port (80) |
| 5366 }; | 5366 }; |
| 5367 const char kSOCKS5OkResponse[] = | 5367 const char kSOCKS5OkResponse[] = |
| 5368 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; | 5368 { 0x05, 0x00, 0x00, 0x01, 127, 0, 0, 1, 0x00, 0x50 }; |
| 5369 | 5369 |
| 5370 MockWrite data_writes[] = { | 5370 MockWrite data_writes[] = { |
| 5371 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), | 5371 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), |
| 5372 MockWrite(true, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), | 5372 MockWrite(ASYNC, kSOCKS5OkRequest, arraysize(kSOCKS5OkRequest)), |
| 5373 MockWrite("GET / HTTP/1.1\r\n" | 5373 MockWrite("GET / HTTP/1.1\r\n" |
| 5374 "Host: www.google.com\r\n" | 5374 "Host: www.google.com\r\n" |
| 5375 "Connection: keep-alive\r\n\r\n") | 5375 "Connection: keep-alive\r\n\r\n") |
| 5376 }; | 5376 }; |
| 5377 | 5377 |
| 5378 MockRead data_reads[] = { | 5378 MockRead data_reads[] = { |
| 5379 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), | 5379 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), |
| 5380 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), | 5380 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), |
| 5381 MockRead("HTTP/1.0 200 OK\r\n"), | 5381 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5382 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5382 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
| 5383 MockRead("Payload"), | 5383 MockRead("Payload"), |
| 5384 MockRead(false, OK) | 5384 MockRead(SYNCHRONOUS, OK) |
| 5385 }; | 5385 }; |
| 5386 | 5386 |
| 5387 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5387 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5388 data_writes, arraysize(data_writes)); | 5388 data_writes, arraysize(data_writes)); |
| 5389 session_deps.socket_factory.AddSocketDataProvider(&data); | 5389 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5390 | 5390 |
| 5391 TestCompletionCallback callback; | 5391 TestCompletionCallback callback; |
| 5392 | 5392 |
| 5393 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5393 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5394 EXPECT_EQ(ERR_IO_PENDING, rv); | 5394 EXPECT_EQ(ERR_IO_PENDING, rv); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5427 0x0E, // Length of domain (14) | 5427 0x0E, // Length of domain (14) |
| 5428 // Domain string: | 5428 // Domain string: |
| 5429 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', | 5429 'w', 'w', 'w', '.', 'g', 'o', 'o', 'g', 'l', 'e', '.', 'c', 'o', 'm', |
| 5430 0x01, 0xBB, // 16-bit port (443) | 5430 0x01, 0xBB, // 16-bit port (443) |
| 5431 }; | 5431 }; |
| 5432 | 5432 |
| 5433 const char kSOCKS5OkResponse[] = | 5433 const char kSOCKS5OkResponse[] = |
| 5434 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; | 5434 { 0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0x00, 0x00 }; |
| 5435 | 5435 |
| 5436 MockWrite data_writes[] = { | 5436 MockWrite data_writes[] = { |
| 5437 MockWrite(true, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), | 5437 MockWrite(ASYNC, kSOCKS5GreetRequest, arraysize(kSOCKS5GreetRequest)), |
| 5438 MockWrite(true, reinterpret_cast<const char*>(kSOCKS5OkRequest), | 5438 MockWrite(ASYNC, reinterpret_cast<const char*>(kSOCKS5OkRequest), |
| 5439 arraysize(kSOCKS5OkRequest)), | 5439 arraysize(kSOCKS5OkRequest)), |
| 5440 MockWrite("GET / HTTP/1.1\r\n" | 5440 MockWrite("GET / HTTP/1.1\r\n" |
| 5441 "Host: www.google.com\r\n" | 5441 "Host: www.google.com\r\n" |
| 5442 "Connection: keep-alive\r\n\r\n") | 5442 "Connection: keep-alive\r\n\r\n") |
| 5443 }; | 5443 }; |
| 5444 | 5444 |
| 5445 MockRead data_reads[] = { | 5445 MockRead data_reads[] = { |
| 5446 MockWrite(true, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), | 5446 MockWrite(ASYNC, kSOCKS5GreetResponse, arraysize(kSOCKS5GreetResponse)), |
| 5447 MockWrite(true, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), | 5447 MockWrite(ASYNC, kSOCKS5OkResponse, arraysize(kSOCKS5OkResponse)), |
| 5448 MockRead("HTTP/1.0 200 OK\r\n"), | 5448 MockRead("HTTP/1.0 200 OK\r\n"), |
| 5449 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), | 5449 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n\r\n"), |
| 5450 MockRead("Payload"), | 5450 MockRead("Payload"), |
| 5451 MockRead(false, OK) | 5451 MockRead(SYNCHRONOUS, OK) |
| 5452 }; | 5452 }; |
| 5453 | 5453 |
| 5454 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 5454 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 5455 data_writes, arraysize(data_writes)); | 5455 data_writes, arraysize(data_writes)); |
| 5456 session_deps.socket_factory.AddSocketDataProvider(&data); | 5456 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5457 | 5457 |
| 5458 SSLSocketDataProvider ssl(true, OK); | 5458 SSLSocketDataProvider ssl(ASYNC, OK); |
| 5459 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5459 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 5460 | 5460 |
| 5461 TestCompletionCallback callback; | 5461 TestCompletionCallback callback; |
| 5462 | 5462 |
| 5463 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5463 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5464 EXPECT_EQ(ERR_IO_PENDING, rv); | 5464 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 5465 | 5465 |
| 5466 rv = callback.WaitForResult(); | 5466 rv = callback.WaitForResult(); |
| 5467 EXPECT_EQ(OK, rv); | 5467 EXPECT_EQ(OK, rv); |
| 5468 | 5468 |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5773 callback.callback(), NULL, BoundNetLog()); | 5773 callback.callback(), NULL, BoundNetLog()); |
| 5774 ASSERT_EQ(OK, rv); | 5774 ASSERT_EQ(OK, rv); |
| 5775 | 5775 |
| 5776 // Inject a failure the next time that "www.google.com" is resolved. This way | 5776 // Inject a failure the next time that "www.google.com" is resolved. This way |
| 5777 // we can tell if the next lookup hit the cache, or the "network". | 5777 // we can tell if the next lookup hit the cache, or the "network". |
| 5778 // (cache --> success, "network" --> failure). | 5778 // (cache --> success, "network" --> failure). |
| 5779 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); | 5779 session_deps.host_resolver->rules()->AddSimulatedFailure("www.google.com"); |
| 5780 | 5780 |
| 5781 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the | 5781 // Connect up a mock socket which will fail with ERR_UNEXPECTED during the |
| 5782 // first read -- this won't be reached as the host resolution will fail first. | 5782 // first read -- this won't be reached as the host resolution will fail first. |
| 5783 MockRead data_reads[] = { MockRead(false, ERR_UNEXPECTED) }; | 5783 MockRead data_reads[] = { MockRead(SYNCHRONOUS, ERR_UNEXPECTED) }; |
| 5784 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 5784 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 5785 session_deps.socket_factory.AddSocketDataProvider(&data); | 5785 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5786 | 5786 |
| 5787 // Run the request. | 5787 // Run the request. |
| 5788 rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5788 rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5789 ASSERT_EQ(ERR_IO_PENDING, rv); | 5789 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 5790 rv = callback.WaitForResult(); | 5790 rv = callback.WaitForResult(); |
| 5791 | 5791 |
| 5792 // If we bypassed the cache, we would have gotten a failure while resolving | 5792 // If we bypassed the cache, we would have gotten a failure while resolving |
| 5793 // "www.google.com". | 5793 // "www.google.com". |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 5812 TEST_F(HttpNetworkTransactionTest, RequestWriteError) { | 5812 TEST_F(HttpNetworkTransactionTest, RequestWriteError) { |
| 5813 SessionDependencies session_deps; | 5813 SessionDependencies session_deps; |
| 5814 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 5814 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 5815 | 5815 |
| 5816 HttpRequestInfo request; | 5816 HttpRequestInfo request; |
| 5817 request.method = "GET"; | 5817 request.method = "GET"; |
| 5818 request.url = GURL("http://www.foo.com/"); | 5818 request.url = GURL("http://www.foo.com/"); |
| 5819 request.load_flags = 0; | 5819 request.load_flags = 0; |
| 5820 | 5820 |
| 5821 MockWrite write_failure[] = { | 5821 MockWrite write_failure[] = { |
| 5822 MockWrite(true, ERR_CONNECTION_RESET), | 5822 MockWrite(ASYNC, ERR_CONNECTION_RESET), |
| 5823 }; | 5823 }; |
| 5824 StaticSocketDataProvider data(NULL, 0, | 5824 StaticSocketDataProvider data(NULL, 0, |
| 5825 write_failure, arraysize(write_failure)); | 5825 write_failure, arraysize(write_failure)); |
| 5826 session_deps.socket_factory.AddSocketDataProvider(&data); | 5826 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5827 | 5827 |
| 5828 TestCompletionCallback callback; | 5828 TestCompletionCallback callback; |
| 5829 | 5829 |
| 5830 scoped_ptr<HttpTransaction> trans( | 5830 scoped_ptr<HttpTransaction> trans( |
| 5831 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5831 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 5832 | 5832 |
| 5833 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 5833 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 5834 EXPECT_EQ(ERR_IO_PENDING, rv); | 5834 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 5835 | 5835 |
| 5836 rv = callback.WaitForResult(); | 5836 rv = callback.WaitForResult(); |
| 5837 EXPECT_EQ(ERR_CONNECTION_RESET, rv); | 5837 EXPECT_EQ(ERR_CONNECTION_RESET, rv); |
| 5838 } | 5838 } |
| 5839 | 5839 |
| 5840 // Check that a connection closed after the start of the headers finishes ok. | 5840 // Check that a connection closed after the start of the headers finishes ok. |
| 5841 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { | 5841 TEST_F(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { |
| 5842 SessionDependencies session_deps; | 5842 SessionDependencies session_deps; |
| 5843 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 5843 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 5844 | 5844 |
| 5845 HttpRequestInfo request; | 5845 HttpRequestInfo request; |
| 5846 request.method = "GET"; | 5846 request.method = "GET"; |
| 5847 request.url = GURL("http://www.foo.com/"); | 5847 request.url = GURL("http://www.foo.com/"); |
| 5848 request.load_flags = 0; | 5848 request.load_flags = 0; |
| 5849 | 5849 |
| 5850 MockRead data_reads[] = { | 5850 MockRead data_reads[] = { |
| 5851 MockRead("HTTP/1."), | 5851 MockRead("HTTP/1."), |
| 5852 MockRead(false, OK), | 5852 MockRead(SYNCHRONOUS, OK), |
| 5853 }; | 5853 }; |
| 5854 | 5854 |
| 5855 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 5855 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 5856 session_deps.socket_factory.AddSocketDataProvider(&data); | 5856 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5857 | 5857 |
| 5858 TestCompletionCallback callback; | 5858 TestCompletionCallback callback; |
| 5859 | 5859 |
| 5860 scoped_ptr<HttpTransaction> trans( | 5860 scoped_ptr<HttpTransaction> trans( |
| 5861 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5861 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 5862 | 5862 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5894 "Host: www.google.com\r\n" | 5894 "Host: www.google.com\r\n" |
| 5895 "Connection: keep-alive\r\n\r\n"), | 5895 "Connection: keep-alive\r\n\r\n"), |
| 5896 }; | 5896 }; |
| 5897 | 5897 |
| 5898 MockRead data_reads1[] = { | 5898 MockRead data_reads1[] = { |
| 5899 MockRead("HTTP/1.1 401 Unauthorized\r\n"), | 5899 MockRead("HTTP/1.1 401 Unauthorized\r\n"), |
| 5900 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 5900 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 5901 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5901 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5902 MockRead("Content-Length: 14\r\n\r\n"), | 5902 MockRead("Content-Length: 14\r\n\r\n"), |
| 5903 MockRead("Unauth"), | 5903 MockRead("Unauth"), |
| 5904 MockRead(true, ERR_CONNECTION_RESET), | 5904 MockRead(ASYNC, ERR_CONNECTION_RESET), |
| 5905 }; | 5905 }; |
| 5906 | 5906 |
| 5907 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 5907 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 5908 data_writes1, arraysize(data_writes1)); | 5908 data_writes1, arraysize(data_writes1)); |
| 5909 session_deps.socket_factory.AddSocketDataProvider(&data1); | 5909 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 5910 | 5910 |
| 5911 // After calling trans->RestartWithAuth(), this is the request we should | 5911 // After calling trans->RestartWithAuth(), this is the request we should |
| 5912 // be issuing -- the final header line contains the credentials. | 5912 // be issuing -- the final header line contains the credentials. |
| 5913 MockWrite data_writes2[] = { | 5913 MockWrite data_writes2[] = { |
| 5914 MockWrite("GET / HTTP/1.1\r\n" | 5914 MockWrite("GET / HTTP/1.1\r\n" |
| 5915 "Host: www.google.com\r\n" | 5915 "Host: www.google.com\r\n" |
| 5916 "Connection: keep-alive\r\n" | 5916 "Connection: keep-alive\r\n" |
| 5917 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 5917 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 5918 }; | 5918 }; |
| 5919 | 5919 |
| 5920 // Lastly, the server responds with the actual content. | 5920 // Lastly, the server responds with the actual content. |
| 5921 MockRead data_reads2[] = { | 5921 MockRead data_reads2[] = { |
| 5922 MockRead("HTTP/1.1 200 OK\r\n"), | 5922 MockRead("HTTP/1.1 200 OK\r\n"), |
| 5923 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 5923 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 5924 MockRead("Content-Length: 100\r\n\r\n"), | 5924 MockRead("Content-Length: 100\r\n\r\n"), |
| 5925 MockRead(false, OK), | 5925 MockRead(SYNCHRONOUS, OK), |
| 5926 }; | 5926 }; |
| 5927 | 5927 |
| 5928 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 5928 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 5929 data_writes2, arraysize(data_writes2)); | 5929 data_writes2, arraysize(data_writes2)); |
| 5930 session_deps.socket_factory.AddSocketDataProvider(&data2); | 5930 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 5931 | 5931 |
| 5932 TestCompletionCallback callback1; | 5932 TestCompletionCallback callback1; |
| 5933 | 5933 |
| 5934 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 5934 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 5935 | 5935 |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 5962 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { | 5962 TEST_F(HttpNetworkTransactionTest, HTTPSViaProxyWithExtraData) { |
| 5963 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70")); | 5963 SessionDependencies session_deps(ProxyService::CreateFixed("myproxy:70")); |
| 5964 | 5964 |
| 5965 HttpRequestInfo request; | 5965 HttpRequestInfo request; |
| 5966 request.method = "GET"; | 5966 request.method = "GET"; |
| 5967 request.url = GURL("https://www.google.com/"); | 5967 request.url = GURL("https://www.google.com/"); |
| 5968 request.load_flags = 0; | 5968 request.load_flags = 0; |
| 5969 | 5969 |
| 5970 MockRead proxy_reads[] = { | 5970 MockRead proxy_reads[] = { |
| 5971 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), | 5971 MockRead("HTTP/1.0 200 Connected\r\n\r\nExtra data"), |
| 5972 MockRead(false, OK) | 5972 MockRead(SYNCHRONOUS, OK) |
| 5973 }; | 5973 }; |
| 5974 | 5974 |
| 5975 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0); | 5975 StaticSocketDataProvider data(proxy_reads, arraysize(proxy_reads), NULL, 0); |
| 5976 SSLSocketDataProvider ssl(true, OK); | 5976 SSLSocketDataProvider ssl(ASYNC, OK); |
| 5977 | 5977 |
| 5978 session_deps.socket_factory.AddSocketDataProvider(&data); | 5978 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 5979 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 5979 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 5980 | 5980 |
| 5981 TestCompletionCallback callback; | 5981 TestCompletionCallback callback; |
| 5982 | 5982 |
| 5983 session_deps.socket_factory.ResetNextMockIndexes(); | 5983 session_deps.socket_factory.ResetNextMockIndexes(); |
| 5984 | 5984 |
| 5985 scoped_ptr<HttpTransaction> trans( | 5985 scoped_ptr<HttpTransaction> trans( |
| 5986 new HttpNetworkTransaction(CreateSession(&session_deps))); | 5986 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 5997 request.method = "GET"; | 5997 request.method = "GET"; |
| 5998 request.url = GURL("http://www.google.com/"); | 5998 request.url = GURL("http://www.google.com/"); |
| 5999 request.load_flags = 0; | 5999 request.load_flags = 0; |
| 6000 | 6000 |
| 6001 SessionDependencies session_deps; | 6001 SessionDependencies session_deps; |
| 6002 scoped_ptr<HttpTransaction> trans( | 6002 scoped_ptr<HttpTransaction> trans( |
| 6003 new HttpNetworkTransaction(CreateSession(&session_deps))); | 6003 new HttpNetworkTransaction(CreateSession(&session_deps))); |
| 6004 | 6004 |
| 6005 MockRead data_reads[] = { | 6005 MockRead data_reads[] = { |
| 6006 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), | 6006 MockRead("HTTP/1.0 200 OK\r\nContent-Length:6719476739\r\n\r\n"), |
| 6007 MockRead(false, OK), | 6007 MockRead(SYNCHRONOUS, OK), |
| 6008 }; | 6008 }; |
| 6009 | 6009 |
| 6010 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 6010 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 6011 session_deps.socket_factory.AddSocketDataProvider(&data); | 6011 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 6012 | 6012 |
| 6013 TestCompletionCallback callback; | 6013 TestCompletionCallback callback; |
| 6014 | 6014 |
| 6015 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 6015 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 6016 EXPECT_EQ(ERR_IO_PENDING, rv); | 6016 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 6017 | 6017 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 6047 UploadData::Element element; | 6047 UploadData::Element element; |
| 6048 element.SetToFilePath(temp_file_path); | 6048 element.SetToFilePath(temp_file_path); |
| 6049 element.SetContentLength(kFakeSize); | 6049 element.SetContentLength(kFakeSize); |
| 6050 elements.push_back(element); | 6050 elements.push_back(element); |
| 6051 request.upload_data->SetElements(elements); | 6051 request.upload_data->SetElements(elements); |
| 6052 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync()); | 6052 EXPECT_EQ(kFakeSize, request.upload_data->GetContentLengthSync()); |
| 6053 | 6053 |
| 6054 MockRead data_reads[] = { | 6054 MockRead data_reads[] = { |
| 6055 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 6055 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
| 6056 MockRead("hello world"), | 6056 MockRead("hello world"), |
| 6057 MockRead(false, OK), | 6057 MockRead(SYNCHRONOUS, OK), |
| 6058 }; | 6058 }; |
| 6059 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 6059 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 6060 session_deps.socket_factory.AddSocketDataProvider(&data); | 6060 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 6061 | 6061 |
| 6062 TestCompletionCallback callback; | 6062 TestCompletionCallback callback; |
| 6063 | 6063 |
| 6064 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 6064 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 6065 EXPECT_EQ(ERR_IO_PENDING, rv); | 6065 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 6066 | 6066 |
| 6067 rv = callback.WaitForResult(); | 6067 rv = callback.WaitForResult(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6102 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); | 6102 ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); |
| 6103 | 6103 |
| 6104 std::vector<UploadData::Element> elements; | 6104 std::vector<UploadData::Element> elements; |
| 6105 UploadData::Element element; | 6105 UploadData::Element element; |
| 6106 element.SetToFilePath(temp_file); | 6106 element.SetToFilePath(temp_file); |
| 6107 elements.push_back(element); | 6107 elements.push_back(element); |
| 6108 request.upload_data->SetElements(elements); | 6108 request.upload_data->SetElements(elements); |
| 6109 | 6109 |
| 6110 MockRead data_reads[] = { | 6110 MockRead data_reads[] = { |
| 6111 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 6111 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
| 6112 MockRead(false, OK), | 6112 MockRead(SYNCHRONOUS, OK), |
| 6113 }; | 6113 }; |
| 6114 MockWrite data_writes[] = { | 6114 MockWrite data_writes[] = { |
| 6115 MockWrite("POST /upload HTTP/1.1\r\n" | 6115 MockWrite("POST /upload HTTP/1.1\r\n" |
| 6116 "Host: www.google.com\r\n" | 6116 "Host: www.google.com\r\n" |
| 6117 "Connection: keep-alive\r\n" | 6117 "Connection: keep-alive\r\n" |
| 6118 "Content-Length: 0\r\n\r\n"), | 6118 "Content-Length: 0\r\n\r\n"), |
| 6119 MockWrite(false, OK), | 6119 MockWrite(SYNCHRONOUS, OK), |
| 6120 }; | 6120 }; |
| 6121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, | 6121 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, |
| 6122 arraysize(data_writes)); | 6122 arraysize(data_writes)); |
| 6123 session_deps.socket_factory.AddSocketDataProvider(&data); | 6123 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 6124 | 6124 |
| 6125 TestCompletionCallback callback; | 6125 TestCompletionCallback callback; |
| 6126 | 6126 |
| 6127 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 6127 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 6128 EXPECT_EQ(ERR_IO_PENDING, rv); | 6128 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 6129 | 6129 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6162 elements.push_back(element); | 6162 elements.push_back(element); |
| 6163 request.upload_data->SetElements(elements); | 6163 request.upload_data->SetElements(elements); |
| 6164 | 6164 |
| 6165 MockRead data_reads[] = { | 6165 MockRead data_reads[] = { |
| 6166 MockRead("HTTP/1.1 401 Unauthorized\r\n"), | 6166 MockRead("HTTP/1.1 401 Unauthorized\r\n"), |
| 6167 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), | 6167 MockRead("WWW-Authenticate: Basic realm=\"MyRealm1\"\r\n"), |
| 6168 MockRead("Content-Length: 0\r\n\r\n"), // No response body. | 6168 MockRead("Content-Length: 0\r\n\r\n"), // No response body. |
| 6169 | 6169 |
| 6170 MockRead("HTTP/1.1 200 OK\r\n"), | 6170 MockRead("HTTP/1.1 200 OK\r\n"), |
| 6171 MockRead("Content-Length: 0\r\n\r\n"), | 6171 MockRead("Content-Length: 0\r\n\r\n"), |
| 6172 MockRead(false, OK), | 6172 MockRead(SYNCHRONOUS, OK), |
| 6173 }; | 6173 }; |
| 6174 MockWrite data_writes[] = { | 6174 MockWrite data_writes[] = { |
| 6175 MockWrite("POST /upload HTTP/1.1\r\n" | 6175 MockWrite("POST /upload HTTP/1.1\r\n" |
| 6176 "Host: www.google.com\r\n" | 6176 "Host: www.google.com\r\n" |
| 6177 "Connection: keep-alive\r\n" | 6177 "Connection: keep-alive\r\n" |
| 6178 "Content-Length: 16\r\n\r\n"), | 6178 "Content-Length: 16\r\n\r\n"), |
| 6179 MockWrite(false, temp_file_contents.c_str()), | 6179 MockWrite(SYNCHRONOUS, temp_file_contents.c_str()), |
| 6180 | 6180 |
| 6181 MockWrite("POST /upload HTTP/1.1\r\n" | 6181 MockWrite("POST /upload HTTP/1.1\r\n" |
| 6182 "Host: www.google.com\r\n" | 6182 "Host: www.google.com\r\n" |
| 6183 "Connection: keep-alive\r\n" | 6183 "Connection: keep-alive\r\n" |
| 6184 "Content-Length: 16\r\n" | 6184 "Content-Length: 16\r\n" |
| 6185 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), | 6185 "Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), |
| 6186 MockWrite(false, unreadable_contents.c_str(), temp_file_contents.length()), | 6186 MockWrite(SYNCHRONOUS, unreadable_contents.c_str(), |
| 6187 MockWrite(false, OK), | 6187 temp_file_contents.length()), |
| 6188 MockWrite(SYNCHRONOUS, OK), | |
| 6188 }; | 6189 }; |
| 6189 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, | 6190 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes, |
| 6190 arraysize(data_writes)); | 6191 arraysize(data_writes)); |
| 6191 session_deps.socket_factory.AddSocketDataProvider(&data); | 6192 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 6192 | 6193 |
| 6193 TestCompletionCallback callback1; | 6194 TestCompletionCallback callback1; |
| 6194 | 6195 |
| 6195 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); | 6196 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); |
| 6196 EXPECT_EQ(ERR_IO_PENDING, rv); | 6197 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 6197 | 6198 |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6381 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { | 6382 TEST_F(HttpNetworkTransactionTest, HonorAlternateProtocolHeader) { |
| 6382 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL)); | 6383 HttpStreamFactory::set_next_protos(MakeNextProtos("foo", "bar", NULL)); |
| 6383 HttpStreamFactory::set_use_alternate_protocols(true); | 6384 HttpStreamFactory::set_use_alternate_protocols(true); |
| 6384 | 6385 |
| 6385 SessionDependencies session_deps; | 6386 SessionDependencies session_deps; |
| 6386 | 6387 |
| 6387 MockRead data_reads[] = { | 6388 MockRead data_reads[] = { |
| 6388 MockRead("HTTP/1.1 200 OK\r\n"), | 6389 MockRead("HTTP/1.1 200 OK\r\n"), |
| 6389 MockRead(kAlternateProtocolHttpHeader), | 6390 MockRead(kAlternateProtocolHttpHeader), |
| 6390 MockRead("hello world"), | 6391 MockRead("hello world"), |
| 6391 MockRead(false, OK), | 6392 MockRead(SYNCHRONOUS, OK), |
| 6392 }; | 6393 }; |
| 6393 | 6394 |
| 6394 HttpRequestInfo request; | 6395 HttpRequestInfo request; |
| 6395 request.method = "GET"; | 6396 request.method = "GET"; |
| 6396 request.url = GURL("http://www.google.com/"); | 6397 request.url = GURL("http://www.google.com/"); |
| 6397 request.load_flags = 0; | 6398 request.load_flags = 0; |
| 6398 | 6399 |
| 6399 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); | 6400 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
| 6400 | 6401 |
| 6401 session_deps.socket_factory.AddSocketDataProvider(&data); | 6402 session_deps.socket_factory.AddSocketDataProvider(&data); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6449 request.load_flags = 0; | 6450 request.load_flags = 0; |
| 6450 | 6451 |
| 6451 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6452 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 6452 StaticSocketDataProvider first_data; | 6453 StaticSocketDataProvider first_data; |
| 6453 first_data.set_connect_data(mock_connect); | 6454 first_data.set_connect_data(mock_connect); |
| 6454 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6455 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
| 6455 | 6456 |
| 6456 MockRead data_reads[] = { | 6457 MockRead data_reads[] = { |
| 6457 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6458 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 6458 MockRead("hello world"), | 6459 MockRead("hello world"), |
| 6459 MockRead(true, OK), | 6460 MockRead(ASYNC, OK), |
| 6460 }; | 6461 }; |
| 6461 StaticSocketDataProvider second_data( | 6462 StaticSocketDataProvider second_data( |
| 6462 data_reads, arraysize(data_reads), NULL, 0); | 6463 data_reads, arraysize(data_reads), NULL, 0); |
| 6463 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6464 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
| 6464 | 6465 |
| 6465 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6466 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 6466 | 6467 |
| 6467 HttpServerProperties* http_server_properties = | 6468 HttpServerProperties* http_server_properties = |
| 6468 session->http_server_properties(); | 6469 session->http_server_properties(); |
| 6469 // Port must be < 1024, or the header will be ignored (since initial port was | 6470 // Port must be < 1024, or the header will be ignored (since initial port was |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6512 restricted_port_request.load_flags = 0; | 6513 restricted_port_request.load_flags = 0; |
| 6513 | 6514 |
| 6514 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6515 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 6515 StaticSocketDataProvider first_data; | 6516 StaticSocketDataProvider first_data; |
| 6516 first_data.set_connect_data(mock_connect); | 6517 first_data.set_connect_data(mock_connect); |
| 6517 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6518 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
| 6518 | 6519 |
| 6519 MockRead data_reads[] = { | 6520 MockRead data_reads[] = { |
| 6520 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6521 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 6521 MockRead("hello world"), | 6522 MockRead("hello world"), |
| 6522 MockRead(true, OK), | 6523 MockRead(ASYNC, OK), |
| 6523 }; | 6524 }; |
| 6524 StaticSocketDataProvider second_data( | 6525 StaticSocketDataProvider second_data( |
| 6525 data_reads, arraysize(data_reads), NULL, 0); | 6526 data_reads, arraysize(data_reads), NULL, 0); |
| 6526 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6527 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
| 6527 | 6528 |
| 6528 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6529 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 6529 | 6530 |
| 6530 HttpServerProperties* http_server_properties = | 6531 HttpServerProperties* http_server_properties = |
| 6531 session->http_server_properties(); | 6532 session->http_server_properties(); |
| 6532 const int kUnrestrictedAlternatePort = 1024; | 6533 const int kUnrestrictedAlternatePort = 1024; |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 6561 restricted_port_request.load_flags = 0; | 6562 restricted_port_request.load_flags = 0; |
| 6562 | 6563 |
| 6563 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6564 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 6564 StaticSocketDataProvider first_data; | 6565 StaticSocketDataProvider first_data; |
| 6565 first_data.set_connect_data(mock_connect); | 6566 first_data.set_connect_data(mock_connect); |
| 6566 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6567 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
| 6567 | 6568 |
| 6568 MockRead data_reads[] = { | 6569 MockRead data_reads[] = { |
| 6569 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6570 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 6570 MockRead("hello world"), | 6571 MockRead("hello world"), |
| 6571 MockRead(true, OK), | 6572 MockRead(ASYNC, OK), |
| 6572 }; | 6573 }; |
| 6573 StaticSocketDataProvider second_data( | 6574 StaticSocketDataProvider second_data( |
| 6574 data_reads, arraysize(data_reads), NULL, 0); | 6575 data_reads, arraysize(data_reads), NULL, 0); |
| 6575 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6576 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
| 6576 | 6577 |
| 6577 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6578 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 6578 | 6579 |
| 6579 HttpServerProperties* http_server_properties = | 6580 HttpServerProperties* http_server_properties = |
| 6580 session->http_server_properties(); | 6581 session->http_server_properties(); |
| 6581 const int kRestrictedAlternatePort = 80; | 6582 const int kRestrictedAlternatePort = 80; |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 6610 unrestricted_port_request.load_flags = 0; | 6611 unrestricted_port_request.load_flags = 0; |
| 6611 | 6612 |
| 6612 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6613 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 6613 StaticSocketDataProvider first_data; | 6614 StaticSocketDataProvider first_data; |
| 6614 first_data.set_connect_data(mock_connect); | 6615 first_data.set_connect_data(mock_connect); |
| 6615 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6616 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
| 6616 | 6617 |
| 6617 MockRead data_reads[] = { | 6618 MockRead data_reads[] = { |
| 6618 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6619 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 6619 MockRead("hello world"), | 6620 MockRead("hello world"), |
| 6620 MockRead(true, OK), | 6621 MockRead(ASYNC, OK), |
| 6621 }; | 6622 }; |
| 6622 StaticSocketDataProvider second_data( | 6623 StaticSocketDataProvider second_data( |
| 6623 data_reads, arraysize(data_reads), NULL, 0); | 6624 data_reads, arraysize(data_reads), NULL, 0); |
| 6624 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6625 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
| 6625 | 6626 |
| 6626 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6627 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 6627 | 6628 |
| 6628 HttpServerProperties* http_server_properties = | 6629 HttpServerProperties* http_server_properties = |
| 6629 session->http_server_properties(); | 6630 session->http_server_properties(); |
| 6630 const int kRestrictedAlternatePort = 80; | 6631 const int kRestrictedAlternatePort = 80; |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 6659 unrestricted_port_request.load_flags = 0; | 6660 unrestricted_port_request.load_flags = 0; |
| 6660 | 6661 |
| 6661 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); | 6662 MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| 6662 StaticSocketDataProvider first_data; | 6663 StaticSocketDataProvider first_data; |
| 6663 first_data.set_connect_data(mock_connect); | 6664 first_data.set_connect_data(mock_connect); |
| 6664 session_deps.socket_factory.AddSocketDataProvider(&first_data); | 6665 session_deps.socket_factory.AddSocketDataProvider(&first_data); |
| 6665 | 6666 |
| 6666 MockRead data_reads[] = { | 6667 MockRead data_reads[] = { |
| 6667 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6668 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 6668 MockRead("hello world"), | 6669 MockRead("hello world"), |
| 6669 MockRead(true, OK), | 6670 MockRead(ASYNC, OK), |
| 6670 }; | 6671 }; |
| 6671 StaticSocketDataProvider second_data( | 6672 StaticSocketDataProvider second_data( |
| 6672 data_reads, arraysize(data_reads), NULL, 0); | 6673 data_reads, arraysize(data_reads), NULL, 0); |
| 6673 session_deps.socket_factory.AddSocketDataProvider(&second_data); | 6674 session_deps.socket_factory.AddSocketDataProvider(&second_data); |
| 6674 | 6675 |
| 6675 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6676 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 6676 | 6677 |
| 6677 HttpServerProperties* http_server_properties = | 6678 HttpServerProperties* http_server_properties = |
| 6678 session->http_server_properties(); | 6679 session->http_server_properties(); |
| 6679 const int kUnrestrictedAlternatePort = 1024; | 6680 const int kUnrestrictedAlternatePort = 1024; |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 6704 HttpRequestInfo request; | 6705 HttpRequestInfo request; |
| 6705 request.method = "GET"; | 6706 request.method = "GET"; |
| 6706 request.url = GURL("http://www.google.com/"); | 6707 request.url = GURL("http://www.google.com/"); |
| 6707 request.load_flags = 0; | 6708 request.load_flags = 0; |
| 6708 | 6709 |
| 6709 // The alternate protocol request will error out before we attempt to connect, | 6710 // The alternate protocol request will error out before we attempt to connect, |
| 6710 // so only the standard HTTP request will try to connect. | 6711 // so only the standard HTTP request will try to connect. |
| 6711 MockRead data_reads[] = { | 6712 MockRead data_reads[] = { |
| 6712 MockRead("HTTP/1.1 200 OK\r\n\r\n"), | 6713 MockRead("HTTP/1.1 200 OK\r\n\r\n"), |
| 6713 MockRead("hello world"), | 6714 MockRead("hello world"), |
| 6714 MockRead(true, OK), | 6715 MockRead(ASYNC, OK), |
| 6715 }; | 6716 }; |
| 6716 StaticSocketDataProvider data( | 6717 StaticSocketDataProvider data( |
| 6717 data_reads, arraysize(data_reads), NULL, 0); | 6718 data_reads, arraysize(data_reads), NULL, 0); |
| 6718 session_deps.socket_factory.AddSocketDataProvider(&data); | 6719 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 6719 | 6720 |
| 6720 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 6721 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 6721 | 6722 |
| 6722 HttpServerProperties* http_server_properties = | 6723 HttpServerProperties* http_server_properties = |
| 6723 session->http_server_properties(); | 6724 session->http_server_properties(); |
| 6724 const int kUnsafePort = 7; | 6725 const int kUnsafePort = 7; |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 6755 | 6756 |
| 6756 HttpRequestInfo request; | 6757 HttpRequestInfo request; |
| 6757 request.method = "GET"; | 6758 request.method = "GET"; |
| 6758 request.url = GURL("http://www.google.com/"); | 6759 request.url = GURL("http://www.google.com/"); |
| 6759 request.load_flags = 0; | 6760 request.load_flags = 0; |
| 6760 | 6761 |
| 6761 MockRead data_reads[] = { | 6762 MockRead data_reads[] = { |
| 6762 MockRead("HTTP/1.1 200 OK\r\n"), | 6763 MockRead("HTTP/1.1 200 OK\r\n"), |
| 6763 MockRead(kAlternateProtocolHttpHeader), | 6764 MockRead(kAlternateProtocolHttpHeader), |
| 6764 MockRead("hello world"), | 6765 MockRead("hello world"), |
| 6765 MockRead(true, OK), | 6766 MockRead(ASYNC, OK), |
| 6766 }; | 6767 }; |
| 6767 | 6768 |
| 6768 StaticSocketDataProvider first_transaction( | 6769 StaticSocketDataProvider first_transaction( |
| 6769 data_reads, arraysize(data_reads), NULL, 0); | 6770 data_reads, arraysize(data_reads), NULL, 0); |
| 6770 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 6771 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 6771 | 6772 |
| 6772 SSLSocketDataProvider ssl(true, OK); | 6773 SSLSocketDataProvider ssl(ASYNC, OK); |
| 6773 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 6774 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 6774 ssl.next_proto = "spdy/2.1"; | 6775 ssl.next_proto = "spdy/2.1"; |
| 6775 ssl.was_npn_negotiated = true; | 6776 ssl.was_npn_negotiated = true; |
| 6776 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 6777 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 6777 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6778 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 6778 | 6779 |
| 6779 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 6780 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 6780 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 6781 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 6781 | 6782 |
| 6782 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 6783 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 6783 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 6784 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 6784 MockRead spdy_reads[] = { | 6785 MockRead spdy_reads[] = { |
| 6785 CreateMockRead(*resp), | 6786 CreateMockRead(*resp), |
| 6786 CreateMockRead(*data), | 6787 CreateMockRead(*data), |
| 6787 MockRead(true, 0, 0), | 6788 MockRead(ASYNC, 0, 0), |
| 6788 }; | 6789 }; |
| 6789 | 6790 |
| 6790 scoped_ptr<DelayedSocketData> spdy_data( | 6791 scoped_ptr<DelayedSocketData> spdy_data( |
| 6791 new DelayedSocketData( | 6792 new DelayedSocketData( |
| 6792 1, // wait for one write to finish before reading. | 6793 1, // wait for one write to finish before reading. |
| 6793 spdy_reads, arraysize(spdy_reads), | 6794 spdy_reads, arraysize(spdy_reads), |
| 6794 spdy_writes, arraysize(spdy_writes))); | 6795 spdy_writes, arraysize(spdy_writes))); |
| 6795 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 6796 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 6796 | 6797 |
| 6797 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 6798 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6847 | 6848 |
| 6848 HttpRequestInfo request; | 6849 HttpRequestInfo request; |
| 6849 request.method = "GET"; | 6850 request.method = "GET"; |
| 6850 request.url = GURL("http://www.google.com/"); | 6851 request.url = GURL("http://www.google.com/"); |
| 6851 request.load_flags = 0; | 6852 request.load_flags = 0; |
| 6852 | 6853 |
| 6853 MockRead data_reads[] = { | 6854 MockRead data_reads[] = { |
| 6854 MockRead("HTTP/1.1 200 OK\r\n"), | 6855 MockRead("HTTP/1.1 200 OK\r\n"), |
| 6855 MockRead(kAlternateProtocolHttpHeader), | 6856 MockRead(kAlternateProtocolHttpHeader), |
| 6856 MockRead("hello world"), | 6857 MockRead("hello world"), |
| 6857 MockRead(true, OK), | 6858 MockRead(ASYNC, OK), |
| 6858 }; | 6859 }; |
| 6859 | 6860 |
| 6860 StaticSocketDataProvider first_transaction( | 6861 StaticSocketDataProvider first_transaction( |
| 6861 data_reads, arraysize(data_reads), NULL, 0); | 6862 data_reads, arraysize(data_reads), NULL, 0); |
| 6862 // Socket 1 is the HTTP transaction with the Alternate-Protocol header. | 6863 // Socket 1 is the HTTP transaction with the Alternate-Protocol header. |
| 6863 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 6864 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 6864 | 6865 |
| 6865 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 6866 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 6866 StaticSocketDataProvider hanging_socket( | 6867 StaticSocketDataProvider hanging_socket( |
| 6867 NULL, 0, NULL, 0); | 6868 NULL, 0, NULL, 0); |
| 6868 hanging_socket.set_connect_data(never_finishing_connect); | 6869 hanging_socket.set_connect_data(never_finishing_connect); |
| 6869 // Socket 2 and 3 are the hanging Alternate-Protocol and | 6870 // Socket 2 and 3 are the hanging Alternate-Protocol and |
| 6870 // non-Alternate-Protocol jobs from the 2nd transaction. | 6871 // non-Alternate-Protocol jobs from the 2nd transaction. |
| 6871 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); | 6872 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); |
| 6872 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); | 6873 session_deps.socket_factory.AddSocketDataProvider(&hanging_socket); |
| 6873 | 6874 |
| 6874 SSLSocketDataProvider ssl(true, OK); | 6875 SSLSocketDataProvider ssl(ASYNC, OK); |
| 6875 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 6876 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 6876 ssl.next_proto = "spdy/2.1"; | 6877 ssl.next_proto = "spdy/2.1"; |
| 6877 ssl.was_npn_negotiated = true; | 6878 ssl.was_npn_negotiated = true; |
| 6878 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 6879 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 6879 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6880 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 6880 | 6881 |
| 6881 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 6882 scoped_ptr<spdy::SpdyFrame> req1(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 6882 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); | 6883 scoped_ptr<spdy::SpdyFrame> req2(ConstructSpdyGet(NULL, 0, false, 3, LOWEST)); |
| 6883 MockWrite spdy_writes[] = { | 6884 MockWrite spdy_writes[] = { |
| 6884 CreateMockWrite(*req1), | 6885 CreateMockWrite(*req1), |
| 6885 CreateMockWrite(*req2), | 6886 CreateMockWrite(*req2), |
| 6886 }; | 6887 }; |
| 6887 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); | 6888 scoped_ptr<spdy::SpdyFrame> resp1(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 6888 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true)); | 6889 scoped_ptr<spdy::SpdyFrame> data1(ConstructSpdyBodyFrame(1, true)); |
| 6889 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); | 6890 scoped_ptr<spdy::SpdyFrame> resp2(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 6890 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true)); | 6891 scoped_ptr<spdy::SpdyFrame> data2(ConstructSpdyBodyFrame(3, true)); |
| 6891 MockRead spdy_reads[] = { | 6892 MockRead spdy_reads[] = { |
| 6892 CreateMockRead(*resp1), | 6893 CreateMockRead(*resp1), |
| 6893 CreateMockRead(*data1), | 6894 CreateMockRead(*data1), |
| 6894 CreateMockRead(*resp2), | 6895 CreateMockRead(*resp2), |
| 6895 CreateMockRead(*data2), | 6896 CreateMockRead(*data2), |
| 6896 MockRead(true, 0, 0), | 6897 MockRead(ASYNC, 0, 0), |
| 6897 }; | 6898 }; |
| 6898 | 6899 |
| 6899 scoped_ptr<DelayedSocketData> spdy_data( | 6900 scoped_ptr<DelayedSocketData> spdy_data( |
| 6900 new DelayedSocketData( | 6901 new DelayedSocketData( |
| 6901 2, // wait for writes to finish before reading. | 6902 2, // wait for writes to finish before reading. |
| 6902 spdy_reads, arraysize(spdy_reads), | 6903 spdy_reads, arraysize(spdy_reads), |
| 6903 spdy_writes, arraysize(spdy_writes))); | 6904 spdy_writes, arraysize(spdy_writes))); |
| 6904 // Socket 4 is the successful Alternate-Protocol for transaction 3. | 6905 // Socket 4 is the successful Alternate-Protocol for transaction 3. |
| 6905 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 6906 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 6906 | 6907 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6966 | 6967 |
| 6967 HttpRequestInfo request; | 6968 HttpRequestInfo request; |
| 6968 request.method = "GET"; | 6969 request.method = "GET"; |
| 6969 request.url = GURL("http://www.google.com/"); | 6970 request.url = GURL("http://www.google.com/"); |
| 6970 request.load_flags = 0; | 6971 request.load_flags = 0; |
| 6971 | 6972 |
| 6972 MockRead data_reads[] = { | 6973 MockRead data_reads[] = { |
| 6973 MockRead("HTTP/1.1 200 OK\r\n"), | 6974 MockRead("HTTP/1.1 200 OK\r\n"), |
| 6974 MockRead(kAlternateProtocolHttpHeader), | 6975 MockRead(kAlternateProtocolHttpHeader), |
| 6975 MockRead("hello world"), | 6976 MockRead("hello world"), |
| 6976 MockRead(true, OK), | 6977 MockRead(ASYNC, OK), |
| 6977 }; | 6978 }; |
| 6978 | 6979 |
| 6979 StaticSocketDataProvider first_transaction( | 6980 StaticSocketDataProvider first_transaction( |
| 6980 data_reads, arraysize(data_reads), NULL, 0); | 6981 data_reads, arraysize(data_reads), NULL, 0); |
| 6981 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 6982 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 6982 | 6983 |
| 6983 SSLSocketDataProvider ssl(true, OK); | 6984 SSLSocketDataProvider ssl(ASYNC, OK); |
| 6984 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 6985 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 6985 ssl.next_proto = "spdy/2.1"; | 6986 ssl.next_proto = "spdy/2.1"; |
| 6986 ssl.was_npn_negotiated = true; | 6987 ssl.was_npn_negotiated = true; |
| 6987 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 6988 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 6988 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 6989 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 6989 | 6990 |
| 6990 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 6991 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 6991 StaticSocketDataProvider hanging_alternate_protocol_socket( | 6992 StaticSocketDataProvider hanging_alternate_protocol_socket( |
| 6992 NULL, 0, NULL, 0); | 6993 NULL, 0, NULL, 0); |
| 6993 hanging_alternate_protocol_socket.set_connect_data( | 6994 hanging_alternate_protocol_socket.set_connect_data( |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7101 | 7102 |
| 7102 HttpRequestInfo request; | 7103 HttpRequestInfo request; |
| 7103 request.method = "GET"; | 7104 request.method = "GET"; |
| 7104 request.url = GURL("http://www.google.com/"); | 7105 request.url = GURL("http://www.google.com/"); |
| 7105 request.load_flags = 0; | 7106 request.load_flags = 0; |
| 7106 | 7107 |
| 7107 MockRead data_reads[] = { | 7108 MockRead data_reads[] = { |
| 7108 MockRead("HTTP/1.1 200 OK\r\n"), | 7109 MockRead("HTTP/1.1 200 OK\r\n"), |
| 7109 MockRead(kAlternateProtocolHttpHeader), | 7110 MockRead(kAlternateProtocolHttpHeader), |
| 7110 MockRead("hello world"), | 7111 MockRead("hello world"), |
| 7111 MockRead(true, OK), | 7112 MockRead(ASYNC, OK), |
| 7112 }; | 7113 }; |
| 7113 | 7114 |
| 7114 StaticSocketDataProvider first_transaction( | 7115 StaticSocketDataProvider first_transaction( |
| 7115 data_reads, arraysize(data_reads), NULL, 0); | 7116 data_reads, arraysize(data_reads), NULL, 0); |
| 7116 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 7117 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 7117 | 7118 |
| 7118 SSLSocketDataProvider ssl(true, OK); | 7119 SSLSocketDataProvider ssl(ASYNC, OK); |
| 7119 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 7120 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 7120 ssl.next_proto = "spdy/2.1"; | 7121 ssl.next_proto = "spdy/2.1"; |
| 7121 ssl.was_npn_negotiated = true; | 7122 ssl.was_npn_negotiated = true; |
| 7122 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 7123 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 7123 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 7124 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 7124 | 7125 |
| 7125 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 7126 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 7126 MockWrite spdy_writes[] = { | 7127 MockWrite spdy_writes[] = { |
| 7127 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 7128 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 7128 "Host: www.google.com\r\n" | 7129 "Host: www.google.com\r\n" |
| 7129 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 | 7130 "Proxy-Connection: keep-alive\r\n\r\n"), // 0 |
| 7130 CreateMockWrite(*req) // 3 | 7131 CreateMockWrite(*req) // 3 |
| 7131 }; | 7132 }; |
| 7132 | 7133 |
| 7133 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; | 7134 const char kCONNECTResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; |
| 7134 | 7135 |
| 7135 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 7136 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 7136 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 7137 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 7137 MockRead spdy_reads[] = { | 7138 MockRead spdy_reads[] = { |
| 7138 MockRead(true, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 | 7139 MockRead(ASYNC, kCONNECTResponse, arraysize(kCONNECTResponse) - 1, 1), // 1 |
| 7139 CreateMockRead(*resp.get(), 4), // 2, 4 | 7140 CreateMockRead(*resp.get(), 4), // 2, 4 |
| 7140 CreateMockRead(*data.get(), 4), // 5 | 7141 CreateMockRead(*data.get(), 4), // 5 |
| 7141 MockRead(true, 0, 0, 4), // 6 | 7142 MockRead(ASYNC, 0, 0, 4), // 6 |
| 7142 }; | 7143 }; |
| 7143 | 7144 |
| 7144 scoped_ptr<OrderedSocketData> spdy_data( | 7145 scoped_ptr<OrderedSocketData> spdy_data( |
| 7145 new OrderedSocketData( | 7146 new OrderedSocketData( |
| 7146 spdy_reads, arraysize(spdy_reads), | 7147 spdy_reads, arraysize(spdy_reads), |
| 7147 spdy_writes, arraysize(spdy_writes))); | 7148 spdy_writes, arraysize(spdy_writes))); |
| 7148 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 7149 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 7149 | 7150 |
| 7150 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 7151 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 7151 StaticSocketDataProvider hanging_non_alternate_protocol_socket( | 7152 StaticSocketDataProvider hanging_non_alternate_protocol_socket( |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7208 | 7209 |
| 7209 HttpRequestInfo request; | 7210 HttpRequestInfo request; |
| 7210 request.method = "GET"; | 7211 request.method = "GET"; |
| 7211 request.url = GURL("http://www.google.com/"); | 7212 request.url = GURL("http://www.google.com/"); |
| 7212 request.load_flags = 0; | 7213 request.load_flags = 0; |
| 7213 | 7214 |
| 7214 MockRead data_reads[] = { | 7215 MockRead data_reads[] = { |
| 7215 MockRead("HTTP/1.1 200 OK\r\n"), | 7216 MockRead("HTTP/1.1 200 OK\r\n"), |
| 7216 MockRead(kAlternateProtocolHttpHeader), | 7217 MockRead(kAlternateProtocolHttpHeader), |
| 7217 MockRead("hello world"), | 7218 MockRead("hello world"), |
| 7218 MockRead(true, OK), | 7219 MockRead(ASYNC, OK), |
| 7219 }; | 7220 }; |
| 7220 | 7221 |
| 7221 StaticSocketDataProvider first_transaction( | 7222 StaticSocketDataProvider first_transaction( |
| 7222 data_reads, arraysize(data_reads), NULL, 0); | 7223 data_reads, arraysize(data_reads), NULL, 0); |
| 7223 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); | 7224 session_deps.socket_factory.AddSocketDataProvider(&first_transaction); |
| 7224 | 7225 |
| 7225 SSLSocketDataProvider ssl(true, OK); | 7226 SSLSocketDataProvider ssl(ASYNC, OK); |
| 7226 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 7227 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 7227 ssl.next_proto = "spdy/2.1"; | 7228 ssl.next_proto = "spdy/2.1"; |
| 7228 ssl.was_npn_negotiated = true; | 7229 ssl.was_npn_negotiated = true; |
| 7229 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 7230 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 7230 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 7231 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 7231 // Make sure we use ssl for spdy here. | 7232 // Make sure we use ssl for spdy here. |
| 7232 SpdySession::SetSSLMode(true); | 7233 SpdySession::SetSSLMode(true); |
| 7233 | 7234 |
| 7234 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 7235 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 7235 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 7236 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 7236 | 7237 |
| 7237 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 7238 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 7238 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 7239 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 7239 MockRead spdy_reads[] = { | 7240 MockRead spdy_reads[] = { |
| 7240 CreateMockRead(*resp), | 7241 CreateMockRead(*resp), |
| 7241 CreateMockRead(*data), | 7242 CreateMockRead(*data), |
| 7242 MockRead(true, 0, 0), | 7243 MockRead(ASYNC, 0, 0), |
| 7243 }; | 7244 }; |
| 7244 | 7245 |
| 7245 scoped_ptr<DelayedSocketData> spdy_data( | 7246 scoped_ptr<DelayedSocketData> spdy_data( |
| 7246 new DelayedSocketData( | 7247 new DelayedSocketData( |
| 7247 1, // wait for one write to finish before reading. | 7248 1, // wait for one write to finish before reading. |
| 7248 spdy_reads, arraysize(spdy_reads), | 7249 spdy_reads, arraysize(spdy_reads), |
| 7249 spdy_writes, arraysize(spdy_writes))); | 7250 spdy_writes, arraysize(spdy_writes))); |
| 7250 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 7251 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 7251 | 7252 |
| 7252 TestCompletionCallback callback; | 7253 TestCompletionCallback callback; |
| (...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7692 size_t length_writes = 1; | 7693 size_t length_writes = 1; |
| 7693 if (read_write_round.extra_write) { | 7694 if (read_write_round.extra_write) { |
| 7694 writes[1] = *read_write_round.extra_write; | 7695 writes[1] = *read_write_round.extra_write; |
| 7695 length_writes = 2; | 7696 length_writes = 2; |
| 7696 } | 7697 } |
| 7697 StaticSocketDataProvider data_provider( | 7698 StaticSocketDataProvider data_provider( |
| 7698 reads, length_reads, writes, length_writes); | 7699 reads, length_reads, writes, length_writes); |
| 7699 session_deps.socket_factory.AddSocketDataProvider(&data_provider); | 7700 session_deps.socket_factory.AddSocketDataProvider(&data_provider); |
| 7700 | 7701 |
| 7701 // Add an SSL sequence if necessary. | 7702 // Add an SSL sequence if necessary. |
| 7702 SSLSocketDataProvider ssl_socket_data_provider(false, OK); | 7703 SSLSocketDataProvider ssl_socket_data_provider(SYNCHRONOUS, OK); |
| 7703 if (round >= test_config.first_ssl_round) | 7704 if (round >= test_config.first_ssl_round) |
| 7704 session_deps.socket_factory.AddSSLSocketDataProvider( | 7705 session_deps.socket_factory.AddSSLSocketDataProvider( |
| 7705 &ssl_socket_data_provider); | 7706 &ssl_socket_data_provider); |
| 7706 | 7707 |
| 7707 // Start or restart the transaction. | 7708 // Start or restart the transaction. |
| 7708 TestCompletionCallback callback; | 7709 TestCompletionCallback callback; |
| 7709 int rv; | 7710 int rv; |
| 7710 if (round == 0) { | 7711 if (round == 0) { |
| 7711 rv = trans.Start(&request, callback.callback(), BoundNetLog()); | 7712 rv = trans.Start(&request, callback.callback(), BoundNetLog()); |
| 7712 } else { | 7713 } else { |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7922 } | 7923 } |
| 7923 | 7924 |
| 7924 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider { | 7925 class TLSDecompressionFailureSocketDataProvider : public SocketDataProvider { |
| 7925 public: | 7926 public: |
| 7926 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all) | 7927 explicit TLSDecompressionFailureSocketDataProvider(bool fail_all) |
| 7927 : fail_all_(fail_all) { | 7928 : fail_all_(fail_all) { |
| 7928 } | 7929 } |
| 7929 | 7930 |
| 7930 virtual MockRead GetNextRead() { | 7931 virtual MockRead GetNextRead() { |
| 7931 if (fail_all_) | 7932 if (fail_all_) |
| 7932 return MockRead(false /* async */, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); | 7933 return MockRead(SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); |
|
jar (doing other things)
2012/02/22 17:38:25
Cool/meaningless comment! It could mean anything
Ryan Hamilton
2012/02/22 17:50:10
Yeah, I love it. :|
| |
| 7933 | 7934 |
| 7934 return MockRead(false /* async */, | 7935 return MockRead(SYNCHRONOUS, |
| 7935 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n"); | 7936 "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nok.\r\n"); |
| 7936 } | 7937 } |
| 7937 | 7938 |
| 7938 virtual MockWriteResult OnWrite(const std::string& data) { | 7939 virtual MockWriteResult OnWrite(const std::string& data) { |
| 7939 return MockWriteResult(false /* async */, data.size()); | 7940 return MockWriteResult(SYNCHRONOUS /* async */, data.size()); |
| 7940 } | 7941 } |
| 7941 | 7942 |
| 7942 void Reset() { | 7943 void Reset() { |
| 7943 } | 7944 } |
| 7944 | 7945 |
| 7945 private: | 7946 private: |
| 7946 const bool fail_all_; | 7947 const bool fail_all_; |
| 7947 }; | 7948 }; |
| 7948 | 7949 |
| 7949 // Test that we restart a connection when we see a decompression failure from | 7950 // Test that we restart a connection when we see a decompression failure from |
| 7950 // the peer during the handshake. (In the real world we'll restart with SSLv3 | 7951 // the peer during the handshake. (In the real world we'll restart with SSLv3 |
| 7951 // and we won't offer DEFLATE in that case.) | 7952 // and we won't offer DEFLATE in that case.) |
| 7952 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) { | 7953 TEST_F(HttpNetworkTransactionTest, RestartAfterTLSDecompressionFailure) { |
| 7953 HttpRequestInfo request; | 7954 HttpRequestInfo request; |
| 7954 request.method = "GET"; | 7955 request.method = "GET"; |
| 7955 request.url = GURL("https://tlsdecompressionfailure.example.com/"); | 7956 request.url = GURL("https://tlsdecompressionfailure.example.com/"); |
| 7956 request.load_flags = 0; | 7957 request.load_flags = 0; |
| 7957 | 7958 |
| 7958 SessionDependencies session_deps; | 7959 SessionDependencies session_deps; |
| 7959 TLSDecompressionFailureSocketDataProvider socket_data_provider1( | 7960 TLSDecompressionFailureSocketDataProvider socket_data_provider1( |
| 7960 false /* fail all reads */); | 7961 false /* fail all reads */); |
| 7961 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); | 7962 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); |
| 7962 SSLSocketDataProvider ssl_socket_data_provider1( | 7963 SSLSocketDataProvider ssl_socket_data_provider1( |
| 7963 false, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); | 7964 SYNCHRONOUS, ERR_SSL_DECOMPRESSION_FAILURE_ALERT); |
| 7964 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); | 7965 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK); |
| 7965 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); | 7966 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); |
| 7966 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); | 7967 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); |
| 7967 session_deps.socket_factory.AddSSLSocketDataProvider( | 7968 session_deps.socket_factory.AddSSLSocketDataProvider( |
| 7968 &ssl_socket_data_provider1); | 7969 &ssl_socket_data_provider1); |
| 7969 session_deps.socket_factory.AddSSLSocketDataProvider( | 7970 session_deps.socket_factory.AddSSLSocketDataProvider( |
| 7970 &ssl_socket_data_provider2); | 7971 &ssl_socket_data_provider2); |
| 7971 | 7972 |
| 7972 // Work around http://crbug.com/37454 | 7973 // Work around http://crbug.com/37454 |
| 7973 StaticSocketDataProvider bug37454_connection; | 7974 StaticSocketDataProvider bug37454_connection; |
| 7974 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED)); | 7975 bug37454_connection.set_connect_data(MockConnect(ASYNC, ERR_UNEXPECTED)); |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 8000 RestartAfterTLSDecompressionFailureWithFalseStart) { | 8001 RestartAfterTLSDecompressionFailureWithFalseStart) { |
| 8001 HttpRequestInfo request; | 8002 HttpRequestInfo request; |
| 8002 request.method = "GET"; | 8003 request.method = "GET"; |
| 8003 request.url = GURL("https://tlsdecompressionfailure2.example.com/"); | 8004 request.url = GURL("https://tlsdecompressionfailure2.example.com/"); |
| 8004 request.load_flags = 0; | 8005 request.load_flags = 0; |
| 8005 | 8006 |
| 8006 SessionDependencies session_deps; | 8007 SessionDependencies session_deps; |
| 8007 TLSDecompressionFailureSocketDataProvider socket_data_provider1( | 8008 TLSDecompressionFailureSocketDataProvider socket_data_provider1( |
| 8008 true /* fail all reads */); | 8009 true /* fail all reads */); |
| 8009 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); | 8010 TLSDecompressionFailureSocketDataProvider socket_data_provider2(false); |
| 8010 SSLSocketDataProvider ssl_socket_data_provider1(false, OK); | 8011 SSLSocketDataProvider ssl_socket_data_provider1(SYNCHRONOUS, OK); |
| 8011 SSLSocketDataProvider ssl_socket_data_provider2(false, OK); | 8012 SSLSocketDataProvider ssl_socket_data_provider2(SYNCHRONOUS, OK); |
| 8012 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); | 8013 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider1); |
| 8013 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); | 8014 session_deps.socket_factory.AddSocketDataProvider(&socket_data_provider2); |
| 8014 session_deps.socket_factory.AddSSLSocketDataProvider( | 8015 session_deps.socket_factory.AddSSLSocketDataProvider( |
| 8015 &ssl_socket_data_provider1); | 8016 &ssl_socket_data_provider1); |
| 8016 session_deps.socket_factory.AddSSLSocketDataProvider( | 8017 session_deps.socket_factory.AddSSLSocketDataProvider( |
| 8017 &ssl_socket_data_provider2); | 8018 &ssl_socket_data_provider2); |
| 8018 | 8019 |
| 8019 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8020 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 8020 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 8021 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 8021 TestCompletionCallback callback; | 8022 TestCompletionCallback callback; |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 8049 MockWrite data_writes[] = { | 8050 MockWrite data_writes[] = { |
| 8050 MockWrite("GET / HTTP/1.1\r\n" | 8051 MockWrite("GET / HTTP/1.1\r\n" |
| 8051 "Host: www.google.com\r\n" | 8052 "Host: www.google.com\r\n" |
| 8052 "Connection: keep-alive\r\n\r\n"), | 8053 "Connection: keep-alive\r\n\r\n"), |
| 8053 }; | 8054 }; |
| 8054 | 8055 |
| 8055 MockRead data_reads[] = { | 8056 MockRead data_reads[] = { |
| 8056 MockRead("HTTP/1.1 200 OK\r\n"), | 8057 MockRead("HTTP/1.1 200 OK\r\n"), |
| 8057 MockRead(kAlternateProtocolHttpHeader), | 8058 MockRead(kAlternateProtocolHttpHeader), |
| 8058 MockRead("hello world"), | 8059 MockRead("hello world"), |
| 8059 MockRead(false, OK), | 8060 MockRead(SYNCHRONOUS, OK), |
| 8060 }; | 8061 }; |
| 8061 | 8062 |
| 8062 SSLSocketDataProvider ssl(true, OK); | 8063 SSLSocketDataProvider ssl(ASYNC, OK); |
| 8063 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8064 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 8064 ssl.next_proto = "http/1.1"; | 8065 ssl.next_proto = "http/1.1"; |
| 8065 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; | 8066 ssl.protocol_negotiated = SSLClientSocket::kProtoHTTP11; |
| 8066 | 8067 |
| 8067 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8068 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 8068 | 8069 |
| 8069 StaticSocketDataProvider data(data_reads, arraysize(data_reads), | 8070 StaticSocketDataProvider data(data_reads, arraysize(data_reads), |
| 8070 data_writes, arraysize(data_writes)); | 8071 data_writes, arraysize(data_writes)); |
| 8071 session_deps.socket_factory.AddSocketDataProvider(&data); | 8072 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 8072 | 8073 |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 8102 // Fix crash: http://crbug.com/46369 | 8103 // Fix crash: http://crbug.com/46369 |
| 8103 HttpStreamFactory::set_use_alternate_protocols(true); | 8104 HttpStreamFactory::set_use_alternate_protocols(true); |
| 8104 HttpStreamFactory::set_next_protos(SpdyNextProtos()); | 8105 HttpStreamFactory::set_next_protos(SpdyNextProtos()); |
| 8105 SessionDependencies session_deps; | 8106 SessionDependencies session_deps; |
| 8106 | 8107 |
| 8107 HttpRequestInfo request; | 8108 HttpRequestInfo request; |
| 8108 request.method = "GET"; | 8109 request.method = "GET"; |
| 8109 request.url = GURL("https://www.google.com/"); | 8110 request.url = GURL("https://www.google.com/"); |
| 8110 request.load_flags = 0; | 8111 request.load_flags = 0; |
| 8111 | 8112 |
| 8112 SSLSocketDataProvider ssl(true, OK); | 8113 SSLSocketDataProvider ssl(ASYNC, OK); |
| 8113 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8114 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 8114 ssl.next_proto = "spdy/2.1"; | 8115 ssl.next_proto = "spdy/2.1"; |
| 8115 ssl.was_npn_negotiated = true; | 8116 ssl.was_npn_negotiated = true; |
| 8116 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 8117 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 8117 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8118 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 8118 | 8119 |
| 8119 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 8120 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 8120 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 8121 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 8121 | 8122 |
| 8122 MockRead spdy_reads[] = { | 8123 MockRead spdy_reads[] = { |
| 8123 MockRead(false, 0, 0) // Not async - return 0 immediately. | 8124 MockRead(SYNCHRONOUS, 0, 0) // Not async - return 0 immediately. |
| 8124 }; | 8125 }; |
| 8125 | 8126 |
| 8126 scoped_ptr<DelayedSocketData> spdy_data( | 8127 scoped_ptr<DelayedSocketData> spdy_data( |
| 8127 new DelayedSocketData( | 8128 new DelayedSocketData( |
| 8128 0, // don't wait in this case, immediate hangup. | 8129 0, // don't wait in this case, immediate hangup. |
| 8129 spdy_reads, arraysize(spdy_reads), | 8130 spdy_reads, arraysize(spdy_reads), |
| 8130 spdy_writes, arraysize(spdy_writes))); | 8131 spdy_writes, arraysize(spdy_writes))); |
| 8131 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 8132 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 8132 | 8133 |
| 8133 TestCompletionCallback callback; | 8134 TestCompletionCallback callback; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8165 request.load_flags = 0; | 8166 request.load_flags = 0; |
| 8166 | 8167 |
| 8167 // First round goes unauthenticated through the proxy. | 8168 // First round goes unauthenticated through the proxy. |
| 8168 MockWrite data_writes_1[] = { | 8169 MockWrite data_writes_1[] = { |
| 8169 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 8170 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
| 8170 "Host: www.google.com\r\n" | 8171 "Host: www.google.com\r\n" |
| 8171 "Proxy-Connection: keep-alive\r\n" | 8172 "Proxy-Connection: keep-alive\r\n" |
| 8172 "\r\n"), | 8173 "\r\n"), |
| 8173 }; | 8174 }; |
| 8174 MockRead data_reads_1[] = { | 8175 MockRead data_reads_1[] = { |
| 8175 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 8176 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 8176 MockRead("HTTP/1.1 200 OK\r\n" | 8177 MockRead("HTTP/1.1 200 OK\r\n" |
| 8177 "Alternate-Protocol: 443:npn-spdy/2.1\r\n" | 8178 "Alternate-Protocol: 443:npn-spdy/2.1\r\n" |
| 8178 "Proxy-Connection: close\r\n" | 8179 "Proxy-Connection: close\r\n" |
| 8179 "\r\n"), | 8180 "\r\n"), |
| 8180 }; | 8181 }; |
| 8181 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1), | 8182 StaticSocketDataProvider data_1(data_reads_1, arraysize(data_reads_1), |
| 8182 data_writes_1, arraysize(data_writes_1)); | 8183 data_writes_1, arraysize(data_writes_1)); |
| 8183 | 8184 |
| 8184 // Second round tries to tunnel to www.google.com due to the | 8185 // Second round tries to tunnel to www.google.com due to the |
| 8185 // Alternate-Protocol announcement in the first round. It fails due | 8186 // Alternate-Protocol announcement in the first round. It fails due |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8219 // SPDY request | 8220 // SPDY request |
| 8220 CreateMockWrite(*req), | 8221 CreateMockWrite(*req), |
| 8221 }; | 8222 }; |
| 8222 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n" | 8223 const char kRejectConnectResponse[] = ("HTTP/1.1 407 Unauthorized\r\n" |
| 8223 "Proxy-Authenticate: Mock\r\n" | 8224 "Proxy-Authenticate: Mock\r\n" |
| 8224 "Proxy-Connection: close\r\n" | 8225 "Proxy-Connection: close\r\n" |
| 8225 "\r\n"); | 8226 "\r\n"); |
| 8226 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; | 8227 const char kAcceptConnectResponse[] = "HTTP/1.1 200 Connected\r\n\r\n"; |
| 8227 MockRead data_reads_2[] = { | 8228 MockRead data_reads_2[] = { |
| 8228 // First connection attempt fails | 8229 // First connection attempt fails |
| 8229 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1), | 8230 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ, 1), |
| 8230 MockRead(true, kRejectConnectResponse, | 8231 MockRead(ASYNC, kRejectConnectResponse, |
| 8231 arraysize(kRejectConnectResponse) - 1, 1), | 8232 arraysize(kRejectConnectResponse) - 1, 1), |
| 8232 | 8233 |
| 8233 // Second connection attempt passes | 8234 // Second connection attempt passes |
| 8234 MockRead(true, kAcceptConnectResponse, | 8235 MockRead(ASYNC, kAcceptConnectResponse, |
| 8235 arraysize(kAcceptConnectResponse) -1, 4), | 8236 arraysize(kAcceptConnectResponse) -1, 4), |
| 8236 | 8237 |
| 8237 // SPDY response | 8238 // SPDY response |
| 8238 CreateMockRead(*resp.get(), 6), | 8239 CreateMockRead(*resp.get(), 6), |
| 8239 CreateMockRead(*data.get(), 6), | 8240 CreateMockRead(*data.get(), 6), |
| 8240 MockRead(true, 0, 0, 6), | 8241 MockRead(ASYNC, 0, 0, 6), |
| 8241 }; | 8242 }; |
| 8242 scoped_ptr<OrderedSocketData> data_2( | 8243 scoped_ptr<OrderedSocketData> data_2( |
| 8243 new OrderedSocketData(data_reads_2, arraysize(data_reads_2), | 8244 new OrderedSocketData(data_reads_2, arraysize(data_reads_2), |
| 8244 data_writes_2, arraysize(data_writes_2))); | 8245 data_writes_2, arraysize(data_writes_2))); |
| 8245 | 8246 |
| 8246 SSLSocketDataProvider ssl(true, OK); | 8247 SSLSocketDataProvider ssl(ASYNC, OK); |
| 8247 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8248 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 8248 ssl.next_proto = "spdy/2.1"; | 8249 ssl.next_proto = "spdy/2.1"; |
| 8249 ssl.was_npn_negotiated = true; | 8250 ssl.was_npn_negotiated = true; |
| 8250 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 8251 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 8251 | 8252 |
| 8252 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); | 8253 MockConnect never_finishing_connect(SYNCHRONOUS, ERR_IO_PENDING); |
| 8253 StaticSocketDataProvider hanging_non_alternate_protocol_socket( | 8254 StaticSocketDataProvider hanging_non_alternate_protocol_socket( |
| 8254 NULL, 0, NULL, 0); | 8255 NULL, 0, NULL, 0); |
| 8255 hanging_non_alternate_protocol_socket.set_connect_data( | 8256 hanging_non_alternate_protocol_socket.set_connect_data( |
| 8256 never_finishing_connect); | 8257 never_finishing_connect); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8299 // Test that if we cancel the transaction as the connection is completing, that | 8300 // Test that if we cancel the transaction as the connection is completing, that |
| 8300 // everything tears down correctly. | 8301 // everything tears down correctly. |
| 8301 TEST_F(HttpNetworkTransactionTest, SimpleCancel) { | 8302 TEST_F(HttpNetworkTransactionTest, SimpleCancel) { |
| 8302 // Setup everything about the connection to complete synchronously, so that | 8303 // Setup everything about the connection to complete synchronously, so that |
| 8303 // after calling HttpNetworkTransaction::Start, the only thing we're waiting | 8304 // after calling HttpNetworkTransaction::Start, the only thing we're waiting |
| 8304 // for is the callback from the HttpStreamRequest. | 8305 // for is the callback from the HttpStreamRequest. |
| 8305 // Then cancel the transaction. | 8306 // Then cancel the transaction. |
| 8306 // Verify that we don't crash. | 8307 // Verify that we don't crash. |
| 8307 MockConnect mock_connect(SYNCHRONOUS, OK); | 8308 MockConnect mock_connect(SYNCHRONOUS, OK); |
| 8308 MockRead data_reads[] = { | 8309 MockRead data_reads[] = { |
| 8309 MockRead(false, "HTTP/1.0 200 OK\r\n\r\n"), | 8310 MockRead(SYNCHRONOUS, "HTTP/1.0 200 OK\r\n\r\n"), |
| 8310 MockRead(false, "hello world"), | 8311 MockRead(SYNCHRONOUS, "hello world"), |
| 8311 MockRead(false, OK), | 8312 MockRead(SYNCHRONOUS, OK), |
| 8312 }; | 8313 }; |
| 8313 | 8314 |
| 8314 HttpRequestInfo request; | 8315 HttpRequestInfo request; |
| 8315 request.method = "GET"; | 8316 request.method = "GET"; |
| 8316 request.url = GURL("http://www.google.com/"); | 8317 request.url = GURL("http://www.google.com/"); |
| 8317 request.load_flags = 0; | 8318 request.load_flags = 0; |
| 8318 | 8319 |
| 8319 SessionDependencies session_deps; | 8320 SessionDependencies session_deps; |
| 8320 session_deps.host_resolver->set_synchronous_mode(true); | 8321 session_deps.host_resolver->set_synchronous_mode(true); |
| 8321 scoped_ptr<HttpTransaction> trans( | 8322 scoped_ptr<HttpTransaction> trans( |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 8349 MockWrite data_writes1[] = { | 8350 MockWrite data_writes1[] = { |
| 8350 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" | 8351 MockWrite("GET http://www.google.com/ HTTP/1.1\r\n" |
| 8351 "Host: www.google.com\r\n" | 8352 "Host: www.google.com\r\n" |
| 8352 "Proxy-Connection: keep-alive\r\n\r\n"), | 8353 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 8353 }; | 8354 }; |
| 8354 | 8355 |
| 8355 MockRead data_reads1[] = { | 8356 MockRead data_reads1[] = { |
| 8356 MockRead("HTTP/1.1 200 OK\r\n"), | 8357 MockRead("HTTP/1.1 200 OK\r\n"), |
| 8357 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 8358 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 8358 MockRead("Content-Length: 100\r\n\r\n"), | 8359 MockRead("Content-Length: 100\r\n\r\n"), |
| 8359 MockRead(false, OK), | 8360 MockRead(SYNCHRONOUS, OK), |
| 8360 }; | 8361 }; |
| 8361 | 8362 |
| 8362 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 8363 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 8363 data_writes1, arraysize(data_writes1)); | 8364 data_writes1, arraysize(data_writes1)); |
| 8364 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8365 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 8365 | 8366 |
| 8366 TestCompletionCallback callback1; | 8367 TestCompletionCallback callback1; |
| 8367 | 8368 |
| 8368 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 8369 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 8369 | 8370 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8404 "Host: www.google.com\r\n" | 8405 "Host: www.google.com\r\n" |
| 8405 "Connection: keep-alive\r\n\r\n"), | 8406 "Connection: keep-alive\r\n\r\n"), |
| 8406 }; | 8407 }; |
| 8407 | 8408 |
| 8408 MockRead data_reads1[] = { | 8409 MockRead data_reads1[] = { |
| 8409 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 8410 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
| 8410 | 8411 |
| 8411 MockRead("HTTP/1.1 200 OK\r\n"), | 8412 MockRead("HTTP/1.1 200 OK\r\n"), |
| 8412 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), | 8413 MockRead("Content-Type: text/html; charset=iso-8859-1\r\n"), |
| 8413 MockRead("Content-Length: 100\r\n\r\n"), | 8414 MockRead("Content-Length: 100\r\n\r\n"), |
| 8414 MockRead(false, OK), | 8415 MockRead(SYNCHRONOUS, OK), |
| 8415 }; | 8416 }; |
| 8416 | 8417 |
| 8417 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 8418 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 8418 data_writes1, arraysize(data_writes1)); | 8419 data_writes1, arraysize(data_writes1)); |
| 8419 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8420 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 8420 SSLSocketDataProvider ssl(true, OK); | 8421 SSLSocketDataProvider ssl(ASYNC, OK); |
| 8421 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8422 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 8422 | 8423 |
| 8423 TestCompletionCallback callback1; | 8424 TestCompletionCallback callback1; |
| 8424 | 8425 |
| 8425 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 8426 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 8426 | 8427 |
| 8427 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 8428 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 8428 EXPECT_EQ(ERR_IO_PENDING, rv); | 8429 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 8429 | 8430 |
| 8430 rv = callback1.WaitForResult(); | 8431 rv = callback1.WaitForResult(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8466 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" | 8467 MockWrite("CONNECT www.google.com:443 HTTP/1.1\r\n" |
| 8467 "Host: www.google.com\r\n" | 8468 "Host: www.google.com\r\n" |
| 8468 "Proxy-Connection: keep-alive\r\n\r\n"), | 8469 "Proxy-Connection: keep-alive\r\n\r\n"), |
| 8469 | 8470 |
| 8470 MockWrite("GET / HTTP/1.1\r\n" | 8471 MockWrite("GET / HTTP/1.1\r\n" |
| 8471 "Host: www.google.com\r\n" | 8472 "Host: www.google.com\r\n" |
| 8472 "Connection: keep-alive\r\n\r\n"), | 8473 "Connection: keep-alive\r\n\r\n"), |
| 8473 }; | 8474 }; |
| 8474 | 8475 |
| 8475 MockRead data_reads1[] = { | 8476 MockRead data_reads1[] = { |
| 8476 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 8477 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
| 8477 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), | 8478 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), |
| 8478 MockRead(true, 0, 0), // EOF | 8479 MockRead(ASYNC, 0, 0), // EOF |
| 8479 }; | 8480 }; |
| 8480 | 8481 |
| 8481 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), | 8482 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 8482 data_writes1, arraysize(data_writes1)); | 8483 data_writes1, arraysize(data_writes1)); |
| 8483 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8484 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 8484 SSLSocketDataProvider ssl(true, OK); | 8485 SSLSocketDataProvider ssl(ASYNC, OK); |
| 8485 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8486 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 8486 | 8487 |
| 8487 TestCompletionCallback callback1; | 8488 TestCompletionCallback callback1; |
| 8488 | 8489 |
| 8489 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 8490 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 8490 | 8491 |
| 8491 int rv = trans->Start(&request, callback1.callback(), log.bound()); | 8492 int rv = trans->Start(&request, callback1.callback(), log.bound()); |
| 8492 EXPECT_EQ(ERR_IO_PENDING, rv); | 8493 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 8493 | 8494 |
| 8494 rv = callback1.WaitForResult(); | 8495 rv = callback1.WaitForResult(); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 8510 | 8511 |
| 8511 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet( | 8512 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet( |
| 8512 "https://www.google.com", false, 1, LOWEST)); | 8513 "https://www.google.com", false, 1, LOWEST)); |
| 8513 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; | 8514 MockWrite spdy_writes[] = { CreateMockWrite(*req) }; |
| 8514 | 8515 |
| 8515 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 8516 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 8516 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); | 8517 scoped_ptr<spdy::SpdyFrame> data(ConstructSpdyBodyFrame(1, true)); |
| 8517 MockRead spdy_reads[] = { | 8518 MockRead spdy_reads[] = { |
| 8518 CreateMockRead(*resp), | 8519 CreateMockRead(*resp), |
| 8519 CreateMockRead(*data), | 8520 CreateMockRead(*data), |
| 8520 MockRead(true, 0, 0), | 8521 MockRead(ASYNC, 0, 0), |
| 8521 }; | 8522 }; |
| 8522 | 8523 |
| 8523 scoped_ptr<DelayedSocketData> spdy_data( | 8524 scoped_ptr<DelayedSocketData> spdy_data( |
| 8524 new DelayedSocketData( | 8525 new DelayedSocketData( |
| 8525 1, // wait for one write to finish before reading. | 8526 1, // wait for one write to finish before reading. |
| 8526 spdy_reads, arraysize(spdy_reads), | 8527 spdy_reads, arraysize(spdy_reads), |
| 8527 spdy_writes, arraysize(spdy_writes))); | 8528 spdy_writes, arraysize(spdy_writes))); |
| 8528 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 8529 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 8529 | 8530 |
| 8530 SSLSocketDataProvider ssl(true, OK); | 8531 SSLSocketDataProvider ssl(ASYNC, OK); |
| 8531 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8532 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 8532 ssl.next_proto = "spdy/2.1"; | 8533 ssl.next_proto = "spdy/2.1"; |
| 8533 ssl.was_npn_negotiated = true; | 8534 ssl.was_npn_negotiated = true; |
| 8534 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 8535 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 8535 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8536 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 8536 | 8537 |
| 8537 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8538 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 8538 | 8539 |
| 8539 // Set up an initial SpdySession in the pool to reuse. | 8540 // Set up an initial SpdySession in the pool to reuse. |
| 8540 HostPortPair host_port_pair("www.google.com", 443); | 8541 HostPortPair host_port_pair("www.google.com", 443); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 8563 | 8564 |
| 8564 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8565 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
| 8565 | 8566 |
| 8566 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); | 8567 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| 8567 EXPECT_EQ(ERR_IO_PENDING, rv); | 8568 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 8568 EXPECT_EQ(OK, callback.WaitForResult()); | 8569 EXPECT_EQ(OK, callback.WaitForResult()); |
| 8569 } | 8570 } |
| 8570 | 8571 |
| 8571 // Given a net error, cause that error to be returned from the first Write() | 8572 // Given a net error, cause that error to be returned from the first Write() |
| 8572 // call and verify that the HttpTransaction fails with that error. | 8573 // call and verify that the HttpTransaction fails with that error. |
| 8573 static void CheckErrorIsPassedBack(int error, bool async) { | 8574 static void CheckErrorIsPassedBack(int error, IoMode mode) { |
| 8574 net::HttpRequestInfo request_info; | 8575 net::HttpRequestInfo request_info; |
| 8575 request_info.url = GURL("https://www.example.com/"); | 8576 request_info.url = GURL("https://www.example.com/"); |
| 8576 request_info.method = "GET"; | 8577 request_info.method = "GET"; |
| 8577 request_info.load_flags = net::LOAD_NORMAL; | 8578 request_info.load_flags = net::LOAD_NORMAL; |
| 8578 | 8579 |
| 8579 SessionDependencies session_deps; | 8580 SessionDependencies session_deps; |
| 8580 | 8581 |
| 8581 SSLSocketDataProvider ssl_data(async, OK); | 8582 SSLSocketDataProvider ssl_data(mode, OK); |
| 8582 net::MockWrite data_writes[] = { | 8583 net::MockWrite data_writes[] = { |
| 8583 net::MockWrite(async, error), | 8584 net::MockWrite(mode, error), |
| 8584 }; | 8585 }; |
| 8585 net::StaticSocketDataProvider data(NULL, 0, | 8586 net::StaticSocketDataProvider data(NULL, 0, |
| 8586 data_writes, arraysize(data_writes)); | 8587 data_writes, arraysize(data_writes)); |
| 8587 session_deps.socket_factory.AddSocketDataProvider(&data); | 8588 session_deps.socket_factory.AddSocketDataProvider(&data); |
| 8588 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data); | 8589 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data); |
| 8589 | 8590 |
| 8590 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8591 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 8591 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8592 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
| 8592 | 8593 |
| 8593 TestCompletionCallback callback; | 8594 TestCompletionCallback callback; |
| 8594 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog()); | 8595 int rv = trans->Start(&request_info, callback.callback(), net::BoundNetLog()); |
| 8595 if (rv == net::ERR_IO_PENDING) | 8596 if (rv == net::ERR_IO_PENDING) |
| 8596 rv = callback.WaitForResult(); | 8597 rv = callback.WaitForResult(); |
| 8597 ASSERT_EQ(error, rv); | 8598 ASSERT_EQ(error, rv); |
| 8598 } | 8599 } |
| 8599 | 8600 |
| 8600 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) { | 8601 TEST_F(HttpNetworkTransactionTest, SSLWriteCertError) { |
| 8601 // Just check a grab bag of cert errors. | 8602 // Just check a grab bag of cert errors. |
| 8602 static const int kErrors[] = { | 8603 static const int kErrors[] = { |
| 8603 ERR_CERT_COMMON_NAME_INVALID, | 8604 ERR_CERT_COMMON_NAME_INVALID, |
| 8604 ERR_CERT_AUTHORITY_INVALID, | 8605 ERR_CERT_AUTHORITY_INVALID, |
| 8605 ERR_CERT_DATE_INVALID, | 8606 ERR_CERT_DATE_INVALID, |
| 8606 }; | 8607 }; |
| 8607 for (size_t i = 0; i < arraysize(kErrors); i++) { | 8608 for (size_t i = 0; i < arraysize(kErrors); i++) { |
| 8608 CheckErrorIsPassedBack(kErrors[i], false /* not async */); | 8609 CheckErrorIsPassedBack(kErrors[i], ASYNC); |
| 8609 CheckErrorIsPassedBack(kErrors[i], true /* async */); | 8610 CheckErrorIsPassedBack(kErrors[i], SYNCHRONOUS); |
| 8610 } | 8611 } |
| 8611 } | 8612 } |
| 8612 | 8613 |
| 8613 // Ensure that a client certificate is removed from the SSL client auth | 8614 // Ensure that a client certificate is removed from the SSL client auth |
| 8614 // cache when: | 8615 // cache when: |
| 8615 // 1) No proxy is involved. | 8616 // 1) No proxy is involved. |
| 8616 // 2) TLS False Start is disabled. | 8617 // 2) TLS False Start is disabled. |
| 8617 // 3) The initial TLS handshake requests a client certificate. | 8618 // 3) The initial TLS handshake requests a client certificate. |
| 8618 // 4) The client supplies an invalid/unacceptable certificate. | 8619 // 4) The client supplies an invalid/unacceptable certificate. |
| 8619 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) { | 8620 TEST_F(HttpNetworkTransactionTest, ClientAuthCertCache_Direct_NoFalseStart) { |
| 8620 net::HttpRequestInfo request_info; | 8621 net::HttpRequestInfo request_info; |
| 8621 request_info.url = GURL("https://www.example.com/"); | 8622 request_info.url = GURL("https://www.example.com/"); |
| 8622 request_info.method = "GET"; | 8623 request_info.method = "GET"; |
| 8623 request_info.load_flags = net::LOAD_NORMAL; | 8624 request_info.load_flags = net::LOAD_NORMAL; |
| 8624 | 8625 |
| 8625 SessionDependencies session_deps; | 8626 SessionDependencies session_deps; |
| 8626 | 8627 |
| 8627 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); | 8628 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); |
| 8628 cert_request->host_and_port = "www.example.com:443"; | 8629 cert_request->host_and_port = "www.example.com:443"; |
| 8629 | 8630 |
| 8630 // [ssl_]data1 contains the data for the first SSL handshake. When a | 8631 // [ssl_]data1 contains the data for the first SSL handshake. When a |
| 8631 // CertificateRequest is received for the first time, the handshake will | 8632 // CertificateRequest is received for the first time, the handshake will |
| 8632 // be aborted to allow the caller to provide a certificate. | 8633 // be aborted to allow the caller to provide a certificate. |
| 8633 SSLSocketDataProvider ssl_data1(true /* async */, | 8634 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); |
| 8634 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); | |
| 8635 ssl_data1.cert_request_info = cert_request.get(); | 8635 ssl_data1.cert_request_info = cert_request.get(); |
| 8636 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); | 8636 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); |
| 8637 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); | 8637 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); |
| 8638 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8638 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 8639 | 8639 |
| 8640 // [ssl_]data2 contains the data for the second SSL handshake. When TLS | 8640 // [ssl_]data2 contains the data for the second SSL handshake. When TLS |
| 8641 // False Start is not being used, the result of the SSL handshake will be | 8641 // False Start is not being used, the result of the SSL handshake will be |
| 8642 // returned as part of the SSLClientSocket::Connect() call. This test | 8642 // returned as part of the SSLClientSocket::Connect() call. This test |
| 8643 // matches the result of a server sending a handshake_failure alert, | 8643 // matches the result of a server sending a handshake_failure alert, |
| 8644 // rather than a Finished message, because it requires a client | 8644 // rather than a Finished message, because it requires a client |
| 8645 // certificate and none was supplied. | 8645 // certificate and none was supplied. |
| 8646 SSLSocketDataProvider ssl_data2(true /* async */, | 8646 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
| 8647 net::ERR_SSL_PROTOCOL_ERROR); | |
| 8648 ssl_data2.cert_request_info = cert_request.get(); | 8647 ssl_data2.cert_request_info = cert_request.get(); |
| 8649 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); | 8648 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); |
| 8650 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); | 8649 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); |
| 8651 session_deps.socket_factory.AddSocketDataProvider(&data2); | 8650 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 8652 | 8651 |
| 8653 // [ssl_]data3 contains the data for the third SSL handshake. When a | 8652 // [ssl_]data3 contains the data for the third SSL handshake. When a |
| 8654 // connection to a server fails during an SSL handshake, | 8653 // connection to a server fails during an SSL handshake, |
| 8655 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial | 8654 // HttpNetworkTransaction will attempt to fallback to SSLv3 if the initial |
| 8656 // connection was attempted with TLSv1. This is transparent to the caller | 8655 // connection was attempted with TLSv1. This is transparent to the caller |
| 8657 // of the HttpNetworkTransaction. Because this test failure is due to | 8656 // of the HttpNetworkTransaction. Because this test failure is due to |
| 8658 // requiring a client certificate, this fallback handshake should also | 8657 // requiring a client certificate, this fallback handshake should also |
| 8659 // fail. | 8658 // fail. |
| 8660 SSLSocketDataProvider ssl_data3(true /* async */, | 8659 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
| 8661 net::ERR_SSL_PROTOCOL_ERROR); | |
| 8662 ssl_data3.cert_request_info = cert_request.get(); | 8660 ssl_data3.cert_request_info = cert_request.get(); |
| 8663 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); | 8661 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); |
| 8664 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); | 8662 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); |
| 8665 session_deps.socket_factory.AddSocketDataProvider(&data3); | 8663 session_deps.socket_factory.AddSocketDataProvider(&data3); |
| 8666 | 8664 |
| 8667 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8665 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 8668 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8666 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
| 8669 | 8667 |
| 8670 // Begin the SSL handshake with the peer. This consumes ssl_data1. | 8668 // Begin the SSL handshake with the peer. This consumes ssl_data1. |
| 8671 TestCompletionCallback callback; | 8669 TestCompletionCallback callback; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8728 // The actual handshake will be finished when SSLClientSocket::Read() is | 8726 // The actual handshake will be finished when SSLClientSocket::Read() is |
| 8729 // called, which expects to process the peer's ChangeCipherSpec and | 8727 // called, which expects to process the peer's ChangeCipherSpec and |
| 8730 // Finished messages. If there was an error negotiating with the peer, | 8728 // Finished messages. If there was an error negotiating with the peer, |
| 8731 // such as due to the peer requiring a client certificate when none was | 8729 // such as due to the peer requiring a client certificate when none was |
| 8732 // supplied, the alert sent by the peer won't be processed until Read() is | 8730 // supplied, the alert sent by the peer won't be processed until Read() is |
| 8733 // called. | 8731 // called. |
| 8734 | 8732 |
| 8735 // Like the non-False Start case, when a client certificate is requested by | 8733 // Like the non-False Start case, when a client certificate is requested by |
| 8736 // the peer, the handshake is aborted during the Connect() call. | 8734 // the peer, the handshake is aborted during the Connect() call. |
| 8737 // [ssl_]data1 represents the initial SSL handshake with the peer. | 8735 // [ssl_]data1 represents the initial SSL handshake with the peer. |
| 8738 SSLSocketDataProvider ssl_data1(true /* async */, | 8736 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); |
| 8739 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); | |
| 8740 ssl_data1.cert_request_info = cert_request.get(); | 8737 ssl_data1.cert_request_info = cert_request.get(); |
| 8741 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); | 8738 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); |
| 8742 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); | 8739 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); |
| 8743 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8740 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 8744 | 8741 |
| 8745 // When a client certificate is supplied, Connect() will not be aborted | 8742 // When a client certificate is supplied, Connect() will not be aborted |
| 8746 // when the peer requests the certificate. Instead, the handshake will | 8743 // when the peer requests the certificate. Instead, the handshake will |
| 8747 // artificially succeed, allowing the caller to write the HTTP request to | 8744 // artificially succeed, allowing the caller to write the HTTP request to |
| 8748 // the socket. The handshake messages are not processed until Read() is | 8745 // the socket. The handshake messages are not processed until Read() is |
| 8749 // called, which then detects that the handshake was aborted, due to the | 8746 // called, which then detects that the handshake was aborted, due to the |
| 8750 // peer sending a handshake_failure because it requires a client | 8747 // peer sending a handshake_failure because it requires a client |
| 8751 // certificate. | 8748 // certificate. |
| 8752 SSLSocketDataProvider ssl_data2(true /* async */, net::OK); | 8749 SSLSocketDataProvider ssl_data2(ASYNC, net::OK); |
| 8753 ssl_data2.cert_request_info = cert_request.get(); | 8750 ssl_data2.cert_request_info = cert_request.get(); |
| 8754 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); | 8751 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); |
| 8755 net::MockRead data2_reads[] = { | 8752 net::MockRead data2_reads[] = { |
| 8756 net::MockRead(true /* async */, net::ERR_SSL_PROTOCOL_ERROR), | 8753 net::MockRead(ASYNC /* async */, net::ERR_SSL_PROTOCOL_ERROR), |
| 8757 }; | 8754 }; |
| 8758 net::StaticSocketDataProvider data2( | 8755 net::StaticSocketDataProvider data2( |
| 8759 data2_reads, arraysize(data2_reads), NULL, 0); | 8756 data2_reads, arraysize(data2_reads), NULL, 0); |
| 8760 session_deps.socket_factory.AddSocketDataProvider(&data2); | 8757 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 8761 | 8758 |
| 8762 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is | 8759 // As described in ClientAuthCertCache_Direct_NoFalseStart, [ssl_]data3 is |
| 8763 // the data for the SSL handshake once the TLSv1 connection falls back to | 8760 // the data for the SSL handshake once the TLSv1 connection falls back to |
| 8764 // SSLv3. It has the same behaviour as [ssl_]data2. | 8761 // SSLv3. It has the same behaviour as [ssl_]data2. |
| 8765 SSLSocketDataProvider ssl_data3(true /* async */, net::OK); | 8762 SSLSocketDataProvider ssl_data3(ASYNC, net::OK); |
| 8766 ssl_data3.cert_request_info = cert_request.get(); | 8763 ssl_data3.cert_request_info = cert_request.get(); |
| 8767 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); | 8764 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); |
| 8768 net::StaticSocketDataProvider data3( | 8765 net::StaticSocketDataProvider data3( |
| 8769 data2_reads, arraysize(data2_reads), NULL, 0); | 8766 data2_reads, arraysize(data2_reads), NULL, 0); |
| 8770 session_deps.socket_factory.AddSocketDataProvider(&data3); | 8767 session_deps.socket_factory.AddSocketDataProvider(&data3); |
| 8771 | 8768 |
| 8772 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); | 8769 scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps)); |
| 8773 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); | 8770 scoped_ptr<HttpNetworkTransaction> trans(new HttpNetworkTransaction(session)); |
| 8774 | 8771 |
| 8775 // Begin the initial SSL handshake. | 8772 // Begin the initial SSL handshake. |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8823 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); | 8820 CapturingBoundNetLog log(CapturingNetLog::kUnbounded); |
| 8824 session_deps.net_log = log.bound().net_log(); | 8821 session_deps.net_log = log.bound().net_log(); |
| 8825 | 8822 |
| 8826 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); | 8823 scoped_refptr<SSLCertRequestInfo> cert_request(new SSLCertRequestInfo()); |
| 8827 cert_request->host_and_port = "proxy:70"; | 8824 cert_request->host_and_port = "proxy:70"; |
| 8828 | 8825 |
| 8829 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of | 8826 // See ClientAuthCertCache_Direct_NoFalseStart for the explanation of |
| 8830 // [ssl_]data[1-3]. Rather than represending the endpoint | 8827 // [ssl_]data[1-3]. Rather than represending the endpoint |
| 8831 // (www.example.com:443), they represent failures with the HTTPS proxy | 8828 // (www.example.com:443), they represent failures with the HTTPS proxy |
| 8832 // (proxy:70). | 8829 // (proxy:70). |
| 8833 SSLSocketDataProvider ssl_data1(true /* async */, | 8830 SSLSocketDataProvider ssl_data1(ASYNC, net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); |
| 8834 net::ERR_SSL_CLIENT_AUTH_CERT_NEEDED); | |
| 8835 ssl_data1.cert_request_info = cert_request.get(); | 8831 ssl_data1.cert_request_info = cert_request.get(); |
| 8836 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); | 8832 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data1); |
| 8837 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); | 8833 net::StaticSocketDataProvider data1(NULL, 0, NULL, 0); |
| 8838 session_deps.socket_factory.AddSocketDataProvider(&data1); | 8834 session_deps.socket_factory.AddSocketDataProvider(&data1); |
| 8839 | 8835 |
| 8840 SSLSocketDataProvider ssl_data2(true /* async */, | 8836 SSLSocketDataProvider ssl_data2(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
| 8841 net::ERR_SSL_PROTOCOL_ERROR); | |
| 8842 ssl_data2.cert_request_info = cert_request.get(); | 8837 ssl_data2.cert_request_info = cert_request.get(); |
| 8843 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); | 8838 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data2); |
| 8844 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); | 8839 net::StaticSocketDataProvider data2(NULL, 0, NULL, 0); |
| 8845 session_deps.socket_factory.AddSocketDataProvider(&data2); | 8840 session_deps.socket_factory.AddSocketDataProvider(&data2); |
| 8846 | 8841 |
| 8847 SSLSocketDataProvider ssl_data3(true /* async */, | 8842 SSLSocketDataProvider ssl_data3(ASYNC, net::ERR_SSL_PROTOCOL_ERROR); |
| 8848 net::ERR_SSL_PROTOCOL_ERROR); | |
| 8849 ssl_data3.cert_request_info = cert_request.get(); | 8843 ssl_data3.cert_request_info = cert_request.get(); |
| 8850 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); | 8844 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl_data3); |
| 8851 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); | 8845 net::StaticSocketDataProvider data3(NULL, 0, NULL, 0); |
| 8852 session_deps.socket_factory.AddSocketDataProvider(&data3); | 8846 session_deps.socket_factory.AddSocketDataProvider(&data3); |
| 8853 | 8847 |
| 8854 net::HttpRequestInfo requests[2]; | 8848 net::HttpRequestInfo requests[2]; |
| 8855 requests[0].url = GURL("https://www.example.com/"); | 8849 requests[0].url = GURL("https://www.example.com/"); |
| 8856 requests[0].method = "GET"; | 8850 requests[0].method = "GET"; |
| 8857 requests[0].load_flags = net::LOAD_NORMAL; | 8851 requests[0].load_flags = net::LOAD_NORMAL; |
| 8858 | 8852 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 8957 params.proxy_service = session_deps.proxy_service.get(); | 8951 params.proxy_service = session_deps.proxy_service.get(); |
| 8958 params.ssl_config_service = session_deps.ssl_config_service; | 8952 params.ssl_config_service = session_deps.ssl_config_service; |
| 8959 params.http_auth_handler_factory = | 8953 params.http_auth_handler_factory = |
| 8960 session_deps.http_auth_handler_factory.get(); | 8954 session_deps.http_auth_handler_factory.get(); |
| 8961 params.http_server_properties = &session_deps.http_server_properties; | 8955 params.http_server_properties = &session_deps.http_server_properties; |
| 8962 params.net_log = session_deps.net_log; | 8956 params.net_log = session_deps.net_log; |
| 8963 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); | 8957 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); |
| 8964 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); | 8958 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); |
| 8965 pool_peer.DisableDomainAuthenticationVerification(); | 8959 pool_peer.DisableDomainAuthenticationVerification(); |
| 8966 | 8960 |
| 8967 SSLSocketDataProvider ssl(true, OK); | 8961 SSLSocketDataProvider ssl(ASYNC, OK); |
| 8968 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 8962 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 8969 ssl.next_proto = "spdy/2.1"; | 8963 ssl.next_proto = "spdy/2.1"; |
| 8970 ssl.was_npn_negotiated = true; | 8964 ssl.was_npn_negotiated = true; |
| 8971 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 8965 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 8972 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 8966 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 8973 | 8967 |
| 8974 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( | 8968 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( |
| 8975 "https://www.google.com", false, 1, LOWEST)); | 8969 "https://www.google.com", false, 1, LOWEST)); |
| 8976 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( | 8970 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( |
| 8977 "https://www.gmail.com", false, 3, LOWEST)); | 8971 "https://www.gmail.com", false, 3, LOWEST)); |
| 8978 MockWrite spdy_writes[] = { | 8972 MockWrite spdy_writes[] = { |
| 8979 CreateMockWrite(*host1_req, 1), | 8973 CreateMockWrite(*host1_req, 1), |
| 8980 CreateMockWrite(*host2_req, 4), | 8974 CreateMockWrite(*host2_req, 4), |
| 8981 }; | 8975 }; |
| 8982 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 8976 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 8983 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); | 8977 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
| 8984 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); | 8978 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 8985 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); | 8979 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); |
| 8986 MockRead spdy_reads[] = { | 8980 MockRead spdy_reads[] = { |
| 8987 CreateMockRead(*host1_resp, 2), | 8981 CreateMockRead(*host1_resp, 2), |
| 8988 CreateMockRead(*host1_resp_body, 3), | 8982 CreateMockRead(*host1_resp_body, 3), |
| 8989 CreateMockRead(*host2_resp, 5), | 8983 CreateMockRead(*host2_resp, 5), |
| 8990 CreateMockRead(*host2_resp_body, 6), | 8984 CreateMockRead(*host2_resp_body, 6), |
| 8991 MockRead(true, 0, 7), | 8985 MockRead(ASYNC, 0, 7), |
| 8992 }; | 8986 }; |
| 8993 | 8987 |
| 8994 scoped_ptr<OrderedSocketData> spdy_data( | 8988 scoped_ptr<OrderedSocketData> spdy_data( |
| 8995 new OrderedSocketData( | 8989 new OrderedSocketData( |
| 8996 spdy_reads, arraysize(spdy_reads), | 8990 spdy_reads, arraysize(spdy_reads), |
| 8997 spdy_writes, arraysize(spdy_writes))); | 8991 spdy_writes, arraysize(spdy_writes))); |
| 8998 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 8992 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 8999 | 8993 |
| 9000 TestCompletionCallback callback; | 8994 TestCompletionCallback callback; |
| 9001 HttpRequestInfo request1; | 8995 HttpRequestInfo request1; |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 9111 params.proxy_service = session_deps.proxy_service.get(); | 9105 params.proxy_service = session_deps.proxy_service.get(); |
| 9112 params.ssl_config_service = session_deps.ssl_config_service; | 9106 params.ssl_config_service = session_deps.ssl_config_service; |
| 9113 params.http_auth_handler_factory = | 9107 params.http_auth_handler_factory = |
| 9114 session_deps.http_auth_handler_factory.get(); | 9108 session_deps.http_auth_handler_factory.get(); |
| 9115 params.http_server_properties = &session_deps.http_server_properties; | 9109 params.http_server_properties = &session_deps.http_server_properties; |
| 9116 params.net_log = session_deps.net_log; | 9110 params.net_log = session_deps.net_log; |
| 9117 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); | 9111 scoped_refptr<HttpNetworkSession> session(new HttpNetworkSession(params)); |
| 9118 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); | 9112 SpdySessionPoolPeer pool_peer(session->spdy_session_pool()); |
| 9119 pool_peer.DisableDomainAuthenticationVerification(); | 9113 pool_peer.DisableDomainAuthenticationVerification(); |
| 9120 | 9114 |
| 9121 SSLSocketDataProvider ssl(true, OK); | 9115 SSLSocketDataProvider ssl(ASYNC, OK); |
| 9122 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; | 9116 ssl.next_proto_status = SSLClientSocket::kNextProtoNegotiated; |
| 9123 ssl.next_proto = "spdy/2.1"; | 9117 ssl.next_proto = "spdy/2.1"; |
| 9124 ssl.was_npn_negotiated = true; | 9118 ssl.was_npn_negotiated = true; |
| 9125 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; | 9119 ssl.protocol_negotiated = SSLClientSocket::kProtoSPDY21; |
| 9126 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); | 9120 session_deps.socket_factory.AddSSLSocketDataProvider(&ssl); |
| 9127 | 9121 |
| 9128 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( | 9122 scoped_ptr<spdy::SpdyFrame> host1_req(ConstructSpdyGet( |
| 9129 "https://www.google.com", false, 1, LOWEST)); | 9123 "https://www.google.com", false, 1, LOWEST)); |
| 9130 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( | 9124 scoped_ptr<spdy::SpdyFrame> host2_req(ConstructSpdyGet( |
| 9131 "https://www.gmail.com", false, 3, LOWEST)); | 9125 "https://www.gmail.com", false, 3, LOWEST)); |
| 9132 MockWrite spdy_writes[] = { | 9126 MockWrite spdy_writes[] = { |
| 9133 CreateMockWrite(*host1_req, 1), | 9127 CreateMockWrite(*host1_req, 1), |
| 9134 CreateMockWrite(*host2_req, 4), | 9128 CreateMockWrite(*host2_req, 4), |
| 9135 }; | 9129 }; |
| 9136 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 9130 scoped_ptr<spdy::SpdyFrame> host1_resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 9137 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); | 9131 scoped_ptr<spdy::SpdyFrame> host1_resp_body(ConstructSpdyBodyFrame(1, true)); |
| 9138 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); | 9132 scoped_ptr<spdy::SpdyFrame> host2_resp(ConstructSpdyGetSynReply(NULL, 0, 3)); |
| 9139 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); | 9133 scoped_ptr<spdy::SpdyFrame> host2_resp_body(ConstructSpdyBodyFrame(3, true)); |
| 9140 MockRead spdy_reads[] = { | 9134 MockRead spdy_reads[] = { |
| 9141 CreateMockRead(*host1_resp, 2), | 9135 CreateMockRead(*host1_resp, 2), |
| 9142 CreateMockRead(*host1_resp_body, 3), | 9136 CreateMockRead(*host1_resp_body, 3), |
| 9143 CreateMockRead(*host2_resp, 5), | 9137 CreateMockRead(*host2_resp, 5), |
| 9144 CreateMockRead(*host2_resp_body, 6), | 9138 CreateMockRead(*host2_resp_body, 6), |
| 9145 MockRead(true, 0, 7), | 9139 MockRead(ASYNC, 0, 7), |
| 9146 }; | 9140 }; |
| 9147 | 9141 |
| 9148 scoped_ptr<OrderedSocketData> spdy_data( | 9142 scoped_ptr<OrderedSocketData> spdy_data( |
| 9149 new OrderedSocketData( | 9143 new OrderedSocketData( |
| 9150 spdy_reads, arraysize(spdy_reads), | 9144 spdy_reads, arraysize(spdy_reads), |
| 9151 spdy_writes, arraysize(spdy_writes))); | 9145 spdy_writes, arraysize(spdy_writes))); |
| 9152 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); | 9146 session_deps.socket_factory.AddSocketDataProvider(spdy_data.get()); |
| 9153 | 9147 |
| 9154 TestCompletionCallback callback; | 9148 TestCompletionCallback callback; |
| 9155 HttpRequestInfo request1; | 9149 HttpRequestInfo request1; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 9204 EXPECT_TRUE(response->was_npn_negotiated); | 9198 EXPECT_TRUE(response->was_npn_negotiated); |
| 9205 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); | 9199 ASSERT_EQ(OK, ReadTransaction(&trans2, &response_data)); |
| 9206 EXPECT_EQ("hello!", response_data); | 9200 EXPECT_EQ("hello!", response_data); |
| 9207 | 9201 |
| 9208 HttpStreamFactory::set_next_protos(std::vector<std::string>()); | 9202 HttpStreamFactory::set_next_protos(std::vector<std::string>()); |
| 9209 HttpStreamFactory::set_use_alternate_protocols(false); | 9203 HttpStreamFactory::set_use_alternate_protocols(false); |
| 9210 } | 9204 } |
| 9211 | 9205 |
| 9212 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { | 9206 TEST_F(HttpNetworkTransactionTest, ReadPipelineEvictionFallback) { |
| 9213 MockRead data_reads1[] = { | 9207 MockRead data_reads1[] = { |
| 9214 MockRead(false, ERR_PIPELINE_EVICTION), | 9208 MockRead(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |
| 9215 }; | 9209 }; |
| 9216 MockRead data_reads2[] = { | 9210 MockRead data_reads2[] = { |
| 9217 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 9211 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
| 9218 MockRead("hello world"), | 9212 MockRead("hello world"), |
| 9219 MockRead(false, OK), | 9213 MockRead(SYNCHRONOUS, OK), |
| 9220 }; | 9214 }; |
| 9221 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); | 9215 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), NULL, 0); |
| 9222 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); | 9216 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), NULL, 0); |
| 9223 StaticSocketDataProvider* data[] = { &data1, &data2 }; | 9217 StaticSocketDataProvider* data[] = { &data1, &data2 }; |
| 9224 | 9218 |
| 9225 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | 9219 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |
| 9226 | 9220 |
| 9227 EXPECT_EQ(OK, out.rv); | 9221 EXPECT_EQ(OK, out.rv); |
| 9228 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 9222 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
| 9229 EXPECT_EQ("hello world", out.response_data); | 9223 EXPECT_EQ("hello world", out.response_data); |
| 9230 } | 9224 } |
| 9231 | 9225 |
| 9232 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { | 9226 TEST_F(HttpNetworkTransactionTest, SendPipelineEvictionFallback) { |
| 9233 MockWrite data_writes1[] = { | 9227 MockWrite data_writes1[] = { |
| 9234 MockWrite(false, ERR_PIPELINE_EVICTION), | 9228 MockWrite(SYNCHRONOUS, ERR_PIPELINE_EVICTION), |
| 9235 }; | 9229 }; |
| 9236 MockWrite data_writes2[] = { | 9230 MockWrite data_writes2[] = { |
| 9237 MockWrite("GET / HTTP/1.1\r\n" | 9231 MockWrite("GET / HTTP/1.1\r\n" |
| 9238 "Host: www.google.com\r\n" | 9232 "Host: www.google.com\r\n" |
| 9239 "Connection: keep-alive\r\n\r\n"), | 9233 "Connection: keep-alive\r\n\r\n"), |
| 9240 }; | 9234 }; |
| 9241 MockRead data_reads2[] = { | 9235 MockRead data_reads2[] = { |
| 9242 MockRead("HTTP/1.0 200 OK\r\n\r\n"), | 9236 MockRead("HTTP/1.0 200 OK\r\n\r\n"), |
| 9243 MockRead("hello world"), | 9237 MockRead("hello world"), |
| 9244 MockRead(false, OK), | 9238 MockRead(SYNCHRONOUS, OK), |
| 9245 }; | 9239 }; |
| 9246 StaticSocketDataProvider data1(NULL, 0, | 9240 StaticSocketDataProvider data1(NULL, 0, |
| 9247 data_writes1, arraysize(data_writes1)); | 9241 data_writes1, arraysize(data_writes1)); |
| 9248 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), | 9242 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 9249 data_writes2, arraysize(data_writes2)); | 9243 data_writes2, arraysize(data_writes2)); |
| 9250 StaticSocketDataProvider* data[] = { &data1, &data2 }; | 9244 StaticSocketDataProvider* data[] = { &data1, &data2 }; |
| 9251 | 9245 |
| 9252 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); | 9246 SimpleGetHelperResult out = SimpleGetHelperForData(data, arraysize(data)); |
| 9253 | 9247 |
| 9254 EXPECT_EQ(OK, out.rv); | 9248 EXPECT_EQ(OK, out.rv); |
| 9255 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); | 9249 EXPECT_EQ("HTTP/1.0 200 OK", out.status_line); |
| 9256 EXPECT_EQ("hello world", out.response_data); | 9250 EXPECT_EQ("hello world", out.response_data); |
| 9257 } | 9251 } |
| 9258 | 9252 |
| 9259 } // namespace net | 9253 } // namespace net |
| OLD | NEW |