| 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 <utility> |
| 8 | 9 |
| 9 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 10 #include "net/quic/quic_framer.h" | 11 #include "net/quic/quic_framer.h" |
| 11 #include "net/quic/quic_http_utils.h" | 12 #include "net/quic/quic_http_utils.h" |
| 12 #include "net/quic/quic_utils.h" | 13 #include "net/quic/quic_utils.h" |
| 13 #include "net/quic/test_tools/quic_test_utils.h" | 14 #include "net/quic/test_tools/quic_test_utils.h" |
| 14 | 15 |
| 15 using std::make_pair; | 16 using std::make_pair; |
| 16 | 17 |
| 17 namespace net { | 18 namespace net { |
| (...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 return MakeMultipleFramesPacket(header_, frames); | 357 return MakeMultipleFramesPacket(header_, frames); |
| 357 } | 358 } |
| 358 | 359 |
| 359 std::unique_ptr<QuicReceivedPacket> | 360 std::unique_ptr<QuicReceivedPacket> |
| 360 QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket( | 361 QuicTestPacketMaker::MakeRequestHeadersAndMultipleDataFramesPacket( |
| 361 QuicPacketNumber packet_number, | 362 QuicPacketNumber packet_number, |
| 362 QuicStreamId stream_id, | 363 QuicStreamId stream_id, |
| 363 bool should_include_version, | 364 bool should_include_version, |
| 364 bool fin, | 365 bool fin, |
| 365 SpdyPriority priority, | 366 SpdyPriority priority, |
| 366 const SpdyHeaderBlock& headers, | 367 SpdyHeaderBlock headers, |
| 367 size_t* spdy_headers_frame_length, | 368 size_t* spdy_headers_frame_length, |
| 368 const std::vector<std::string>& data_writes) { | 369 const std::vector<std::string>& data_writes) { |
| 369 InitializeHeader(packet_number, should_include_version); | 370 InitializeHeader(packet_number, should_include_version); |
| 370 SpdySerializedFrame spdy_frame; | 371 SpdySerializedFrame spdy_frame; |
| 371 if (spdy_request_framer_.protocol_version() == SPDY3) { | 372 if (spdy_request_framer_.protocol_version() == SPDY3) { |
| 372 SpdySynStreamIR syn_stream(stream_id); | 373 SpdySynStreamIR syn_stream(stream_id, std::move(headers)); |
| 373 syn_stream.set_header_block(headers); | |
| 374 syn_stream.set_fin(fin); | 374 syn_stream.set_fin(fin); |
| 375 syn_stream.set_priority(priority); | 375 syn_stream.set_priority(priority); |
| 376 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); | 376 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); |
| 377 } else { | 377 } else { |
| 378 SpdyHeadersIR headers_frame(stream_id); | 378 SpdyHeadersIR headers_frame(stream_id, std::move(headers)); |
| 379 headers_frame.set_header_block(headers); | |
| 380 headers_frame.set_fin(fin); | 379 headers_frame.set_fin(fin); |
| 381 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); | 380 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); |
| 382 headers_frame.set_has_priority(true); | 381 headers_frame.set_has_priority(true); |
| 383 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); | 382 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); |
| 384 } | 383 } |
| 385 if (spdy_headers_frame_length) { | 384 if (spdy_headers_frame_length) { |
| 386 *spdy_headers_frame_length = spdy_frame.size(); | 385 *spdy_headers_frame_length = spdy_frame.size(); |
| 387 } | 386 } |
| 388 QuicStreamFrame frame( | 387 QuicStreamFrame frame( |
| 389 kHeadersStreamId, false, 0, | 388 kHeadersStreamId, false, 0, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 410 return MakeMultipleFramesPacket(header_, frames); | 409 return MakeMultipleFramesPacket(header_, frames); |
| 411 } | 410 } |
| 412 | 411 |
| 413 std::unique_ptr<QuicReceivedPacket> | 412 std::unique_ptr<QuicReceivedPacket> |
| 414 QuicTestPacketMaker::MakeRequestHeadersPacket( | 413 QuicTestPacketMaker::MakeRequestHeadersPacket( |
| 415 QuicPacketNumber packet_number, | 414 QuicPacketNumber packet_number, |
| 416 QuicStreamId stream_id, | 415 QuicStreamId stream_id, |
| 417 bool should_include_version, | 416 bool should_include_version, |
| 418 bool fin, | 417 bool fin, |
| 419 SpdyPriority priority, | 418 SpdyPriority priority, |
| 420 const SpdyHeaderBlock& headers, | 419 SpdyHeaderBlock headers, |
| 421 size_t* spdy_headers_frame_length) { | 420 size_t* spdy_headers_frame_length) { |
| 422 return MakeRequestHeadersPacket(packet_number, stream_id, | 421 return MakeRequestHeadersPacket( |
| 423 should_include_version, fin, priority, | 422 packet_number, stream_id, should_include_version, fin, priority, |
| 424 headers, spdy_headers_frame_length, nullptr); | 423 std::move(headers), spdy_headers_frame_length, nullptr); |
| 425 } | 424 } |
| 426 | 425 |
| 427 // If |offset| is provided, will use the value when creating the packet. | 426 // If |offset| is provided, will use the value when creating the packet. |
| 428 // Will also update the value after packet creation. | 427 // Will also update the value after packet creation. |
| 429 std::unique_ptr<QuicReceivedPacket> | 428 std::unique_ptr<QuicReceivedPacket> |
| 430 QuicTestPacketMaker::MakeRequestHeadersPacket(QuicPacketNumber packet_number, | 429 QuicTestPacketMaker::MakeRequestHeadersPacket(QuicPacketNumber packet_number, |
| 431 QuicStreamId stream_id, | 430 QuicStreamId stream_id, |
| 432 bool should_include_version, | 431 bool should_include_version, |
| 433 bool fin, | 432 bool fin, |
| 434 SpdyPriority priority, | 433 SpdyPriority priority, |
| 435 const SpdyHeaderBlock& headers, | 434 SpdyHeaderBlock headers, |
| 436 size_t* spdy_headers_frame_length, | 435 size_t* spdy_headers_frame_length, |
| 437 QuicStreamOffset* offset) { | 436 QuicStreamOffset* offset) { |
| 438 InitializeHeader(packet_number, should_include_version); | 437 InitializeHeader(packet_number, should_include_version); |
| 439 SpdySerializedFrame spdy_frame; | 438 SpdySerializedFrame spdy_frame; |
| 440 if (spdy_request_framer_.protocol_version() == SPDY3) { | 439 if (spdy_request_framer_.protocol_version() == SPDY3) { |
| 441 SpdySynStreamIR syn_stream(stream_id); | 440 SpdySynStreamIR syn_stream(stream_id, std::move(headers)); |
| 442 syn_stream.set_header_block(headers); | |
| 443 syn_stream.set_fin(fin); | 441 syn_stream.set_fin(fin); |
| 444 syn_stream.set_priority(priority); | 442 syn_stream.set_priority(priority); |
| 445 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); | 443 spdy_frame = spdy_request_framer_.SerializeSynStream(syn_stream); |
| 446 } else { | 444 } else { |
| 447 SpdyHeadersIR headers_frame(stream_id); | 445 SpdyHeadersIR headers_frame(stream_id, std::move(headers)); |
| 448 headers_frame.set_header_block(headers); | |
| 449 headers_frame.set_fin(fin); | 446 headers_frame.set_fin(fin); |
| 450 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); | 447 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(priority)); |
| 451 headers_frame.set_has_priority(true); | 448 headers_frame.set_has_priority(true); |
| 452 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); | 449 spdy_frame = spdy_request_framer_.SerializeFrame(headers_frame); |
| 453 } | 450 } |
| 454 if (spdy_headers_frame_length) { | 451 if (spdy_headers_frame_length) { |
| 455 *spdy_headers_frame_length = spdy_frame.size(); | 452 *spdy_headers_frame_length = spdy_frame.size(); |
| 456 } | 453 } |
| 457 if (offset != nullptr) { | 454 if (offset != nullptr) { |
| 458 QuicStreamFrame frame( | 455 QuicStreamFrame frame( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 471 | 468 |
| 472 // Convenience method for calling MakeRequestHeadersPacket with nullptr for | 469 // Convenience method for calling MakeRequestHeadersPacket with nullptr for |
| 473 // |spdy_headers_frame_length|. | 470 // |spdy_headers_frame_length|. |
| 474 std::unique_ptr<QuicReceivedPacket> | 471 std::unique_ptr<QuicReceivedPacket> |
| 475 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking( | 472 QuicTestPacketMaker::MakeRequestHeadersPacketWithOffsetTracking( |
| 476 QuicPacketNumber packet_number, | 473 QuicPacketNumber packet_number, |
| 477 QuicStreamId stream_id, | 474 QuicStreamId stream_id, |
| 478 bool should_include_version, | 475 bool should_include_version, |
| 479 bool fin, | 476 bool fin, |
| 480 SpdyPriority priority, | 477 SpdyPriority priority, |
| 481 const SpdyHeaderBlock& headers, | 478 SpdyHeaderBlock headers, |
| 482 QuicStreamOffset* offset) { | 479 QuicStreamOffset* offset) { |
| 483 return MakeRequestHeadersPacket(packet_number, stream_id, | 480 return MakeRequestHeadersPacket(packet_number, stream_id, |
| 484 should_include_version, fin, priority, | 481 should_include_version, fin, priority, |
| 485 headers, nullptr, offset); | 482 std::move(headers), nullptr, offset); |
| 486 } | 483 } |
| 487 | 484 |
| 488 // If |offset| is provided, will use the value when creating the packet. | 485 // If |offset| is provided, will use the value when creating the packet. |
| 489 // Will also update the value after packet creation. | 486 // Will also update the value after packet creation. |
| 490 std::unique_ptr<QuicReceivedPacket> | 487 std::unique_ptr<QuicReceivedPacket> |
| 491 QuicTestPacketMaker::MakeResponseHeadersPacket( | 488 QuicTestPacketMaker::MakeResponseHeadersPacket( |
| 492 QuicPacketNumber packet_number, | 489 QuicPacketNumber packet_number, |
| 493 QuicStreamId stream_id, | 490 QuicStreamId stream_id, |
| 494 bool should_include_version, | 491 bool should_include_version, |
| 495 bool fin, | 492 bool fin, |
| 496 const SpdyHeaderBlock& headers, | 493 SpdyHeaderBlock headers, |
| 497 size_t* spdy_headers_frame_length, | 494 size_t* spdy_headers_frame_length, |
| 498 QuicStreamOffset* offset) { | 495 QuicStreamOffset* offset) { |
| 499 InitializeHeader(packet_number, should_include_version); | 496 InitializeHeader(packet_number, should_include_version); |
| 500 SpdySerializedFrame spdy_frame; | 497 SpdySerializedFrame spdy_frame; |
| 501 if (spdy_response_framer_.protocol_version() == SPDY3) { | 498 if (spdy_response_framer_.protocol_version() == SPDY3) { |
| 502 SpdySynReplyIR syn_reply(stream_id); | 499 SpdySynReplyIR syn_reply(stream_id, std::move(headers)); |
| 503 syn_reply.set_header_block(headers); | |
| 504 syn_reply.set_fin(fin); | 500 syn_reply.set_fin(fin); |
| 505 spdy_frame = spdy_response_framer_.SerializeSynReply(syn_reply); | 501 spdy_frame = spdy_response_framer_.SerializeSynReply(syn_reply); |
| 506 } else { | 502 } else { |
| 507 SpdyHeadersIR headers_frame(stream_id); | 503 SpdyHeadersIR headers_frame(stream_id, std::move(headers)); |
| 508 headers_frame.set_header_block(headers); | |
| 509 headers_frame.set_fin(fin); | 504 headers_frame.set_fin(fin); |
| 510 spdy_frame = spdy_response_framer_.SerializeFrame(headers_frame); | 505 spdy_frame = spdy_response_framer_.SerializeFrame(headers_frame); |
| 511 } | 506 } |
| 512 if (spdy_headers_frame_length) { | 507 if (spdy_headers_frame_length) { |
| 513 *spdy_headers_frame_length = spdy_frame.size(); | 508 *spdy_headers_frame_length = spdy_frame.size(); |
| 514 } | 509 } |
| 515 if (offset != nullptr) { | 510 if (offset != nullptr) { |
| 516 QuicStreamFrame frame( | 511 QuicStreamFrame frame( |
| 517 kHeadersStreamId, false, *offset, | 512 kHeadersStreamId, false, *offset, |
| 518 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 513 base::StringPiece(spdy_frame.data(), spdy_frame.size())); |
| 519 *offset += spdy_frame.size(); | 514 *offset += spdy_frame.size(); |
| 520 return MakePacket(header_, QuicFrame(&frame)); | 515 return MakePacket(header_, QuicFrame(&frame)); |
| 521 } else { | 516 } else { |
| 522 QuicStreamFrame frame( | 517 QuicStreamFrame frame( |
| 523 kHeadersStreamId, false, 0, | 518 kHeadersStreamId, false, 0, |
| 524 base::StringPiece(spdy_frame.data(), spdy_frame.size())); | 519 base::StringPiece(spdy_frame.data(), spdy_frame.size())); |
| 525 return MakePacket(header_, QuicFrame(&frame)); | 520 return MakePacket(header_, QuicFrame(&frame)); |
| 526 } | 521 } |
| 527 } | 522 } |
| 528 | 523 |
| 529 std::unique_ptr<QuicReceivedPacket> | 524 std::unique_ptr<QuicReceivedPacket> |
| 530 QuicTestPacketMaker::MakeResponseHeadersPacket( | 525 QuicTestPacketMaker::MakeResponseHeadersPacket( |
| 531 QuicPacketNumber packet_number, | 526 QuicPacketNumber packet_number, |
| 532 QuicStreamId stream_id, | 527 QuicStreamId stream_id, |
| 533 bool should_include_version, | 528 bool should_include_version, |
| 534 bool fin, | 529 bool fin, |
| 535 const SpdyHeaderBlock& headers, | 530 SpdyHeaderBlock headers, |
| 536 size_t* spdy_headers_frame_length) { | 531 size_t* spdy_headers_frame_length) { |
| 537 return MakeResponseHeadersPacket(packet_number, stream_id, | 532 return MakeResponseHeadersPacket( |
| 538 should_include_version, fin, headers, | 533 packet_number, stream_id, should_include_version, fin, std::move(headers), |
| 539 spdy_headers_frame_length, nullptr); | 534 spdy_headers_frame_length, nullptr); |
| 540 } | 535 } |
| 541 | 536 |
| 542 // Convenience method for calling MakeResponseHeadersPacket with nullptr for | 537 // Convenience method for calling MakeResponseHeadersPacket with nullptr for |
| 543 // |spdy_headers_frame_length|. | 538 // |spdy_headers_frame_length|. |
| 544 std::unique_ptr<QuicReceivedPacket> | 539 std::unique_ptr<QuicReceivedPacket> |
| 545 QuicTestPacketMaker::MakeResponseHeadersPacketWithOffsetTracking( | 540 QuicTestPacketMaker::MakeResponseHeadersPacketWithOffsetTracking( |
| 546 QuicPacketNumber packet_number, | 541 QuicPacketNumber packet_number, |
| 547 QuicStreamId stream_id, | 542 QuicStreamId stream_id, |
| 548 bool should_include_version, | 543 bool should_include_version, |
| 549 bool fin, | 544 bool fin, |
| 550 const SpdyHeaderBlock& headers, | 545 SpdyHeaderBlock headers, |
| 551 QuicStreamOffset* offset) { | 546 QuicStreamOffset* offset) { |
| 552 return MakeResponseHeadersPacket(packet_number, stream_id, | 547 return MakeResponseHeadersPacket(packet_number, stream_id, |
| 553 should_include_version, fin, headers, | 548 should_include_version, fin, |
| 554 nullptr, offset); | 549 std::move(headers), nullptr, offset); |
| 555 } | 550 } |
| 556 | 551 |
| 557 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( | 552 SpdyHeaderBlock QuicTestPacketMaker::GetRequestHeaders( |
| 558 const std::string& method, | 553 const std::string& method, |
| 559 const std::string& scheme, | 554 const std::string& scheme, |
| 560 const std::string& path) { | 555 const std::string& path) { |
| 561 SpdyHeaderBlock headers; | 556 SpdyHeaderBlock headers; |
| 562 headers[":method"] = method; | 557 headers[":method"] = method; |
| 563 headers[":authority"] = host_; | 558 headers[":authority"] = host_; |
| 564 headers[":scheme"] = scheme; | 559 headers[":scheme"] = scheme; |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 header_.public_header.reset_flag = false; | 608 header_.public_header.reset_flag = false; |
| 614 header_.public_header.version_flag = should_include_version; | 609 header_.public_header.version_flag = should_include_version; |
| 615 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; | 610 header_.public_header.packet_number_length = PACKET_1BYTE_PACKET_NUMBER; |
| 616 header_.packet_number = packet_number; | 611 header_.packet_number = packet_number; |
| 617 header_.entropy_flag = false; | 612 header_.entropy_flag = false; |
| 618 header_.fec_flag = false; | 613 header_.fec_flag = false; |
| 619 } | 614 } |
| 620 | 615 |
| 621 } // namespace test | 616 } // namespace test |
| 622 } // namespace net | 617 } // namespace net |
| OLD | NEW |