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

Side by Side Diff: net/spdy/spdy_network_transaction_unittest.cc

Issue 2675593002: Spdy{RstStream,GoAway}Status -> SpdyErrorCode. (Closed)
Patch Set: Merged master, which includes 145087791. Created 3 years, 10 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/spdy/spdy_http_stream_unittest.cc ('k') | net/spdy/spdy_no_op_visitor.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 (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 <cmath> 5 #include <cmath>
6 #include <memory> 6 #include <memory>
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 1763 matching lines...) Expand 10 before | Expand all | Expand 10 after
1774 helper.VerifyDataConsumed(); 1774 helper.VerifyDataConsumed();
1775 } 1775 }
1776 1776
1777 // The client upon cancellation tries to send a RST_STREAM frame. The mock 1777 // The client upon cancellation tries to send a RST_STREAM frame. The mock
1778 // socket causes the TCP write to return zero. This test checks that the client 1778 // socket causes the TCP write to return zero. This test checks that the client
1779 // tries to queue up the RST_STREAM frame again. 1779 // tries to queue up the RST_STREAM frame again.
1780 TEST_F(SpdyNetworkTransactionTest, SocketWriteReturnsZero) { 1780 TEST_F(SpdyNetworkTransactionTest, SocketWriteReturnsZero) {
1781 SpdySerializedFrame req( 1781 SpdySerializedFrame req(
1782 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 1782 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1783 SpdySerializedFrame rst( 1783 SpdySerializedFrame rst(
1784 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1784 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
1785 MockWrite writes[] = { 1785 MockWrite writes[] = {
1786 CreateMockWrite(req, 0, SYNCHRONOUS), MockWrite(SYNCHRONOUS, 0, 0, 2), 1786 CreateMockWrite(req, 0, SYNCHRONOUS), MockWrite(SYNCHRONOUS, 0, 0, 2),
1787 CreateMockWrite(rst, 3, SYNCHRONOUS), 1787 CreateMockWrite(rst, 3, SYNCHRONOUS),
1788 }; 1788 };
1789 1789
1790 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 1790 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
1791 MockRead reads[] = { 1791 MockRead reads[] = {
1792 CreateMockRead(resp, 1, ASYNC), MockRead(ASYNC, 0, 0, 4) // EOF 1792 CreateMockRead(resp, 1, ASYNC), MockRead(ASYNC, 0, 0, 4) // EOF
1793 }; 1793 };
1794 1794
(...skipping 17 matching lines...) Expand all
1812 // Test that the transaction doesn't crash when we don't have a reply. 1812 // Test that the transaction doesn't crash when we don't have a reply.
1813 TEST_F(SpdyNetworkTransactionTest, ResponseWithoutHeaders) { 1813 TEST_F(SpdyNetworkTransactionTest, ResponseWithoutHeaders) {
1814 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 1814 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
1815 MockRead reads[] = { 1815 MockRead reads[] = {
1816 CreateMockRead(body, 1), MockRead(ASYNC, 0, 3) // EOF 1816 CreateMockRead(body, 1), MockRead(ASYNC, 0, 3) // EOF
1817 }; 1817 };
1818 1818
1819 SpdySerializedFrame req( 1819 SpdySerializedFrame req(
1820 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 1820 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1821 SpdySerializedFrame rst( 1821 SpdySerializedFrame rst(
1822 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 1822 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
1823 MockWrite writes[] = { 1823 MockWrite writes[] = {
1824 CreateMockWrite(req, 0), CreateMockWrite(rst, 2), 1824 CreateMockWrite(req, 0), CreateMockWrite(rst, 2),
1825 }; 1825 };
1826 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1826 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1827 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 1827 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
1828 NetLogWithSource(), nullptr); 1828 NetLogWithSource(), nullptr);
1829 helper.RunToCompletion(&data); 1829 helper.RunToCompletion(&data);
1830 TransactionHelperResult out = helper.output(); 1830 TransactionHelperResult out = helper.output();
1831 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); 1831 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
1832 } 1832 }
1833 1833
1834 // Test that the transaction doesn't crash when we get two replies on the same 1834 // Test that the transaction doesn't crash when we get two replies on the same
1835 // stream ID. See http://crbug.com/45639. 1835 // stream ID. See http://crbug.com/45639.
1836 TEST_F(SpdyNetworkTransactionTest, ResponseWithTwoSynReplies) { 1836 TEST_F(SpdyNetworkTransactionTest, ResponseWithTwoSynReplies) {
1837 SpdySerializedFrame req( 1837 SpdySerializedFrame req(
1838 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 1838 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1839 SpdySerializedFrame rst( 1839 SpdySerializedFrame rst(
1840 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 1840 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
1841 MockWrite writes[] = { 1841 MockWrite writes[] = {
1842 CreateMockWrite(req, 0), CreateMockWrite(rst, 4), 1842 CreateMockWrite(req, 0), CreateMockWrite(rst, 4),
1843 }; 1843 };
1844 1844
1845 SpdySerializedFrame resp0(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 1845 SpdySerializedFrame resp0(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
1846 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 1846 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
1847 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 1847 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
1848 MockRead reads[] = { 1848 MockRead reads[] = {
1849 CreateMockRead(resp0, 1), CreateMockRead(resp1, 2), 1849 CreateMockRead(resp0, 1), CreateMockRead(resp1, 2),
1850 CreateMockRead(body, 3), MockRead(ASYNC, 0, 5) // EOF 1850 CreateMockRead(body, 3), MockRead(ASYNC, 0, 5) // EOF
(...skipping 24 matching lines...) Expand all
1875 EXPECT_THAT(rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); 1875 EXPECT_THAT(rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
1876 1876
1877 helper.VerifyDataConsumed(); 1877 helper.VerifyDataConsumed();
1878 } 1878 }
1879 1879
1880 TEST_F(SpdyNetworkTransactionTest, ResetReplyWithTransferEncoding) { 1880 TEST_F(SpdyNetworkTransactionTest, ResetReplyWithTransferEncoding) {
1881 // Construct the request. 1881 // Construct the request.
1882 SpdySerializedFrame req( 1882 SpdySerializedFrame req(
1883 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 1883 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1884 SpdySerializedFrame rst( 1884 SpdySerializedFrame rst(
1885 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 1885 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
1886 MockWrite writes[] = { 1886 MockWrite writes[] = {
1887 CreateMockWrite(req, 0), CreateMockWrite(rst, 2), 1887 CreateMockWrite(req, 0), CreateMockWrite(rst, 2),
1888 }; 1888 };
1889 1889
1890 const char* const headers[] = { 1890 const char* const headers[] = {
1891 "transfer-encoding", "chunked" 1891 "transfer-encoding", "chunked"
1892 }; 1892 };
1893 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(headers, 1, 1)); 1893 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(headers, 1, 1));
1894 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 1894 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
1895 MockRead reads[] = { 1895 MockRead reads[] = {
(...skipping 12 matching lines...) Expand all
1908 helper.VerifyDataConsumed(); 1908 helper.VerifyDataConsumed();
1909 } 1909 }
1910 1910
1911 TEST_F(SpdyNetworkTransactionTest, ResetPushWithTransferEncoding) { 1911 TEST_F(SpdyNetworkTransactionTest, ResetPushWithTransferEncoding) {
1912 // Construct the request. 1912 // Construct the request.
1913 SpdySerializedFrame req( 1913 SpdySerializedFrame req(
1914 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 1914 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1915 SpdySerializedFrame priority( 1915 SpdySerializedFrame priority(
1916 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); 1916 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
1917 SpdySerializedFrame rst( 1917 SpdySerializedFrame rst(
1918 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); 1918 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_PROTOCOL_ERROR));
1919 MockWrite writes[] = { 1919 MockWrite writes[] = {
1920 CreateMockWrite(req, 0), CreateMockWrite(priority, 3), 1920 CreateMockWrite(req, 0), CreateMockWrite(priority, 3),
1921 CreateMockWrite(rst, 5), 1921 CreateMockWrite(rst, 5),
1922 }; 1922 };
1923 1923
1924 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 1924 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
1925 const char* const headers[] = { 1925 const char* const headers[] = {
1926 "transfer-encoding", "chunked" 1926 "transfer-encoding", "chunked"
1927 }; 1927 };
1928 SpdySerializedFrame push( 1928 SpdySerializedFrame push(
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 // MockClientSocketFactory) are still alive. 1984 // MockClientSocketFactory) are still alive.
1985 base::RunLoop().RunUntilIdle(); 1985 base::RunLoop().RunUntilIdle();
1986 helper.VerifyDataNotConsumed(); 1986 helper.VerifyDataNotConsumed();
1987 } 1987 }
1988 1988
1989 // Verify that the client sends a Rst Frame upon cancelling the stream. 1989 // Verify that the client sends a Rst Frame upon cancelling the stream.
1990 TEST_F(SpdyNetworkTransactionTest, CancelledTransactionSendRst) { 1990 TEST_F(SpdyNetworkTransactionTest, CancelledTransactionSendRst) {
1991 SpdySerializedFrame req( 1991 SpdySerializedFrame req(
1992 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 1992 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
1993 SpdySerializedFrame rst( 1993 SpdySerializedFrame rst(
1994 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 1994 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
1995 MockWrite writes[] = { 1995 MockWrite writes[] = {
1996 CreateMockWrite(req, 0, SYNCHRONOUS), 1996 CreateMockWrite(req, 0, SYNCHRONOUS),
1997 CreateMockWrite(rst, 2, SYNCHRONOUS), 1997 CreateMockWrite(rst, 2, SYNCHRONOUS),
1998 }; 1998 };
1999 1999
2000 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 2000 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
2001 MockRead reads[] = { 2001 MockRead reads[] = {
2002 CreateMockRead(resp, 1, ASYNC), MockRead(ASYNC, 0, 0, 3) // EOF 2002 CreateMockRead(resp, 1, ASYNC), MockRead(ASYNC, 0, 0, 3) // EOF
2003 }; 2003 };
2004 2004
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
2339 2339
2340 // Setup writes/reads to www.example.org 2340 // Setup writes/reads to www.example.org
2341 SpdySerializedFrame req( 2341 SpdySerializedFrame req(
2342 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true)); 2342 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true));
2343 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 2343 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
2344 SpdySerializedFrame rep(spdy_util_.ConstructSpdyPush( 2344 SpdySerializedFrame rep(spdy_util_.ConstructSpdyPush(
2345 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str(), 2345 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str(),
2346 "301 Moved Permanently", "http://www.foo.com/index.php")); 2346 "301 Moved Permanently", "http://www.foo.com/index.php"));
2347 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 2347 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
2348 SpdySerializedFrame rst( 2348 SpdySerializedFrame rst(
2349 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); 2349 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_CANCEL));
2350 MockWrite writes[] = { 2350 MockWrite writes[] = {
2351 CreateMockWrite(req, 1), CreateMockWrite(rst, 6), 2351 CreateMockWrite(req, 1), CreateMockWrite(rst, 6),
2352 }; 2352 };
2353 MockRead reads[] = { 2353 MockRead reads[] = {
2354 CreateMockRead(resp, 2), CreateMockRead(rep, 3), CreateMockRead(body, 4), 2354 CreateMockRead(resp, 2), CreateMockRead(rep, 3), CreateMockRead(body, 4),
2355 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause 2355 MockRead(ASYNC, ERR_IO_PENDING, 5), // Force a pause
2356 MockRead(ASYNC, 0, 0, 7) // EOF 2356 MockRead(ASYNC, 0, 0, 7) // EOF
2357 }; 2357 };
2358 2358
2359 // Setup writes/reads to www.foo.com 2359 // Setup writes/reads to www.foo.com
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
2658 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); 2658 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
2659 MockWrite writes[] = { 2659 MockWrite writes[] = {
2660 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3), 2660 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
2661 }; 2661 };
2662 2662
2663 SpdySerializedFrame stream1_reply( 2663 SpdySerializedFrame stream1_reply(
2664 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 2664 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
2665 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 2665 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
2666 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str())); 2666 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
2667 SpdySerializedFrame stream2_rst( 2667 SpdySerializedFrame stream2_rst(
2668 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); 2668 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_PROTOCOL_ERROR));
2669 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 2669 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
2670 MockRead reads[] = { 2670 MockRead reads[] = {
2671 CreateMockRead(stream1_reply, 1), 2671 CreateMockRead(stream1_reply, 1),
2672 CreateMockRead(stream2_syn, 2, SYNCHRONOUS), 2672 CreateMockRead(stream2_syn, 2, SYNCHRONOUS),
2673 CreateMockRead(stream2_rst, 4), 2673 CreateMockRead(stream2_rst, 4),
2674 CreateMockRead(stream1_body, 5, SYNCHRONOUS), 2674 CreateMockRead(stream1_body, 5, SYNCHRONOUS),
2675 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause 2675 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause
2676 }; 2676 };
2677 2677
2678 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 2678 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
(...skipping 25 matching lines...) Expand all
2704 } 2704 }
2705 2705
2706 // Verify that we don't leak streams and that we properly send a reset 2706 // Verify that we don't leak streams and that we properly send a reset
2707 // if the server pushes the same stream twice. 2707 // if the server pushes the same stream twice.
2708 TEST_F(SpdyNetworkTransactionTest, ServerPushDuplicate) { 2708 TEST_F(SpdyNetworkTransactionTest, ServerPushDuplicate) {
2709 SpdySerializedFrame stream1_syn( 2709 SpdySerializedFrame stream1_syn(
2710 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 2710 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
2711 SpdySerializedFrame stream2_priority( 2711 SpdySerializedFrame stream2_priority(
2712 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); 2712 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
2713 SpdySerializedFrame stream3_rst( 2713 SpdySerializedFrame stream3_rst(
2714 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_PROTOCOL_ERROR)); 2714 spdy_util_.ConstructSpdyRstStream(4, ERROR_CODE_PROTOCOL_ERROR));
2715 MockWrite writes[] = { 2715 MockWrite writes[] = {
2716 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3), 2716 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
2717 CreateMockWrite(stream3_rst, 5), 2717 CreateMockWrite(stream3_rst, 5),
2718 }; 2718 };
2719 2719
2720 SpdySerializedFrame stream1_reply( 2720 SpdySerializedFrame stream1_reply(
2721 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 2721 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
2722 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 2722 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
2723 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str())); 2723 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
2724 SpdySerializedFrame stream3_syn(spdy_util_.ConstructSpdyPush( 2724 SpdySerializedFrame stream3_syn(spdy_util_.ConstructSpdyPush(
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
2858 2858
2859 // Verify the pushed stream. 2859 // Verify the pushed stream.
2860 EXPECT_TRUE(response2.headers); 2860 EXPECT_TRUE(response2.headers);
2861 EXPECT_EQ("HTTP/1.1 200", response2.headers->GetStatusLine()); 2861 EXPECT_EQ("HTTP/1.1 200", response2.headers->GetStatusLine());
2862 } 2862 }
2863 2863
2864 TEST_F(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID0) { 2864 TEST_F(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID0) {
2865 SpdySerializedFrame stream1_syn( 2865 SpdySerializedFrame stream1_syn(
2866 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 2866 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
2867 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 2867 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
2868 0, GOAWAY_PROTOCOL_ERROR, "Framer error: 1 (INVALID_STREAM_ID).")); 2868 0, ERROR_CODE_PROTOCOL_ERROR, "Framer error: 1 (INVALID_STREAM_ID)."));
2869 MockWrite writes[] = { 2869 MockWrite writes[] = {
2870 CreateMockWrite(stream1_syn, 0), CreateMockWrite(goaway, 3), 2870 CreateMockWrite(stream1_syn, 0), CreateMockWrite(goaway, 3),
2871 }; 2871 };
2872 2872
2873 SpdySerializedFrame stream1_reply( 2873 SpdySerializedFrame stream1_reply(
2874 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 2874 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
2875 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 2875 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
2876 nullptr, 0, 2, 0, GetDefaultUrlWithPath("/foo.dat").c_str())); 2876 nullptr, 0, 2, 0, GetDefaultUrlWithPath("/foo.dat").c_str()));
2877 MockRead reads[] = { 2877 MockRead reads[] = {
2878 CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2), 2878 CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2),
(...skipping 27 matching lines...) Expand all
2906 HttpResponseInfo response = *trans->GetResponseInfo(); 2906 HttpResponseInfo response = *trans->GetResponseInfo();
2907 EXPECT_TRUE(response.headers); 2907 EXPECT_TRUE(response.headers);
2908 EXPECT_EQ("HTTP/1.1 200", response.headers->GetStatusLine()); 2908 EXPECT_EQ("HTTP/1.1 200", response.headers->GetStatusLine());
2909 } 2909 }
2910 2910
2911 TEST_F(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) { 2911 TEST_F(SpdyNetworkTransactionTest, ServerPushInvalidAssociatedStreamID9) {
2912 SpdySerializedFrame stream1_syn( 2912 SpdySerializedFrame stream1_syn(
2913 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 2913 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
2914 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 2914 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
2915 SpdySerializedFrame stream2_rst( 2915 SpdySerializedFrame stream2_rst(
2916 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_STREAM_CLOSED)); 2916 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_STREAM_CLOSED));
2917 MockWrite writes[] = { 2917 MockWrite writes[] = {
2918 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_rst, 3), 2918 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_rst, 3),
2919 }; 2919 };
2920 2920
2921 SpdySerializedFrame stream1_reply( 2921 SpdySerializedFrame stream1_reply(
2922 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 2922 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
2923 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 2923 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
2924 nullptr, 0, 2, 9, GetDefaultUrlWithPath("/foo.dat").c_str())); 2924 nullptr, 0, 2, 9, GetDefaultUrlWithPath("/foo.dat").c_str()));
2925 MockRead reads[] = { 2925 MockRead reads[] = {
2926 CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2), 2926 CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2),
(...skipping 29 matching lines...) Expand all
2956 HttpResponseInfo response = *trans->GetResponseInfo(); 2956 HttpResponseInfo response = *trans->GetResponseInfo();
2957 EXPECT_TRUE(response.headers); 2957 EXPECT_TRUE(response.headers);
2958 EXPECT_EQ("HTTP/1.1 200", response.headers->GetStatusLine()); 2958 EXPECT_EQ("HTTP/1.1 200", response.headers->GetStatusLine());
2959 } 2959 }
2960 2960
2961 TEST_F(SpdyNetworkTransactionTest, ServerPushNoURL) { 2961 TEST_F(SpdyNetworkTransactionTest, ServerPushNoURL) {
2962 SpdySerializedFrame stream1_syn( 2962 SpdySerializedFrame stream1_syn(
2963 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 2963 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
2964 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 2964 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
2965 SpdySerializedFrame stream2_rst( 2965 SpdySerializedFrame stream2_rst(
2966 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); 2966 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_PROTOCOL_ERROR));
2967 MockWrite writes[] = { 2967 MockWrite writes[] = {
2968 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_rst, 3), 2968 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_rst, 3),
2969 }; 2969 };
2970 2970
2971 SpdySerializedFrame stream1_reply( 2971 SpdySerializedFrame stream1_reply(
2972 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 2972 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
2973 SpdyHeaderBlock incomplete_headers; 2973 SpdyHeaderBlock incomplete_headers;
2974 incomplete_headers[spdy_util_.GetStatusKey()] = "200 OK"; 2974 incomplete_headers[spdy_util_.GetStatusKey()] = "200 OK";
2975 incomplete_headers["hello"] = "bye"; 2975 incomplete_headers["hello"] = "bye";
2976 SpdySerializedFrame stream2_syn(spdy_util_.ConstructInitialSpdyPushFrame( 2976 SpdySerializedFrame stream2_syn(spdy_util_.ConstructInitialSpdyPushFrame(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
3011 EXPECT_EQ("HTTP/1.1 200", response.headers->GetStatusLine()); 3011 EXPECT_EQ("HTTP/1.1 200", response.headers->GetStatusLine());
3012 } 3012 }
3013 3013
3014 // PUSH_PROMISE on a server-initiated stream should trigger GOAWAY. 3014 // PUSH_PROMISE on a server-initiated stream should trigger GOAWAY.
3015 TEST_F(SpdyNetworkTransactionTest, ServerPushOnPushedStream) { 3015 TEST_F(SpdyNetworkTransactionTest, ServerPushOnPushedStream) {
3016 SpdySerializedFrame stream1_syn( 3016 SpdySerializedFrame stream1_syn(
3017 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3017 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3018 SpdySerializedFrame stream2_priority( 3018 SpdySerializedFrame stream2_priority(
3019 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); 3019 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
3020 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 3020 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
3021 2, GOAWAY_PROTOCOL_ERROR, "Push on even stream id.")); 3021 2, ERROR_CODE_PROTOCOL_ERROR, "Push on even stream id."));
3022 MockWrite writes[] = { 3022 MockWrite writes[] = {
3023 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3), 3023 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
3024 CreateMockWrite(goaway, 5), 3024 CreateMockWrite(goaway, 5),
3025 }; 3025 };
3026 3026
3027 SpdySerializedFrame stream1_reply( 3027 SpdySerializedFrame stream1_reply(
3028 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 3028 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
3029 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 3029 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
3030 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str())); 3030 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
3031 SpdySerializedFrame stream3_syn(spdy_util_.ConstructSpdyPush( 3031 SpdySerializedFrame stream3_syn(spdy_util_.ConstructSpdyPush(
3032 nullptr, 0, 4, 2, GetDefaultUrlWithPath("/bar.dat").c_str())); 3032 nullptr, 0, 4, 2, GetDefaultUrlWithPath("/bar.dat").c_str()));
3033 MockRead reads[] = { 3033 MockRead reads[] = {
3034 CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2), 3034 CreateMockRead(stream1_reply, 1), CreateMockRead(stream2_syn, 2),
3035 CreateMockRead(stream3_syn, 4), 3035 CreateMockRead(stream3_syn, 4),
3036 }; 3036 };
3037 3037
3038 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 3038 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
3039 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 3039 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
3040 NetLogWithSource(), nullptr); 3040 NetLogWithSource(), nullptr);
3041 helper.RunToCompletion(&data); 3041 helper.RunToCompletion(&data);
3042 } 3042 }
3043 3043
3044 // PUSH_PROMISE on a closed client-initiated stream should trigger RST_STREAM. 3044 // PUSH_PROMISE on a closed client-initiated stream should trigger RST_STREAM.
3045 TEST_F(SpdyNetworkTransactionTest, ServerPushOnClosedStream) { 3045 TEST_F(SpdyNetworkTransactionTest, ServerPushOnClosedStream) {
3046 SpdySerializedFrame stream1_syn( 3046 SpdySerializedFrame stream1_syn(
3047 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3047 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3048 SpdySerializedFrame rst( 3048 SpdySerializedFrame rst(
3049 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_STREAM_CLOSED)); 3049 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_STREAM_CLOSED));
3050 MockWrite writes[] = { 3050 MockWrite writes[] = {
3051 CreateMockWrite(stream1_syn, 0), CreateMockWrite(rst, 5), 3051 CreateMockWrite(stream1_syn, 0), CreateMockWrite(rst, 5),
3052 }; 3052 };
3053 3053
3054 SpdySerializedFrame stream1_reply( 3054 SpdySerializedFrame stream1_reply(
3055 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 3055 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
3056 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 3056 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
3057 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 3057 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
3058 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str())); 3058 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
3059 MockRead reads[] = { 3059 MockRead reads[] = {
(...skipping 28 matching lines...) Expand all
3088 } 3088 }
3089 3089
3090 // PUSH_PROMISE on a server-initiated stream should trigger GOAWAY even if 3090 // PUSH_PROMISE on a server-initiated stream should trigger GOAWAY even if
3091 // stream is closed. 3091 // stream is closed.
3092 TEST_F(SpdyNetworkTransactionTest, ServerPushOnClosedPushedStream) { 3092 TEST_F(SpdyNetworkTransactionTest, ServerPushOnClosedPushedStream) {
3093 SpdySerializedFrame stream1_syn( 3093 SpdySerializedFrame stream1_syn(
3094 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3094 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3095 SpdySerializedFrame stream2_priority( 3095 SpdySerializedFrame stream2_priority(
3096 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); 3096 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true));
3097 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 3097 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
3098 2, GOAWAY_PROTOCOL_ERROR, "Push on even stream id.")); 3098 2, ERROR_CODE_PROTOCOL_ERROR, "Push on even stream id."));
3099 MockWrite writes[] = { 3099 MockWrite writes[] = {
3100 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3), 3100 CreateMockWrite(stream1_syn, 0), CreateMockWrite(stream2_priority, 3),
3101 CreateMockWrite(goaway, 8), 3101 CreateMockWrite(goaway, 8),
3102 }; 3102 };
3103 3103
3104 SpdySerializedFrame stream1_reply( 3104 SpdySerializedFrame stream1_reply(
3105 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 3105 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
3106 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush( 3106 SpdySerializedFrame stream2_syn(spdy_util_.ConstructSpdyPush(
3107 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str())); 3107 nullptr, 0, 2, 1, GetDefaultUrlWithPath("/foo.dat").c_str()));
3108 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true)); 3108 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, true));
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
3359 0, {nullptr}, 3359 0, {nullptr},
3360 }, 3360 },
3361 }; 3361 };
3362 3362
3363 for (size_t i = 0; i < arraysize(test_cases); ++i) { 3363 for (size_t i = 0; i < arraysize(test_cases); ++i) {
3364 SpdyTestUtil spdy_test_util; 3364 SpdyTestUtil spdy_test_util;
3365 3365
3366 SpdySerializedFrame req( 3366 SpdySerializedFrame req(
3367 spdy_test_util.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3367 spdy_test_util.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3368 SpdySerializedFrame rst( 3368 SpdySerializedFrame rst(
3369 spdy_test_util.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 3369 spdy_test_util.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
3370 MockWrite writes[] = { 3370 MockWrite writes[] = {
3371 CreateMockWrite(req, 0), CreateMockWrite(rst, 2), 3371 CreateMockWrite(req, 0), CreateMockWrite(rst, 2),
3372 }; 3372 };
3373 3373
3374 // Construct the reply. 3374 // Construct the reply.
3375 SpdyHeaderBlock reply_headers; 3375 SpdyHeaderBlock reply_headers;
3376 AppendToHeaderBlock( 3376 AppendToHeaderBlock(
3377 test_cases[i].headers, test_cases[i].num_headers, &reply_headers); 3377 test_cases[i].headers, test_cases[i].num_headers, &reply_headers);
3378 SpdySerializedFrame resp( 3378 SpdySerializedFrame resp(
3379 spdy_test_util.ConstructSpdyReply(1, std::move(reply_headers))); 3379 spdy_test_util.ConstructSpdyReply(1, std::move(reply_headers)));
3380 MockRead reads[] = { 3380 MockRead reads[] = {
3381 CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3) // EOF 3381 CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3) // EOF
3382 }; 3382 };
3383 3383
3384 SequencedSocketData data(reads, arraysize(reads), writes, 3384 SequencedSocketData data(reads, arraysize(reads), writes,
3385 arraysize(writes)); 3385 arraysize(writes));
3386 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 3386 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
3387 NetLogWithSource(), nullptr); 3387 NetLogWithSource(), nullptr);
3388 helper.RunToCompletion(&data); 3388 helper.RunToCompletion(&data);
3389 TransactionHelperResult out = helper.output(); 3389 TransactionHelperResult out = helper.output();
3390 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); 3390 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
3391 } 3391 }
3392 } 3392 }
3393 3393
3394 TEST_F(SpdyNetworkTransactionTest, CorruptFrameSessionError) { 3394 TEST_F(SpdyNetworkTransactionTest, CorruptFrameSessionError) {
3395 SpdySerializedFrame req( 3395 SpdySerializedFrame req(
3396 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3396 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3397 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 3397 SpdySerializedFrame goaway(
3398 0, GOAWAY_COMPRESSION_ERROR, "Framer error: 6 (DECOMPRESS_FAILURE).")); 3398 spdy_util_.ConstructSpdyGoAway(0, ERROR_CODE_COMPRESSION_ERROR,
3399 "Framer error: 6 (DECOMPRESS_FAILURE)."));
3399 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(goaway, 2)}; 3400 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(goaway, 2)};
3400 3401
3401 // This is the length field that's too short. 3402 // This is the length field that's too short.
3402 SpdySerializedFrame reply_wrong_length( 3403 SpdySerializedFrame reply_wrong_length(
3403 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 3404 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
3404 size_t right_size = reply_wrong_length.size() - kFrameHeaderSize; 3405 size_t right_size = reply_wrong_length.size() - kFrameHeaderSize;
3405 size_t wrong_size = right_size - 4; 3406 size_t wrong_size = right_size - 4;
3406 test::SetFrameLength(&reply_wrong_length, wrong_size); 3407 test::SetFrameLength(&reply_wrong_length, wrong_size);
3407 3408
3408 MockRead reads[] = { 3409 MockRead reads[] = {
3409 MockRead(ASYNC, reply_wrong_length.data(), reply_wrong_length.size() - 4, 3410 MockRead(ASYNC, reply_wrong_length.data(), reply_wrong_length.size() - 4,
3410 1), 3411 1),
3411 }; 3412 };
3412 3413
3413 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 3414 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
3414 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 3415 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
3415 NetLogWithSource(), nullptr); 3416 NetLogWithSource(), nullptr);
3416 helper.RunToCompletion(&data); 3417 helper.RunToCompletion(&data);
3417 TransactionHelperResult out = helper.output(); 3418 TransactionHelperResult out = helper.output();
3418 EXPECT_THAT(out.rv, IsError(ERR_SPDY_COMPRESSION_ERROR)); 3419 EXPECT_THAT(out.rv, IsError(ERR_SPDY_COMPRESSION_ERROR));
3419 } 3420 }
3420 3421
3421 TEST_F(SpdyNetworkTransactionTest, GoAwayOnDecompressionFailure) { 3422 TEST_F(SpdyNetworkTransactionTest, GoAwayOnDecompressionFailure) {
3422 SpdySerializedFrame req( 3423 SpdySerializedFrame req(
3423 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3424 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3424 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 3425 SpdySerializedFrame goaway(
3425 0, GOAWAY_COMPRESSION_ERROR, "Framer error: 6 (DECOMPRESS_FAILURE).")); 3426 spdy_util_.ConstructSpdyGoAway(0, ERROR_CODE_COMPRESSION_ERROR,
3427 "Framer error: 6 (DECOMPRESS_FAILURE)."));
3426 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(goaway, 2)}; 3428 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(goaway, 2)};
3427 3429
3428 // Read HEADERS with corrupted payload. 3430 // Read HEADERS with corrupted payload.
3429 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 3431 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
3430 memset(resp.data() + 12, 0xcf, resp.size() - 12); 3432 memset(resp.data() + 12, 0xcf, resp.size() - 12);
3431 MockRead reads[] = {CreateMockRead(resp, 1)}; 3433 MockRead reads[] = {CreateMockRead(resp, 1)};
3432 3434
3433 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 3435 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
3434 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 3436 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
3435 NetLogWithSource(), nullptr); 3437 NetLogWithSource(), nullptr);
3436 helper.RunToCompletion(&data); 3438 helper.RunToCompletion(&data);
3437 TransactionHelperResult out = helper.output(); 3439 TransactionHelperResult out = helper.output();
3438 EXPECT_THAT(out.rv, IsError(ERR_SPDY_COMPRESSION_ERROR)); 3440 EXPECT_THAT(out.rv, IsError(ERR_SPDY_COMPRESSION_ERROR));
3439 } 3441 }
3440 3442
3441 TEST_F(SpdyNetworkTransactionTest, GoAwayOnFrameSizeError) { 3443 TEST_F(SpdyNetworkTransactionTest, GoAwayOnFrameSizeError) {
3442 SpdySerializedFrame req( 3444 SpdySerializedFrame req(
3443 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3445 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3444 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 3446 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
3445 0, GOAWAY_FRAME_SIZE_ERROR, 3447 0, ERROR_CODE_FRAME_SIZE_ERROR,
3446 "Framer error: 15 (INVALID_CONTROL_FRAME_SIZE).")); 3448 "Framer error: 15 (INVALID_CONTROL_FRAME_SIZE)."));
3447 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(goaway, 2)}; 3449 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(goaway, 2)};
3448 3450
3449 // Read WINDOW_UPDATE with incorrectly-sized payload. 3451 // Read WINDOW_UPDATE with incorrectly-sized payload.
3450 SpdySerializedFrame bad_window_update( 3452 SpdySerializedFrame bad_window_update(
3451 spdy_util_.ConstructSpdyWindowUpdate(1, 1)); 3453 spdy_util_.ConstructSpdyWindowUpdate(1, 1));
3452 test::SetFrameLength(&bad_window_update, bad_window_update.size() - 1); 3454 test::SetFrameLength(&bad_window_update, bad_window_update.size() - 1);
3453 MockRead reads[] = {CreateMockRead(bad_window_update, 1)}; 3455 MockRead reads[] = {CreateMockRead(bad_window_update, 1)};
3454 3456
3455 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 3457 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
3944 3946
3945 // Verify that we consumed all test data. 3947 // Verify that we consumed all test data.
3946 helper.VerifyDataConsumed(); 3948 helper.VerifyDataConsumed();
3947 } 3949 }
3948 3950
3949 // Verify the case where we buffer data and cancel the transaction. 3951 // Verify the case where we buffer data and cancel the transaction.
3950 TEST_F(SpdyNetworkTransactionTest, BufferedCancelled) { 3952 TEST_F(SpdyNetworkTransactionTest, BufferedCancelled) {
3951 SpdySerializedFrame req( 3953 SpdySerializedFrame req(
3952 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 3954 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
3953 SpdySerializedFrame rst( 3955 SpdySerializedFrame rst(
3954 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); 3956 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL));
3955 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 4)}; 3957 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 4)};
3956 3958
3957 // NOTE: We don't FIN the stream. 3959 // NOTE: We don't FIN the stream.
3958 SpdySerializedFrame data_frame( 3960 SpdySerializedFrame data_frame(
3959 spdy_util_.ConstructSpdyDataFrame(1, "message", 7, /*fin=*/false)); 3961 spdy_util_.ConstructSpdyDataFrame(1, "message", 7, /*fin=*/false));
3960 3962
3961 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 3963 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
3962 MockRead reads[] = { 3964 MockRead reads[] = {
3963 CreateMockRead(resp, 1), 3965 CreateMockRead(resp, 1),
3964 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a wait 3966 MockRead(ASYNC, ERR_IO_PENDING, 2), // Force a wait
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
4038 SpdySerializedFrame req1( 4040 SpdySerializedFrame req1(
4039 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 4041 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
4040 spdy_util_.UpdateWithStreamDestruction(1); 4042 spdy_util_.UpdateWithStreamDestruction(1);
4041 SpdySerializedFrame req2( 4043 SpdySerializedFrame req2(
4042 spdy_util_.ConstructSpdyGet("https://www.example.org/foo", 3, LOWEST)); 4044 spdy_util_.ConstructSpdyGet("https://www.example.org/foo", 3, LOWEST));
4043 MockWrite writes[] = {CreateMockWrite(req1, 0), CreateMockWrite(req2, 3)}; 4045 MockWrite writes[] = {CreateMockWrite(req1, 0), CreateMockWrite(req2, 3)};
4044 4046
4045 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 4047 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
4046 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true)); 4048 SpdySerializedFrame body1(spdy_util_.ConstructSpdyDataFrame(1, true));
4047 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 4049 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
4048 0x7fffffff, GOAWAY_NO_ERROR, "Graceful shutdown.")); 4050 0x7fffffff, ERROR_CODE_NO_ERROR, "Graceful shutdown."));
4049 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3)); 4051 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3));
4050 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(3, true)); 4052 SpdySerializedFrame body2(spdy_util_.ConstructSpdyDataFrame(3, true));
4051 MockRead reads[] = {CreateMockRead(resp1, 1), CreateMockRead(body1, 2), 4053 MockRead reads[] = {CreateMockRead(resp1, 1), CreateMockRead(body1, 2),
4052 CreateMockRead(goaway, 4), CreateMockRead(resp2, 5), 4054 CreateMockRead(goaway, 4), CreateMockRead(resp2, 5),
4053 CreateMockRead(body2, 6), MockRead(ASYNC, 0, 7)}; 4055 CreateMockRead(body2, 6), MockRead(ASYNC, 0, 7)};
4054 4056
4055 // Run first transaction. 4057 // Run first transaction.
4056 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 4058 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
4057 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 4059 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
4058 NetLogWithSource(), nullptr); 4060 NetLogWithSource(), nullptr);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
4148 // Do not force SPDY so that second socket can negotiate HTTP/1.1. 4150 // Do not force SPDY so that second socket can negotiate HTTP/1.1.
4149 NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, 4151 NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY,
4150 NetLogWithSource(), nullptr); 4152 NetLogWithSource(), nullptr);
4151 4153
4152 // First socket: HTTP/2 request rejected with HTTP_1_1_REQUIRED. 4154 // First socket: HTTP/2 request rejected with HTTP_1_1_REQUIRED.
4153 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); 4155 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
4154 SpdySerializedFrame req( 4156 SpdySerializedFrame req(
4155 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true)); 4157 spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true));
4156 MockWrite writes0[] = {CreateMockWrite(req, 0)}; 4158 MockWrite writes0[] = {CreateMockWrite(req, 0)};
4157 SpdySerializedFrame go_away(spdy_util_.ConstructSpdyGoAway( 4159 SpdySerializedFrame go_away(spdy_util_.ConstructSpdyGoAway(
4158 0, GOAWAY_HTTP_1_1_REQUIRED, "Try again using HTTP/1.1 please.")); 4160 0, ERROR_CODE_HTTP_1_1_REQUIRED, "Try again using HTTP/1.1 please."));
4159 MockRead reads0[] = {CreateMockRead(go_away, 1)}; 4161 MockRead reads0[] = {CreateMockRead(go_away, 1)};
4160 SequencedSocketData data0(reads0, arraysize(reads0), writes0, 4162 SequencedSocketData data0(reads0, arraysize(reads0), writes0,
4161 arraysize(writes0)); 4163 arraysize(writes0));
4162 4164
4163 std::unique_ptr<SSLSocketDataProvider> ssl_provider0( 4165 std::unique_ptr<SSLSocketDataProvider> ssl_provider0(
4164 new SSLSocketDataProvider(ASYNC, OK)); 4166 new SSLSocketDataProvider(ASYNC, OK));
4165 // Expect HTTP/2 protocols too in SSLConfig. 4167 // Expect HTTP/2 protocols too in SSLConfig.
4166 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP2); 4168 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP2);
4167 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP11); 4169 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP11);
4168 // Force SPDY. 4170 // Force SPDY.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
4226 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70")); 4228 ProxyService::CreateFixedFromPacResult("HTTPS myproxy:70"));
4227 // Do not force SPDY so that second socket can negotiate HTTP/1.1. 4229 // Do not force SPDY so that second socket can negotiate HTTP/1.1.
4228 NormalSpdyTransactionHelper helper( 4230 NormalSpdyTransactionHelper helper(
4229 request, DEFAULT_PRIORITY, NetLogWithSource(), std::move(session_deps)); 4231 request, DEFAULT_PRIORITY, NetLogWithSource(), std::move(session_deps));
4230 4232
4231 // First socket: HTTP/2 CONNECT rejected with HTTP_1_1_REQUIRED. 4233 // First socket: HTTP/2 CONNECT rejected with HTTP_1_1_REQUIRED.
4232 SpdySerializedFrame req(spdy_util_.ConstructSpdyConnect( 4234 SpdySerializedFrame req(spdy_util_.ConstructSpdyConnect(
4233 nullptr, 0, 1, LOWEST, HostPortPair("www.example.org", 443))); 4235 nullptr, 0, 1, LOWEST, HostPortPair("www.example.org", 443)));
4234 MockWrite writes0[] = {CreateMockWrite(req, 0)}; 4236 MockWrite writes0[] = {CreateMockWrite(req, 0)};
4235 SpdySerializedFrame go_away(spdy_util_.ConstructSpdyGoAway( 4237 SpdySerializedFrame go_away(spdy_util_.ConstructSpdyGoAway(
4236 0, GOAWAY_HTTP_1_1_REQUIRED, "Try again using HTTP/1.1 please.")); 4238 0, ERROR_CODE_HTTP_1_1_REQUIRED, "Try again using HTTP/1.1 please."));
4237 MockRead reads0[] = {CreateMockRead(go_away, 1)}; 4239 MockRead reads0[] = {CreateMockRead(go_away, 1)};
4238 SequencedSocketData data0(reads0, arraysize(reads0), writes0, 4240 SequencedSocketData data0(reads0, arraysize(reads0), writes0,
4239 arraysize(writes0)); 4241 arraysize(writes0));
4240 4242
4241 std::unique_ptr<SSLSocketDataProvider> ssl_provider0( 4243 std::unique_ptr<SSLSocketDataProvider> ssl_provider0(
4242 new SSLSocketDataProvider(ASYNC, OK)); 4244 new SSLSocketDataProvider(ASYNC, OK));
4243 // Expect HTTP/2 protocols too in SSLConfig. 4245 // Expect HTTP/2 protocols too in SSLConfig.
4244 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP2); 4246 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP2);
4245 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP11); 4247 ssl_provider0->next_protos_expected_in_ssl_config.push_back(kProtoHTTP11);
4246 // Force SPDY. 4248 // Force SPDY.
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after
4822 4824
4823 // Verify that we consumed all test data. 4825 // Verify that we consumed all test data.
4824 EXPECT_TRUE(data.AllReadDataConsumed()); 4826 EXPECT_TRUE(data.AllReadDataConsumed());
4825 EXPECT_TRUE(data.AllWriteDataConsumed()); 4827 EXPECT_TRUE(data.AllWriteDataConsumed());
4826 } 4828 }
4827 4829
4828 TEST_F(SpdyNetworkTransactionTest, ResponseHeadersTwice) { 4830 TEST_F(SpdyNetworkTransactionTest, ResponseHeadersTwice) {
4829 SpdySerializedFrame req( 4831 SpdySerializedFrame req(
4830 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 4832 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
4831 SpdySerializedFrame rst( 4833 SpdySerializedFrame rst(
4832 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 4834 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
4833 MockWrite writes[] = { 4835 MockWrite writes[] = {
4834 CreateMockWrite(req, 0), CreateMockWrite(rst, 4), 4836 CreateMockWrite(req, 0), CreateMockWrite(rst, 4),
4835 }; 4837 };
4836 4838
4837 SpdySerializedFrame stream1_reply( 4839 SpdySerializedFrame stream1_reply(
4838 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 4840 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
4839 4841
4840 SpdyHeaderBlock late_headers; 4842 SpdyHeaderBlock late_headers;
4841 late_headers["hello"] = "bye"; 4843 late_headers["hello"] = "bye";
4842 SpdySerializedFrame stream1_headers(spdy_util_.ConstructSpdyResponseHeaders( 4844 SpdySerializedFrame stream1_headers(spdy_util_.ConstructSpdyResponseHeaders(
(...skipping 12 matching lines...) Expand all
4855 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); 4857 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
4856 } 4858 }
4857 4859
4858 // Tests that receiving HEADERS, DATA, HEADERS, and DATA in that sequence will 4860 // Tests that receiving HEADERS, DATA, HEADERS, and DATA in that sequence will
4859 // trigger a ERR_SPDY_PROTOCOL_ERROR because trailing HEADERS must not be 4861 // trigger a ERR_SPDY_PROTOCOL_ERROR because trailing HEADERS must not be
4860 // followed by any DATA frames. 4862 // followed by any DATA frames.
4861 TEST_F(SpdyNetworkTransactionTest, SyncReplyDataAfterTrailers) { 4863 TEST_F(SpdyNetworkTransactionTest, SyncReplyDataAfterTrailers) {
4862 SpdySerializedFrame req( 4864 SpdySerializedFrame req(
4863 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 4865 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
4864 SpdySerializedFrame rst( 4866 SpdySerializedFrame rst(
4865 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 4867 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
4866 MockWrite writes[] = { 4868 MockWrite writes[] = {
4867 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), 4869 CreateMockWrite(req, 0), CreateMockWrite(rst, 5),
4868 }; 4870 };
4869 4871
4870 SpdySerializedFrame stream1_reply( 4872 SpdySerializedFrame stream1_reply(
4871 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 4873 spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
4872 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, false)); 4874 SpdySerializedFrame stream1_body(spdy_util_.ConstructSpdyDataFrame(1, false));
4873 4875
4874 SpdyHeaderBlock late_headers; 4876 SpdyHeaderBlock late_headers;
4875 late_headers["hello"] = "bye"; 4877 late_headers["hello"] = "bye";
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
4915 for (size_t index = 0; index < arraysize(kTestCases); index += 2) { 4917 for (size_t index = 0; index < arraysize(kTestCases); index += 2) {
4916 const char* url_to_fetch = kTestCases[index]; 4918 const char* url_to_fetch = kTestCases[index];
4917 const char* url_to_push = kTestCases[index + 1]; 4919 const char* url_to_push = kTestCases[index + 1];
4918 4920
4919 SpdyTestUtil spdy_test_util; 4921 SpdyTestUtil spdy_test_util;
4920 SpdySerializedFrame stream1_syn( 4922 SpdySerializedFrame stream1_syn(
4921 spdy_test_util.ConstructSpdyGet(url_to_fetch, 1, LOWEST)); 4923 spdy_test_util.ConstructSpdyGet(url_to_fetch, 1, LOWEST));
4922 SpdySerializedFrame stream1_body( 4924 SpdySerializedFrame stream1_body(
4923 spdy_test_util.ConstructSpdyDataFrame(1, true)); 4925 spdy_test_util.ConstructSpdyDataFrame(1, true));
4924 SpdySerializedFrame push_rst( 4926 SpdySerializedFrame push_rst(
4925 spdy_test_util.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 4927 spdy_test_util.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM));
4926 MockWrite writes[] = { 4928 MockWrite writes[] = {
4927 CreateMockWrite(stream1_syn, 0), CreateMockWrite(push_rst, 3), 4929 CreateMockWrite(stream1_syn, 0), CreateMockWrite(push_rst, 3),
4928 }; 4930 };
4929 4931
4930 SpdySerializedFrame stream1_reply( 4932 SpdySerializedFrame stream1_reply(
4931 spdy_test_util.ConstructSpdyGetReply(nullptr, 0, 1)); 4933 spdy_test_util.ConstructSpdyGetReply(nullptr, 0, 1));
4932 SpdySerializedFrame stream2_syn( 4934 SpdySerializedFrame stream2_syn(
4933 spdy_test_util.ConstructSpdyPush(nullptr, 0, 2, 1, url_to_push)); 4935 spdy_test_util.ConstructSpdyPush(nullptr, 0, 2, 1, url_to_push));
4934 const char kPushedData[] = "pushed"; 4936 const char kPushedData[] = "pushed";
4935 SpdySerializedFrame stream2_body(spdy_test_util.ConstructSpdyDataFrame( 4937 SpdySerializedFrame stream2_body(spdy_test_util.ConstructSpdyDataFrame(
4936 2, kPushedData, strlen(kPushedData), true)); 4938 2, kPushedData, strlen(kPushedData), true));
4937 SpdySerializedFrame rst( 4939 SpdySerializedFrame rst(
4938 spdy_test_util.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); 4940 spdy_test_util.ConstructSpdyRstStream(2, ERROR_CODE_CANCEL));
4939 4941
4940 MockRead reads[] = { 4942 MockRead reads[] = {
4941 CreateMockRead(stream1_reply, 1), 4943 CreateMockRead(stream1_reply, 1),
4942 CreateMockRead(stream2_syn, 2), 4944 CreateMockRead(stream2_syn, 2),
4943 CreateMockRead(stream1_body, 4), 4945 CreateMockRead(stream1_body, 4),
4944 CreateMockRead(stream2_body, 5), 4946 CreateMockRead(stream2_body, 5),
4945 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause 4947 MockRead(SYNCHRONOUS, ERR_IO_PENDING, 6), // Force a pause
4946 }; 4948 };
4947 4949
4948 HttpResponseInfo response; 4950 HttpResponseInfo response;
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
5261 5263
5262 TEST_F(SpdyNetworkTransactionTest, ServerPushInvalidCrossOrigin) { 5264 TEST_F(SpdyNetworkTransactionTest, ServerPushInvalidCrossOrigin) {
5263 // "spdy_pooling.pem" is valid for www.example.org, 5265 // "spdy_pooling.pem" is valid for www.example.org,
5264 // but not for invalid.example.org. 5266 // but not for invalid.example.org.
5265 const char* url_to_fetch = "https://www.example.org"; 5267 const char* url_to_fetch = "https://www.example.org";
5266 const char* url_to_push = "https://invalid.example.org"; 5268 const char* url_to_push = "https://invalid.example.org";
5267 5269
5268 SpdySerializedFrame headers( 5270 SpdySerializedFrame headers(
5269 spdy_util_.ConstructSpdyGet(url_to_fetch, 1, LOWEST)); 5271 spdy_util_.ConstructSpdyGet(url_to_fetch, 1, LOWEST));
5270 SpdySerializedFrame rst( 5272 SpdySerializedFrame rst(
5271 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); 5273 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM));
5272 MockWrite writes[] = { 5274 MockWrite writes[] = {
5273 CreateMockWrite(headers, 0), CreateMockWrite(rst, 3), 5275 CreateMockWrite(headers, 0), CreateMockWrite(rst, 3),
5274 }; 5276 };
5275 5277
5276 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); 5278 SpdySerializedFrame reply(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
5277 SpdySerializedFrame push( 5279 SpdySerializedFrame push(
5278 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, url_to_push)); 5280 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, url_to_push));
5279 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 5281 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
5280 const char kPushedData[] = "pushed"; 5282 const char kPushedData[] = "pushed";
5281 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame( 5283 SpdySerializedFrame pushed_body(spdy_util_.ConstructSpdyDataFrame(
(...skipping 27 matching lines...) Expand all
5309 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 5311 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
5310 // Will be destroyed by the RST before stream 3 starts. 5312 // Will be destroyed by the RST before stream 3 starts.
5311 spdy_util_.UpdateWithStreamDestruction(1); 5313 spdy_util_.UpdateWithStreamDestruction(1);
5312 SpdySerializedFrame req2( 5314 SpdySerializedFrame req2(
5313 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, LOWEST, true)); 5315 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, LOWEST, true));
5314 MockWrite writes[] = { 5316 MockWrite writes[] = {
5315 CreateMockWrite(req, 0), CreateMockWrite(req2, 2), 5317 CreateMockWrite(req, 0), CreateMockWrite(req2, 2),
5316 }; 5318 };
5317 5319
5318 SpdySerializedFrame refused( 5320 SpdySerializedFrame refused(
5319 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); 5321 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM));
5320 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3)); 5322 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3));
5321 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(3, true)); 5323 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(3, true));
5322 MockRead reads[] = { 5324 MockRead reads[] = {
5323 CreateMockRead(refused, 1), CreateMockRead(resp, 3), 5325 CreateMockRead(refused, 1), CreateMockRead(resp, 3),
5324 CreateMockRead(body, 4), MockRead(ASYNC, 0, 5) // EOF 5326 CreateMockRead(body, 4), MockRead(ASYNC, 0, 5) // EOF
5325 }; 5327 };
5326 5328
5327 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 5329 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
5328 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 5330 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
5329 NetLogWithSource(), nullptr); 5331 NetLogWithSource(), nullptr);
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
5703 static int kFrameCount = 3; 5705 static int kFrameCount = 3;
5704 5706
5705 std::unique_ptr<std::string> content( 5707 std::unique_ptr<std::string> content(
5706 new std::string(kMaxSpdyFrameChunkSize, 'a')); 5708 new std::string(kMaxSpdyFrameChunkSize, 'a'));
5707 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( 5709 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost(
5708 kDefaultUrl, 1, kMaxSpdyFrameChunkSize * kFrameCount, LOWEST, nullptr, 5710 kDefaultUrl, 1, kMaxSpdyFrameChunkSize * kFrameCount, LOWEST, nullptr,
5709 0)); 5711 0));
5710 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame( 5712 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(
5711 1, content->c_str(), content->size(), false)); 5713 1, content->c_str(), content->size(), false));
5712 SpdySerializedFrame rst( 5714 SpdySerializedFrame rst(
5713 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_FLOW_CONTROL_ERROR)); 5715 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_FLOW_CONTROL_ERROR));
5714 5716
5715 // We're not going to write a data frame with FIN, we'll receive a bad 5717 // We're not going to write a data frame with FIN, we'll receive a bad
5716 // WINDOW_UPDATE while sending a request and will send a RST_STREAM frame. 5718 // WINDOW_UPDATE while sending a request and will send a RST_STREAM frame.
5717 MockWrite writes[] = { 5719 MockWrite writes[] = {
5718 CreateMockWrite(req, 0), CreateMockWrite(body, 2), 5720 CreateMockWrite(req, 0), CreateMockWrite(body, 2),
5719 CreateMockWrite(rst, 3), 5721 CreateMockWrite(rst, 3),
5720 }; 5722 };
5721 5723
5722 static const int32_t kDeltaWindowSize = 0x7fffffff; // cause an overflow 5724 static const int32_t kDeltaWindowSize = 0x7fffffff; // cause an overflow
5723 SpdySerializedFrame window_update( 5725 SpdySerializedFrame window_update(
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after
6244 TEST_F(SpdyNetworkTransactionTest, GoAwayOnOddPushStreamId) { 6246 TEST_F(SpdyNetworkTransactionTest, GoAwayOnOddPushStreamId) {
6245 SpdyHeaderBlock push_headers; 6247 SpdyHeaderBlock push_headers;
6246 spdy_util_.AddUrlToHeaderBlock("http://www.example.org/a.dat", &push_headers); 6248 spdy_util_.AddUrlToHeaderBlock("http://www.example.org/a.dat", &push_headers);
6247 SpdySerializedFrame push( 6249 SpdySerializedFrame push(
6248 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 3, 1)); 6250 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 3, 1));
6249 MockRead reads[] = {CreateMockRead(push, 1)}; 6251 MockRead reads[] = {CreateMockRead(push, 1)};
6250 6252
6251 SpdySerializedFrame req( 6253 SpdySerializedFrame req(
6252 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 6254 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
6253 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 6255 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
6254 0, GOAWAY_PROTOCOL_ERROR, "Odd push stream id.")); 6256 0, ERROR_CODE_PROTOCOL_ERROR, "Odd push stream id."));
6255 MockWrite writes[] = { 6257 MockWrite writes[] = {
6256 CreateMockWrite(req, 0), CreateMockWrite(goaway, 2), 6258 CreateMockWrite(req, 0), CreateMockWrite(goaway, 2),
6257 }; 6259 };
6258 6260
6259 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 6261 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
6260 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 6262 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
6261 NetLogWithSource(), nullptr); 6263 NetLogWithSource(), nullptr);
6262 helper.RunToCompletion(&data); 6264 helper.RunToCompletion(&data);
6263 TransactionHelperResult out = helper.output(); 6265 TransactionHelperResult out = helper.output();
6264 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); 6266 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
(...skipping 10 matching lines...) Expand all
6275 std::move(push_b_headers), 2, 1)); 6277 std::move(push_b_headers), 2, 1));
6276 MockRead reads[] = { 6278 MockRead reads[] = {
6277 CreateMockRead(push_a, 1), CreateMockRead(push_b, 3), 6279 CreateMockRead(push_a, 1), CreateMockRead(push_b, 3),
6278 }; 6280 };
6279 6281
6280 SpdySerializedFrame req( 6282 SpdySerializedFrame req(
6281 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 6283 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
6282 SpdySerializedFrame priority_a( 6284 SpdySerializedFrame priority_a(
6283 spdy_util_.ConstructSpdyPriority(4, 1, IDLE, true)); 6285 spdy_util_.ConstructSpdyPriority(4, 1, IDLE, true));
6284 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( 6286 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(
6285 4, GOAWAY_PROTOCOL_ERROR, 6287 4, ERROR_CODE_PROTOCOL_ERROR,
6286 "New push stream id must be greater than the last accepted.")); 6288 "New push stream id must be greater than the last accepted."));
6287 MockWrite writes[] = { 6289 MockWrite writes[] = {
6288 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), 6290 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2),
6289 CreateMockWrite(goaway, 4), 6291 CreateMockWrite(goaway, 4),
6290 }; 6292 };
6291 6293
6292 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 6294 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
6293 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 6295 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
6294 NetLogWithSource(), nullptr); 6296 NetLogWithSource(), nullptr);
6295 helper.RunToCompletion(&data); 6297 helper.RunToCompletion(&data);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
6372 EXPECT_EQ("HTTP/1.1 200", out.status_line); 6374 EXPECT_EQ("HTTP/1.1 200", out.status_line);
6373 EXPECT_EQ("hello!", out.response_data); 6375 EXPECT_EQ("hello!", out.response_data);
6374 ASSERT_TRUE(out.response_info.headers->HasHeaderValue(kKey, kValue)); 6376 ASSERT_TRUE(out.response_info.headers->HasHeaderValue(kKey, kValue));
6375 } 6377 }
6376 6378
6377 // End of line delimiter is forbidden according to RFC 7230 Section 3.2. 6379 // End of line delimiter is forbidden according to RFC 7230 Section 3.2.
6378 TEST_F(SpdyNetworkTransactionTest, CRLFInHeaderValue) { 6380 TEST_F(SpdyNetworkTransactionTest, CRLFInHeaderValue) {
6379 SpdySerializedFrame req( 6381 SpdySerializedFrame req(
6380 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); 6382 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
6381 SpdySerializedFrame rst( 6383 SpdySerializedFrame rst(
6382 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_PROTOCOL_ERROR)); 6384 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_PROTOCOL_ERROR));
6383 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 2)}; 6385 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 2)};
6384 6386
6385 const char* response_headers[] = {"folded", "foo\r\nbar"}; 6387 const char* response_headers[] = {"folded", "foo\r\nbar"};
6386 SpdySerializedFrame resp( 6388 SpdySerializedFrame resp(
6387 spdy_util_.ConstructSpdyGetReply(response_headers, 1, 1)); 6389 spdy_util_.ConstructSpdyGetReply(response_headers, 1, 1));
6388 MockRead reads[] = {CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3)}; 6390 MockRead reads[] = {CreateMockRead(resp, 1), MockRead(ASYNC, 0, 3)};
6389 6391
6390 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 6392 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
6391 6393
6392 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 6394 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
6393 NetLogWithSource(), nullptr); 6395 NetLogWithSource(), nullptr);
6394 helper.RunToCompletion(&data); 6396 helper.RunToCompletion(&data);
6395 TransactionHelperResult out = helper.output(); 6397 TransactionHelperResult out = helper.output();
6396 6398
6397 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); 6399 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
6398 } 6400 }
6399 6401
6400 // Regression test for https://crbug.com/603182. 6402 // Regression test for https://crbug.com/603182.
6401 // No response headers received before RST_STREAM: error. 6403 // No response headers received before RST_STREAM: error.
6402 TEST_F(SpdyNetworkTransactionTest, RstStreamNoError) { 6404 TEST_F(SpdyNetworkTransactionTest, RstStreamNoError) {
6403 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0)); 6405 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0));
6404 MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)}; 6406 MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)};
6405 6407
6406 SpdySerializedFrame rst( 6408 SpdySerializedFrame rst(
6407 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_NO_ERROR)); 6409 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_NO_ERROR));
6408 MockRead reads[] = {CreateMockRead(rst, 1), MockRead(ASYNC, 0, 2)}; 6410 MockRead reads[] = {CreateMockRead(rst, 1), MockRead(ASYNC, 0, 2)};
6409 6411
6410 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 6412 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
6411 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), 6413 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(),
6412 DEFAULT_PRIORITY, NetLogWithSource(), 6414 DEFAULT_PRIORITY, NetLogWithSource(),
6413 nullptr); 6415 nullptr);
6414 helper.RunToCompletion(&data); 6416 helper.RunToCompletion(&data);
6415 TransactionHelperResult out = helper.output(); 6417 TransactionHelperResult out = helper.output();
6416 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR)); 6418 EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
6417 } 6419 }
6418 6420
6419 // Regression test for https://crbug.com/603182. 6421 // Regression test for https://crbug.com/603182.
6420 // Response headers and data, then RST_STREAM received, 6422 // Response headers and data, then RST_STREAM received,
6421 // before request body is sent: success. 6423 // before request body is sent: success.
6422 TEST_F(SpdyNetworkTransactionTest, RstStreamNoErrorAfterResponse) { 6424 TEST_F(SpdyNetworkTransactionTest, RstStreamNoErrorAfterResponse) {
6423 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0)); 6425 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0));
6424 MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)}; 6426 MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)};
6425 6427
6426 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0)); 6428 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0));
6427 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 6429 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
6428 SpdySerializedFrame rst( 6430 SpdySerializedFrame rst(
6429 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_NO_ERROR)); 6431 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_NO_ERROR));
6430 MockRead reads[] = {CreateMockRead(resp, 1), CreateMockRead(body, 2), 6432 MockRead reads[] = {CreateMockRead(resp, 1), CreateMockRead(body, 2),
6431 CreateMockRead(rst, 3), MockRead(ASYNC, 0, 4)}; 6433 CreateMockRead(rst, 3), MockRead(ASYNC, 0, 4)};
6432 6434
6433 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 6435 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
6434 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), 6436 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(),
6435 DEFAULT_PRIORITY, NetLogWithSource(), 6437 DEFAULT_PRIORITY, NetLogWithSource(),
6436 nullptr); 6438 nullptr);
6437 helper.RunToCompletion(&data); 6439 helper.RunToCompletion(&data);
6438 TransactionHelperResult out = helper.output(); 6440 TransactionHelperResult out = helper.output();
6439 EXPECT_THAT(out.rv, IsOk()); 6441 EXPECT_THAT(out.rv, IsOk());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
6497 6499
6498 // Regression test for https://crbug.com/606990. 6500 // Regression test for https://crbug.com/606990.
6499 // Server responds before POST data are sent and resets stream with NO_ERROR. 6501 // Server responds before POST data are sent and resets stream with NO_ERROR.
6500 TEST_F(SpdyNetworkTransactionTest, ResponseAndRstStreamBeforePostDataSent) { 6502 TEST_F(SpdyNetworkTransactionTest, ResponseAndRstStreamBeforePostDataSent) {
6501 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0)); 6503 SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0));
6502 MockWrite writes[] = {CreateMockWrite(req, 0)}; 6504 MockWrite writes[] = {CreateMockWrite(req, 0)};
6503 6505
6504 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0)); 6506 SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0));
6505 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); 6507 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
6506 SpdySerializedFrame rst( 6508 SpdySerializedFrame rst(
6507 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_NO_ERROR)); 6509 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_NO_ERROR));
6508 MockRead reads[] = {CreateMockRead(resp, 1), CreateMockRead(body, 2), 6510 MockRead reads[] = {CreateMockRead(resp, 1), CreateMockRead(body, 2),
6509 CreateMockRead(rst, 3), MockRead(ASYNC, 0, 4)}; 6511 CreateMockRead(rst, 3), MockRead(ASYNC, 0, 4)};
6510 6512
6511 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 6513 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
6512 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(), 6514 NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(),
6513 DEFAULT_PRIORITY, NetLogWithSource(), 6515 DEFAULT_PRIORITY, NetLogWithSource(),
6514 nullptr); 6516 nullptr);
6515 6517
6516 helper.RunToCompletion(&data); 6518 helper.RunToCompletion(&data);
6517 6519
6518 TransactionHelperResult out = helper.output(); 6520 TransactionHelperResult out = helper.output();
6519 EXPECT_THAT(out.rv, IsOk()); 6521 EXPECT_THAT(out.rv, IsOk());
6520 EXPECT_EQ("HTTP/1.1 200", out.status_line); 6522 EXPECT_EQ("HTTP/1.1 200", out.status_line);
6521 EXPECT_EQ("hello!", out.response_data); 6523 EXPECT_EQ("hello!", out.response_data);
6522 } 6524 }
6523 6525
6524 class SpdyNetworkTransactionTLSUsageCheckTest 6526 class SpdyNetworkTransactionTLSUsageCheckTest
6525 : public SpdyNetworkTransactionTest { 6527 : public SpdyNetworkTransactionTest {
6526 protected: 6528 protected:
6527 void RunTLSUsageCheckTest( 6529 void RunTLSUsageCheckTest(
6528 std::unique_ptr<SSLSocketDataProvider> ssl_provider) { 6530 std::unique_ptr<SSLSocketDataProvider> ssl_provider) {
6529 SpdySerializedFrame goaway( 6531 SpdySerializedFrame goaway(
6530 spdy_util_.ConstructSpdyGoAway(0, GOAWAY_INADEQUATE_SECURITY, "")); 6532 spdy_util_.ConstructSpdyGoAway(0, ERROR_CODE_INADEQUATE_SECURITY, ""));
6531 MockWrite writes[] = {CreateMockWrite(goaway)}; 6533 MockWrite writes[] = {CreateMockWrite(goaway)};
6532 6534
6533 StaticSocketDataProvider data(nullptr, 0, writes, arraysize(writes)); 6535 StaticSocketDataProvider data(nullptr, 0, writes, arraysize(writes));
6534 HttpRequestInfo request; 6536 HttpRequestInfo request;
6535 request.method = "GET"; 6537 request.method = "GET";
6536 request.url = default_url_; 6538 request.url = default_url_;
6537 NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY, 6539 NormalSpdyTransactionHelper helper(request, DEFAULT_PRIORITY,
6538 NetLogWithSource(), nullptr); 6540 NetLogWithSource(), nullptr);
6539 helper.RunToCompletionWithSSLData(&data, std::move(ssl_provider)); 6541 helper.RunToCompletionWithSSLData(&data, std::move(ssl_provider));
6540 TransactionHelperResult out = helper.output(); 6542 TransactionHelperResult out = helper.output();
(...skipping 13 matching lines...) Expand all
6554 TEST_F(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { 6556 TEST_F(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) {
6555 std::unique_ptr<SSLSocketDataProvider> ssl_provider( 6557 std::unique_ptr<SSLSocketDataProvider> ssl_provider(
6556 new SSLSocketDataProvider(ASYNC, OK)); 6558 new SSLSocketDataProvider(ASYNC, OK));
6557 // Set to TLS_RSA_WITH_NULL_MD5 6559 // Set to TLS_RSA_WITH_NULL_MD5
6558 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); 6560 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status);
6559 6561
6560 RunTLSUsageCheckTest(std::move(ssl_provider)); 6562 RunTLSUsageCheckTest(std::move(ssl_provider));
6561 } 6563 }
6562 6564
6563 } // namespace net 6565 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_http_stream_unittest.cc ('k') | net/spdy/spdy_no_op_visitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698