| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/spdy/spdy_session.h" | 5 #include "net/spdy/spdy_session.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 SpdySerializedFrame push( | 761 SpdySerializedFrame push( |
| 762 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kDefaultUrl)); | 762 spdy_util_.ConstructSpdyPush(nullptr, 0, 2, 1, kDefaultUrl)); |
| 763 MockRead reads[] = { | 763 MockRead reads[] = { |
| 764 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(goaway, 2), | 764 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(goaway, 2), |
| 765 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push, 4), | 765 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push, 4), |
| 766 MockRead(ASYNC, 0, 6) // EOF | 766 MockRead(ASYNC, 0, 6) // EOF |
| 767 }; | 767 }; |
| 768 SpdySerializedFrame req( | 768 SpdySerializedFrame req( |
| 769 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 769 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 770 SpdySerializedFrame rst( | 770 SpdySerializedFrame rst( |
| 771 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 771 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM)); |
| 772 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; | 772 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; |
| 773 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 773 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 774 session_deps_.socket_factory->AddSocketDataProvider(&data); | 774 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 775 | 775 |
| 776 AddSSLSocketData(); | 776 AddSSLSocketData(); |
| 777 | 777 |
| 778 CreateNetworkSession(); | 778 CreateNetworkSession(); |
| 779 CreateSecureSpdySession(); | 779 CreateSecureSpdySession(); |
| 780 | 780 |
| 781 base::WeakPtr<SpdyStream> spdy_stream = | 781 base::WeakPtr<SpdyStream> spdy_stream = |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1293 session_deps_.host_resolver->set_synchronous_mode(true); | 1293 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1294 session_deps_.time_func = TheNearFuture; | 1294 session_deps_.time_func = TheNearFuture; |
| 1295 | 1295 |
| 1296 SpdySerializedFrame req( | 1296 SpdySerializedFrame req( |
| 1297 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 1297 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 1298 SpdySerializedFrame priority_a( | 1298 SpdySerializedFrame priority_a( |
| 1299 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 1299 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 1300 SpdySerializedFrame priority_b( | 1300 SpdySerializedFrame priority_b( |
| 1301 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); | 1301 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); |
| 1302 SpdySerializedFrame rst_a( | 1302 SpdySerializedFrame rst_a( |
| 1303 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 1303 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM)); |
| 1304 MockWrite writes[] = { | 1304 MockWrite writes[] = { |
| 1305 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), | 1305 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), |
| 1306 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), | 1306 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), |
| 1307 }; | 1307 }; |
| 1308 | 1308 |
| 1309 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( | 1309 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( |
| 1310 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); | 1310 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); |
| 1311 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); | 1311 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); |
| 1312 // In ascii "0" < "a". We use it to verify that we properly handle std::map | 1312 // In ascii "0" < "a". We use it to verify that we properly handle std::map |
| 1313 // iterators inside. See http://crbug.com/443490 | 1313 // iterators inside. See http://crbug.com/443490 |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1385 session_deps_.host_resolver->set_synchronous_mode(true); | 1385 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1386 session_deps_.time_func = TheNearFuture; | 1386 session_deps_.time_func = TheNearFuture; |
| 1387 | 1387 |
| 1388 SpdySerializedFrame req( | 1388 SpdySerializedFrame req( |
| 1389 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 1389 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 1390 SpdySerializedFrame priority_a( | 1390 SpdySerializedFrame priority_a( |
| 1391 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 1391 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 1392 SpdySerializedFrame priority_b( | 1392 SpdySerializedFrame priority_b( |
| 1393 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); | 1393 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); |
| 1394 SpdySerializedFrame rst_a( | 1394 SpdySerializedFrame rst_a( |
| 1395 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 1395 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM)); |
| 1396 MockWrite writes[] = { | 1396 MockWrite writes[] = { |
| 1397 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), | 1397 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), |
| 1398 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), | 1398 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), |
| 1399 }; | 1399 }; |
| 1400 | 1400 |
| 1401 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( | 1401 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( |
| 1402 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); | 1402 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); |
| 1403 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); | 1403 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); |
| 1404 // In ascii "0" < "a". We use it to verify that we properly handle std::map | 1404 // In ascii "0" < "a". We use it to verify that we properly handle std::map |
| 1405 // iterators inside. See http://crbug.com/443490 | 1405 // iterators inside. See http://crbug.com/443490 |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1478 session_deps_.host_resolver->set_synchronous_mode(true); | 1478 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1479 session_deps_.time_func = TheNearFuture; | 1479 session_deps_.time_func = TheNearFuture; |
| 1480 | 1480 |
| 1481 SpdySerializedFrame req( | 1481 SpdySerializedFrame req( |
| 1482 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 1482 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 1483 SpdySerializedFrame priority_a( | 1483 SpdySerializedFrame priority_a( |
| 1484 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 1484 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 1485 SpdySerializedFrame priority_b( | 1485 SpdySerializedFrame priority_b( |
| 1486 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); | 1486 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); |
| 1487 SpdySerializedFrame rst_a( | 1487 SpdySerializedFrame rst_a( |
| 1488 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 1488 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM)); |
| 1489 MockWrite writes[] = { | 1489 MockWrite writes[] = { |
| 1490 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), | 1490 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), |
| 1491 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), | 1491 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), |
| 1492 }; | 1492 }; |
| 1493 | 1493 |
| 1494 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( | 1494 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( |
| 1495 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); | 1495 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); |
| 1496 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); | 1496 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); |
| 1497 // In ascii "0" < "a". We use it to verify that we properly handle std::map | 1497 // In ascii "0" < "a". We use it to verify that we properly handle std::map |
| 1498 // iterators inside. See http://crbug.com/443490 | 1498 // iterators inside. See http://crbug.com/443490 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1569 session_deps_.host_resolver->set_synchronous_mode(true); | 1569 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1570 session_deps_.time_func = TheNearFuture; | 1570 session_deps_.time_func = TheNearFuture; |
| 1571 | 1571 |
| 1572 SpdySerializedFrame req( | 1572 SpdySerializedFrame req( |
| 1573 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 1573 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 1574 SpdySerializedFrame priority_a( | 1574 SpdySerializedFrame priority_a( |
| 1575 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 1575 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 1576 SpdySerializedFrame priority_b( | 1576 SpdySerializedFrame priority_b( |
| 1577 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); | 1577 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); |
| 1578 SpdySerializedFrame rst_a( | 1578 SpdySerializedFrame rst_a( |
| 1579 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 1579 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM)); |
| 1580 MockWrite writes[] = { | 1580 MockWrite writes[] = { |
| 1581 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), | 1581 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), |
| 1582 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), | 1582 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), |
| 1583 }; | 1583 }; |
| 1584 | 1584 |
| 1585 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( | 1585 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( |
| 1586 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); | 1586 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); |
| 1587 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); | 1587 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); |
| 1588 // In ascii "0" < "a". We use it to verify that we properly handle std::map | 1588 // In ascii "0" < "a". We use it to verify that we properly handle std::map |
| 1589 // iterators inside. See http://crbug.com/443490 | 1589 // iterators inside. See http://crbug.com/443490 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1657 | 1657 |
| 1658 SpdySerializedFrame req( | 1658 SpdySerializedFrame req( |
| 1659 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 1659 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 1660 SpdySerializedFrame priority_a( | 1660 SpdySerializedFrame priority_a( |
| 1661 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 1661 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 1662 SpdySerializedFrame priority_b( | 1662 SpdySerializedFrame priority_b( |
| 1663 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); | 1663 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); |
| 1664 SpdySerializedFrame priority_c( | 1664 SpdySerializedFrame priority_c( |
| 1665 spdy_util_.ConstructSpdyPriority(6, 4, IDLE, true)); | 1665 spdy_util_.ConstructSpdyPriority(6, 4, IDLE, true)); |
| 1666 SpdySerializedFrame rst_a( | 1666 SpdySerializedFrame rst_a( |
| 1667 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 1667 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM)); |
| 1668 MockWrite writes[] = { | 1668 MockWrite writes[] = { |
| 1669 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), | 1669 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 2), |
| 1670 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), | 1670 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_a, 7), |
| 1671 CreateMockWrite(priority_c, 10), | 1671 CreateMockWrite(priority_c, 10), |
| 1672 }; | 1672 }; |
| 1673 | 1673 |
| 1674 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( | 1674 SpdySerializedFrame push_a(spdy_util_.ConstructSpdyPush( |
| 1675 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); | 1675 nullptr, 0, 2, 1, "https://www.example.org/a.dat")); |
| 1676 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); | 1676 SpdySerializedFrame push_a_body(spdy_util_.ConstructSpdyDataFrame(2, false)); |
| 1677 // In ascii "0" < "a". We use it to verify that we properly handle std::map | 1677 // In ascii "0" < "a". We use it to verify that we properly handle std::map |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1757 6, 1); | 1757 6, 1); |
| 1758 } | 1758 } |
| 1759 | 1759 |
| 1760 TEST_F(SpdySessionTest, FailedPing) { | 1760 TEST_F(SpdySessionTest, FailedPing) { |
| 1761 session_deps_.host_resolver->set_synchronous_mode(true); | 1761 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1762 | 1762 |
| 1763 MockRead reads[] = { | 1763 MockRead reads[] = { |
| 1764 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 1764 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 1765 }; | 1765 }; |
| 1766 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(1, false)); | 1766 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(1, false)); |
| 1767 SpdySerializedFrame goaway( | 1767 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( |
| 1768 spdy_util_.ConstructSpdyGoAway(0, GOAWAY_PROTOCOL_ERROR, "Failed ping.")); | 1768 0, ERROR_CODE_PROTOCOL_ERROR, "Failed ping.")); |
| 1769 MockWrite writes[] = {CreateMockWrite(write_ping), CreateMockWrite(goaway)}; | 1769 MockWrite writes[] = {CreateMockWrite(write_ping), CreateMockWrite(goaway)}; |
| 1770 | 1770 |
| 1771 StaticSocketDataProvider data( | 1771 StaticSocketDataProvider data( |
| 1772 reads, arraysize(reads), writes, arraysize(writes)); | 1772 reads, arraysize(reads), writes, arraysize(writes)); |
| 1773 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1773 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1774 | 1774 |
| 1775 AddSSLSocketData(); | 1775 AddSSLSocketData(); |
| 1776 | 1776 |
| 1777 CreateNetworkSession(); | 1777 CreateNetworkSession(); |
| 1778 CreateSecureSpdySession(); | 1778 CreateSecureSpdySession(); |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1958 EXPECT_TRUE( | 1958 EXPECT_TRUE( |
| 1959 NetLogSource::FromEventParameters(entry.params.get(), &socket_source)); | 1959 NetLogSource::FromEventParameters(entry.params.get(), &socket_source)); |
| 1960 EXPECT_TRUE(socket_source.IsValid()); | 1960 EXPECT_TRUE(socket_source.IsValid()); |
| 1961 EXPECT_NE(log_.bound().source().id, socket_source.id); | 1961 EXPECT_NE(log_.bound().source().id, socket_source.id); |
| 1962 } | 1962 } |
| 1963 | 1963 |
| 1964 TEST_F(SpdySessionTest, NetLogOnSessionGoaway) { | 1964 TEST_F(SpdySessionTest, NetLogOnSessionGoaway) { |
| 1965 session_deps_.host_resolver->set_synchronous_mode(true); | 1965 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1966 | 1966 |
| 1967 SpdySerializedFrame goaway( | 1967 SpdySerializedFrame goaway( |
| 1968 spdy_util_.ConstructSpdyGoAway(42, GOAWAY_ENHANCE_YOUR_CALM, "foo")); | 1968 spdy_util_.ConstructSpdyGoAway(42, ERROR_CODE_ENHANCE_YOUR_CALM, "foo")); |
| 1969 MockRead reads[] = { | 1969 MockRead reads[] = { |
| 1970 CreateMockRead(goaway), MockRead(SYNCHRONOUS, 0, 0) // EOF | 1970 CreateMockRead(goaway), MockRead(SYNCHRONOUS, 0, 0) // EOF |
| 1971 }; | 1971 }; |
| 1972 | 1972 |
| 1973 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 1973 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 1974 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1974 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1975 | 1975 |
| 1976 AddSSLSocketData(); | 1976 AddSSLSocketData(); |
| 1977 | 1977 |
| 1978 CreateNetworkSession(); | 1978 CreateNetworkSession(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1997 int last_accepted_stream_id; | 1997 int last_accepted_stream_id; |
| 1998 ASSERT_TRUE(entry.GetIntegerValue("last_accepted_stream_id", | 1998 ASSERT_TRUE(entry.GetIntegerValue("last_accepted_stream_id", |
| 1999 &last_accepted_stream_id)); | 1999 &last_accepted_stream_id)); |
| 2000 EXPECT_EQ(42, last_accepted_stream_id); | 2000 EXPECT_EQ(42, last_accepted_stream_id); |
| 2001 int active_streams; | 2001 int active_streams; |
| 2002 ASSERT_TRUE(entry.GetIntegerValue("active_streams", &active_streams)); | 2002 ASSERT_TRUE(entry.GetIntegerValue("active_streams", &active_streams)); |
| 2003 EXPECT_EQ(0, active_streams); | 2003 EXPECT_EQ(0, active_streams); |
| 2004 int unclaimed_streams; | 2004 int unclaimed_streams; |
| 2005 ASSERT_TRUE(entry.GetIntegerValue("unclaimed_streams", &unclaimed_streams)); | 2005 ASSERT_TRUE(entry.GetIntegerValue("unclaimed_streams", &unclaimed_streams)); |
| 2006 EXPECT_EQ(0, unclaimed_streams); | 2006 EXPECT_EQ(0, unclaimed_streams); |
| 2007 int status; | 2007 int error_code; |
| 2008 ASSERT_TRUE(entry.GetIntegerValue("status", &status)); | 2008 ASSERT_TRUE(entry.GetIntegerValue("error_code", &error_code)); |
| 2009 EXPECT_EQ(GOAWAY_ENHANCE_YOUR_CALM, status); | 2009 EXPECT_EQ(ERROR_CODE_ENHANCE_YOUR_CALM, static_cast<uint32_t>(error_code)); |
| 2010 std::string debug_data; | 2010 std::string debug_data; |
| 2011 ASSERT_TRUE(entry.GetStringValue("debug_data", &debug_data)); | 2011 ASSERT_TRUE(entry.GetStringValue("debug_data", &debug_data)); |
| 2012 EXPECT_EQ("foo", debug_data); | 2012 EXPECT_EQ("foo", debug_data); |
| 2013 | 2013 |
| 2014 // Check that we logged SPDY_SESSION_CLOSE correctly. | 2014 // Check that we logged SPDY_SESSION_CLOSE correctly. |
| 2015 pos = ExpectLogContainsSomewhere( | 2015 pos = ExpectLogContainsSomewhere( |
| 2016 entries, 0, NetLogEventType::HTTP2_SESSION_CLOSE, NetLogEventPhase::NONE); | 2016 entries, 0, NetLogEventType::HTTP2_SESSION_CLOSE, NetLogEventPhase::NONE); |
| 2017 entry = entries[pos]; | 2017 entry = entries[pos]; |
| 2018 int error_code = 0; | 2018 int net_error_code = 0; |
| 2019 ASSERT_TRUE(entry.GetNetErrorCode(&error_code)); | 2019 ASSERT_TRUE(entry.GetNetErrorCode(&net_error_code)); |
| 2020 EXPECT_THAT(error_code, IsOk()); | 2020 EXPECT_THAT(net_error_code, IsOk()); |
| 2021 } | 2021 } |
| 2022 | 2022 |
| 2023 TEST_F(SpdySessionTest, NetLogOnSessionEOF) { | 2023 TEST_F(SpdySessionTest, NetLogOnSessionEOF) { |
| 2024 session_deps_.host_resolver->set_synchronous_mode(true); | 2024 session_deps_.host_resolver->set_synchronous_mode(true); |
| 2025 | 2025 |
| 2026 MockRead reads[] = { | 2026 MockRead reads[] = { |
| 2027 MockRead(SYNCHRONOUS, 0, 0) // EOF | 2027 MockRead(SYNCHRONOUS, 0, 0) // EOF |
| 2028 }; | 2028 }; |
| 2029 | 2029 |
| 2030 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 2030 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2524 }; | 2524 }; |
| 2525 | 2525 |
| 2526 // Close an activated stream that closes its session. Nothing should | 2526 // Close an activated stream that closes its session. Nothing should |
| 2527 // blow up. This is a regression test for https://crbug.com/263691. | 2527 // blow up. This is a regression test for https://crbug.com/263691. |
| 2528 TEST_F(SpdySessionTest, CloseActivatedStreamThatClosesSession) { | 2528 TEST_F(SpdySessionTest, CloseActivatedStreamThatClosesSession) { |
| 2529 session_deps_.host_resolver->set_synchronous_mode(true); | 2529 session_deps_.host_resolver->set_synchronous_mode(true); |
| 2530 | 2530 |
| 2531 SpdySerializedFrame req( | 2531 SpdySerializedFrame req( |
| 2532 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 2532 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 2533 SpdySerializedFrame rst( | 2533 SpdySerializedFrame rst( |
| 2534 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 2534 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL)); |
| 2535 SpdySerializedFrame goaway( | 2535 SpdySerializedFrame goaway( |
| 2536 spdy_util_.ConstructSpdyGoAway(0, GOAWAY_PROTOCOL_ERROR, "Error")); | 2536 spdy_util_.ConstructSpdyGoAway(0, ERROR_CODE_PROTOCOL_ERROR, "Error")); |
| 2537 // The GOAWAY has higher-priority than the RST_STREAM, and is written first | 2537 // The GOAWAY has higher-priority than the RST_STREAM, and is written first |
| 2538 // despite being queued second. | 2538 // despite being queued second. |
| 2539 MockWrite writes[] = { | 2539 MockWrite writes[] = { |
| 2540 CreateMockWrite(req, 0), CreateMockWrite(goaway, 1), | 2540 CreateMockWrite(req, 0), CreateMockWrite(goaway, 1), |
| 2541 CreateMockWrite(rst, 3), | 2541 CreateMockWrite(rst, 3), |
| 2542 }; | 2542 }; |
| 2543 | 2543 |
| 2544 MockRead reads[] = { | 2544 MockRead reads[] = { |
| 2545 MockRead(ASYNC, 0, 2) // EOF | 2545 MockRead(ASYNC, 0, 2) // EOF |
| 2546 }; | 2546 }; |
| (...skipping 914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3461 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); | 3461 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
| 3462 ClientSocketPoolManager::set_max_sockets_per_pool( | 3462 ClientSocketPoolManager::set_max_sockets_per_pool( |
| 3463 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); | 3463 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
| 3464 | 3464 |
| 3465 MockRead reads[] = { | 3465 MockRead reads[] = { |
| 3466 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 3466 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 3467 }; | 3467 }; |
| 3468 SpdySerializedFrame req1( | 3468 SpdySerializedFrame req1( |
| 3469 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 3469 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 3470 SpdySerializedFrame cancel1( | 3470 SpdySerializedFrame cancel1( |
| 3471 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_CANCEL)); | 3471 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_CANCEL)); |
| 3472 MockWrite writes[] = { | 3472 MockWrite writes[] = { |
| 3473 CreateMockWrite(req1, 1), CreateMockWrite(cancel1, 1), | 3473 CreateMockWrite(req1, 1), CreateMockWrite(cancel1, 1), |
| 3474 }; | 3474 }; |
| 3475 StaticSocketDataProvider data(reads, arraysize(reads), | 3475 StaticSocketDataProvider data(reads, arraysize(reads), |
| 3476 writes, arraysize(writes)); | 3476 writes, arraysize(writes)); |
| 3477 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3477 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3478 | 3478 |
| 3479 MockRead http_reads[] = { | 3479 MockRead http_reads[] = { |
| 3480 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 3480 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 3481 }; | 3481 }; |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3605 TEST_F(SpdySessionTest, CreateStreamOnStreamReset) { | 3605 TEST_F(SpdySessionTest, CreateStreamOnStreamReset) { |
| 3606 session_deps_.host_resolver->set_synchronous_mode(true); | 3606 session_deps_.host_resolver->set_synchronous_mode(true); |
| 3607 | 3607 |
| 3608 SpdySerializedFrame req( | 3608 SpdySerializedFrame req( |
| 3609 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 3609 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 3610 MockWrite writes[] = { | 3610 MockWrite writes[] = { |
| 3611 CreateMockWrite(req, 0), | 3611 CreateMockWrite(req, 0), |
| 3612 }; | 3612 }; |
| 3613 | 3613 |
| 3614 SpdySerializedFrame rst( | 3614 SpdySerializedFrame rst( |
| 3615 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); | 3615 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM)); |
| 3616 MockRead reads[] = { | 3616 MockRead reads[] = { |
| 3617 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(rst, 2), | 3617 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(rst, 2), |
| 3618 MockRead(ASYNC, ERR_IO_PENDING, 3), MockRead(ASYNC, 0, 4) // EOF | 3618 MockRead(ASYNC, ERR_IO_PENDING, 3), MockRead(ASYNC, 0, 4) // EOF |
| 3619 }; | 3619 }; |
| 3620 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3620 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3621 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3621 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3622 | 3622 |
| 3623 AddSSLSocketData(); | 3623 AddSSLSocketData(); |
| 3624 | 3624 |
| 3625 CreateNetworkSession(); | 3625 CreateNetworkSession(); |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3870 } | 3870 } |
| 3871 | 3871 |
| 3872 // Peer sends more data than stream level receiving flow control window. | 3872 // Peer sends more data than stream level receiving flow control window. |
| 3873 TEST_F(SpdySessionTest, StreamFlowControlTooMuchData) { | 3873 TEST_F(SpdySessionTest, StreamFlowControlTooMuchData) { |
| 3874 const int32_t stream_max_recv_window_size = 1024; | 3874 const int32_t stream_max_recv_window_size = 1024; |
| 3875 const int32_t data_frame_size = 2 * stream_max_recv_window_size; | 3875 const int32_t data_frame_size = 2 * stream_max_recv_window_size; |
| 3876 | 3876 |
| 3877 SpdySerializedFrame req( | 3877 SpdySerializedFrame req( |
| 3878 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 3878 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 3879 SpdySerializedFrame rst( | 3879 SpdySerializedFrame rst( |
| 3880 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_FLOW_CONTROL_ERROR)); | 3880 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_FLOW_CONTROL_ERROR)); |
| 3881 MockWrite writes[] = { | 3881 MockWrite writes[] = { |
| 3882 CreateMockWrite(req, 0), CreateMockWrite(rst, 4), | 3882 CreateMockWrite(req, 0), CreateMockWrite(rst, 4), |
| 3883 }; | 3883 }; |
| 3884 | 3884 |
| 3885 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 3885 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 3886 const std::string payload(data_frame_size, 'a'); | 3886 const std::string payload(data_frame_size, 'a'); |
| 3887 SpdySerializedFrame data_frame(spdy_util_.ConstructSpdyDataFrame( | 3887 SpdySerializedFrame data_frame(spdy_util_.ConstructSpdyDataFrame( |
| 3888 1, payload.data(), data_frame_size, false)); | 3888 1, payload.data(), data_frame_size, false)); |
| 3889 MockRead reads[] = { | 3889 MockRead reads[] = { |
| 3890 CreateMockRead(resp, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), | 3890 CreateMockRead(resp, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3943 // Second data frame would be fine had there been a WINDOW_UPDATE. | 3943 // Second data frame would be fine had there been a WINDOW_UPDATE. |
| 3944 ASSERT_GT(session_max_recv_window_size, second_data_frame_size); | 3944 ASSERT_GT(session_max_recv_window_size, second_data_frame_size); |
| 3945 // But in fact, the two data frames together overflow the receiving window at | 3945 // But in fact, the two data frames together overflow the receiving window at |
| 3946 // session level. | 3946 // session level. |
| 3947 ASSERT_LT(session_max_recv_window_size, | 3947 ASSERT_LT(session_max_recv_window_size, |
| 3948 first_data_frame_size + second_data_frame_size); | 3948 first_data_frame_size + second_data_frame_size); |
| 3949 | 3949 |
| 3950 session_deps_.host_resolver->set_synchronous_mode(true); | 3950 session_deps_.host_resolver->set_synchronous_mode(true); |
| 3951 | 3951 |
| 3952 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( | 3952 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( |
| 3953 0, GOAWAY_FLOW_CONTROL_ERROR, | 3953 0, ERROR_CODE_FLOW_CONTROL_ERROR, |
| 3954 "delta_window_size is 400 in DecreaseRecvWindowSize, which is larger " | 3954 "delta_window_size is 400 in DecreaseRecvWindowSize, which is larger " |
| 3955 "than the receive window size of 500")); | 3955 "than the receive window size of 500")); |
| 3956 MockWrite writes[] = { | 3956 MockWrite writes[] = { |
| 3957 CreateMockWrite(goaway, 4), | 3957 CreateMockWrite(goaway, 4), |
| 3958 }; | 3958 }; |
| 3959 | 3959 |
| 3960 const std::string first_data_frame(first_data_frame_size, 'a'); | 3960 const std::string first_data_frame(first_data_frame_size, 'a'); |
| 3961 SpdySerializedFrame first(spdy_util_.ConstructSpdyDataFrame( | 3961 SpdySerializedFrame first(spdy_util_.ConstructSpdyDataFrame( |
| 3962 1, first_data_frame.data(), first_data_frame_size, false)); | 3962 1, first_data_frame.data(), first_data_frame_size, false)); |
| 3963 const std::string second_data_frame(second_data_frame_size, 'b'); | 3963 const std::string second_data_frame(second_data_frame_size, 'b'); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4004 ASSERT_GT(stream_max_recv_window_size / 2, first_data_frame_size); | 4004 ASSERT_GT(stream_max_recv_window_size / 2, first_data_frame_size); |
| 4005 // Second data frame would be fine had there been a WINDOW_UPDATE. | 4005 // Second data frame would be fine had there been a WINDOW_UPDATE. |
| 4006 ASSERT_GT(stream_max_recv_window_size, second_data_frame_size); | 4006 ASSERT_GT(stream_max_recv_window_size, second_data_frame_size); |
| 4007 // But in fact, they should overflow the receiving window at stream level. | 4007 // But in fact, they should overflow the receiving window at stream level. |
| 4008 ASSERT_LT(stream_max_recv_window_size, | 4008 ASSERT_LT(stream_max_recv_window_size, |
| 4009 first_data_frame_size + second_data_frame_size); | 4009 first_data_frame_size + second_data_frame_size); |
| 4010 | 4010 |
| 4011 SpdySerializedFrame req( | 4011 SpdySerializedFrame req( |
| 4012 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4012 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4013 SpdySerializedFrame rst( | 4013 SpdySerializedFrame rst( |
| 4014 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_FLOW_CONTROL_ERROR)); | 4014 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_FLOW_CONTROL_ERROR)); |
| 4015 MockWrite writes[] = { | 4015 MockWrite writes[] = { |
| 4016 CreateMockWrite(req, 0), CreateMockWrite(rst, 6), | 4016 CreateMockWrite(req, 0), CreateMockWrite(rst, 6), |
| 4017 }; | 4017 }; |
| 4018 | 4018 |
| 4019 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 4019 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 4020 const std::string first_data_frame(first_data_frame_size, 'a'); | 4020 const std::string first_data_frame(first_data_frame_size, 'a'); |
| 4021 SpdySerializedFrame first(spdy_util_.ConstructSpdyDataFrame( | 4021 SpdySerializedFrame first(spdy_util_.ConstructSpdyDataFrame( |
| 4022 1, first_data_frame.data(), first_data_frame_size, false)); | 4022 1, first_data_frame.data(), first_data_frame_size, false)); |
| 4023 const std::string second_data_frame(second_data_frame_size, 'b'); | 4023 const std::string second_data_frame(second_data_frame_size, 'b'); |
| 4024 SpdySerializedFrame second(spdy_util_.ConstructSpdyDataFrame( | 4024 SpdySerializedFrame second(spdy_util_.ConstructSpdyDataFrame( |
| (...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4831 EXPECT_TRUE(delegate2.send_headers_completed()); | 4831 EXPECT_TRUE(delegate2.send_headers_completed()); |
| 4832 EXPECT_EQ(std::string(), delegate2.TakeReceivedData()); | 4832 EXPECT_EQ(std::string(), delegate2.TakeReceivedData()); |
| 4833 | 4833 |
| 4834 EXPECT_TRUE(data.AllWriteDataConsumed()); | 4834 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 4835 } | 4835 } |
| 4836 | 4836 |
| 4837 TEST_F(SpdySessionTest, GoAwayOnSessionFlowControlError) { | 4837 TEST_F(SpdySessionTest, GoAwayOnSessionFlowControlError) { |
| 4838 SpdySerializedFrame req( | 4838 SpdySerializedFrame req( |
| 4839 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4839 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4840 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( | 4840 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway( |
| 4841 0, GOAWAY_FLOW_CONTROL_ERROR, | 4841 0, ERROR_CODE_FLOW_CONTROL_ERROR, |
| 4842 "delta_window_size is 6 in DecreaseRecvWindowSize, which is larger than " | 4842 "delta_window_size is 6 in DecreaseRecvWindowSize, which is larger than " |
| 4843 "the receive window size of 1")); | 4843 "the receive window size of 1")); |
| 4844 MockWrite writes[] = { | 4844 MockWrite writes[] = { |
| 4845 CreateMockWrite(req, 0), CreateMockWrite(goaway, 4), | 4845 CreateMockWrite(req, 0), CreateMockWrite(goaway, 4), |
| 4846 }; | 4846 }; |
| 4847 | 4847 |
| 4848 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 4848 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 4849 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); | 4849 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 4850 MockRead reads[] = { | 4850 MockRead reads[] = { |
| 4851 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp, 2), | 4851 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp, 2), |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4985 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9), | 4985 MockRead(ASYNC, ERR_IO_PENDING, 8), MockRead(ASYNC, 0, 9), |
| 4986 }; | 4986 }; |
| 4987 | 4987 |
| 4988 SpdySerializedFrame req( | 4988 SpdySerializedFrame req( |
| 4989 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4989 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4990 SpdySerializedFrame priority_a( | 4990 SpdySerializedFrame priority_a( |
| 4991 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 4991 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 4992 SpdySerializedFrame priority_b( | 4992 SpdySerializedFrame priority_b( |
| 4993 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); | 4993 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); |
| 4994 SpdySerializedFrame rst_b( | 4994 SpdySerializedFrame rst_b( |
| 4995 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); | 4995 spdy_util_.ConstructSpdyRstStream(4, ERROR_CODE_REFUSED_STREAM)); |
| 4996 MockWrite writes[] = { | 4996 MockWrite writes[] = { |
| 4997 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 3), | 4997 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 3), |
| 4998 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_b, 7), | 4998 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_b, 7), |
| 4999 }; | 4999 }; |
| 5000 | 5000 |
| 5001 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 5001 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 5002 session_deps_.socket_factory->AddSocketDataProvider(&data); | 5002 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 5003 | 5003 |
| 5004 AddSSLSocketData(); | 5004 AddSSLSocketData(); |
| 5005 | 5005 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5076 CreateMockRead(cross_origin_https_push, 5), | 5076 CreateMockRead(cross_origin_https_push, 5), |
| 5077 MockRead(ASYNC, ERR_IO_PENDING, 7), | 5077 MockRead(ASYNC, ERR_IO_PENDING, 7), |
| 5078 MockRead(ASYNC, 0, 8), | 5078 MockRead(ASYNC, 0, 8), |
| 5079 }; | 5079 }; |
| 5080 | 5080 |
| 5081 SpdySerializedFrame req( | 5081 SpdySerializedFrame req( |
| 5082 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 5082 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 5083 SpdySerializedFrame priority_http( | 5083 SpdySerializedFrame priority_http( |
| 5084 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 5084 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 5085 SpdySerializedFrame rst_https( | 5085 SpdySerializedFrame rst_https( |
| 5086 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); | 5086 spdy_util_.ConstructSpdyRstStream(4, ERROR_CODE_REFUSED_STREAM)); |
| 5087 MockWrite writes[] = { | 5087 MockWrite writes[] = { |
| 5088 CreateMockWrite(req, 0), CreateMockWrite(priority_http, 3), | 5088 CreateMockWrite(req, 0), CreateMockWrite(priority_http, 3), |
| 5089 CreateMockWrite(rst_https, 6), | 5089 CreateMockWrite(rst_https, 6), |
| 5090 }; | 5090 }; |
| 5091 | 5091 |
| 5092 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 5092 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 5093 session_deps_.socket_factory->AddSocketDataProvider(&data); | 5093 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 5094 | 5094 |
| 5095 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 5095 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); |
| 5096 proxy_delegate->set_trusted_spdy_proxy( | 5096 proxy_delegate->set_trusted_spdy_proxy( |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5162 SpdySerializedFrame cross_origin_push(spdy_util_.ConstructSpdyPush( | 5162 SpdySerializedFrame cross_origin_push(spdy_util_.ConstructSpdyPush( |
| 5163 nullptr, 0, 2, 1, kHttpURLFromAnotherOrigin)); | 5163 nullptr, 0, 2, 1, kHttpURLFromAnotherOrigin)); |
| 5164 MockRead reads[] = { | 5164 MockRead reads[] = { |
| 5165 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(cross_origin_push, 2), | 5165 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(cross_origin_push, 2), |
| 5166 MockRead(ASYNC, 0, 4), | 5166 MockRead(ASYNC, 0, 4), |
| 5167 }; | 5167 }; |
| 5168 | 5168 |
| 5169 SpdySerializedFrame req( | 5169 SpdySerializedFrame req( |
| 5170 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 5170 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 5171 SpdySerializedFrame rst( | 5171 SpdySerializedFrame rst( |
| 5172 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 5172 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_REFUSED_STREAM)); |
| 5173 MockWrite writes[] = { | 5173 MockWrite writes[] = { |
| 5174 CreateMockWrite(req, 0), CreateMockWrite(rst, 3), | 5174 CreateMockWrite(req, 0), CreateMockWrite(rst, 3), |
| 5175 }; | 5175 }; |
| 5176 | 5176 |
| 5177 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 5177 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 5178 session_deps_.socket_factory->AddSocketDataProvider(&data); | 5178 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 5179 | 5179 |
| 5180 AddSSLSocketData(); | 5180 AddSSLSocketData(); |
| 5181 | 5181 |
| 5182 CreateNetworkSession(); | 5182 CreateNetworkSession(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5230 MockRead(ASYNC, ERR_IO_PENDING, 10), MockRead(ASYNC, 0, 11), | 5230 MockRead(ASYNC, ERR_IO_PENDING, 10), MockRead(ASYNC, 0, 11), |
| 5231 }; | 5231 }; |
| 5232 | 5232 |
| 5233 SpdySerializedFrame req( | 5233 SpdySerializedFrame req( |
| 5234 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 5234 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 5235 SpdySerializedFrame priority_a( | 5235 SpdySerializedFrame priority_a( |
| 5236 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 5236 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 5237 SpdySerializedFrame priority_b( | 5237 SpdySerializedFrame priority_b( |
| 5238 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); | 5238 spdy_util_.ConstructSpdyPriority(4, 2, IDLE, true)); |
| 5239 SpdySerializedFrame rst_b( | 5239 SpdySerializedFrame rst_b( |
| 5240 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); | 5240 spdy_util_.ConstructSpdyRstStream(4, ERROR_CODE_REFUSED_STREAM)); |
| 5241 MockWrite writes[] = { | 5241 MockWrite writes[] = { |
| 5242 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 3), | 5242 CreateMockWrite(req, 0), CreateMockWrite(priority_a, 3), |
| 5243 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_b, 9), | 5243 CreateMockWrite(priority_b, 6), CreateMockWrite(rst_b, 9), |
| 5244 }; | 5244 }; |
| 5245 | 5245 |
| 5246 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 5246 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 5247 session_deps_.socket_factory->AddSocketDataProvider(&data); | 5247 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 5248 | 5248 |
| 5249 AddSSLSocketData(); | 5249 AddSSLSocketData(); |
| 5250 | 5250 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5320 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_promise, 2), | 5320 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(push_promise, 2), |
| 5321 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(headers_frame, 5), | 5321 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(headers_frame, 5), |
| 5322 MockRead(ASYNC, ERR_IO_PENDING, 7), MockRead(ASYNC, 0, 8), | 5322 MockRead(ASYNC, ERR_IO_PENDING, 7), MockRead(ASYNC, 0, 8), |
| 5323 }; | 5323 }; |
| 5324 | 5324 |
| 5325 SpdySerializedFrame req( | 5325 SpdySerializedFrame req( |
| 5326 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 5326 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 5327 SpdySerializedFrame priority( | 5327 SpdySerializedFrame priority( |
| 5328 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); | 5328 spdy_util_.ConstructSpdyPriority(2, 1, IDLE, true)); |
| 5329 SpdySerializedFrame rst( | 5329 SpdySerializedFrame rst( |
| 5330 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); | 5330 spdy_util_.ConstructSpdyRstStream(2, ERROR_CODE_CANCEL)); |
| 5331 MockWrite writes[] = { | 5331 MockWrite writes[] = { |
| 5332 CreateMockWrite(req, 0), CreateMockWrite(priority, 3), | 5332 CreateMockWrite(req, 0), CreateMockWrite(priority, 3), |
| 5333 CreateMockWrite(rst, 6), | 5333 CreateMockWrite(rst, 6), |
| 5334 }; | 5334 }; |
| 5335 | 5335 |
| 5336 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 5336 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 5337 session_deps_.socket_factory->AddSocketDataProvider(&data); | 5337 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 5338 | 5338 |
| 5339 AddSSLSocketData(); | 5339 AddSSLSocketData(); |
| 5340 | 5340 |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5643 session_origin); | 5643 session_origin); |
| 5644 ASSERT_TRUE(altsvc_vector.empty()); | 5644 ASSERT_TRUE(altsvc_vector.empty()); |
| 5645 } | 5645 } |
| 5646 | 5646 |
| 5647 TEST_F(AltSvcFrameTest, ProcessAltSvcFrameOnActiveStream) { | 5647 TEST_F(AltSvcFrameTest, ProcessAltSvcFrameOnActiveStream) { |
| 5648 SpdyAltSvcIR altsvc_ir(1); | 5648 SpdyAltSvcIR altsvc_ir(1); |
| 5649 altsvc_ir.add_altsvc(alternative_service_); | 5649 altsvc_ir.add_altsvc(alternative_service_); |
| 5650 | 5650 |
| 5651 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir)); | 5651 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir)); |
| 5652 SpdySerializedFrame rst( | 5652 SpdySerializedFrame rst( |
| 5653 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); | 5653 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM)); |
| 5654 MockRead reads[] = { | 5654 MockRead reads[] = { |
| 5655 CreateMockRead(altsvc_frame, 1), CreateMockRead(rst, 2), | 5655 CreateMockRead(altsvc_frame, 1), CreateMockRead(rst, 2), |
| 5656 MockRead(ASYNC, 0, 3) // EOF | 5656 MockRead(ASYNC, 0, 3) // EOF |
| 5657 }; | 5657 }; |
| 5658 | 5658 |
| 5659 const char request_origin[] = "https://mail.example.org"; | 5659 const char request_origin[] = "https://mail.example.org"; |
| 5660 SpdySerializedFrame req( | 5660 SpdySerializedFrame req( |
| 5661 spdy_util_.ConstructSpdyGet(request_origin, 1, MEDIUM)); | 5661 spdy_util_.ConstructSpdyGet(request_origin, 1, MEDIUM)); |
| 5662 MockWrite writes[] = { | 5662 MockWrite writes[] = { |
| 5663 CreateMockWrite(req, 0), | 5663 CreateMockWrite(req, 0), |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5697 EXPECT_EQ("alternative.example.org", altsvc_vector[0].host); | 5697 EXPECT_EQ("alternative.example.org", altsvc_vector[0].host); |
| 5698 EXPECT_EQ(443u, altsvc_vector[0].port); | 5698 EXPECT_EQ(443u, altsvc_vector[0].port); |
| 5699 } | 5699 } |
| 5700 | 5700 |
| 5701 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnStreamWithInsecureOrigin) { | 5701 TEST_F(AltSvcFrameTest, DoNotProcessAltSvcFrameOnStreamWithInsecureOrigin) { |
| 5702 SpdyAltSvcIR altsvc_ir(1); | 5702 SpdyAltSvcIR altsvc_ir(1); |
| 5703 altsvc_ir.add_altsvc(alternative_service_); | 5703 altsvc_ir.add_altsvc(alternative_service_); |
| 5704 | 5704 |
| 5705 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir)); | 5705 SpdySerializedFrame altsvc_frame(spdy_util_.SerializeFrame(altsvc_ir)); |
| 5706 SpdySerializedFrame rst( | 5706 SpdySerializedFrame rst( |
| 5707 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); | 5707 spdy_util_.ConstructSpdyRstStream(1, ERROR_CODE_REFUSED_STREAM)); |
| 5708 MockRead reads[] = { | 5708 MockRead reads[] = { |
| 5709 CreateMockRead(altsvc_frame, 1), CreateMockRead(rst, 2), | 5709 CreateMockRead(altsvc_frame, 1), CreateMockRead(rst, 2), |
| 5710 MockRead(ASYNC, 0, 3) // EOF | 5710 MockRead(ASYNC, 0, 3) // EOF |
| 5711 }; | 5711 }; |
| 5712 | 5712 |
| 5713 const char request_origin[] = "http://mail.example.org"; | 5713 const char request_origin[] = "http://mail.example.org"; |
| 5714 SpdySerializedFrame req( | 5714 SpdySerializedFrame req( |
| 5715 spdy_util_.ConstructSpdyGet(request_origin, 1, MEDIUM)); | 5715 spdy_util_.ConstructSpdyGet(request_origin, 1, MEDIUM)); |
| 5716 MockWrite writes[] = { | 5716 MockWrite writes[] = { |
| 5717 CreateMockWrite(req, 0), | 5717 CreateMockWrite(req, 0), |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5789 MapFramerErrorToNetError(SpdyFramer::SPDY_COMPRESS_FAILURE)); | 5789 MapFramerErrorToNetError(SpdyFramer::SPDY_COMPRESS_FAILURE)); |
| 5790 CHECK_EQ(ERR_SPDY_COMPRESSION_ERROR, | 5790 CHECK_EQ(ERR_SPDY_COMPRESSION_ERROR, |
| 5791 MapFramerErrorToNetError(SpdyFramer::SPDY_DECOMPRESS_FAILURE)); | 5791 MapFramerErrorToNetError(SpdyFramer::SPDY_DECOMPRESS_FAILURE)); |
| 5792 CHECK_EQ( | 5792 CHECK_EQ( |
| 5793 ERR_SPDY_FRAME_SIZE_ERROR, | 5793 ERR_SPDY_FRAME_SIZE_ERROR, |
| 5794 MapFramerErrorToNetError(SpdyFramer::SPDY_CONTROL_PAYLOAD_TOO_LARGE)); | 5794 MapFramerErrorToNetError(SpdyFramer::SPDY_CONTROL_PAYLOAD_TOO_LARGE)); |
| 5795 } | 5795 } |
| 5796 | 5796 |
| 5797 TEST(MapRstStreamStatusToProtocolError, MapsValues) { | 5797 TEST(MapRstStreamStatusToProtocolError, MapsValues) { |
| 5798 CHECK_EQ(STATUS_CODE_PROTOCOL_ERROR, | 5798 CHECK_EQ(STATUS_CODE_PROTOCOL_ERROR, |
| 5799 MapRstStreamStatusToProtocolError(RST_STREAM_PROTOCOL_ERROR)); | 5799 MapRstStreamStatusToProtocolError(ERROR_CODE_PROTOCOL_ERROR)); |
| 5800 CHECK_EQ(STATUS_CODE_FRAME_SIZE_ERROR, | 5800 CHECK_EQ(STATUS_CODE_FRAME_SIZE_ERROR, |
| 5801 MapRstStreamStatusToProtocolError(RST_STREAM_FRAME_SIZE_ERROR)); | 5801 MapRstStreamStatusToProtocolError(ERROR_CODE_FRAME_SIZE_ERROR)); |
| 5802 CHECK_EQ(STATUS_CODE_ENHANCE_YOUR_CALM, | 5802 CHECK_EQ(STATUS_CODE_ENHANCE_YOUR_CALM, |
| 5803 MapRstStreamStatusToProtocolError(RST_STREAM_ENHANCE_YOUR_CALM)); | 5803 MapRstStreamStatusToProtocolError(ERROR_CODE_ENHANCE_YOUR_CALM)); |
| 5804 CHECK_EQ(STATUS_CODE_INADEQUATE_SECURITY, | 5804 CHECK_EQ(STATUS_CODE_INADEQUATE_SECURITY, |
| 5805 MapRstStreamStatusToProtocolError(RST_STREAM_INADEQUATE_SECURITY)); | 5805 MapRstStreamStatusToProtocolError(ERROR_CODE_INADEQUATE_SECURITY)); |
| 5806 CHECK_EQ(STATUS_CODE_HTTP_1_1_REQUIRED, | 5806 CHECK_EQ(STATUS_CODE_HTTP_1_1_REQUIRED, |
| 5807 MapRstStreamStatusToProtocolError(RST_STREAM_HTTP_1_1_REQUIRED)); | 5807 MapRstStreamStatusToProtocolError(ERROR_CODE_HTTP_1_1_REQUIRED)); |
| 5808 } | 5808 } |
| 5809 | 5809 |
| 5810 TEST(MapNetErrorToGoAwayStatus, MapsValue) { | 5810 TEST(MapNetErrorToGoAwayStatus, MapsValue) { |
| 5811 CHECK_EQ(GOAWAY_INADEQUATE_SECURITY, | 5811 CHECK_EQ(ERROR_CODE_INADEQUATE_SECURITY, |
| 5812 MapNetErrorToGoAwayStatus(ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY)); | 5812 MapNetErrorToGoAwayStatus(ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY)); |
| 5813 CHECK_EQ(GOAWAY_FLOW_CONTROL_ERROR, | 5813 CHECK_EQ(ERROR_CODE_FLOW_CONTROL_ERROR, |
| 5814 MapNetErrorToGoAwayStatus(ERR_SPDY_FLOW_CONTROL_ERROR)); | 5814 MapNetErrorToGoAwayStatus(ERR_SPDY_FLOW_CONTROL_ERROR)); |
| 5815 CHECK_EQ(GOAWAY_PROTOCOL_ERROR, | 5815 CHECK_EQ(ERROR_CODE_PROTOCOL_ERROR, |
| 5816 MapNetErrorToGoAwayStatus(ERR_SPDY_PROTOCOL_ERROR)); | 5816 MapNetErrorToGoAwayStatus(ERR_SPDY_PROTOCOL_ERROR)); |
| 5817 CHECK_EQ(GOAWAY_COMPRESSION_ERROR, | 5817 CHECK_EQ(ERROR_CODE_COMPRESSION_ERROR, |
| 5818 MapNetErrorToGoAwayStatus(ERR_SPDY_COMPRESSION_ERROR)); | 5818 MapNetErrorToGoAwayStatus(ERR_SPDY_COMPRESSION_ERROR)); |
| 5819 CHECK_EQ(GOAWAY_FRAME_SIZE_ERROR, | 5819 CHECK_EQ(ERROR_CODE_FRAME_SIZE_ERROR, |
| 5820 MapNetErrorToGoAwayStatus(ERR_SPDY_FRAME_SIZE_ERROR)); | 5820 MapNetErrorToGoAwayStatus(ERR_SPDY_FRAME_SIZE_ERROR)); |
| 5821 CHECK_EQ(GOAWAY_PROTOCOL_ERROR, MapNetErrorToGoAwayStatus(ERR_UNEXPECTED)); | 5821 CHECK_EQ(ERROR_CODE_PROTOCOL_ERROR, |
| 5822 MapNetErrorToGoAwayStatus(ERR_UNEXPECTED)); |
| 5822 } | 5823 } |
| 5823 | 5824 |
| 5824 TEST(CanPoolTest, CanPool) { | 5825 TEST(CanPoolTest, CanPool) { |
| 5825 // Load a cert that is valid for: | 5826 // Load a cert that is valid for: |
| 5826 // www.example.org | 5827 // www.example.org |
| 5827 // mail.example.org | 5828 // mail.example.org |
| 5828 // mail.example.com | 5829 // mail.example.com |
| 5829 | 5830 |
| 5830 TransportSecurityState tss; | 5831 TransportSecurityState tss; |
| 5831 SSLInfo ssl_info; | 5832 SSLInfo ssl_info; |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5997 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), | 5998 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), |
| 5998 "spdy_pooling.pem"); | 5999 "spdy_pooling.pem"); |
| 5999 ssl_info.is_issued_by_known_root = true; | 6000 ssl_info.is_issued_by_known_root = true; |
| 6000 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); | 6001 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); |
| 6001 | 6002 |
| 6002 EXPECT_TRUE(SpdySession::CanPool( | 6003 EXPECT_TRUE(SpdySession::CanPool( |
| 6003 &tss, ssl_info, "www.example.org", "mail.example.org")); | 6004 &tss, ssl_info, "www.example.org", "mail.example.org")); |
| 6004 } | 6005 } |
| 6005 | 6006 |
| 6006 } // namespace net | 6007 } // namespace net |
| OLD | NEW |