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)); |