| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <iostream> | 6 #include <iostream> |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 1586 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1597 'o' | 1597 'o' |
| 1598 }; | 1598 }; |
| 1599 const unsigned char kV4FrameData[] = { | 1599 const unsigned char kV4FrameData[] = { |
| 1600 0x00, 0x00, 0x05, 0x00, | 1600 0x00, 0x00, 0x05, 0x00, |
| 1601 0x00, 0x00, 0x00, 0x00, | 1601 0x00, 0x00, 0x00, 0x00, |
| 1602 0x01, 'h', 'e', 'l', | 1602 0x01, 'h', 'e', 'l', |
| 1603 'l', 'o' | 1603 'l', 'o' |
| 1604 }; | 1604 }; |
| 1605 const char bytes[] = "hello"; | 1605 const char bytes[] = "hello"; |
| 1606 | 1606 |
| 1607 SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes))); | 1607 SpdyDataIR data_ir(1, bytes); |
| 1608 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1608 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1609 if (IsSpdy4()) { | 1609 if (IsSpdy4()) { |
| 1610 CompareFrame( | 1610 CompareFrame( |
| 1611 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 1611 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
| 1612 } else { | 1612 } else { |
| 1613 CompareFrame( | 1613 CompareFrame( |
| 1614 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 1614 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 1615 } | 1615 } |
| 1616 | 1616 |
| 1617 SpdyDataIR data_header_ir(1); | 1617 SpdyDataIR data_header_ir(1); |
| 1618 data_header_ir.SetDataShallow(base::StringPiece(bytes, strlen(bytes))); | 1618 data_header_ir.SetDataShallow(bytes); |
| 1619 frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField( | 1619 frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField( |
| 1620 data_header_ir)); | 1620 data_header_ir)); |
| 1621 CompareCharArraysWithHexError( | 1621 CompareCharArraysWithHexError( |
| 1622 kDescription, | 1622 kDescription, |
| 1623 reinterpret_cast<const unsigned char*>(frame->data()), | 1623 reinterpret_cast<const unsigned char*>(frame->data()), |
| 1624 framer.GetDataFrameMinimumSize(), | 1624 framer.GetDataFrameMinimumSize(), |
| 1625 IsSpdy4() ? kV4FrameData : kV3FrameData, | 1625 IsSpdy4() ? kV4FrameData : kV3FrameData, |
| 1626 framer.GetDataFrameMinimumSize()); | 1626 framer.GetDataFrameMinimumSize()); |
| 1627 } | 1627 } |
| 1628 | 1628 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1659 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 1659 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 1660 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 1660 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 1661 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 1661 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 1662 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 1662 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 1663 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 1663 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 1664 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 1664 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 1665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 1665 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 1666 }; | 1666 }; |
| 1667 const char bytes[] = "hello"; | 1667 const char bytes[] = "hello"; |
| 1668 | 1668 |
| 1669 SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes))); | 1669 SpdyDataIR data_ir(1, bytes); |
| 1670 // 247 zeros and the pad length field make the overall padding to be 248 | 1670 // 247 zeros and the pad length field make the overall padding to be 248 |
| 1671 // bytes. | 1671 // bytes. |
| 1672 data_ir.set_padding_len(248); | 1672 data_ir.set_padding_len(248); |
| 1673 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1673 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1674 if (IsSpdy4()) { | 1674 if (IsSpdy4()) { |
| 1675 CompareFrame( | 1675 CompareFrame( |
| 1676 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 1676 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
| 1677 } else { | 1677 } else { |
| 1678 CompareFrame( | 1678 CompareFrame( |
| 1679 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 1679 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1701 0x00, 0x00, 0x0d, 0x00, // Length = 13. PADDED set. | 1701 0x00, 0x00, 0x0d, 0x00, // Length = 13. PADDED set. |
| 1702 0x08, 0x00, 0x00, 0x00, | 1702 0x08, 0x00, 0x00, 0x00, |
| 1703 0x01, 0x07, // Pad length field. | 1703 0x01, 0x07, // Pad length field. |
| 1704 'h', 'e', 'l', 'l', // Data | 1704 'h', 'e', 'l', 'l', // Data |
| 1705 'o', | 1705 'o', |
| 1706 0x00, 0x00, 0x00, 0x00, // Padding | 1706 0x00, 0x00, 0x00, 0x00, // Padding |
| 1707 0x00, 0x00, 0x00 | 1707 0x00, 0x00, 0x00 |
| 1708 }; | 1708 }; |
| 1709 const char bytes[] = "hello"; | 1709 const char bytes[] = "hello"; |
| 1710 | 1710 |
| 1711 SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes))); | 1711 SpdyDataIR data_ir(1, bytes); |
| 1712 // 7 zeros and the pad length field make the overall padding to be 8 bytes. | 1712 // 7 zeros and the pad length field make the overall padding to be 8 bytes. |
| 1713 data_ir.set_padding_len(8); | 1713 data_ir.set_padding_len(8); |
| 1714 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1714 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1715 if (IsSpdy4()) { | 1715 if (IsSpdy4()) { |
| 1716 CompareFrame( | 1716 CompareFrame( |
| 1717 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 1717 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
| 1718 } else { | 1718 } else { |
| 1719 CompareFrame( | 1719 CompareFrame( |
| 1720 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 1720 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 1721 } | 1721 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1733 | 1733 |
| 1734 const unsigned char kV4FrameData[] = { | 1734 const unsigned char kV4FrameData[] = { |
| 1735 0x00, 0x00, 0x06, 0x00, // Length = 6. PADDED set. | 1735 0x00, 0x00, 0x06, 0x00, // Length = 6. PADDED set. |
| 1736 0x08, 0x00, 0x00, 0x00, | 1736 0x08, 0x00, 0x00, 0x00, |
| 1737 0x01, 0x00, // Pad length field. | 1737 0x01, 0x00, // Pad length field. |
| 1738 'h', 'e', 'l', 'l', // Data | 1738 'h', 'e', 'l', 'l', // Data |
| 1739 'o', | 1739 'o', |
| 1740 }; | 1740 }; |
| 1741 const char bytes[] = "hello"; | 1741 const char bytes[] = "hello"; |
| 1742 | 1742 |
| 1743 SpdyDataIR data_ir(1, StringPiece(bytes, strlen(bytes))); | 1743 SpdyDataIR data_ir(1, bytes); |
| 1744 // The pad length field itself is used for the 1-byte padding and no padding | 1744 // The pad length field itself is used for the 1-byte padding and no padding |
| 1745 // payload is needed. | 1745 // payload is needed. |
| 1746 data_ir.set_padding_len(1); | 1746 data_ir.set_padding_len(1); |
| 1747 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1747 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1748 if (IsSpdy4()) { | 1748 if (IsSpdy4()) { |
| 1749 CompareFrame( | 1749 CompareFrame( |
| 1750 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 1750 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
| 1751 } else { | 1751 } else { |
| 1752 CompareFrame( | 1752 CompareFrame( |
| 1753 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 1753 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1767 const unsigned char kV3FrameData[] = { // Also applies for V2. | 1767 const unsigned char kV3FrameData[] = { // Also applies for V2. |
| 1768 0x00, 0x00, 0x00, 0x01, | 1768 0x00, 0x00, 0x00, 0x01, |
| 1769 0x00, 0x00, 0x00, 0x01, | 1769 0x00, 0x00, 0x00, 0x01, |
| 1770 0xff | 1770 0xff |
| 1771 }; | 1771 }; |
| 1772 const unsigned char kV4FrameData[] = { | 1772 const unsigned char kV4FrameData[] = { |
| 1773 0x00, 0x00, 0x01, 0x00, 0x00, | 1773 0x00, 0x00, 0x01, 0x00, 0x00, |
| 1774 0x00, 0x00, 0x00, 0x01, | 1774 0x00, 0x00, 0x00, 0x01, |
| 1775 0xff | 1775 0xff |
| 1776 }; | 1776 }; |
| 1777 SpdyDataIR data_ir(1, StringPiece("\xff", 1)); | 1777 SpdyDataIR data_ir(1, "\xff"); |
| 1778 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1778 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1779 if (IsSpdy4()) { | 1779 if (IsSpdy4()) { |
| 1780 CompareFrame( | 1780 CompareFrame( |
| 1781 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 1781 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
| 1782 } else { | 1782 } else { |
| 1783 CompareFrame( | 1783 CompareFrame( |
| 1784 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 1784 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 1785 } | 1785 } |
| 1786 } | 1786 } |
| 1787 | 1787 |
| 1788 { | 1788 { |
| 1789 const char kDescription[] = "'hello' data frame, with FIN"; | 1789 const char kDescription[] = "'hello' data frame, with FIN"; |
| 1790 const unsigned char kV3FrameData[] = { // Also applies for V2. | 1790 const unsigned char kV3FrameData[] = { // Also applies for V2. |
| 1791 0x00, 0x00, 0x00, 0x01, | 1791 0x00, 0x00, 0x00, 0x01, |
| 1792 0x01, 0x00, 0x00, 0x05, | 1792 0x01, 0x00, 0x00, 0x05, |
| 1793 'h', 'e', 'l', 'l', | 1793 'h', 'e', 'l', 'l', |
| 1794 'o' | 1794 'o' |
| 1795 }; | 1795 }; |
| 1796 const unsigned char kV4FrameData[] = { | 1796 const unsigned char kV4FrameData[] = { |
| 1797 0x00, 0x00, 0x05, 0x00, | 1797 0x00, 0x00, 0x05, 0x00, |
| 1798 0x01, 0x00, 0x00, 0x00, | 1798 0x01, 0x00, 0x00, 0x00, |
| 1799 0x01, 'h', 'e', 'l', | 1799 0x01, 'h', 'e', 'l', |
| 1800 'l', 'o' | 1800 'l', 'o' |
| 1801 }; | 1801 }; |
| 1802 SpdyDataIR data_ir(1, StringPiece("hello", 5)); | 1802 SpdyDataIR data_ir(1, "hello"); |
| 1803 data_ir.set_fin(true); | 1803 data_ir.set_fin(true); |
| 1804 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1804 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1805 if (IsSpdy4()) { | 1805 if (IsSpdy4()) { |
| 1806 CompareFrame( | 1806 CompareFrame( |
| 1807 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 1807 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
| 1808 } else { | 1808 } else { |
| 1809 CompareFrame( | 1809 CompareFrame( |
| 1810 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 1810 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 1811 } | 1811 } |
| 1812 } | 1812 } |
| 1813 | 1813 |
| 1814 { | 1814 { |
| 1815 const char kDescription[] = "Empty data frame"; | 1815 const char kDescription[] = "Empty data frame"; |
| 1816 const unsigned char kV3FrameData[] = { // Also applies for V2. | 1816 const unsigned char kV3FrameData[] = { // Also applies for V2. |
| 1817 0x00, 0x00, 0x00, 0x01, | 1817 0x00, 0x00, 0x00, 0x01, |
| 1818 0x00, 0x00, 0x00, 0x00, | 1818 0x00, 0x00, 0x00, 0x00, |
| 1819 }; | 1819 }; |
| 1820 const unsigned char kV4FrameData[] = { | 1820 const unsigned char kV4FrameData[] = { |
| 1821 0x00, 0x00, 0x00, 0x00, | 1821 0x00, 0x00, 0x00, 0x00, |
| 1822 0x00, 0x00, 0x00, 0x00, | 1822 0x00, 0x00, 0x00, 0x00, |
| 1823 0x01, | 1823 0x01, |
| 1824 }; | 1824 }; |
| 1825 SpdyDataIR data_ir(1, StringPiece()); | 1825 SpdyDataIR data_ir(1, ""); |
| 1826 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1826 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1827 if (IsSpdy4()) { | 1827 if (IsSpdy4()) { |
| 1828 CompareFrame( | 1828 CompareFrame( |
| 1829 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 1829 kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |
| 1830 } else { | 1830 } else { |
| 1831 CompareFrame( | 1831 CompareFrame( |
| 1832 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 1832 kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |
| 1833 } | 1833 } |
| 1834 | 1834 |
| 1835 frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField(data_ir)); | 1835 frame.reset(framer.SerializeDataFrameHeaderWithPaddingLengthField(data_ir)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1877 0x00, 0x00, 0x00, 0x01, | 1877 0x00, 0x00, 0x00, 0x01, |
| 1878 0x01, 0x40, 0x00, 0x00, | 1878 0x01, 0x40, 0x00, 0x00, |
| 1879 }; | 1879 }; |
| 1880 | 1880 |
| 1881 const int kFrameSize = arraysize(kFrameHeader) + kDataSize; | 1881 const int kFrameSize = arraysize(kFrameHeader) + kDataSize; |
| 1882 scoped_ptr<unsigned char[]> expected_frame_data( | 1882 scoped_ptr<unsigned char[]> expected_frame_data( |
| 1883 new unsigned char[kFrameSize]); | 1883 new unsigned char[kFrameSize]); |
| 1884 memcpy(expected_frame_data.get(), kFrameHeader, arraysize(kFrameHeader)); | 1884 memcpy(expected_frame_data.get(), kFrameHeader, arraysize(kFrameHeader)); |
| 1885 memset(expected_frame_data.get() + arraysize(kFrameHeader), 'A', kDataSize); | 1885 memset(expected_frame_data.get() + arraysize(kFrameHeader), 'A', kDataSize); |
| 1886 | 1886 |
| 1887 SpdyDataIR data_ir(1, StringPiece(kData.data(), kData.size())); | 1887 SpdyDataIR data_ir(1, kData); |
| 1888 data_ir.set_fin(true); | 1888 data_ir.set_fin(true); |
| 1889 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 1889 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 1890 CompareFrame(kDescription, *frame, expected_frame_data.get(), kFrameSize); | 1890 CompareFrame(kDescription, *frame, expected_frame_data.get(), kFrameSize); |
| 1891 } | 1891 } |
| 1892 } | 1892 } |
| 1893 | 1893 |
| 1894 TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) { | 1894 TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) { |
| 1895 if (!IsSpdy2() && !IsSpdy3()) { | 1895 if (!IsSpdy2() && !IsSpdy3()) { |
| 1896 // SYN_STREAM unsupported in SPDY>3 | 1896 // SYN_STREAM unsupported in SPDY>3 |
| 1897 return; | 1897 return; |
| (...skipping 2211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4109 return; | 4109 return; |
| 4110 } | 4110 } |
| 4111 | 4111 |
| 4112 const int kPaddingLen = 119; | 4112 const int kPaddingLen = 119; |
| 4113 const char data_payload[] = "hello"; | 4113 const char data_payload[] = "hello"; |
| 4114 | 4114 |
| 4115 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; | 4115 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |
| 4116 SpdyFramer framer(spdy_version_); | 4116 SpdyFramer framer(spdy_version_); |
| 4117 framer.set_visitor(&visitor); | 4117 framer.set_visitor(&visitor); |
| 4118 | 4118 |
| 4119 SpdyDataIR data_ir(1, StringPiece(data_payload, strlen(data_payload))); | 4119 SpdyDataIR data_ir(1, data_payload); |
| 4120 data_ir.set_padding_len(kPaddingLen); | 4120 data_ir.set_padding_len(kPaddingLen); |
| 4121 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 4121 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 4122 ASSERT_TRUE(frame.get() != NULL); | 4122 ASSERT_TRUE(frame.get() != NULL); |
| 4123 | 4123 |
| 4124 int bytes_consumed = 0; | 4124 int bytes_consumed = 0; |
| 4125 | 4125 |
| 4126 // Send the frame header. | 4126 // Send the frame header. |
| 4127 EXPECT_CALL(visitor, OnDataFrameHeader(1, | 4127 EXPECT_CALL(visitor, OnDataFrameHeader(1, |
| 4128 kPaddingLen + strlen(data_payload), | 4128 kPaddingLen + strlen(data_payload), |
| 4129 false)); | 4129 false)); |
| (...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4881 } | 4881 } |
| 4882 | 4882 |
| 4883 uint8 flags = 0; | 4883 uint8 flags = 0; |
| 4884 do { | 4884 do { |
| 4885 SCOPED_TRACE(testing::Message() << "Flags " << flags); | 4885 SCOPED_TRACE(testing::Message() << "Flags " << flags); |
| 4886 | 4886 |
| 4887 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; | 4887 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |
| 4888 SpdyFramer framer(spdy_version_); | 4888 SpdyFramer framer(spdy_version_); |
| 4889 framer.set_visitor(&visitor); | 4889 framer.set_visitor(&visitor); |
| 4890 | 4890 |
| 4891 SpdyDataIR data_ir(1, StringPiece("hello", 5)); | 4891 SpdyDataIR data_ir(1, "hello"); |
| 4892 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 4892 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 4893 SetFrameFlags(frame.get(), flags, spdy_version_); | 4893 SetFrameFlags(frame.get(), flags, spdy_version_); |
| 4894 | 4894 |
| 4895 if (flags & ~DATA_FLAG_FIN) { | 4895 if (flags & ~DATA_FLAG_FIN) { |
| 4896 EXPECT_CALL(visitor, OnError(_)); | 4896 EXPECT_CALL(visitor, OnError(_)); |
| 4897 } else { | 4897 } else { |
| 4898 EXPECT_CALL(visitor, OnDataFrameHeader(1, 5, flags & DATA_FLAG_FIN)); | 4898 EXPECT_CALL(visitor, OnDataFrameHeader(1, 5, flags & DATA_FLAG_FIN)); |
| 4899 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 5, false)); | 4899 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 5, false)); |
| 4900 if (flags & DATA_FLAG_FIN) { | 4900 if (flags & DATA_FLAG_FIN) { |
| 4901 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); | 4901 EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 4925 DATA_FLAG_PADDED; | 4925 DATA_FLAG_PADDED; |
| 4926 | 4926 |
| 4927 uint8 flags = 0; | 4927 uint8 flags = 0; |
| 4928 do { | 4928 do { |
| 4929 SCOPED_TRACE(testing::Message() << "Flags " << flags); | 4929 SCOPED_TRACE(testing::Message() << "Flags " << flags); |
| 4930 | 4930 |
| 4931 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; | 4931 testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |
| 4932 SpdyFramer framer(spdy_version_); | 4932 SpdyFramer framer(spdy_version_); |
| 4933 framer.set_visitor(&visitor); | 4933 framer.set_visitor(&visitor); |
| 4934 | 4934 |
| 4935 SpdyDataIR data_ir(1, StringPiece("hello", 5)); | 4935 SpdyDataIR data_ir(1, "hello"); |
| 4936 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 4936 scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |
| 4937 SetFrameFlags(frame.get(), flags, spdy_version_); | 4937 SetFrameFlags(frame.get(), flags, spdy_version_); |
| 4938 | 4938 |
| 4939 if (flags & ~valid_data_flags) { | 4939 if (flags & ~valid_data_flags) { |
| 4940 EXPECT_CALL(visitor, OnError(_)); | 4940 EXPECT_CALL(visitor, OnError(_)); |
| 4941 } else { | 4941 } else { |
| 4942 EXPECT_CALL(visitor, OnDataFrameHeader(1, 5, flags & DATA_FLAG_FIN)); | 4942 EXPECT_CALL(visitor, OnDataFrameHeader(1, 5, flags & DATA_FLAG_FIN)); |
| 4943 if (flags & DATA_FLAG_PADDED) { | 4943 if (flags & DATA_FLAG_PADDED) { |
| 4944 // The first byte of payload is parsed as padding length. | 4944 // The first byte of payload is parsed as padding length. |
| 4945 EXPECT_CALL(visitor, OnStreamPadding(_, 1)); | 4945 EXPECT_CALL(visitor, OnStreamPadding(_, 1)); |
| (...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5983 TestSpdyVisitor visitor(spdy_version_); | 5983 TestSpdyVisitor visitor(spdy_version_); |
| 5984 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData)); | 5984 visitor.SimulateInFramer(kFrameData, sizeof(kFrameData)); |
| 5985 | 5985 |
| 5986 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state()); | 5986 EXPECT_EQ(SpdyFramer::SPDY_ERROR, visitor.framer_.state()); |
| 5987 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, | 5987 EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, |
| 5988 visitor.framer_.error_code()) | 5988 visitor.framer_.error_code()) |
| 5989 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code()); | 5989 << SpdyFramer::ErrorCodeToString(visitor.framer_.error_code()); |
| 5990 } | 5990 } |
| 5991 | 5991 |
| 5992 } // namespace net | 5992 } // namespace net |
| OLD | NEW |