| 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 2119f25157a6648d111eee7d6fdad8fcf95e2791..ec461675db9d309d180d9f0353e5f8c6e9ac6f36 100644 | 
| --- a/net/quic/test_tools/quic_test_packet_maker.cc | 
| +++ b/net/quic/test_tools/quic_test_packet_maker.cc | 
| @@ -174,6 +174,16 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( | 
| QuicPacketNumber largest_received, | 
| QuicPacketNumber least_unacked, | 
| bool send_feedback) { | 
| +  return MakeAckPacket(packet_number, largest_received, least_unacked, | 
| +                       least_unacked, send_feedback); | 
| +} | 
| + | 
| +scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( | 
| +    QuicPacketNumber packet_number, | 
| +    QuicPacketNumber largest_received, | 
| +    QuicPacketNumber ack_least_unacked, | 
| +    QuicPacketNumber stop_least_unacked, | 
| +    bool send_feedback) { | 
| QuicPacketHeader header; | 
| header.public_header.connection_id = connection_id_; | 
| header.public_header.reset_flag = false; | 
| @@ -186,7 +196,7 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( | 
|  | 
| QuicAckFrame ack(MakeAckFrame(largest_received)); | 
| ack.delta_time_largest_observed = QuicTime::Delta::Zero(); | 
| -  for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { | 
| +  for (QuicPacketNumber i = ack_least_unacked; i <= largest_received; ++i) { | 
| ack.received_packet_times.push_back(make_pair(i, clock_->Now())); | 
| } | 
|  | 
| @@ -196,7 +206,7 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeAckPacket( | 
| frames.push_back(QuicFrame(&ack)); | 
|  | 
| QuicStopWaitingFrame stop_waiting; | 
| -  stop_waiting.least_unacked = least_unacked; | 
| +  stop_waiting.least_unacked = stop_least_unacked; | 
| frames.push_back(QuicFrame(&stop_waiting)); | 
|  | 
| scoped_ptr<QuicPacket> packet( | 
| @@ -230,6 +240,20 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( | 
| SpdyPriority priority, | 
| const SpdyHeaderBlock& headers, | 
| size_t* spdy_headers_frame_length) { | 
| +  return MakeRequestHeadersPacket(packet_number, stream_id, | 
| +                                  should_include_version, fin, priority, | 
| +                                  headers, spdy_headers_frame_length, 0); | 
| +} | 
| + | 
| +scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( | 
| +    QuicPacketNumber packet_number, | 
| +    QuicStreamId stream_id, | 
| +    bool should_include_version, | 
| +    bool fin, | 
| +    SpdyPriority priority, | 
| +    const SpdyHeaderBlock& headers, | 
| +    size_t* spdy_headers_frame_length, | 
| +    QuicStreamOffset offset) { | 
| InitializeHeader(packet_number, should_include_version); | 
| scoped_ptr<SpdySerializedFrame> spdy_frame; | 
| if (spdy_request_framer_.protocol_version() == SPDY3) { | 
| @@ -250,8 +274,9 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( | 
| *spdy_headers_frame_length = spdy_frame->size(); | 
| } | 
| QuicStreamFrame frame( | 
| -      kHeadersStreamId, false, 0, | 
| +      kHeadersStreamId, false, offset, | 
| base::StringPiece(spdy_frame->data(), spdy_frame->size())); | 
| + | 
| return MakePacket(header_, QuicFrame(&frame)); | 
| } | 
|  | 
| @@ -261,10 +286,11 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( | 
| bool should_include_version, | 
| bool fin, | 
| SpdyPriority priority, | 
| -    const SpdyHeaderBlock& headers) { | 
| +    const SpdyHeaderBlock& headers, | 
| +    QuicStreamOffset offset) { | 
| return MakeRequestHeadersPacket(packet_number, stream_id, | 
| should_include_version, fin, priority, | 
| -                                  headers, nullptr); | 
| +                                  headers, nullptr, offset); | 
| } | 
|  | 
| scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( | 
| @@ -273,10 +299,11 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( | 
| bool should_include_version, | 
| bool fin, | 
| const SpdyHeaderBlock& headers, | 
| -    size_t* spdy_headers_frame_length) { | 
| +    size_t* spdy_headers_frame_length, | 
| +    QuicStreamOffset offset) { | 
| InitializeHeader(packet_number, should_include_version); | 
| scoped_ptr<SpdySerializedFrame> spdy_frame; | 
| -  if (spdy_request_framer_.protocol_version() == SPDY3) { | 
| +  if (spdy_response_framer_.protocol_version() == SPDY3) { | 
| SpdySynReplyIR syn_reply(stream_id); | 
| syn_reply.set_header_block(headers); | 
| syn_reply.set_fin(fin); | 
| @@ -285,13 +312,13 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( | 
| SpdyHeadersIR headers_frame(stream_id); | 
| headers_frame.set_header_block(headers); | 
| headers_frame.set_fin(fin); | 
| -    spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); | 
| +    spdy_frame.reset(spdy_response_framer_.SerializeFrame(headers_frame)); | 
| } | 
| if (spdy_headers_frame_length) { | 
| *spdy_headers_frame_length = spdy_frame->size(); | 
| } | 
| QuicStreamFrame frame( | 
| -      kHeadersStreamId, false, 0, | 
| +      kHeadersStreamId, false, offset, | 
| base::StringPiece(spdy_frame->data(), spdy_frame->size())); | 
| return MakePacket(header_, QuicFrame(&frame)); | 
| } | 
| @@ -301,9 +328,23 @@ scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( | 
| QuicStreamId stream_id, | 
| bool should_include_version, | 
| bool fin, | 
| -    const SpdyHeaderBlock& headers) { | 
| -  return MakeResponseHeadersPacket( | 
| -      packet_number, stream_id, should_include_version, fin, headers, nullptr); | 
| +    const SpdyHeaderBlock& headers, | 
| +    size_t* spdy_headers_frame_length) { | 
| +  return MakeResponseHeadersPacket(packet_number, stream_id, | 
| +                                   should_include_version, fin, headers, | 
| +                                   spdy_headers_frame_length, 0); | 
| +} | 
| + | 
| +scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( | 
| +    QuicPacketNumber packet_number, | 
| +    QuicStreamId stream_id, | 
| +    bool should_include_version, | 
| +    bool fin, | 
| +    const SpdyHeaderBlock& headers, | 
| +    QuicStreamOffset offset) { | 
| +  return MakeResponseHeadersPacket(packet_number, stream_id, | 
| +                                   should_include_version, fin, headers, | 
| +                                   nullptr, offset); | 
| } | 
|  | 
| SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( | 
|  |