| 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 |