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

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 1072423005: Set network_accessed earlier, when network transaction creates stream. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Don't break build on iOS Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_transaction.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 1566 matching lines...) Expand 10 before | Expand all | Expand 10 after
1577 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 1577 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
1578 session_deps_.socket_factory->AddSocketDataProvider(&data); 1578 session_deps_.socket_factory->AddSocketDataProvider(&data);
1579 1579
1580 TestCompletionCallback callback; 1580 TestCompletionCallback callback;
1581 1581
1582 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1582 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
1583 EXPECT_EQ(ERR_IO_PENDING, rv); 1583 EXPECT_EQ(ERR_IO_PENDING, rv);
1584 1584
1585 rv = callback.WaitForResult(); 1585 rv = callback.WaitForResult();
1586 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 1586 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
1587
1588 const HttpResponseInfo* response = trans->GetResponseInfo();
1589 EXPECT_TRUE(response == NULL);
1590 } 1587 }
1591 1588
1592 // What do various browsers do when the server closes a non-keepalive 1589 // What do various browsers do when the server closes a non-keepalive
1593 // connection without sending any response header or body? 1590 // connection without sending any response header or body?
1594 // 1591 //
1595 // IE7: error page 1592 // IE7: error page
1596 // Safari 3.1.2 (Windows): error page 1593 // Safari 3.1.2 (Windows): error page
1597 // Firefox 3.0.1: blank page 1594 // Firefox 3.0.1: blank page
1598 // Opera 9.52: after five attempts, blank page 1595 // Opera 9.52: after five attempts, blank page
1599 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE) 1596 // Us with WinHTTP: error page (ERR_INVALID_RESPONSE)
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1638 1635
1639 TestCompletionCallback callback; 1636 TestCompletionCallback callback;
1640 1637
1641 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1638 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
1642 EXPECT_EQ(ERR_IO_PENDING, rv); 1639 EXPECT_EQ(ERR_IO_PENDING, rv);
1643 base::MessageLoop::current()->RunUntilIdle(); 1640 base::MessageLoop::current()->RunUntilIdle();
1644 1641
1645 // Should have deferred for network start. 1642 // Should have deferred for network start.
1646 EXPECT_TRUE(net_start_handler.observed_before_network_start()); 1643 EXPECT_TRUE(net_start_handler.observed_before_network_start());
1647 EXPECT_EQ(LOAD_STATE_WAITING_FOR_DELEGATE, trans->GetLoadState()); 1644 EXPECT_EQ(LOAD_STATE_WAITING_FOR_DELEGATE, trans->GetLoadState());
1648 EXPECT_TRUE(trans->GetResponseInfo() == NULL);
1649 1645
1650 trans->ResumeNetworkStart(); 1646 trans->ResumeNetworkStart();
1651 rv = callback.WaitForResult(); 1647 rv = callback.WaitForResult();
1652 EXPECT_EQ(OK, rv); 1648 EXPECT_EQ(OK, rv);
1653 EXPECT_TRUE(trans->GetResponseInfo() != NULL); 1649 EXPECT_TRUE(trans->GetResponseInfo() != NULL);
1654 1650
1655 scoped_refptr<IOBufferWithSize> io_buf(new IOBufferWithSize(100)); 1651 scoped_refptr<IOBufferWithSize> io_buf(new IOBufferWithSize(100));
1656 rv = trans->Read(io_buf.get(), io_buf->size(), callback.callback()); 1652 rv = trans->Read(io_buf.get(), io_buf->size(), callback.callback());
1657 if (rv == ERR_IO_PENDING) 1653 if (rv == ERR_IO_PENDING)
1658 rv = callback.WaitForResult(); 1654 rv = callback.WaitForResult();
(...skipping 20 matching lines...) Expand all
1679 1675
1680 TestCompletionCallback callback; 1676 TestCompletionCallback callback;
1681 1677
1682 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 1678 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
1683 EXPECT_EQ(ERR_IO_PENDING, rv); 1679 EXPECT_EQ(ERR_IO_PENDING, rv);
1684 base::MessageLoop::current()->RunUntilIdle(); 1680 base::MessageLoop::current()->RunUntilIdle();
1685 1681
1686 // Should have deferred for network start. 1682 // Should have deferred for network start.
1687 EXPECT_TRUE(net_start_handler.observed_before_network_start()); 1683 EXPECT_TRUE(net_start_handler.observed_before_network_start());
1688 EXPECT_EQ(LOAD_STATE_WAITING_FOR_DELEGATE, trans->GetLoadState()); 1684 EXPECT_EQ(LOAD_STATE_WAITING_FOR_DELEGATE, trans->GetLoadState());
1689 EXPECT_TRUE(trans->GetResponseInfo() == NULL);
1690 } 1685 }
1691 1686
1692 // Next 2 cases (KeepAliveEarlyClose and KeepAliveEarlyClose2) are regression 1687 // Next 2 cases (KeepAliveEarlyClose and KeepAliveEarlyClose2) are regression
1693 // tests. There was a bug causing HttpNetworkTransaction to hang in the 1688 // tests. There was a bug causing HttpNetworkTransaction to hang in the
1694 // destructor in such situations. 1689 // destructor in such situations.
1695 // See http://crbug.com/154712 and http://crbug.com/156609. 1690 // See http://crbug.com/154712 and http://crbug.com/156609.
1696 TEST_P(HttpNetworkTransactionTest, KeepAliveEarlyClose) { 1691 TEST_P(HttpNetworkTransactionTest, KeepAliveEarlyClose) {
1697 HttpRequestInfo request; 1692 HttpRequestInfo request;
1698 request.method = "GET"; 1693 request.method = "GET";
1699 request.url = GURL("http://www.example.org/"); 1694 request.url = GURL("http://www.example.org/");
(...skipping 3296 matching lines...) Expand 10 before | Expand all | Expand 10 after
4996 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); 4991 StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0);
4997 session_deps_.socket_factory->AddSocketDataProvider(&data); 4992 session_deps_.socket_factory->AddSocketDataProvider(&data);
4998 4993
4999 TestCompletionCallback callback; 4994 TestCompletionCallback callback;
5000 4995
5001 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 4996 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
5002 EXPECT_EQ(ERR_IO_PENDING, rv); 4997 EXPECT_EQ(ERR_IO_PENDING, rv);
5003 4998
5004 rv = callback.WaitForResult(); 4999 rv = callback.WaitForResult();
5005 EXPECT_EQ(ERR_RESPONSE_HEADERS_TOO_BIG, rv); 5000 EXPECT_EQ(ERR_RESPONSE_HEADERS_TOO_BIG, rv);
5006
5007 const HttpResponseInfo* response = trans->GetResponseInfo();
5008 EXPECT_TRUE(response == NULL);
5009 } 5001 }
5010 5002
5011 // Make sure that we don't try to reuse a TCPClientSocket when failing to 5003 // Make sure that we don't try to reuse a TCPClientSocket when failing to
5012 // establish tunnel. 5004 // establish tunnel.
5013 // http://code.google.com/p/chromium/issues/detail?id=3772 5005 // http://code.google.com/p/chromium/issues/detail?id=3772
5014 TEST_P(HttpNetworkTransactionTest, 5006 TEST_P(HttpNetworkTransactionTest,
5015 DontRecycleTransportSocketForSSLTunnel) { 5007 DontRecycleTransportSocketForSSLTunnel) {
5016 HttpRequestInfo request; 5008 HttpRequestInfo request;
5017 request.method = "GET"; 5009 request.method = "GET";
5018 request.url = GURL("https://www.example.org/"); 5010 request.url = GURL("https://www.example.org/");
(...skipping 29 matching lines...) Expand all
5048 session_deps_.socket_factory->AddSocketDataProvider(&data1); 5040 session_deps_.socket_factory->AddSocketDataProvider(&data1);
5049 5041
5050 TestCompletionCallback callback1; 5042 TestCompletionCallback callback1;
5051 5043
5052 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 5044 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
5053 EXPECT_EQ(ERR_IO_PENDING, rv); 5045 EXPECT_EQ(ERR_IO_PENDING, rv);
5054 5046
5055 rv = callback1.WaitForResult(); 5047 rv = callback1.WaitForResult();
5056 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv); 5048 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, rv);
5057 5049
5058 const HttpResponseInfo* response = trans->GetResponseInfo();
5059 EXPECT_TRUE(response == NULL);
5060
5061 // Empty the current queue. This is necessary because idle sockets are 5050 // Empty the current queue. This is necessary because idle sockets are
5062 // added to the connection pool asynchronously with a PostTask. 5051 // added to the connection pool asynchronously with a PostTask.
5063 base::MessageLoop::current()->RunUntilIdle(); 5052 base::MessageLoop::current()->RunUntilIdle();
5064 5053
5065 // We now check to make sure the TCPClientSocket was not added back to 5054 // We now check to make sure the TCPClientSocket was not added back to
5066 // the pool. 5055 // the pool.
5067 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get())); 5056 EXPECT_EQ(0, GetIdleSocketCountInTransportSocketPool(session.get()));
5068 trans.reset(); 5057 trans.reset();
5069 base::MessageLoop::current()->RunUntilIdle(); 5058 base::MessageLoop::current()->RunUntilIdle();
5070 // Make sure that the socket didn't get recycled after calling the destructor. 5059 // Make sure that the socket didn't get recycled after calling the destructor.
(...skipping 3456 matching lines...) Expand 10 before | Expand all | Expand 10 after
8527 session_deps_.socket_factory->AddSocketDataProvider(&data); 8516 session_deps_.socket_factory->AddSocketDataProvider(&data);
8528 8517
8529 TestCompletionCallback callback; 8518 TestCompletionCallback callback;
8530 8519
8531 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 8520 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
8532 EXPECT_EQ(ERR_IO_PENDING, rv); 8521 EXPECT_EQ(ERR_IO_PENDING, rv);
8533 8522
8534 rv = callback.WaitForResult(); 8523 rv = callback.WaitForResult();
8535 EXPECT_EQ(ERR_ACCESS_DENIED, rv); 8524 EXPECT_EQ(ERR_ACCESS_DENIED, rv);
8536 8525
8537 const HttpResponseInfo* response = trans->GetResponseInfo();
8538 EXPECT_FALSE(response);
8539
8540 base::DeleteFile(temp_file, false); 8526 base::DeleteFile(temp_file, false);
8541 } 8527 }
8542 8528
8543 TEST_P(HttpNetworkTransactionTest, CancelDuringInitRequestBody) { 8529 TEST_P(HttpNetworkTransactionTest, CancelDuringInitRequestBody) {
8544 class FakeUploadElementReader : public UploadElementReader { 8530 class FakeUploadElementReader : public UploadElementReader {
8545 public: 8531 public:
8546 FakeUploadElementReader() {} 8532 FakeUploadElementReader() {}
8547 ~FakeUploadElementReader() override {} 8533 ~FakeUploadElementReader() override {}
8548 8534
8549 const CompletionCallback& callback() const { return callback_; } 8535 const CompletionCallback& callback() const { return callback_; }
(...skipping 1629 matching lines...) Expand 10 before | Expand all | Expand 10 after
10179 } else { 10165 } else {
10180 rv = trans.RestartWithAuth( 10166 rv = trans.RestartWithAuth(
10181 AuthCredentials(kFoo, kBar), callback.callback()); 10167 AuthCredentials(kFoo, kBar), callback.callback());
10182 } 10168 }
10183 if (rv == ERR_IO_PENDING) 10169 if (rv == ERR_IO_PENDING)
10184 rv = callback.WaitForResult(); 10170 rv = callback.WaitForResult();
10185 10171
10186 // Compare results with expected data. 10172 // Compare results with expected data.
10187 EXPECT_EQ(read_write_round.expected_rv, rv); 10173 EXPECT_EQ(read_write_round.expected_rv, rv);
10188 const HttpResponseInfo* response = trans.GetResponseInfo(); 10174 const HttpResponseInfo* response = trans.GetResponseInfo();
10189 if (read_write_round.expected_rv == OK) { 10175 if (read_write_round.expected_rv != OK) {
10190 ASSERT_TRUE(response != NULL);
10191 } else {
10192 EXPECT_TRUE(response == NULL);
10193 EXPECT_EQ(round + 1, test_config.num_auth_rounds); 10176 EXPECT_EQ(round + 1, test_config.num_auth_rounds);
10194 continue; 10177 continue;
10195 } 10178 }
10196 if (round + 1 < test_config.num_auth_rounds) { 10179 if (round + 1 < test_config.num_auth_rounds) {
10197 EXPECT_FALSE(response->auth_challenge.get() == NULL); 10180 EXPECT_FALSE(response->auth_challenge.get() == NULL);
10198 } else { 10181 } else {
10199 EXPECT_TRUE(response->auth_challenge.get() == NULL); 10182 EXPECT_TRUE(response->auth_challenge.get() == NULL);
10200 } 10183 }
10201 } 10184 }
10202 } 10185 }
(...skipping 2526 matching lines...) Expand 10 before | Expand all | Expand 10 after
12729 session_deps_.socket_factory->AddSocketDataProvider(&data); 12712 session_deps_.socket_factory->AddSocketDataProvider(&data);
12730 12713
12731 TestCompletionCallback callback; 12714 TestCompletionCallback callback;
12732 12715
12733 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 12716 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
12734 EXPECT_EQ(ERR_IO_PENDING, rv); 12717 EXPECT_EQ(ERR_IO_PENDING, rv);
12735 12718
12736 rv = callback.WaitForResult(); 12719 rv = callback.WaitForResult();
12737 EXPECT_EQ(ERR_CONNECTION_REFUSED, rv); 12720 EXPECT_EQ(ERR_CONNECTION_REFUSED, rv);
12738 12721
12739 EXPECT_EQ(NULL, trans->GetResponseInfo());
12740
12741 // We don't care whether this succeeds or fails, but it shouldn't crash. 12722 // We don't care whether this succeeds or fails, but it shouldn't crash.
12742 HttpRequestHeaders request_headers; 12723 HttpRequestHeaders request_headers;
12743 trans->GetFullRequestHeaders(&request_headers); 12724 trans->GetFullRequestHeaders(&request_headers);
12744 12725
12745 ConnectionAttempts attempts; 12726 ConnectionAttempts attempts;
12746 trans->GetConnectionAttempts(&attempts); 12727 trans->GetConnectionAttempts(&attempts);
12747 ASSERT_EQ(1u, attempts.size()); 12728 ASSERT_EQ(1u, attempts.size());
12748 EXPECT_EQ(ERR_CONNECTION_REFUSED, attempts[0].result); 12729 EXPECT_EQ(ERR_CONNECTION_REFUSED, attempts[0].result);
12749 } 12730 }
12750 12731
(...skipping 13 matching lines...) Expand all
12764 session_deps_.socket_factory->AddSocketDataProvider(&data); 12745 session_deps_.socket_factory->AddSocketDataProvider(&data);
12765 12746
12766 TestCompletionCallback callback; 12747 TestCompletionCallback callback;
12767 12748
12768 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 12749 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
12769 EXPECT_EQ(ERR_IO_PENDING, rv); 12750 EXPECT_EQ(ERR_IO_PENDING, rv);
12770 12751
12771 rv = callback.WaitForResult(); 12752 rv = callback.WaitForResult();
12772 EXPECT_EQ(ERR_CONNECTION_REFUSED, rv); 12753 EXPECT_EQ(ERR_CONNECTION_REFUSED, rv);
12773 12754
12774 EXPECT_EQ(NULL, trans->GetResponseInfo());
12775
12776 // We don't care whether this succeeds or fails, but it shouldn't crash. 12755 // We don't care whether this succeeds or fails, but it shouldn't crash.
12777 HttpRequestHeaders request_headers; 12756 HttpRequestHeaders request_headers;
12778 trans->GetFullRequestHeaders(&request_headers); 12757 trans->GetFullRequestHeaders(&request_headers);
12779 12758
12780 ConnectionAttempts attempts; 12759 ConnectionAttempts attempts;
12781 trans->GetConnectionAttempts(&attempts); 12760 trans->GetConnectionAttempts(&attempts);
12782 ASSERT_EQ(1u, attempts.size()); 12761 ASSERT_EQ(1u, attempts.size());
12783 EXPECT_EQ(ERR_CONNECTION_REFUSED, attempts[0].result); 12762 EXPECT_EQ(ERR_CONNECTION_REFUSED, attempts[0].result);
12784 } 12763 }
12785 12764
(...skipping 19 matching lines...) Expand all
12805 session_deps_.socket_factory->AddSocketDataProvider(&data); 12784 session_deps_.socket_factory->AddSocketDataProvider(&data);
12806 12785
12807 TestCompletionCallback callback; 12786 TestCompletionCallback callback;
12808 12787
12809 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 12788 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
12810 EXPECT_EQ(ERR_IO_PENDING, rv); 12789 EXPECT_EQ(ERR_IO_PENDING, rv);
12811 12790
12812 rv = callback.WaitForResult(); 12791 rv = callback.WaitForResult();
12813 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 12792 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
12814 12793
12815 EXPECT_EQ(NULL, trans->GetResponseInfo());
12816
12817 HttpRequestHeaders request_headers; 12794 HttpRequestHeaders request_headers;
12818 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers)); 12795 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers));
12819 EXPECT_TRUE(request_headers.HasHeader("Host")); 12796 EXPECT_TRUE(request_headers.HasHeader("Host"));
12820 } 12797 }
12821 12798
12822 TEST_P(HttpNetworkTransactionTest, HttpAsyncWriteError) { 12799 TEST_P(HttpNetworkTransactionTest, HttpAsyncWriteError) {
12823 HttpRequestInfo request; 12800 HttpRequestInfo request;
12824 request.method = "GET"; 12801 request.method = "GET";
12825 request.url = GURL("http://www.example.org/"); 12802 request.url = GURL("http://www.example.org/");
12826 request.load_flags = 0; 12803 request.load_flags = 0;
(...skipping 14 matching lines...) Expand all
12841 session_deps_.socket_factory->AddSocketDataProvider(&data); 12818 session_deps_.socket_factory->AddSocketDataProvider(&data);
12842 12819
12843 TestCompletionCallback callback; 12820 TestCompletionCallback callback;
12844 12821
12845 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 12822 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
12846 EXPECT_EQ(ERR_IO_PENDING, rv); 12823 EXPECT_EQ(ERR_IO_PENDING, rv);
12847 12824
12848 rv = callback.WaitForResult(); 12825 rv = callback.WaitForResult();
12849 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 12826 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
12850 12827
12851 EXPECT_EQ(NULL, trans->GetResponseInfo());
12852
12853 HttpRequestHeaders request_headers; 12828 HttpRequestHeaders request_headers;
12854 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers)); 12829 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers));
12855 EXPECT_TRUE(request_headers.HasHeader("Host")); 12830 EXPECT_TRUE(request_headers.HasHeader("Host"));
12856 } 12831 }
12857 12832
12858 TEST_P(HttpNetworkTransactionTest, HttpSyncReadError) { 12833 TEST_P(HttpNetworkTransactionTest, HttpSyncReadError) {
12859 HttpRequestInfo request; 12834 HttpRequestInfo request;
12860 request.method = "GET"; 12835 request.method = "GET";
12861 request.url = GURL("http://www.example.org/"); 12836 request.url = GURL("http://www.example.org/");
12862 request.load_flags = 0; 12837 request.load_flags = 0;
(...skipping 17 matching lines...) Expand all
12880 session_deps_.socket_factory->AddSocketDataProvider(&data); 12855 session_deps_.socket_factory->AddSocketDataProvider(&data);
12881 12856
12882 TestCompletionCallback callback; 12857 TestCompletionCallback callback;
12883 12858
12884 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 12859 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
12885 EXPECT_EQ(ERR_IO_PENDING, rv); 12860 EXPECT_EQ(ERR_IO_PENDING, rv);
12886 12861
12887 rv = callback.WaitForResult(); 12862 rv = callback.WaitForResult();
12888 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 12863 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
12889 12864
12890 EXPECT_EQ(NULL, trans->GetResponseInfo());
12891
12892 HttpRequestHeaders request_headers; 12865 HttpRequestHeaders request_headers;
12893 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers)); 12866 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers));
12894 EXPECT_TRUE(request_headers.HasHeader("Host")); 12867 EXPECT_TRUE(request_headers.HasHeader("Host"));
12895 } 12868 }
12896 12869
12897 TEST_P(HttpNetworkTransactionTest, HttpAsyncReadError) { 12870 TEST_P(HttpNetworkTransactionTest, HttpAsyncReadError) {
12898 HttpRequestInfo request; 12871 HttpRequestInfo request;
12899 request.method = "GET"; 12872 request.method = "GET";
12900 request.url = GURL("http://www.example.org/"); 12873 request.url = GURL("http://www.example.org/");
12901 request.load_flags = 0; 12874 request.load_flags = 0;
(...skipping 17 matching lines...) Expand all
12919 session_deps_.socket_factory->AddSocketDataProvider(&data); 12892 session_deps_.socket_factory->AddSocketDataProvider(&data);
12920 12893
12921 TestCompletionCallback callback; 12894 TestCompletionCallback callback;
12922 12895
12923 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 12896 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
12924 EXPECT_EQ(ERR_IO_PENDING, rv); 12897 EXPECT_EQ(ERR_IO_PENDING, rv);
12925 12898
12926 rv = callback.WaitForResult(); 12899 rv = callback.WaitForResult();
12927 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 12900 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
12928 12901
12929 EXPECT_EQ(NULL, trans->GetResponseInfo());
12930
12931 HttpRequestHeaders request_headers; 12902 HttpRequestHeaders request_headers;
12932 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers)); 12903 EXPECT_TRUE(trans->GetFullRequestHeaders(&request_headers));
12933 EXPECT_TRUE(request_headers.HasHeader("Host")); 12904 EXPECT_TRUE(request_headers.HasHeader("Host"));
12934 } 12905 }
12935 12906
12936 TEST_P(HttpNetworkTransactionTest, GetFullRequestHeadersIncludesExtraHeader) { 12907 TEST_P(HttpNetworkTransactionTest, GetFullRequestHeadersIncludesExtraHeader) {
12937 HttpRequestInfo request; 12908 HttpRequestInfo request;
12938 request.method = "GET"; 12909 request.method = "GET";
12939 request.url = GURL("http://www.example.org/"); 12910 request.url = GURL("http://www.example.org/");
12940 request.load_flags = 0; 12911 request.load_flags = 0;
(...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after
13949 arraysize(data_writes)); 13920 arraysize(data_writes));
13950 session_deps_.socket_factory->AddSocketDataProvider(&data); 13921 session_deps_.socket_factory->AddSocketDataProvider(&data);
13951 13922
13952 TestCompletionCallback callback; 13923 TestCompletionCallback callback;
13953 13924
13954 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 13925 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
13955 EXPECT_EQ(ERR_IO_PENDING, rv); 13926 EXPECT_EQ(ERR_IO_PENDING, rv);
13956 13927
13957 rv = callback.WaitForResult(); 13928 rv = callback.WaitForResult();
13958 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 13929 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
13959
13960 const HttpResponseInfo* response = trans->GetResponseInfo();
13961 EXPECT_TRUE(response == NULL);
13962 } 13930 }
13963 13931
13964 TEST_P(HttpNetworkTransactionTest, 13932 TEST_P(HttpNetworkTransactionTest,
13965 PostIgnoresNonErrorResponseAfterResetAnd100) { 13933 PostIgnoresNonErrorResponseAfterResetAnd100) {
13966 ScopedVector<UploadElementReader> element_readers; 13934 ScopedVector<UploadElementReader> element_readers;
13967 element_readers.push_back(new UploadBytesElementReader("foo", 3)); 13935 element_readers.push_back(new UploadBytesElementReader("foo", 3));
13968 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); 13936 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0);
13969 13937
13970 HttpRequestInfo request; 13938 HttpRequestInfo request;
13971 request.method = "POST"; 13939 request.method = "POST";
(...skipping 24 matching lines...) Expand all
13996 arraysize(data_writes)); 13964 arraysize(data_writes));
13997 session_deps_.socket_factory->AddSocketDataProvider(&data); 13965 session_deps_.socket_factory->AddSocketDataProvider(&data);
13998 13966
13999 TestCompletionCallback callback; 13967 TestCompletionCallback callback;
14000 13968
14001 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 13969 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
14002 EXPECT_EQ(ERR_IO_PENDING, rv); 13970 EXPECT_EQ(ERR_IO_PENDING, rv);
14003 13971
14004 rv = callback.WaitForResult(); 13972 rv = callback.WaitForResult();
14005 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 13973 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
14006
14007 const HttpResponseInfo* response = trans->GetResponseInfo();
14008 EXPECT_TRUE(response == NULL);
14009 } 13974 }
14010 13975
14011 TEST_P(HttpNetworkTransactionTest, PostIgnoresHttp09ResponseAfterReset) { 13976 TEST_P(HttpNetworkTransactionTest, PostIgnoresHttp09ResponseAfterReset) {
14012 ScopedVector<UploadElementReader> element_readers; 13977 ScopedVector<UploadElementReader> element_readers;
14013 element_readers.push_back(new UploadBytesElementReader("foo", 3)); 13978 element_readers.push_back(new UploadBytesElementReader("foo", 3));
14014 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); 13979 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0);
14015 13980
14016 HttpRequestInfo request; 13981 HttpRequestInfo request;
14017 request.method = "POST"; 13982 request.method = "POST";
14018 request.url = GURL("http://www.foo.com/"); 13983 request.url = GURL("http://www.foo.com/");
(...skipping 20 matching lines...) Expand all
14039 arraysize(data_writes)); 14004 arraysize(data_writes));
14040 session_deps_.socket_factory->AddSocketDataProvider(&data); 14005 session_deps_.socket_factory->AddSocketDataProvider(&data);
14041 14006
14042 TestCompletionCallback callback; 14007 TestCompletionCallback callback;
14043 14008
14044 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 14009 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
14045 EXPECT_EQ(ERR_IO_PENDING, rv); 14010 EXPECT_EQ(ERR_IO_PENDING, rv);
14046 14011
14047 rv = callback.WaitForResult(); 14012 rv = callback.WaitForResult();
14048 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 14013 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
14049
14050 const HttpResponseInfo* response = trans->GetResponseInfo();
14051 EXPECT_TRUE(response == NULL);
14052 } 14014 }
14053 14015
14054 TEST_P(HttpNetworkTransactionTest, PostIgnoresPartial400HeadersAfterReset) { 14016 TEST_P(HttpNetworkTransactionTest, PostIgnoresPartial400HeadersAfterReset) {
14055 ScopedVector<UploadElementReader> element_readers; 14017 ScopedVector<UploadElementReader> element_readers;
14056 element_readers.push_back(new UploadBytesElementReader("foo", 3)); 14018 element_readers.push_back(new UploadBytesElementReader("foo", 3));
14057 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); 14019 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0);
14058 14020
14059 HttpRequestInfo request; 14021 HttpRequestInfo request;
14060 request.method = "POST"; 14022 request.method = "POST";
14061 request.url = GURL("http://www.foo.com/"); 14023 request.url = GURL("http://www.foo.com/");
(...skipping 20 matching lines...) Expand all
14082 arraysize(data_writes)); 14044 arraysize(data_writes));
14083 session_deps_.socket_factory->AddSocketDataProvider(&data); 14045 session_deps_.socket_factory->AddSocketDataProvider(&data);
14084 14046
14085 TestCompletionCallback callback; 14047 TestCompletionCallback callback;
14086 14048
14087 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 14049 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
14088 EXPECT_EQ(ERR_IO_PENDING, rv); 14050 EXPECT_EQ(ERR_IO_PENDING, rv);
14089 14051
14090 rv = callback.WaitForResult(); 14052 rv = callback.WaitForResult();
14091 EXPECT_EQ(ERR_CONNECTION_RESET, rv); 14053 EXPECT_EQ(ERR_CONNECTION_RESET, rv);
14092
14093 const HttpResponseInfo* response = trans->GetResponseInfo();
14094 EXPECT_TRUE(response == NULL);
14095 } 14054 }
14096 14055
14097 // Verify that proxy headers are not sent to the destination server when 14056 // Verify that proxy headers are not sent to the destination server when
14098 // establishing a tunnel for a secure WebSocket connection. 14057 // establishing a tunnel for a secure WebSocket connection.
14099 TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWssTunnel) { 14058 TEST_P(HttpNetworkTransactionTest, ProxyHeadersNotSentOverWssTunnel) {
14100 HttpRequestInfo request; 14059 HttpRequestInfo request;
14101 request.method = "GET"; 14060 request.method = "GET";
14102 request.url = GURL("wss://www.example.org/"); 14061 request.url = GURL("wss://www.example.org/");
14103 AddWebSocketHeaders(&request.extra_headers); 14062 AddWebSocketHeaders(&request.extra_headers);
14104 14063
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
14272 ASSERT_TRUE(response); 14231 ASSERT_TRUE(response);
14273 ASSERT_TRUE(response->headers.get()); 14232 ASSERT_TRUE(response->headers.get());
14274 14233
14275 EXPECT_EQ(101, response->headers->response_code()); 14234 EXPECT_EQ(101, response->headers->response_code());
14276 14235
14277 trans.reset(); 14236 trans.reset();
14278 session->CloseAllConnections(); 14237 session->CloseAllConnections();
14279 } 14238 }
14280 14239
14281 } // namespace net 14240 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_transaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698