Index: net/quic/test_tools/quic_test_packet_maker.cc |
diff --git a/net/quic/test_tools/quic_test_packet_maker.cc b/net/quic/test_tools/quic_test_packet_maker.cc |
index 67e0ffa91fdde9b2c488a219d867579143cfa3a9..a1a7f896d8a5a6140e439879ab86dc8b78dc173e 100644 |
--- a/net/quic/test_tools/quic_test_packet_maker.cc |
+++ b/net/quic/test_tools/quic_test_packet_maker.cc |
@@ -287,6 +287,20 @@ scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeDataPacket( |
return MakePacket(header_, QuicFrame(&frame)); |
} |
+scoped_ptr<QuicReceivedPacket> |
+QuicTestPacketMaker::MakeMultipleDataFramesPacket( |
+ QuicPacketNumber packet_number, |
+ QuicStreamId stream_id, |
+ bool should_include_version, |
+ bool fin, |
+ QuicStreamOffset offset, |
+ const std::vector<std::string>& data_writes) { |
+ InitializeHeader(packet_number, should_include_version); |
+ QuicFrames data_frames = |
+ MakeMultipleDataFrames(stream_id, fin, offset, data_writes); |
+ return MakeMultipleFramesPacket(header_, data_frames); |
+} |
+ |
scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( |
QuicPacketNumber packet_number, |
bool include_version, |
@@ -316,6 +330,50 @@ scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( |
return MakeMultipleFramesPacket(header_, frames); |
} |
+scoped_ptr<QuicReceivedPacket> |
+QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket( |
+ QuicPacketNumber packet_number, |
+ QuicStreamId stream_id, |
+ bool should_include_version, |
+ bool fin, |
+ SpdyPriority priority, |
+ const SpdyHeaderBlock& headers, |
+ size_t* spdy_headers_frame_length, |
+ const std::vector<std::string>& data_writes) { |
+ InitializeHeader(packet_number, should_include_version); |
+ SpdySerializedFrame spdy_frame; |
+ if (spdy_request_framer_.protocol_version() == SPDY3) { |
+ SpdySynStreamIR syn_stream(stream_id); |
+ syn_stream.set_header_block(headers); |
+ syn_stream.set_fin(fin); |
+ syn_stream.set_priority(priority); |
+ spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); |
+ } else { |
+ SpdyHeadersIR headers_frame(stream_id); |
+ headers_frame.set_header_block(headers); |
+ headers_frame.set_fin(fin); |
+ headers_frame.set_priority(priority); |
+ headers_frame.set_has_priority(true); |
+ spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); |
+ } |
+ if (spdy_headers_frame_length) { |
+ *spdy_headers_frame_length = spdy_frame.size(); |
+ } |
+ QuicStreamFrame frame( |
+ kHeadersStreamId, false, 0, |
+ base::StringPiece(spdy_frame.data(), spdy_frame.size())); |
+ |
+ QuicFrames frames; |
+ frames.push_back(QuicFrame(&frame)); |
+ |
+ QuicFrames data_frames = |
+ MakeMultipleDataFrames(stream_id, fin, 0, data_writes); |
+ for (auto data_frame : data_frames) { |
+ frames.push_back(data_frame); |
+ } |
+ return MakeMultipleFramesPacket(header_, frames); |
+} |
+ |
scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( |
QuicPacketNumber packet_number, |
QuicStreamId stream_id, |
@@ -511,6 +569,23 @@ scoped_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeMultipleFramesPacket( |
return scoped_ptr<QuicReceivedPacket>(encrypted.Clone()); |
} |
+QuicFrames QuicTestPacketMaker::MakeMultipleDataFrames( |
+ QuicStreamId stream_id, |
+ bool fin, |
+ QuicStreamOffset offset, |
+ const std::vector<std::string>& data_writes) { |
+ QuicFrames result_frames; |
+ for (size_t i = 0; i < data_writes.size(); ++i) { |
+ bool is_fin = fin && (i == data_writes.size() - 1); |
+ QuicStreamFrame* stream_frame = new QuicStreamFrame( |
+ stream_id, is_fin, offset, base::StringPiece(data_writes[i])); |
+ offset += data_writes[i].length(); |
+ DVLOG(1) << "Adding frame: " << QuicFrame(stream_frame); |
+ result_frames.push_back(QuicFrame(stream_frame)); |
+ } |
+ return result_frames; |
+} |
+ |
void QuicTestPacketMaker::InitializeHeader(QuicPacketNumber packet_number, |
bool should_include_version) { |
header_.public_header.connection_id = connection_id_; |