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/chromium/quic_test_packet_maker.h" | 5 #include "net/quic/chromium/quic_test_packet_maker.h" |
6 | 6 |
7 #include <list> | 7 #include <list> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 return std::unique_ptr<QuicReceivedPacket>(encrypted.Clone()); | 264 return std::unique_ptr<QuicReceivedPacket>(encrypted.Clone()); |
265 } | 265 } |
266 | 266 |
267 // Returns a newly created packet to send kData on stream 1. | 267 // Returns a newly created packet to send kData on stream 1. |
268 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeDataPacket( | 268 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeDataPacket( |
269 QuicPacketNumber packet_number, | 269 QuicPacketNumber packet_number, |
270 QuicStreamId stream_id, | 270 QuicStreamId stream_id, |
271 bool should_include_version, | 271 bool should_include_version, |
272 bool fin, | 272 bool fin, |
273 QuicStreamOffset offset, | 273 QuicStreamOffset offset, |
274 base::StringPiece data) { | 274 QuicStringPiece data) { |
275 InitializeHeader(packet_number, should_include_version); | 275 InitializeHeader(packet_number, should_include_version); |
276 QuicStreamFrame frame(stream_id, fin, offset, data); | 276 QuicStreamFrame frame(stream_id, fin, offset, data); |
277 DVLOG(1) << "Adding frame: " << frame; | 277 DVLOG(1) << "Adding frame: " << frame; |
278 return MakePacket(header_, QuicFrame(&frame)); | 278 return MakePacket(header_, QuicFrame(&frame)); |
279 } | 279 } |
280 | 280 |
281 std::unique_ptr<QuicReceivedPacket> | 281 std::unique_ptr<QuicReceivedPacket> |
282 QuicTestPacketMaker::MakeMultipleDataFramesPacket( | 282 QuicTestPacketMaker::MakeMultipleDataFramesPacket( |
283 QuicPacketNumber packet_number, | 283 QuicPacketNumber packet_number, |
284 QuicStreamId stream_id, | 284 QuicStreamId stream_id, |
285 bool should_include_version, | 285 bool should_include_version, |
286 bool fin, | 286 bool fin, |
287 QuicStreamOffset offset, | 287 QuicStreamOffset offset, |
288 const std::vector<std::string>& data_writes) { | 288 const std::vector<std::string>& data_writes) { |
289 InitializeHeader(packet_number, should_include_version); | 289 InitializeHeader(packet_number, should_include_version); |
290 QuicFrames data_frames; | 290 QuicFrames data_frames; |
291 // QuicFrame takes a raw pointer. Use a std::vector here so we keep | 291 // QuicFrame takes a raw pointer. Use a std::vector here so we keep |
292 // StreamFrames alive until MakeMultipleFramesPacket is done. | 292 // StreamFrames alive until MakeMultipleFramesPacket is done. |
293 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames; | 293 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames; |
294 for (size_t i = 0; i < data_writes.size(); ++i) { | 294 for (size_t i = 0; i < data_writes.size(); ++i) { |
295 bool is_fin = fin && (i == data_writes.size() - 1); | 295 bool is_fin = fin && (i == data_writes.size() - 1); |
296 stream_frames.push_back(base::MakeUnique<QuicStreamFrame>( | 296 stream_frames.push_back(base::MakeUnique<QuicStreamFrame>( |
297 stream_id, is_fin, offset, base::StringPiece(data_writes[i]))); | 297 stream_id, is_fin, offset, QuicStringPiece(data_writes[i]))); |
298 offset += data_writes[i].length(); | 298 offset += data_writes[i].length(); |
299 } | 299 } |
300 for (const auto& stream_frame : stream_frames) { | 300 for (const auto& stream_frame : stream_frames) { |
301 QuicFrame quic_frame(stream_frame.get()); | 301 QuicFrame quic_frame(stream_frame.get()); |
302 DVLOG(1) << "Adding frame: " << quic_frame; | 302 DVLOG(1) << "Adding frame: " << quic_frame; |
303 data_frames.push_back(quic_frame); | 303 data_frames.push_back(quic_frame); |
304 } | 304 } |
305 return MakeMultipleFramesPacket(header_, data_frames); | 305 return MakeMultipleFramesPacket(header_, data_frames); |
306 } | 306 } |
307 | 307 |
308 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( | 308 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeAckAndDataPacket( |
309 QuicPacketNumber packet_number, | 309 QuicPacketNumber packet_number, |
310 bool include_version, | 310 bool include_version, |
311 QuicStreamId stream_id, | 311 QuicStreamId stream_id, |
312 QuicPacketNumber largest_received, | 312 QuicPacketNumber largest_received, |
313 QuicPacketNumber least_unacked, | 313 QuicPacketNumber least_unacked, |
314 bool fin, | 314 bool fin, |
315 QuicStreamOffset offset, | 315 QuicStreamOffset offset, |
316 base::StringPiece data) { | 316 QuicStringPiece data) { |
317 InitializeHeader(packet_number, include_version); | 317 InitializeHeader(packet_number, include_version); |
318 | 318 |
319 QuicAckFrame ack(MakeAckFrame(largest_received)); | 319 QuicAckFrame ack(MakeAckFrame(largest_received)); |
320 ack.ack_delay_time = QuicTime::Delta::Zero(); | 320 ack.ack_delay_time = QuicTime::Delta::Zero(); |
321 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { | 321 for (QuicPacketNumber i = least_unacked; i <= largest_received; ++i) { |
322 ack.received_packet_times.push_back(std::make_pair(i, clock_->Now())); | 322 ack.received_packet_times.push_back(std::make_pair(i, clock_->Now())); |
323 } | 323 } |
324 if (largest_received > 0) { | 324 if (largest_received > 0) { |
325 ack.packets.Add(1, largest_received + 1); | 325 ack.packets.Add(1, largest_received + 1); |
326 } | 326 } |
(...skipping 28 matching lines...) Expand all Loading... |
355 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); | 355 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); |
356 headers_frame.set_has_priority(true); | 356 headers_frame.set_has_priority(true); |
357 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); | 357 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); |
358 | 358 |
359 if (spdy_headers_frame_length) { | 359 if (spdy_headers_frame_length) { |
360 *spdy_headers_frame_length = spdy_frame.size(); | 360 *spdy_headers_frame_length = spdy_frame.size(); |
361 } | 361 } |
362 QuicFrames frames; | 362 QuicFrames frames; |
363 QuicStreamOffset header_offset = | 363 QuicStreamOffset header_offset = |
364 header_stream_offset == nullptr ? 0 : *header_stream_offset; | 364 header_stream_offset == nullptr ? 0 : *header_stream_offset; |
365 QuicStreamFrame frame( | 365 QuicStreamFrame frame(kHeadersStreamId, false, header_offset, |
366 kHeadersStreamId, false, header_offset, | 366 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
367 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | |
368 frames.push_back(QuicFrame(&frame)); | 367 frames.push_back(QuicFrame(&frame)); |
369 if (header_stream_offset != nullptr) { | 368 if (header_stream_offset != nullptr) { |
370 *header_stream_offset += spdy_frame.size(); | 369 *header_stream_offset += spdy_frame.size(); |
371 } | 370 } |
372 | 371 |
373 QuicStreamOffset offset = 0; | 372 QuicStreamOffset offset = 0; |
374 // QuicFrame takes a raw pointer. Use a std::vector here so we keep | 373 // QuicFrame takes a raw pointer. Use a std::vector here so we keep |
375 // StreamFrames alive until MakeMultipleFramesPacket is done. | 374 // StreamFrames alive until MakeMultipleFramesPacket is done. |
376 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames; | 375 std::vector<std::unique_ptr<QuicStreamFrame>> stream_frames; |
377 for (size_t i = 0; i < data_writes.size(); ++i) { | 376 for (size_t i = 0; i < data_writes.size(); ++i) { |
378 bool is_fin = fin && (i == data_writes.size() - 1); | 377 bool is_fin = fin && (i == data_writes.size() - 1); |
379 stream_frames.push_back(base::MakeUnique<QuicStreamFrame>( | 378 stream_frames.push_back(base::MakeUnique<QuicStreamFrame>( |
380 stream_id, is_fin, offset, base::StringPiece(data_writes[i]))); | 379 stream_id, is_fin, offset, QuicStringPiece(data_writes[i]))); |
381 offset += data_writes[i].length(); | 380 offset += data_writes[i].length(); |
382 } | 381 } |
383 for (const auto& stream_frame : stream_frames) { | 382 for (const auto& stream_frame : stream_frames) { |
384 QuicFrame quic_frame(stream_frame.get()); | 383 QuicFrame quic_frame(stream_frame.get()); |
385 DVLOG(1) << "Adding frame: " << quic_frame; | 384 DVLOG(1) << "Adding frame: " << quic_frame; |
386 frames.push_back(quic_frame); | 385 frames.push_back(quic_frame); |
387 } | 386 } |
388 return MakeMultipleFramesPacket(header_, frames); | 387 return MakeMultipleFramesPacket(header_, frames); |
389 } | 388 } |
390 | 389 |
(...skipping 29 matching lines...) Expand all Loading... |
420 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); | 419 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); |
421 headers_frame.set_has_priority(true); | 420 headers_frame.set_has_priority(true); |
422 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); | 421 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); |
423 | 422 |
424 if (spdy_headers_frame_length) { | 423 if (spdy_headers_frame_length) { |
425 *spdy_headers_frame_length = spdy_frame.size(); | 424 *spdy_headers_frame_length = spdy_frame.size(); |
426 } | 425 } |
427 if (offset != nullptr) { | 426 if (offset != nullptr) { |
428 QuicStreamFrame frame( | 427 QuicStreamFrame frame( |
429 kHeadersStreamId, false, *offset, | 428 kHeadersStreamId, false, *offset, |
430 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 429 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
431 *offset += spdy_frame.size(); | 430 *offset += spdy_frame.size(); |
432 return MakePacket(header_, QuicFrame(&frame)); | 431 return MakePacket(header_, QuicFrame(&frame)); |
433 } else { | 432 } else { |
434 QuicStreamFrame frame( | 433 QuicStreamFrame frame( |
435 kHeadersStreamId, false, 0, | 434 kHeadersStreamId, false, 0, |
436 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 435 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
437 | 436 |
438 return MakePacket(header_, QuicFrame(&frame)); | 437 return MakePacket(header_, QuicFrame(&frame)); |
439 } | 438 } |
440 } | 439 } |
441 | 440 |
442 // Convenience method for calling MakeRequestHeadersPacket with nullptr for | 441 // Convenience method for calling MakeRequestHeadersPacket with nullptr for |
443 // |spdy_headers_frame_length|. | 442 // |spdy_headers_frame_length|. |
444 std::unique_ptr<QuicReceivedPacket> | 443 std::unique_ptr<QuicReceivedPacket> |
445 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking( | 444 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking( |
446 QuicPacketNumber packet_number, | 445 QuicPacketNumber packet_number, |
(...skipping 24 matching lines...) Expand all Loading... |
471 SpdyPushPromiseIR promise_frame(stream_id, promised_stream_id, | 470 SpdyPushPromiseIR promise_frame(stream_id, promised_stream_id, |
472 std::move(headers)); | 471 std::move(headers)); |
473 promise_frame.set_fin(fin); | 472 promise_frame.set_fin(fin); |
474 spdy_frame = spdy_request_framer_.SerializeFrame(promise_frame); | 473 spdy_frame = spdy_request_framer_.SerializeFrame(promise_frame); |
475 if (spdy_headers_frame_length) { | 474 if (spdy_headers_frame_length) { |
476 *spdy_headers_frame_length = spdy_frame.size(); | 475 *spdy_headers_frame_length = spdy_frame.size(); |
477 } | 476 } |
478 if (offset != nullptr) { | 477 if (offset != nullptr) { |
479 QuicStreamFrame frame( | 478 QuicStreamFrame frame( |
480 kHeadersStreamId, false, *offset, | 479 kHeadersStreamId, false, *offset, |
481 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 480 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
482 *offset += spdy_frame.size(); | 481 *offset += spdy_frame.size(); |
483 return MakePacket(header_, QuicFrame(&frame)); | 482 return MakePacket(header_, QuicFrame(&frame)); |
484 } else { | 483 } else { |
485 QuicStreamFrame frame( | 484 QuicStreamFrame frame( |
486 kHeadersStreamId, false, 0, | 485 kHeadersStreamId, false, 0, |
487 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 486 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
488 return MakePacket(header_, QuicFrame(&frame)); | 487 return MakePacket(header_, QuicFrame(&frame)); |
489 } | 488 } |
490 } | 489 } |
491 | 490 |
492 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeForceHolDataPacket( | 491 std::unique_ptr<QuicReceivedPacket> QuicTestPacketMaker::MakeForceHolDataPacket( |
493 QuicPacketNumber packet_number, | 492 QuicPacketNumber packet_number, |
494 QuicStreamId stream_id, | 493 QuicStreamId stream_id, |
495 bool should_include_version, | 494 bool should_include_version, |
496 bool fin, | 495 bool fin, |
497 QuicStreamOffset* offset, | 496 QuicStreamOffset* offset, |
498 base::StringPiece data) { | 497 QuicStringPiece data) { |
499 SpdyDataIR spdy_data(stream_id, data); | 498 SpdyDataIR spdy_data(stream_id, data); |
500 spdy_data.set_fin(fin); | 499 spdy_data.set_fin(fin); |
501 SpdySerializedFrame spdy_frame( | 500 SpdySerializedFrame spdy_frame( |
502 spdy_request_framer_.SerializeFrame(spdy_data)); | 501 spdy_request_framer_.SerializeFrame(spdy_data)); |
503 InitializeHeader(packet_number, should_include_version); | 502 InitializeHeader(packet_number, should_include_version); |
504 QuicStreamFrame quic_frame(kHeadersStreamId, false, *offset, | 503 QuicStreamFrame quic_frame( |
505 StringPiece(spdy_frame.data(), spdy_frame.size())); | 504 kHeadersStreamId, false, *offset, |
| 505 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
506 *offset += spdy_frame.size(); | 506 *offset += spdy_frame.size(); |
507 return MakePacket(header_, QuicFrame(&quic_frame)); | 507 return MakePacket(header_, QuicFrame(&quic_frame)); |
508 } | 508 } |
509 | 509 |
510 // If |offset| is provided, will use the value when creating the packet. | 510 // If |offset| is provided, will use the value when creating the packet. |
511 // Will also update the value after packet creation. | 511 // Will also update the value after packet creation. |
512 std::unique_ptr<QuicReceivedPacket> | 512 std::unique_ptr<QuicReceivedPacket> |
513 QuicTestPacketMaker::MakeResponseHeadersPacket( | 513 QuicTestPacketMaker::MakeResponseHeadersPacket( |
514 QuicPacketNumber packet_number, | 514 QuicPacketNumber packet_number, |
515 QuicStreamId stream_id, | 515 QuicStreamId stream_id, |
516 bool should_include_version, | 516 bool should_include_version, |
517 bool fin, | 517 bool fin, |
518 SpdyHeaderBlock headers, | 518 SpdyHeaderBlock headers, |
519 size_t* spdy_headers_frame_length, | 519 size_t* spdy_headers_frame_length, |
520 QuicStreamOffset* offset) { | 520 QuicStreamOffset* offset) { |
521 InitializeHeader(packet_number, should_include_version); | 521 InitializeHeader(packet_number, should_include_version); |
522 SpdySerializedFrame spdy_frame; | 522 SpdySerializedFrame spdy_frame; |
523 SpdyHeadersIR headers_frame(stream_id, std::move(headers)); | 523 SpdyHeadersIR headers_frame(stream_id, std::move(headers)); |
524 headers_frame.set_fin(fin); | 524 headers_frame.set_fin(fin); |
525 spdy_frame = spdy_response_framer_.SerializeFrame(headers_frame); | 525 spdy_frame = spdy_response_framer_.SerializeFrame(headers_frame); |
526 | 526 |
527 if (spdy_headers_frame_length) { | 527 if (spdy_headers_frame_length) { |
528 *spdy_headers_frame_length = spdy_frame.size(); | 528 *spdy_headers_frame_length = spdy_frame.size(); |
529 } | 529 } |
530 if (offset != nullptr) { | 530 if (offset != nullptr) { |
531 QuicStreamFrame frame( | 531 QuicStreamFrame frame( |
532 kHeadersStreamId, false, *offset, | 532 kHeadersStreamId, false, *offset, |
533 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 533 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
534 *offset += spdy_frame.size(); | 534 *offset += spdy_frame.size(); |
535 return MakePacket(header_, QuicFrame(&frame)); | 535 return MakePacket(header_, QuicFrame(&frame)); |
536 } else { | 536 } else { |
537 QuicStreamFrame frame( | 537 QuicStreamFrame frame( |
538 kHeadersStreamId, false, 0, | 538 kHeadersStreamId, false, 0, |
539 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 539 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
540 return MakePacket(header_, QuicFrame(&frame)); | 540 return MakePacket(header_, QuicFrame(&frame)); |
541 } | 541 } |
542 } | 542 } |
543 | 543 |
544 std::unique_ptr<QuicReceivedPacket> | 544 std::unique_ptr<QuicReceivedPacket> |
545 QuicTestPacketMaker::MakeResponseHeadersPacket( | 545 QuicTestPacketMaker::MakeResponseHeadersPacket( |
546 QuicPacketNumber packet_number, | 546 QuicPacketNumber packet_number, |
547 QuicStreamId stream_id, | 547 QuicStreamId stream_id, |
548 bool should_include_version, | 548 bool should_include_version, |
549 bool fin, | 549 bool fin, |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
637 bool should_include_version, | 637 bool should_include_version, |
638 QuicStreamOffset* offset) { | 638 QuicStreamOffset* offset) { |
639 SpdySettingsIR settings_frame; | 639 SpdySettingsIR settings_frame; |
640 settings_frame.AddSetting(id, value); | 640 settings_frame.AddSetting(id, value); |
641 SpdySerializedFrame spdy_frame( | 641 SpdySerializedFrame spdy_frame( |
642 spdy_request_framer_.SerializeFrame(settings_frame)); | 642 spdy_request_framer_.SerializeFrame(settings_frame)); |
643 InitializeHeader(packet_number, should_include_version); | 643 InitializeHeader(packet_number, should_include_version); |
644 if (offset != nullptr) { | 644 if (offset != nullptr) { |
645 QuicStreamFrame quic_frame( | 645 QuicStreamFrame quic_frame( |
646 kHeadersStreamId, false, *offset, | 646 kHeadersStreamId, false, *offset, |
647 StringPiece(spdy_frame.data(), spdy_frame.size())); | 647 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
648 *offset += spdy_frame.size(); | 648 *offset += spdy_frame.size(); |
649 return MakePacket(header_, QuicFrame(&quic_frame)); | 649 return MakePacket(header_, QuicFrame(&quic_frame)); |
650 } | 650 } |
651 QuicStreamFrame quic_frame(kHeadersStreamId, false, 0, | 651 QuicStreamFrame quic_frame( |
652 StringPiece(spdy_frame.data(), spdy_frame.size())); | 652 kHeadersStreamId, false, 0, |
| 653 QuicStringPiece(spdy_frame.data(), spdy_frame.size())); |
653 return MakePacket(header_, QuicFrame(&quic_frame)); | 654 return MakePacket(header_, QuicFrame(&quic_frame)); |
654 } | 655 } |
655 | 656 |
656 } // namespace test | 657 } // namespace test |
657 } // namespace net | 658 } // namespace net |
OLD | NEW |