| 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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   109       } else { |   109       } else { | 
|   110         // Done. |   110         // Done. | 
|   111         finished_ = true; |   111         finished_ = true; | 
|   112       } |   112       } | 
|   113       return true; |   113       return true; | 
|   114     } |   114     } | 
|   115  |   115  | 
|   116     virtual void OnSynStream(SpdyStreamId stream_id, |   116     virtual void OnSynStream(SpdyStreamId stream_id, | 
|   117                              SpdyStreamId associated_stream_id, |   117                              SpdyStreamId associated_stream_id, | 
|   118                              SpdyPriority priority, |   118                              SpdyPriority priority, | 
|   119                              uint8 slot, |  | 
|   120                              bool fin, |   119                              bool fin, | 
|   121                              bool unidirectional) OVERRIDE { |   120                              bool unidirectional) OVERRIDE { | 
|   122       SpdyFramer framer(version_); |   121       SpdyFramer framer(version_); | 
|   123       framer.set_enable_compression(false); |   122       framer.set_enable_compression(false); | 
|   124       SpdySynStreamIR syn_stream(stream_id); |   123       SpdySynStreamIR syn_stream(stream_id); | 
|   125       syn_stream.set_associated_to_stream_id(associated_stream_id); |   124       syn_stream.set_associated_to_stream_id(associated_stream_id); | 
|   126       syn_stream.set_priority(priority); |   125       syn_stream.set_priority(priority); | 
|   127       syn_stream.set_slot(slot); |  | 
|   128       syn_stream.set_fin(fin); |   126       syn_stream.set_fin(fin); | 
|   129       syn_stream.set_unidirectional(unidirectional); |   127       syn_stream.set_unidirectional(unidirectional); | 
|   130       scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream)); |   128       scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream)); | 
|   131       ResetBuffer(); |   129       ResetBuffer(); | 
|   132       memcpy(buffer_.get(), frame->data(), framer.GetSynStreamMinimumSize()); |   130       memcpy(buffer_.get(), frame->data(), framer.GetSynStreamMinimumSize()); | 
|   133       size_ += framer.GetSynStreamMinimumSize(); |   131       size_ += framer.GetSynStreamMinimumSize(); | 
|   134     } |   132     } | 
|   135  |   133  | 
|   136     virtual void OnSynReply(SpdyStreamId stream_id, bool fin) OVERRIDE { |   134     virtual void OnSynReply(SpdyStreamId stream_id, bool fin) OVERRIDE { | 
|   137       SpdyFramer framer(version_); |   135       SpdyFramer framer(version_); | 
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   302       return false; |   300       return false; | 
|   303     } |   301     } | 
|   304     memcpy(header_buffer_.get() + header_buffer_length_, header_data, len); |   302     memcpy(header_buffer_.get() + header_buffer_length_, header_data, len); | 
|   305     header_buffer_length_ += len; |   303     header_buffer_length_ += len; | 
|   306     return true; |   304     return true; | 
|   307   } |   305   } | 
|   308  |   306  | 
|   309   virtual void OnSynStream(SpdyStreamId stream_id, |   307   virtual void OnSynStream(SpdyStreamId stream_id, | 
|   310                            SpdyStreamId associated_stream_id, |   308                            SpdyStreamId associated_stream_id, | 
|   311                            SpdyPriority priority, |   309                            SpdyPriority priority, | 
|   312                            uint8 credential_slot, |  | 
|   313                            bool fin, |   310                            bool fin, | 
|   314                            bool unidirectional) OVERRIDE { |   311                            bool unidirectional) OVERRIDE { | 
|   315     syn_frame_count_++; |   312     syn_frame_count_++; | 
|   316     InitHeaderStreaming(SYN_STREAM, stream_id); |   313     InitHeaderStreaming(SYN_STREAM, stream_id); | 
|   317     if (fin) { |   314     if (fin) { | 
|   318       fin_flag_count_++; |   315       fin_flag_count_++; | 
|   319     } |   316     } | 
|   320   } |   317   } | 
|   321  |   318  | 
|   322   virtual void OnSynReply(SpdyStreamId stream_id, bool fin) OVERRIDE { |   319   virtual void OnSynReply(SpdyStreamId stream_id, bool fin) OVERRIDE { | 
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   609   EXPECT_TRUE(frame.get() != NULL); |   606   EXPECT_TRUE(frame.get() != NULL); | 
|   610  |   607  | 
|   611   base::StringPiece serialized_headers = |   608   base::StringPiece serialized_headers = | 
|   612       GetSerializedHeaders(frame.get(), framer); |   609       GetSerializedHeaders(frame.get(), framer); | 
|   613   SpdyHeaderBlock new_headers; |   610   SpdyHeaderBlock new_headers; | 
|   614   EXPECT_FALSE(framer.ParseHeaderBlockInBuffer(serialized_headers.data(), |   611   EXPECT_FALSE(framer.ParseHeaderBlockInBuffer(serialized_headers.data(), | 
|   615                                                serialized_headers.size() - 2, |   612                                                serialized_headers.size() - 2, | 
|   616                                                &new_headers)); |   613                                                &new_headers)); | 
|   617 } |   614 } | 
|   618  |   615  | 
|   619 TEST_P(SpdyFramerTest, OutOfOrderHeaders) { |  | 
|   620   SpdyFramer framer(spdy_version_); |  | 
|   621   framer.set_enable_compression(false); |  | 
|   622  |  | 
|   623   // Frame builder with plentiful buffer size. |  | 
|   624   SpdyFrameBuilder frame(1024); |  | 
|   625   if (spdy_version_ < 4) { |  | 
|   626     frame.WriteControlFrameHeader(framer, SYN_STREAM, CONTROL_FLAG_NONE); |  | 
|   627     frame.WriteUInt32(3);  // stream_id |  | 
|   628   } else { |  | 
|   629     frame.WriteFramePrefix(framer, SYN_STREAM, CONTROL_FLAG_NONE, 3); |  | 
|   630   } |  | 
|   631  |  | 
|   632   frame.WriteUInt32(0);  // Associated stream id |  | 
|   633   frame.WriteUInt16(0);  // Priority. |  | 
|   634  |  | 
|   635   if (IsSpdy2()) { |  | 
|   636     frame.WriteUInt16(2);  // Number of headers. |  | 
|   637     frame.WriteString("gamma"); |  | 
|   638     frame.WriteString("gamma"); |  | 
|   639     frame.WriteString("alpha"); |  | 
|   640     frame.WriteString("alpha"); |  | 
|   641   } else { |  | 
|   642     frame.WriteUInt32(2);  // Number of headers. |  | 
|   643     frame.WriteStringPiece32("gamma"); |  | 
|   644     frame.WriteStringPiece32("gamma"); |  | 
|   645     frame.WriteStringPiece32("alpha"); |  | 
|   646     frame.WriteStringPiece32("alpha"); |  | 
|   647   } |  | 
|   648   // write the length |  | 
|   649   frame.RewriteLength(framer); |  | 
|   650  |  | 
|   651   SpdyHeaderBlock new_headers; |  | 
|   652   scoped_ptr<SpdyFrame> control_frame(frame.take()); |  | 
|   653   base::StringPiece serialized_headers = |  | 
|   654       GetSerializedHeaders(control_frame.get(), framer); |  | 
|   655   EXPECT_TRUE(framer.ParseHeaderBlockInBuffer(serialized_headers.data(), |  | 
|   656                                               serialized_headers.size(), |  | 
|   657                                               &new_headers)); |  | 
|   658 } |  | 
|   659  |  | 
|   660 // Test that if we receive a SYN_STREAM with stream ID zero, we signal an error |  | 
|   661 // (but don't crash). |  | 
|   662 TEST_P(SpdyFramerTest, SynStreamWithStreamIdZero) { |  | 
|   663   testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |  | 
|   664   SpdyFramer framer(spdy_version_); |  | 
|   665   framer.set_visitor(&visitor); |  | 
|   666  |  | 
|   667   SpdySynStreamIR syn_stream(0); |  | 
|   668   syn_stream.set_priority(1); |  | 
|   669   syn_stream.SetHeader("alpha", "beta"); |  | 
|   670   scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream)); |  | 
|   671   ASSERT_TRUE(frame.get() != NULL); |  | 
|   672  |  | 
|   673   // We shouldn't have to read the whole frame before we signal an error. |  | 
|   674   EXPECT_CALL(visitor, OnError(testing::Eq(&framer))); |  | 
|   675   EXPECT_GT(frame->size(), framer.ProcessInput(frame->data(), frame->size())); |  | 
|   676   EXPECT_TRUE(framer.HasError()); |  | 
|   677   EXPECT_EQ(SpdyFramer::SPDY_INVALID_CONTROL_FRAME, framer.error_code()) |  | 
|   678       << SpdyFramer::ErrorCodeToString(framer.error_code()); |  | 
|   679 } |  | 
|   680  |  | 
|   681 // Test that if we receive a SYN_REPLY with stream ID zero, we signal an error |   616 // Test that if we receive a SYN_REPLY with stream ID zero, we signal an error | 
|   682 // (but don't crash). |   617 // (but don't crash). | 
|   683 TEST_P(SpdyFramerTest, SynReplyWithStreamIdZero) { |   618 TEST_P(SpdyFramerTest, SynReplyWithStreamIdZero) { | 
|   684   testing::StrictMock<test::MockSpdyFramerVisitor> visitor; |   619   testing::StrictMock<test::MockSpdyFramerVisitor> visitor; | 
|   685   SpdyFramer framer(spdy_version_); |   620   SpdyFramer framer(spdy_version_); | 
|   686   framer.set_visitor(&visitor); |   621   framer.set_visitor(&visitor); | 
|   687  |   622  | 
|   688   SpdySynReplyIR syn_reply(0); |   623   SpdySynReplyIR syn_reply(0); | 
|   689   syn_reply.SetHeader("alpha", "beta"); |   624   syn_reply.SetHeader("alpha", "beta"); | 
|   690   scoped_ptr<SpdySerializedFrame> frame(framer.SerializeSynReply(syn_reply)); |   625   scoped_ptr<SpdySerializedFrame> frame(framer.SerializeSynReply(syn_reply)); | 
| (...skipping 988 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1679     scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); |  1614     scoped_ptr<SpdyFrame> frame(framer.SerializeData(data_ir)); | 
|  1680     CompareFrame(kDescription, *frame, expected_frame_data.get(), kFrameSize); |  1615     CompareFrame(kDescription, *frame, expected_frame_data.get(), kFrameSize); | 
|  1681   } |  1616   } | 
|  1682 } |  1617 } | 
|  1683  |  1618  | 
|  1684 TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) { |  1619 TEST_P(SpdyFramerTest, CreateSynStreamUncompressed) { | 
|  1685   SpdyFramer framer(spdy_version_); |  1620   SpdyFramer framer(spdy_version_); | 
|  1686   framer.set_enable_compression(false); |  1621   framer.set_enable_compression(false); | 
|  1687  |  1622  | 
|  1688   { |  1623   { | 
|  1689     const char kDescription[] = "SYN_STREAM frame, lowest pri, slot 2, no FIN"; |  1624     const char kDescription[] = "SYN_STREAM frame, lowest pri, no FIN"; | 
|  1690  |  1625  | 
|  1691     const unsigned char kPri = IsSpdy2() ? 0xC0 : 0xE0; |  1626     const unsigned char kPri = IsSpdy2() ? 0xC0 : 0xE0; | 
|  1692     const unsigned char kCre = IsSpdy2() ? 0 : 2; |  | 
|  1693     const unsigned char kV2FrameData[] = { |  1627     const unsigned char kV2FrameData[] = { | 
|  1694       0x80, spdy_version_ch_, 0x00, 0x01, |  1628       0x80, spdy_version_ch_, 0x00, 0x01, | 
|  1695       0x00, 0x00, 0x00, 0x20, |  1629       0x00, 0x00, 0x00, 0x20, | 
|  1696       0x00, 0x00, 0x00, 0x01, |  1630       0x00, 0x00, 0x00, 0x01, | 
|  1697       0x00, 0x00, 0x00, 0x00, |  1631       0x00, 0x00, 0x00, 0x00, | 
|  1698       kPri, 0x00, 0x00, 0x02, |  1632       kPri, 0x00, 0x00, 0x02, | 
|  1699       0x00, 0x03, 'b',  'a', |  1633       0x00, 0x03, 'b',  'a', | 
|  1700       'r',  0x00, 0x03, 'f', |  1634       'r',  0x00, 0x03, 'f', | 
|  1701       'o',  'o',  0x00, 0x03, |  1635       'o',  'o',  0x00, 0x03, | 
|  1702       'f',  'o',  'o',  0x00, |  1636       'f',  'o',  'o',  0x00, | 
|  1703       0x03, 'b',  'a',  'r' |  1637       0x03, 'b',  'a',  'r' | 
|  1704     }; |  1638     }; | 
|  1705     const unsigned char kV3FrameData[] = { |  1639     const unsigned char kV3FrameData[] = { | 
|  1706       0x80, spdy_version_ch_, 0x00, 0x01, |  1640       0x80, spdy_version_ch_, 0x00, 0x01, | 
|  1707       0x00, 0x00, 0x00, 0x2a, |  1641       0x00, 0x00, 0x00, 0x2a, | 
|  1708       0x00, 0x00, 0x00, 0x01, |  1642       0x00, 0x00, 0x00, 0x01, | 
|  1709       0x00, 0x00, 0x00, 0x00, |  1643       0x00, 0x00, 0x00, 0x00, | 
|  1710       kPri, kCre, 0x00, 0x00, |  1644       kPri, 0x00, 0x00, 0x00, | 
|  1711       0x00, 0x02, 0x00, 0x00, |  1645       0x00, 0x02, 0x00, 0x00, | 
|  1712       0x00, 0x03, 'b',  'a', |  1646       0x00, 0x03, 'b',  'a', | 
|  1713       'r',  0x00, 0x00, 0x00, |  1647       'r',  0x00, 0x00, 0x00, | 
|  1714       0x03, 'f',  'o',  'o', |  1648       0x03, 'f',  'o',  'o', | 
|  1715       0x00, 0x00, 0x00, 0x03, |  1649       0x00, 0x00, 0x00, 0x03, | 
|  1716       'f',  'o',  'o',  0x00, |  1650       'f',  'o',  'o',  0x00, | 
|  1717       0x00, 0x00, 0x03, 'b', |  1651       0x00, 0x00, 0x03, 'b', | 
|  1718       'a',  'r' |  1652       'a',  'r' | 
|  1719     }; |  1653     }; | 
|  1720     const unsigned char kV4FrameData[] = { |  1654     const unsigned char kV4FrameData[] = { | 
|  1721       0x00, 0x2c, 0x08, 0x08, |  1655       0x00, 0x2c, 0x08, 0x08, | 
|  1722       0x00, 0x00, 0x00, 0x01, |  1656       0x00, 0x00, 0x00, 0x01, | 
|  1723       0x00, 0x00, 0x00, 0x07, |  1657       0x00, 0x00, 0x00, 0x07, | 
|  1724       0x00, 0x00, 0x00, 0x02, |  1658       0x00, 0x00, 0x00, 0x02, | 
|  1725       0x00, 0x00, 0x00, 0x03, |  1659       0x00, 0x00, 0x00, 0x03, | 
|  1726       'b',  'a',  'r',  0x00, |  1660       'b',  'a',  'r',  0x00, | 
|  1727       0x00, 0x00, 0x03, 'f', |  1661       0x00, 0x00, 0x03, 'f', | 
|  1728       'o',  'o',  0x00, 0x00, |  1662       'o',  'o',  0x00, 0x00, | 
|  1729       0x00, 0x03, 'f',  'o', |  1663       0x00, 0x03, 'f',  'o', | 
|  1730       'o',  0x00, 0x00, 0x00, |  1664       'o',  0x00, 0x00, 0x00, | 
|  1731       0x03, 'b', 'a', 'r' |  1665       0x03, 'b', 'a', 'r' | 
|  1732     }; |  1666     }; | 
|  1733     SpdySynStreamIR syn_stream(1); |  1667     SpdySynStreamIR syn_stream(1); | 
|  1734     syn_stream.set_priority(framer.GetLowestPriority()); |  1668     syn_stream.set_priority(framer.GetLowestPriority()); | 
|  1735     syn_stream.set_slot(kCre); |  | 
|  1736     syn_stream.SetHeader("bar", "foo"); |  1669     syn_stream.SetHeader("bar", "foo"); | 
|  1737     syn_stream.SetHeader("foo", "bar"); |  1670     syn_stream.SetHeader("foo", "bar"); | 
|  1738     scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream)); |  1671     scoped_ptr<SpdyFrame> frame(framer.SerializeSynStream(syn_stream)); | 
|  1739     if (IsSpdy2()) { |  1672     if (IsSpdy2()) { | 
|  1740       CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); |  1673       CompareFrame(kDescription, *frame, kV2FrameData, arraysize(kV2FrameData)); | 
|  1741     } else if (IsSpdy3()) { |  1674     } else if (IsSpdy3()) { | 
|  1742       CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); |  1675       CompareFrame(kDescription, *frame, kV3FrameData, arraysize(kV3FrameData)); | 
|  1743     } else { |  1676     } else { | 
|  1744       CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); |  1677       CompareFrame(kDescription, *frame, kV4FrameData, arraysize(kV4FrameData)); | 
|  1745     } |  1678     } | 
| (...skipping 1978 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3724  |  3657  | 
|  3725     if (!IsSpdy4() && |  3658     if (!IsSpdy4() && | 
|  3726         flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) { |  3659         flags & ~(CONTROL_FLAG_FIN | CONTROL_FLAG_UNIDIRECTIONAL)) { | 
|  3727       EXPECT_CALL(visitor, OnError(_)); |  3660       EXPECT_CALL(visitor, OnError(_)); | 
|  3728     } else if (IsSpdy4() && |  3661     } else if (IsSpdy4() && | 
|  3729                flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY)) { |  3662                flags & ~(CONTROL_FLAG_FIN | HEADERS_FLAG_PRIORITY)) { | 
|  3730       EXPECT_CALL(visitor, OnError(_)); |  3663       EXPECT_CALL(visitor, OnError(_)); | 
|  3731     } else { |  3664     } else { | 
|  3732       EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(8, SYN_STREAM, _)); |  3665       EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(8, SYN_STREAM, _)); | 
|  3733       if (IsSpdy4()) { |  3666       if (IsSpdy4()) { | 
|  3734         EXPECT_CALL(visitor, OnSynStream(8, 0, 1, 0, flags & CONTROL_FLAG_FIN, |  3667         EXPECT_CALL(visitor, OnSynStream(8, 0, 1, flags & CONTROL_FLAG_FIN, | 
|  3735                                          false)); |  3668                                          false)); | 
|  3736       } else { |  3669       } else { | 
|  3737         EXPECT_CALL(visitor, OnSynStream(8, 3, 1, 0, flags & CONTROL_FLAG_FIN, |  3670         EXPECT_CALL(visitor, OnSynStream(8, 3, 1, flags & CONTROL_FLAG_FIN, | 
|  3738                                          flags & CONTROL_FLAG_UNIDIRECTIONAL)); |  3671                                          flags & CONTROL_FLAG_UNIDIRECTIONAL)); | 
|  3739       } |  3672       } | 
|  3740       EXPECT_CALL(visitor, OnControlFrameHeaderData(8, _, _)) |  3673       EXPECT_CALL(visitor, OnControlFrameHeaderData(8, _, _)) | 
|  3741           .WillRepeatedly(testing::Return(true)); |  3674           .WillRepeatedly(testing::Return(true)); | 
|  3742       if (flags & DATA_FLAG_FIN) { |  3675       if (flags & DATA_FLAG_FIN) { | 
|  3743         EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); |  3676         EXPECT_CALL(visitor, OnStreamFrameData(_, _, 0, true)); | 
|  3744       } |  3677       } | 
|  3745     } |  3678     } | 
|  3746  |  3679  | 
|  3747     framer.ProcessInput(frame->data(), frame->size()); |  3680     framer.ProcessInput(frame->data(), frame->size()); | 
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4079         framer.GetSynStreamMinimumSize(), |  4012         framer.GetSynStreamMinimumSize(), | 
|  4080         spdy_version_); |  4013         spdy_version_); | 
|  4081   } else { |  4014   } else { | 
|  4082     SetFrameLength( |  4015     SetFrameLength( | 
|  4083         frame.get(), |  4016         frame.get(), | 
|  4084         framer.GetSynStreamMinimumSize() - framer.GetControlFrameHeaderSize(), |  4017         framer.GetSynStreamMinimumSize() - framer.GetControlFrameHeaderSize(), | 
|  4085         spdy_version_); |  4018         spdy_version_); | 
|  4086   } |  4019   } | 
|  4087  |  4020  | 
|  4088   EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(1, SYN_STREAM, _)); |  4021   EXPECT_CALL(debug_visitor, OnReceiveCompressedFrame(1, SYN_STREAM, _)); | 
|  4089   EXPECT_CALL(visitor, OnSynStream(1, 0, 1, 0, false, false)); |  4022   EXPECT_CALL(visitor, OnSynStream(1, 0, 1, false, false)); | 
|  4090   EXPECT_CALL(visitor, OnControlFrameHeaderData(1, NULL, 0)); |  4023   EXPECT_CALL(visitor, OnControlFrameHeaderData(1, NULL, 0)); | 
|  4091  |  4024  | 
|  4092   framer.ProcessInput(frame->data(), framer.GetSynStreamMinimumSize()); |  4025   framer.ProcessInput(frame->data(), framer.GetSynStreamMinimumSize()); | 
|  4093   EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |  4026   EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); | 
|  4094   EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) |  4027   EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) | 
|  4095       << SpdyFramer::ErrorCodeToString(framer.error_code()); |  4028       << SpdyFramer::ErrorCodeToString(framer.error_code()); | 
|  4096 } |  4029 } | 
|  4097  |  4030  | 
|  4098 TEST_P(SpdyFramerTest, SettingsFlagsAndId) { |  4031 TEST_P(SpdyFramerTest, SettingsFlagsAndId) { | 
|  4099   const uint32 kId = 0x020304; |  4032   const uint32 kId = 0x020304; | 
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4222   SpdyBlockedIR blocked_ir(0); |  4155   SpdyBlockedIR blocked_ir(0); | 
|  4223   scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(blocked_ir)); |  4156   scoped_ptr<SpdySerializedFrame> frame(framer.SerializeFrame(blocked_ir)); | 
|  4224   framer.ProcessInput(frame->data(), framer.GetBlockedSize()); |  4157   framer.ProcessInput(frame->data(), framer.GetBlockedSize()); | 
|  4225  |  4158  | 
|  4226   EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); |  4159   EXPECT_EQ(SpdyFramer::SPDY_RESET, framer.state()); | 
|  4227   EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) |  4160   EXPECT_EQ(SpdyFramer::SPDY_NO_ERROR, framer.error_code()) | 
|  4228       << SpdyFramer::ErrorCodeToString(framer.error_code()); |  4161       << SpdyFramer::ErrorCodeToString(framer.error_code()); | 
|  4229 } |  4162 } | 
|  4230  |  4163  | 
|  4231 }  // namespace net |  4164 }  // namespace net | 
| OLD | NEW |