OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "net/quic/test_tools/quic_test_packet_maker.h" | 5 #include "net/quic/test_tools/quic_test_packet_maker.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 | 8 |
9 #include "net/quic/quic_framer.h" | 9 #include "net/quic/quic_framer.h" |
10 #include "net/quic/quic_http_utils.h" | 10 #include "net/quic/quic_http_utils.h" |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 QuicStreamFrame frame(stream_id, fin, offset, data); | 169 QuicStreamFrame frame(stream_id, fin, offset, data); |
170 return MakePacket(header_, QuicFrame(&frame)); | 170 return MakePacket(header_, QuicFrame(&frame)); |
171 } | 171 } |
172 | 172 |
173 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( | 173 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( |
174 QuicPacketNumber packet_number, | 174 QuicPacketNumber packet_number, |
175 QuicStreamId stream_id, | 175 QuicStreamId stream_id, |
176 bool should_include_version, | 176 bool should_include_version, |
177 bool fin, | 177 bool fin, |
178 QuicPriority priority, | 178 QuicPriority priority, |
179 const SpdyHeaderBlock& headers) { | 179 const SpdyHeaderBlock& headers, |
| 180 size_t* spdy_headers_frame_length) { |
180 InitializeHeader(packet_number, should_include_version); | 181 InitializeHeader(packet_number, should_include_version); |
181 scoped_ptr<SpdySerializedFrame> spdy_frame; | 182 scoped_ptr<SpdySerializedFrame> spdy_frame; |
182 if (spdy_request_framer_.protocol_version() == SPDY3) { | 183 if (spdy_request_framer_.protocol_version() == SPDY3) { |
183 SpdySynStreamIR syn_stream(stream_id); | 184 SpdySynStreamIR syn_stream(stream_id); |
184 syn_stream.set_header_block(headers); | 185 syn_stream.set_header_block(headers); |
185 syn_stream.set_fin(fin); | 186 syn_stream.set_fin(fin); |
186 syn_stream.set_priority(priority); | 187 syn_stream.set_priority(priority); |
187 spdy_frame.reset(spdy_request_framer_.SerializeSynStream(syn_stream)); | 188 spdy_frame.reset(spdy_request_framer_.SerializeSynStream(syn_stream)); |
188 } else { | 189 } else { |
189 SpdyHeadersIR headers_frame(stream_id); | 190 SpdyHeadersIR headers_frame(stream_id); |
190 headers_frame.set_header_block(headers); | 191 headers_frame.set_header_block(headers); |
191 headers_frame.set_fin(fin); | 192 headers_frame.set_fin(fin); |
192 headers_frame.set_priority(priority); | 193 headers_frame.set_priority(priority); |
193 headers_frame.set_has_priority(true); | 194 headers_frame.set_has_priority(true); |
194 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); | 195 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); |
195 } | 196 } |
| 197 if (spdy_headers_frame_length) { |
| 198 *spdy_headers_frame_length = spdy_frame->size(); |
| 199 } |
196 QuicStreamFrame frame( | 200 QuicStreamFrame frame( |
197 kHeadersStreamId, false, 0, | 201 kHeadersStreamId, false, 0, |
198 base::StringPiece(spdy_frame->data(), spdy_frame->size())); | 202 base::StringPiece(spdy_frame->data(), spdy_frame->size())); |
199 return MakePacket(header_, QuicFrame(&frame)); | 203 return MakePacket(header_, QuicFrame(&frame)); |
200 } | 204 } |
201 | 205 |
| 206 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeRequestHeadersPacket( |
| 207 QuicPacketNumber packet_number, |
| 208 QuicStreamId stream_id, |
| 209 bool should_include_version, |
| 210 bool fin, |
| 211 QuicPriority priority, |
| 212 const SpdyHeaderBlock& headers) { |
| 213 return MakeRequestHeadersPacket(packet_number, stream_id, |
| 214 should_include_version, fin, priority, |
| 215 headers, nullptr); |
| 216 } |
| 217 |
202 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( | 218 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( |
203 QuicPacketNumber packet_number, | 219 QuicPacketNumber packet_number, |
204 QuicStreamId stream_id, | 220 QuicStreamId stream_id, |
205 bool should_include_version, | 221 bool should_include_version, |
206 bool fin, | 222 bool fin, |
207 const SpdyHeaderBlock& headers) { | 223 const SpdyHeaderBlock& headers, |
| 224 size_t* spdy_headers_frame_length) { |
208 InitializeHeader(packet_number, should_include_version); | 225 InitializeHeader(packet_number, should_include_version); |
209 scoped_ptr<SpdySerializedFrame> spdy_frame; | 226 scoped_ptr<SpdySerializedFrame> spdy_frame; |
210 if (spdy_request_framer_.protocol_version() == SPDY3) { | 227 if (spdy_request_framer_.protocol_version() == SPDY3) { |
211 SpdySynReplyIR syn_reply(stream_id); | 228 SpdySynReplyIR syn_reply(stream_id); |
212 syn_reply.set_header_block(headers); | 229 syn_reply.set_header_block(headers); |
213 syn_reply.set_fin(fin); | 230 syn_reply.set_fin(fin); |
214 spdy_frame.reset(spdy_response_framer_.SerializeSynReply(syn_reply)); | 231 spdy_frame.reset(spdy_response_framer_.SerializeSynReply(syn_reply)); |
215 } else { | 232 } else { |
216 SpdyHeadersIR headers_frame(stream_id); | 233 SpdyHeadersIR headers_frame(stream_id); |
217 headers_frame.set_header_block(headers); | 234 headers_frame.set_header_block(headers); |
218 headers_frame.set_fin(fin); | 235 headers_frame.set_fin(fin); |
219 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); | 236 spdy_frame.reset(spdy_request_framer_.SerializeFrame(headers_frame)); |
220 } | 237 } |
| 238 if (spdy_headers_frame_length) { |
| 239 *spdy_headers_frame_length = spdy_frame->size(); |
| 240 } |
221 QuicStreamFrame frame( | 241 QuicStreamFrame frame( |
222 kHeadersStreamId, false, 0, | 242 kHeadersStreamId, false, 0, |
223 base::StringPiece(spdy_frame->data(), spdy_frame->size())); | 243 base::StringPiece(spdy_frame->data(), spdy_frame->size())); |
224 return MakePacket(header_, QuicFrame(&frame)); | 244 return MakePacket(header_, QuicFrame(&frame)); |
225 } | 245 } |
226 | 246 |
| 247 scoped_ptr<QuicEncryptedPacket> QuicTestPacketMaker::MakeResponseHeadersPacket( |
| 248 QuicPacketNumber packet_number, |
| 249 QuicStreamId stream_id, |
| 250 bool should_include_version, |
| 251 bool fin, |
| 252 const SpdyHeaderBlock& headers) { |
| 253 return MakeResponseHeadersPacket( |
| 254 packet_number, stream_id, should_include_version, fin, headers, nullptr); |
| 255 } |
| 256 |
227 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( | 257 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( |
228 const std::string& method, | 258 const std::string& method, |
229 const std::string& scheme, | 259 const std::string& scheme, |
230 const std::string& path) { | 260 const std::string& path) { |
231 SpdyHeaderBlock headers; | 261 SpdyHeaderBlock headers; |
232 if (version_ <= QUIC_VERSION_24) { | 262 if (version_ <= QUIC_VERSION_24) { |
233 headers[":host"] = host_; | 263 headers[":host"] = host_; |
234 } else { | 264 } else { |
235 headers[":authority"] = host_; | 265 headers[":authority"] = host_; |
236 } | 266 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 header_.public_header.version_flag = should_include_version; | 308 header_.public_header.version_flag = should_include_version; |
279 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 309 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
280 header_.packet_packet_number = packet_number; | 310 header_.packet_packet_number = packet_number; |
281 header_.fec_group = 0; | 311 header_.fec_group = 0; |
282 header_.entropy_flag = false; | 312 header_.entropy_flag = false; |
283 header_.fec_flag = false; | 313 header_.fec_flag = false; |
284 } | 314 } |
285 | 315 |
286 } // namespace test | 316 } // namespace test |
287 } // namespace net | 317 } // namespace net |
OLD | NEW |