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 #include <memory> |
8 | 9 |
| 10 #include "base/memory/ptr_util.h" |
9 #include "net/quic/quic_framer.h" | 11 #include "net/quic/quic_framer.h" |
10 #include "net/quic/quic_http_utils.h" | 12 #include "net/quic/quic_http_utils.h" |
11 #include "net/quic/quic_utils.h" | 13 #include "net/quic/quic_utils.h" |
12 #include "net/quic/test_tools/quic_test_utils.h" | 14 #include "net/quic/test_tools/quic_test_utils.h" |
13 | 15 |
14 using std::make_pair; | 16 using std::make_pair; |
15 | 17 |
16 namespace net { | 18 namespace net { |
17 namespace test { | 19 namespace test { |
18 | 20 |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 QuicStreamId stream_id, | 286 QuicStreamId stream_id, |
285 bool should_include_version, | 287 bool should_include_version, |
286 bool fin, | 288 bool fin, |
287 QuicStreamOffset offset, | 289 QuicStreamOffset offset, |
288 base::StringPiece data) { | 290 base::StringPiece data) { |
289 InitializeHeader(packet_number, should_include_version); | 291 InitializeHeader(packet_number, should_include_version); |
290 QuicStreamFrame frame(stream_id, fin, offset, data); | 292 QuicStreamFrame frame(stream_id, fin, offset, data); |
291 return MakePacket(header_, QuicFrame(&frame)); | 293 return MakePacket(header_, QuicFrame(&frame)); |
292 } | 294 } |
293 | 295 |
| 296 std::unique_ptr<QuicReceivedPacket> |
| 297 QuicTestPacketMaker::MakeMultipleDataFramesPacket( |
| 298 QuicPacketNumber packet_number, |
| 299 QuicStreamId stream_id, |
| 300 bool should_include_version, |
| 301 bool fin, |
| 302 QuicStreamOffset offset, |
| 303 const std::vector<std::string>& data_writes) { |
| 304 InitializeHeader(packet_number, should_include_version); |
| 305 QuicFrames data_frames; |
| 306 // QuicFrame takes a raw pointer. Use a std::vector here so we keep |
| 307 // StreamFrames alive until MakeMultipleFramesPacket is done. |
| 308 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames; |
| 309 for (size_t i = 0; i < data_writes.size(); ++i) { |
| 310 bool is_fin = fin && (i == data_writes.size() - 1); |
| 311 stream_frames.push_back(base::WrapUnique(new QuicStreamFrame( |
| 312 stream_id, is_fin, offset, base::StringPiece(data_writes[i])))); |
| 313 offset += data_writes[i].length(); |
| 314 } |
| 315 for (const auto& stream_frame : stream_frames) { |
| 316 QuicFrame quic_frame(stream_frame.get()); |
| 317 DVLOG(1) << "Adding frame: " << quic_frame; |
| 318 data_frames.push_back(quic_frame); |
| 319 } |
| 320 return MakeMultipleFramesPacket(header_, data_frames); |
| 321 } |
| 322 |
294 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( | 323 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( |
295 QuicPacketNumber packet_number, | 324 QuicPacketNumber packet_number, |
296 bool include_version, | 325 bool include_version, |
297 QuicStreamId stream_id, | 326 QuicStreamId stream_id, |
298 QuicPacketNumber largest_received, | 327 QuicPacketNumber largest_received, |
299 QuicPacketNumber least_unacked, | 328 QuicPacketNumber least_unacked, |
300 bool fin, | 329 bool fin, |
301 QuicStreamOffset offset, | 330 QuicStreamOffset offset, |
302 base::StringPiece data) { | 331 base::StringPiece data) { |
303 InitializeHeader(packet_number, include_version); | 332 InitializeHeader(packet_number, include_version); |
(...skipping 10 matching lines...) Expand all Loading... |
314 stop_waiting.least_unacked = least_unacked; | 343 stop_waiting.least_unacked = least_unacked; |
315 frames.push_back(QuicFrame(&stop_waiting)); | 344 frames.push_back(QuicFrame(&stop_waiting)); |
316 | 345 |
317 QuicStreamFrame stream_frame(stream_id, fin, offset, data); | 346 QuicStreamFrame stream_frame(stream_id, fin, offset, data); |
318 frames.push_back(QuicFrame(&stream_frame)); | 347 frames.push_back(QuicFrame(&stream_frame)); |
319 | 348 |
320 return MakeMultipleFramesPacket(header_, frames); | 349 return MakeMultipleFramesPacket(header_, frames); |
321 } | 350 } |
322 | 351 |
323 std::unique_ptr<QuicReceivedPacket> | 352 std::unique_ptr<QuicReceivedPacket> |
| 353 QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket( |
| 354 QuicPacketNumber packet_number, |
| 355 QuicStreamId stream_id, |
| 356 bool should_include_version, |
| 357 bool fin, |
| 358 SpdyPriority priority, |
| 359 const SpdyHeaderBlock& headers, |
| 360 size_t* spdy_headers_frame_length, |
| 361 const std::vector<std::string>& data_writes) { |
| 362 InitializeHeader(packet_number, should_include_version); |
| 363 SpdySerializedFrame spdy_frame; |
| 364 if (spdy_request_framer_.protocol_version() == SPDY3) { |
| 365 SpdySynStreamIR syn_stream(stream_id); |
| 366 syn_stream.set_header_block(headers); |
| 367 syn_stream.set_fin(fin); |
| 368 syn_stream.set_priority(priority); |
| 369 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); |
| 370 } else { |
| 371 SpdyHeadersIR headers_frame(stream_id); |
| 372 headers_frame.set_header_block(headers); |
| 373 headers_frame.set_fin(fin); |
| 374 headers_frame.set_priority(priority); |
| 375 headers_frame.set_has_priority(true); |
| 376 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); |
| 377 } |
| 378 if (spdy_headers_frame_length) { |
| 379 *spdy_headers_frame_length = spdy_frame.size(); |
| 380 } |
| 381 QuicStreamFrame frame( |
| 382 kHeadersStreamId, false, 0, |
| 383 base::StringPiece(spdy_frame.data(), spdy_frame.size())); |
| 384 |
| 385 QuicFrames frames; |
| 386 frames.push_back(QuicFrame(&frame)); |
| 387 |
| 388 QuicStreamOffset offset = 0; |
| 389 // QuicFrame takes a raw pointer. Use a std::vector here so we keep |
| 390 // StreamFrames alive until MakeMultipleFramesPacket is done. |
| 391 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames; |
| 392 for (size_t i = 0; i < data_writes.size(); ++i) { |
| 393 bool is_fin = fin && (i == data_writes.size() - 1); |
| 394 stream_frames.push_back(base::WrapUnique(new QuicStreamFrame( |
| 395 stream_id, is_fin, offset, base::StringPiece(data_writes[i])))); |
| 396 offset += data_writes[i].length(); |
| 397 } |
| 398 for (const auto& stream_frame : stream_frames) { |
| 399 QuicFrame quic_frame(stream_frame.get()); |
| 400 DVLOG(1) << "Adding frame: " << quic_frame; |
| 401 frames.push_back(quic_frame); |
| 402 } |
| 403 return MakeMultipleFramesPacket(header_, frames); |
| 404 } |
| 405 |
| 406 std::unique_ptr<QuicReceivedPacket> |
324 QuicTestPacketMaker::MakeRequestHeadersPacket( | 407 QuicTestPacketMaker::MakeRequestHeadersPacket( |
325 QuicPacketNumber packet_number, | 408 QuicPacketNumber packet_number, |
326 QuicStreamId stream_id, | 409 QuicStreamId stream_id, |
327 bool should_include_version, | 410 bool should_include_version, |
328 bool fin, | 411 bool fin, |
329 SpdyPriority priority, | 412 SpdyPriority priority, |
330 const SpdyHeaderBlock& headers, | 413 const SpdyHeaderBlock& headers, |
331 size_t* spdy_headers_frame_length) { | 414 size_t* spdy_headers_frame_length) { |
332 return MakeRequestHeadersPacket(packet_number, stream_id, | 415 return MakeRequestHeadersPacket(packet_number, stream_id, |
333 should_include_version, fin, priority, | 416 should_include_version, fin, priority, |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
525 header_.public_header.version_flag = should_include_version; | 608 header_.public_header.version_flag = should_include_version; |
526 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 609 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
527 header_.packet_number = packet_number; | 610 header_.packet_number = packet_number; |
528 header_.fec_group = 0; | 611 header_.fec_group = 0; |
529 header_.entropy_flag = false; | 612 header_.entropy_flag = false; |
530 header_.fec_flag = false; | 613 header_.fec_flag = false; |
531 } | 614 } |
532 | 615 |
533 } // namespace test | 616 } // namespace test |
534 } // namespace net | 617 } // namespace net |
OLD | NEW |