| Index: net/quic/quic_framer_test.cc
|
| diff --git a/net/quic/quic_framer_test.cc b/net/quic/quic_framer_test.cc
|
| index 0fa4ce97359dc1c30af30d57c7170881cf454690..a85ec0a688c6ff8553378919b1bc7f0a62913101 100644
|
| --- a/net/quic/quic_framer_test.cc
|
| +++ b/net/quic/quic_framer_test.cc
|
| @@ -171,11 +171,12 @@ class TestQuicVisitor : public ::net::QuicFramerVisitorInterface {
|
| }
|
|
|
| ~TestQuicVisitor() override {
|
| - STLDeleteElements(&stream_frames_);
|
| + stream_frames_.clear();
|
| STLDeleteElements(&ack_frames_);
|
| STLDeleteElements(&stop_waiting_frames_);
|
| STLDeleteElements(&ping_frames_);
|
| STLDeleteElements(&fec_data_);
|
| + STLDeleteElements(&stream_data_);
|
| }
|
|
|
| void OnError(QuicFramer* f) override {
|
| @@ -223,7 +224,14 @@ class TestQuicVisitor : public ::net::QuicFramerVisitorInterface {
|
|
|
| bool OnStreamFrame(const QuicStreamFrame& frame) override {
|
| ++frame_count_;
|
| - stream_frames_.push_back(new QuicStreamFrame(frame));
|
| + // Save a copy of the data so it is valid after the packet is processed.
|
| + stream_data_.push_back(frame.GetDataAsString());
|
| + QuicStreamFrame stream_frame(frame);
|
| + // Make sure that the stream frame points to this data.
|
| + stream_frame.data.Clear();
|
| + stream_frame.data.Append(const_cast<char*>(stream_data_.back()->data()),
|
| + stream_data_.back()->size());
|
| + stream_frames_.push_back(stream_frame);
|
| return true;
|
| }
|
|
|
| @@ -296,7 +304,7 @@ class TestQuicVisitor : public ::net::QuicFramerVisitorInterface {
|
| scoped_ptr<QuicPacketPublicHeader> public_header_;
|
| scoped_ptr<QuicPublicResetPacket> public_reset_packet_;
|
| scoped_ptr<QuicVersionNegotiationPacket> version_negotiation_packet_;
|
| - vector<QuicStreamFrame*> stream_frames_;
|
| + vector<QuicStreamFrame> stream_frames_;
|
| vector<QuicAckFrame*> ack_frames_;
|
| vector<QuicStopWaitingFrame*> stop_waiting_frames_;
|
| vector<QuicPingFrame*> ping_frames_;
|
| @@ -307,6 +315,7 @@ class TestQuicVisitor : public ::net::QuicFramerVisitorInterface {
|
| QuicGoAwayFrame goaway_frame_;
|
| QuicWindowUpdateFrame window_update_frame_;
|
| QuicBlockedFrame blocked_frame_;
|
| + vector<string*> stream_data_;
|
| };
|
|
|
| class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
|
| @@ -406,8 +415,8 @@ class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
|
| }
|
|
|
| // Checks if the supplied string matches data in the supplied StreamFrame.
|
| - void CheckStreamFrameData(string str, QuicStreamFrame* frame) {
|
| - scoped_ptr<string> frame_data(frame->GetDataAsString());
|
| + void CheckStreamFrameData(string str, const QuicStreamFrame& frame) {
|
| + scoped_ptr<string> frame_data(frame.GetDataAsString());
|
| EXPECT_EQ(str, *frame_data);
|
| }
|
|
|
| @@ -1265,10 +1274,9 @@ TEST_P(QuicFramerTest, StreamFrame) {
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| EXPECT_EQ(static_cast<uint64>(0x01020304),
|
| - visitor_.stream_frames_[0]->stream_id);
|
| - EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
|
| - EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
|
| - visitor_.stream_frames_[0]->offset);
|
| + visitor_.stream_frames_[0].stream_id);
|
| + EXPECT_TRUE(visitor_.stream_frames_[0].fin);
|
| + EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
|
|
|
| // Now test framing boundaries.
|
| @@ -1312,11 +1320,9 @@ TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| - EXPECT_EQ(GG_UINT64_C(0x00020304),
|
| - visitor_.stream_frames_[0]->stream_id);
|
| - EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
|
| - EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
|
| - visitor_.stream_frames_[0]->offset);
|
| + EXPECT_EQ(GG_UINT64_C(0x00020304), visitor_.stream_frames_[0].stream_id);
|
| + EXPECT_TRUE(visitor_.stream_frames_[0].fin);
|
| + EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
|
|
|
| // Now test framing boundaries.
|
| @@ -1362,10 +1368,9 @@ TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| EXPECT_EQ(static_cast<uint64>(0x00000304),
|
| - visitor_.stream_frames_[0]->stream_id);
|
| - EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
|
| - EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
|
| - visitor_.stream_frames_[0]->offset);
|
| + visitor_.stream_frames_[0].stream_id);
|
| + EXPECT_TRUE(visitor_.stream_frames_[0].fin);
|
| + EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
|
|
|
| // Now test framing boundaries.
|
| @@ -1411,10 +1416,9 @@ TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| EXPECT_EQ(static_cast<uint64>(0x00000004),
|
| - visitor_.stream_frames_[0]->stream_id);
|
| - EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
|
| - EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
|
| - visitor_.stream_frames_[0]->offset);
|
| + visitor_.stream_frames_[0].stream_id);
|
| + EXPECT_TRUE(visitor_.stream_frames_[0].fin);
|
| + EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
|
|
|
| // Now test framing boundaries.
|
| @@ -1464,10 +1468,9 @@ TEST_P(QuicFramerTest, StreamFrameWithVersion) {
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| EXPECT_EQ(static_cast<uint64>(0x01020304),
|
| - visitor_.stream_frames_[0]->stream_id);
|
| - EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
|
| - EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
|
| - visitor_.stream_frames_[0]->offset);
|
| + visitor_.stream_frames_[0].stream_id);
|
| + EXPECT_TRUE(visitor_.stream_frames_[0].fin);
|
| + EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
|
|
|
| // Now test framing boundaries.
|
| @@ -1583,10 +1586,9 @@ TEST_P(QuicFramerTest, RevivedStreamFrame) {
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| - EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0]->stream_id);
|
| - EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
|
| - EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
|
| - visitor_.stream_frames_[0]->offset);
|
| + EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0].stream_id);
|
| + EXPECT_TRUE(visitor_.stream_frames_[0].fin);
|
| + EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
|
| }
|
|
|
| @@ -1639,10 +1641,9 @@ TEST_P(QuicFramerTest, StreamFrameInFecGroup) {
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| - EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0]->stream_id);
|
| - EXPECT_TRUE(visitor_.stream_frames_[0]->fin);
|
| - EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654),
|
| - visitor_.stream_frames_[0]->offset);
|
| + EXPECT_EQ(GG_UINT64_C(0x01020304), visitor_.stream_frames_[0].stream_id);
|
| + EXPECT_TRUE(visitor_.stream_frames_[0].fin);
|
| + EXPECT_EQ(GG_UINT64_C(0xBA98FEDC32107654), visitor_.stream_frames_[0].offset);
|
| CheckStreamFrameData("hello world!", visitor_.stream_frames_[0]);
|
| }
|
|
|
| @@ -3936,10 +3937,9 @@ TEST_P(QuicFramerTest, EncryptPacket) {
|
| 'm', 'n', 'o', 'p',
|
| };
|
|
|
| - scoped_ptr<QuicPacket> raw(
|
| - QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false,
|
| - PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - PACKET_6BYTE_SEQUENCE_NUMBER));
|
| + scoped_ptr<QuicPacket> raw(new QuicPacket(
|
| + AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| + !kIncludeVersion, PACKET_6BYTE_SEQUENCE_NUMBER));
|
| scoped_ptr<QuicEncryptedPacket> encrypted(
|
| framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw));
|
|
|
| @@ -3972,10 +3972,9 @@ TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
|
| 'm', 'n', 'o', 'p',
|
| };
|
|
|
| - scoped_ptr<QuicPacket> raw(
|
| - QuicPacket::NewDataPacket(AsChars(packet), arraysize(packet), false,
|
| - PACKET_8BYTE_CONNECTION_ID, kIncludeVersion,
|
| - PACKET_6BYTE_SEQUENCE_NUMBER));
|
| + scoped_ptr<QuicPacket> raw(new QuicPacket(
|
| + AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| + kIncludeVersion, PACKET_6BYTE_SEQUENCE_NUMBER));
|
| scoped_ptr<QuicEncryptedPacket> encrypted(
|
| framer_.EncryptPacket(ENCRYPTION_NONE, sequence_number, *raw));
|
|
|
|
|