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/quic_headers_stream.h" | 5 #include "net/quic/quic_headers_stream.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
10 #include "net/quic/quic_utils.h" | 10 #include "net/quic/quic_utils.h" |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 } | 226 } |
227 | 227 |
228 void WriteHeadersAndCheckData(QuicStreamId stream_id, | 228 void WriteHeadersAndCheckData(QuicStreamId stream_id, |
229 bool fin, | 229 bool fin, |
230 SpdyPriority priority, | 230 SpdyPriority priority, |
231 SpdyFrameType type) { | 231 SpdyFrameType type) { |
232 // Write the headers and capture the outgoing data | 232 // Write the headers and capture the outgoing data |
233 EXPECT_CALL(session_, WritevData(headers_stream_, kHeadersStreamId, _, _, | 233 EXPECT_CALL(session_, WritevData(headers_stream_, kHeadersStreamId, _, _, |
234 false, nullptr)) | 234 false, nullptr)) |
235 .WillOnce(WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov))); | 235 .WillOnce(WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov))); |
236 headers_stream_->WriteHeaders(stream_id, headers_, fin, priority, nullptr); | 236 headers_stream_->WriteHeaders(stream_id, headers_.Clone(), fin, priority, |
| 237 nullptr); |
237 | 238 |
238 // Parse the outgoing data and check that it matches was was written. | 239 // Parse the outgoing data and check that it matches was was written. |
239 if (type == SYN_STREAM) { | 240 if (type == SYN_STREAM) { |
240 EXPECT_CALL(visitor_, | 241 EXPECT_CALL(visitor_, |
241 OnHeaders(stream_id, kHasPriority, | 242 OnHeaders(stream_id, kHasPriority, |
242 Spdy3PriorityToHttp2Weight(priority), | 243 Spdy3PriorityToHttp2Weight(priority), |
243 /*parent_stream_id=*/0, | 244 /*parent_stream_id=*/0, |
244 /*exclusive=*/false, fin, kFrameComplete)); | 245 /*exclusive=*/false, fin, kFrameComplete)); |
245 } else { | 246 } else { |
246 EXPECT_CALL(visitor_, | 247 EXPECT_CALL(visitor_, |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 | 333 |
333 TEST_P(QuicHeadersStreamTest, WritePushPromises) { | 334 TEST_P(QuicHeadersStreamTest, WritePushPromises) { |
334 for (QuicStreamId stream_id = kClientDataStreamId1; | 335 for (QuicStreamId stream_id = kClientDataStreamId1; |
335 stream_id < kClientDataStreamId3; stream_id += 2) { | 336 stream_id < kClientDataStreamId3; stream_id += 2) { |
336 QuicStreamId promised_stream_id = NextPromisedStreamId(); | 337 QuicStreamId promised_stream_id = NextPromisedStreamId(); |
337 if (perspective() == Perspective::IS_SERVER) { | 338 if (perspective() == Perspective::IS_SERVER) { |
338 // Write the headers and capture the outgoing data | 339 // Write the headers and capture the outgoing data |
339 EXPECT_CALL(session_, WritevData(headers_stream_, kHeadersStreamId, _, _, | 340 EXPECT_CALL(session_, WritevData(headers_stream_, kHeadersStreamId, _, _, |
340 false, nullptr)) | 341 false, nullptr)) |
341 .WillOnce(WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov))); | 342 .WillOnce(WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov))); |
342 headers_stream_->WritePushPromise(stream_id, promised_stream_id, headers_, | 343 headers_stream_->WritePushPromise(stream_id, promised_stream_id, |
343 nullptr); | 344 headers_.Clone(), nullptr); |
344 | 345 |
345 // Parse the outgoing data and check that it matches was was written. | 346 // Parse the outgoing data and check that it matches was was written. |
346 EXPECT_CALL(visitor_, | 347 EXPECT_CALL(visitor_, |
347 OnPushPromise(stream_id, promised_stream_id, kFrameComplete)); | 348 OnPushPromise(stream_id, promised_stream_id, kFrameComplete)); |
348 headers_handler_.reset(new TestHeadersHandler); | 349 headers_handler_.reset(new TestHeadersHandler); |
349 EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id)) | 350 EXPECT_CALL(visitor_, OnHeaderFrameStart(stream_id)) |
350 .WillOnce(Return(headers_handler_.get())); | 351 .WillOnce(Return(headers_handler_.get())); |
351 EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1); | 352 EXPECT_CALL(visitor_, OnHeaderFrameEnd(stream_id, true)).Times(1); |
352 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); | 353 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); |
353 EXPECT_FALSE(framer_->HasError()) | 354 EXPECT_FALSE(framer_->HasError()) |
354 << SpdyFramer::ErrorCodeToString(framer_->error_code()); | 355 << SpdyFramer::ErrorCodeToString(framer_->error_code()); |
355 CheckHeaders(); | 356 CheckHeaders(); |
356 saved_data_.clear(); | 357 saved_data_.clear(); |
357 } else { | 358 } else { |
358 EXPECT_DFATAL(headers_stream_->WritePushPromise( | 359 EXPECT_DFATAL( |
359 stream_id, promised_stream_id, headers_, nullptr), | 360 headers_stream_->WritePushPromise(stream_id, promised_stream_id, |
360 "Client shouldn't send PUSH_PROMISE"); | 361 headers_.Clone(), nullptr), |
| 362 "Client shouldn't send PUSH_PROMISE"); |
361 } | 363 } |
362 } | 364 } |
363 } | 365 } |
364 | 366 |
365 TEST_P(QuicHeadersStreamTest, ProcessRawData) { | 367 TEST_P(QuicHeadersStreamTest, ProcessRawData) { |
366 for (QuicStreamId stream_id = kClientDataStreamId1; | 368 for (QuicStreamId stream_id = kClientDataStreamId1; |
367 stream_id < kClientDataStreamId3; stream_id += 2) { | 369 stream_id < kClientDataStreamId3; stream_id += 2) { |
368 for (bool fin : {false, true}) { | 370 for (bool fin : {false, true}) { |
369 for (SpdyPriority priority = 0; priority < 7; ++priority) { | 371 for (SpdyPriority priority = 0; priority < 7; ++priority) { |
370 // Replace with "WriteHeadersAndSaveData" | 372 // Replace with "WriteHeadersAndSaveData" |
371 SpdySerializedFrame frame; | 373 SpdySerializedFrame frame; |
372 if (perspective() == Perspective::IS_SERVER) { | 374 if (perspective() == Perspective::IS_SERVER) { |
373 SpdyHeadersIR headers_frame(stream_id, headers_); | 375 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
374 headers_frame.set_fin(fin); | 376 headers_frame.set_fin(fin); |
375 headers_frame.set_has_priority(true); | 377 headers_frame.set_has_priority(true); |
376 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); | 378 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); |
377 frame = framer_->SerializeFrame(headers_frame); | 379 frame = framer_->SerializeFrame(headers_frame); |
378 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); | 380 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); |
379 } else { | 381 } else { |
380 SpdyHeadersIR headers_frame(stream_id, headers_); | 382 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
381 headers_frame.set_fin(fin); | 383 headers_frame.set_fin(fin); |
382 frame = framer_->SerializeFrame(headers_frame); | 384 frame = framer_->SerializeFrame(headers_frame); |
383 } | 385 } |
384 EXPECT_CALL(session_, | 386 EXPECT_CALL(session_, |
385 OnStreamHeaderList(stream_id, fin, frame.size(), _)) | 387 OnStreamHeaderList(stream_id, fin, frame.size(), _)) |
386 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList)); | 388 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList)); |
387 stream_frame_.data_buffer = frame.data(); | 389 stream_frame_.data_buffer = frame.data(); |
388 stream_frame_.data_length = frame.size(); | 390 stream_frame_.data_length = frame.size(); |
389 headers_stream_->OnStreamFrame(stream_frame_); | 391 headers_stream_->OnStreamFrame(stream_frame_); |
390 stream_frame_.offset += frame.size(); | 392 stream_frame_.offset += frame.size(); |
391 CheckHeaders(); | 393 CheckHeaders(); |
392 } | 394 } |
393 } | 395 } |
394 } | 396 } |
395 } | 397 } |
396 | 398 |
397 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) { | 399 TEST_P(QuicHeadersStreamTest, ProcessPushPromise) { |
398 if (perspective() == Perspective::IS_SERVER) | 400 if (perspective() == Perspective::IS_SERVER) |
399 return; | 401 return; |
400 for (QuicStreamId stream_id = kClientDataStreamId1; | 402 for (QuicStreamId stream_id = kClientDataStreamId1; |
401 stream_id < kClientDataStreamId3; stream_id += 2) { | 403 stream_id < kClientDataStreamId3; stream_id += 2) { |
402 QuicStreamId promised_stream_id = NextPromisedStreamId(); | 404 QuicStreamId promised_stream_id = NextPromisedStreamId(); |
403 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id, headers_); | 405 SpdyPushPromiseIR push_promise(stream_id, promised_stream_id, |
| 406 headers_.Clone()); |
404 SpdySerializedFrame frame(framer_->SerializeFrame(push_promise)); | 407 SpdySerializedFrame frame(framer_->SerializeFrame(push_promise)); |
405 if (perspective() == Perspective::IS_SERVER) { | 408 if (perspective() == Perspective::IS_SERVER) { |
406 EXPECT_CALL(*connection_, | 409 EXPECT_CALL(*connection_, |
407 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, | 410 CloseConnection(QUIC_INVALID_HEADERS_STREAM_DATA, |
408 "PUSH_PROMISE not supported.", _)) | 411 "PUSH_PROMISE not supported.", _)) |
409 .WillRepeatedly(InvokeWithoutArgs( | 412 .WillRepeatedly(InvokeWithoutArgs( |
410 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); | 413 this, &QuicHeadersStreamTest::TearDownLocalConnectionState)); |
411 } else { | 414 } else { |
412 EXPECT_CALL(session_, OnPromiseHeaderList(stream_id, promised_stream_id, | 415 EXPECT_CALL(session_, OnPromiseHeaderList(stream_id, promised_stream_id, |
413 frame.size(), _)) | 416 frame.size(), _)) |
(...skipping 15 matching lines...) Expand all Loading... |
429 return; | 432 return; |
430 } | 433 } |
431 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(0); | 434 EXPECT_CALL(session_, OnHeadersHeadOfLineBlocking(_)).Times(0); |
432 testing::InSequence seq; | 435 testing::InSequence seq; |
433 bool fin = true; | 436 bool fin = true; |
434 for (int stream_num = 0; stream_num < 10; stream_num++) { | 437 for (int stream_num = 0; stream_num < 10; stream_num++) { |
435 QuicStreamId stream_id = QuicClientDataStreamId(stream_num); | 438 QuicStreamId stream_id = QuicClientDataStreamId(stream_num); |
436 // Replace with "WriteHeadersAndSaveData" | 439 // Replace with "WriteHeadersAndSaveData" |
437 SpdySerializedFrame frame; | 440 SpdySerializedFrame frame; |
438 if (perspective() == Perspective::IS_SERVER) { | 441 if (perspective() == Perspective::IS_SERVER) { |
439 SpdyHeadersIR headers_frame(stream_id, headers_); | 442 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
440 headers_frame.set_fin(fin); | 443 headers_frame.set_fin(fin); |
441 headers_frame.set_has_priority(true); | 444 headers_frame.set_has_priority(true); |
442 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); | 445 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); |
443 frame = framer_->SerializeFrame(headers_frame); | 446 frame = framer_->SerializeFrame(headers_frame); |
444 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); | 447 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); |
445 } else { | 448 } else { |
446 SpdyHeadersIR headers_frame(stream_id, headers_); | 449 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
447 headers_frame.set_fin(fin); | 450 headers_frame.set_fin(fin); |
448 frame = framer_->SerializeFrame(headers_frame); | 451 frame = framer_->SerializeFrame(headers_frame); |
449 } | 452 } |
450 EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, frame.size(), _)) | 453 EXPECT_CALL(session_, OnStreamHeaderList(stream_id, fin, frame.size(), _)) |
451 .Times(1); | 454 .Times(1); |
452 stream_frame_.data_buffer = frame.data(); | 455 stream_frame_.data_buffer = frame.data(); |
453 stream_frame_.data_length = frame.size(); | 456 stream_frame_.data_length = frame.size(); |
454 headers_stream_->OnStreamFrame(stream_frame_); | 457 headers_stream_->OnStreamFrame(stream_frame_); |
455 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); | 458 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); |
456 stream_frame_.offset += frame.size(); | 459 stream_frame_.offset += frame.size(); |
457 } | 460 } |
458 } | 461 } |
459 | 462 |
460 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) { | 463 TEST_P(QuicHeadersStreamTest, NonEmptyHeaderHOLBlockedTime) { |
461 if (!FLAGS_quic_measure_headers_hol_blocking_time) { | 464 if (!FLAGS_quic_measure_headers_hol_blocking_time) { |
462 return; | 465 return; |
463 } | 466 } |
464 QuicStreamId stream_id; | 467 QuicStreamId stream_id; |
465 bool fin = true; | 468 bool fin = true; |
466 QuicStreamFrame stream_frames[10]; | 469 QuicStreamFrame stream_frames[10]; |
467 SpdySerializedFrame frames[10]; | 470 SpdySerializedFrame frames[10]; |
468 // First create all the frames in order | 471 // First create all the frames in order |
469 { | 472 { |
470 InSequence seq; | 473 InSequence seq; |
471 for (int stream_num = 0; stream_num < 10; ++stream_num) { | 474 for (int stream_num = 0; stream_num < 10; ++stream_num) { |
472 stream_id = QuicClientDataStreamId(stream_num); | 475 stream_id = QuicClientDataStreamId(stream_num); |
473 if (perspective() == Perspective::IS_SERVER) { | 476 if (perspective() == Perspective::IS_SERVER) { |
474 SpdyHeadersIR headers_frame(stream_id, headers_); | 477 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
475 headers_frame.set_fin(fin); | 478 headers_frame.set_fin(fin); |
476 headers_frame.set_has_priority(true); | 479 headers_frame.set_has_priority(true); |
477 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); | 480 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); |
478 frames[stream_num] = framer_->SerializeFrame(headers_frame); | 481 frames[stream_num] = framer_->SerializeFrame(headers_frame); |
479 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)).Times(1); | 482 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)).Times(1); |
480 } else { | 483 } else { |
481 SpdyHeadersIR headers_frame(stream_id, headers_); | 484 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
482 headers_frame.set_fin(fin); | 485 headers_frame.set_fin(fin); |
483 frames[stream_num] = framer_->SerializeFrame(headers_frame); | 486 frames[stream_num] = framer_->SerializeFrame(headers_frame); |
484 } | 487 } |
485 stream_frames[stream_num].stream_id = stream_frame_.stream_id; | 488 stream_frames[stream_num].stream_id = stream_frame_.stream_id; |
486 stream_frames[stream_num].offset = stream_frame_.offset; | 489 stream_frames[stream_num].offset = stream_frame_.offset; |
487 stream_frames[stream_num].data_buffer = frames[stream_num].data(); | 490 stream_frames[stream_num].data_buffer = frames[stream_num].data(); |
488 stream_frames[stream_num].data_length = frames[stream_num].size(); | 491 stream_frames[stream_num].data_length = frames[stream_num].size(); |
489 DVLOG(1) << "make frame for stream " << stream_num << " offset " | 492 DVLOG(1) << "make frame for stream " << stream_num << " offset " |
490 << stream_frames[stream_num].offset; | 493 << stream_frames[stream_num].offset; |
491 stream_frame_.offset += frames[stream_num].size(); | 494 stream_frame_.offset += frames[stream_num].size(); |
(...skipping 19 matching lines...) Expand all Loading... |
511 headers_["key0"] = string(1 << 13, '.'); | 514 headers_["key0"] = string(1 << 13, '.'); |
512 headers_["key1"] = string(1 << 13, '.'); | 515 headers_["key1"] = string(1 << 13, '.'); |
513 headers_["key2"] = string(1 << 13, '.'); | 516 headers_["key2"] = string(1 << 13, '.'); |
514 for (QuicStreamId stream_id = kClientDataStreamId1; | 517 for (QuicStreamId stream_id = kClientDataStreamId1; |
515 stream_id < kClientDataStreamId3; stream_id += 2) { | 518 stream_id < kClientDataStreamId3; stream_id += 2) { |
516 for (bool fin : {false, true}) { | 519 for (bool fin : {false, true}) { |
517 for (SpdyPriority priority = 0; priority < 7; ++priority) { | 520 for (SpdyPriority priority = 0; priority < 7; ++priority) { |
518 // Replace with "WriteHeadersAndSaveData" | 521 // Replace with "WriteHeadersAndSaveData" |
519 SpdySerializedFrame frame; | 522 SpdySerializedFrame frame; |
520 if (perspective() == Perspective::IS_SERVER) { | 523 if (perspective() == Perspective::IS_SERVER) { |
521 SpdyHeadersIR headers_frame(stream_id, headers_); | 524 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
522 headers_frame.set_fin(fin); | 525 headers_frame.set_fin(fin); |
523 headers_frame.set_has_priority(true); | 526 headers_frame.set_has_priority(true); |
524 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); | 527 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); |
525 frame = framer_->SerializeFrame(headers_frame); | 528 frame = framer_->SerializeFrame(headers_frame); |
526 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); | 529 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); |
527 } else { | 530 } else { |
528 SpdyHeadersIR headers_frame(stream_id, headers_); | 531 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
529 headers_frame.set_fin(fin); | 532 headers_frame.set_fin(fin); |
530 frame = framer_->SerializeFrame(headers_frame); | 533 frame = framer_->SerializeFrame(headers_frame); |
531 } | 534 } |
532 EXPECT_CALL(session_, | 535 EXPECT_CALL(session_, |
533 OnStreamHeaderList(stream_id, fin, frame.size(), _)) | 536 OnStreamHeaderList(stream_id, fin, frame.size(), _)) |
534 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList)); | 537 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList)); |
535 stream_frame_.data_buffer = frame.data(); | 538 stream_frame_.data_buffer = frame.data(); |
536 stream_frame_.data_length = frame.size(); | 539 stream_frame_.data_length = frame.size(); |
537 headers_stream_->OnStreamFrame(stream_frame_); | 540 headers_stream_->OnStreamFrame(stream_frame_); |
538 stream_frame_.offset += frame.size(); | 541 stream_frame_.offset += frame.size(); |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 .Times(4); | 719 .Times(4); |
717 } | 720 } |
718 } | 721 } |
719 for (QuicStreamId stream_id = kClientDataStreamId1; | 722 for (QuicStreamId stream_id = kClientDataStreamId1; |
720 stream_id < kClientDataStreamId3; stream_id += 2) { | 723 stream_id < kClientDataStreamId3; stream_id += 2) { |
721 for (bool fin : {false, true}) { | 724 for (bool fin : {false, true}) { |
722 for (SpdyPriority priority = 0; priority < 7; ++priority) { | 725 for (SpdyPriority priority = 0; priority < 7; ++priority) { |
723 // Replace with "WriteHeadersAndSaveData" | 726 // Replace with "WriteHeadersAndSaveData" |
724 SpdySerializedFrame frame; | 727 SpdySerializedFrame frame; |
725 if (perspective() == Perspective::IS_SERVER) { | 728 if (perspective() == Perspective::IS_SERVER) { |
726 SpdyHeadersIR headers_frame(stream_id, headers_); | 729 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
727 headers_frame.set_fin(fin); | 730 headers_frame.set_fin(fin); |
728 headers_frame.set_has_priority(true); | 731 headers_frame.set_has_priority(true); |
729 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); | 732 headers_frame.set_weight(Spdy3PriorityToHttp2Weight(0)); |
730 frame = framer_->SerializeFrame(headers_frame); | 733 frame = framer_->SerializeFrame(headers_frame); |
731 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); | 734 EXPECT_CALL(session_, OnStreamHeadersPriority(stream_id, 0)); |
732 } else { | 735 } else { |
733 SpdyHeadersIR headers_frame(stream_id, headers_); | 736 SpdyHeadersIR headers_frame(stream_id, headers_.Clone()); |
734 headers_frame.set_fin(fin); | 737 headers_frame.set_fin(fin); |
735 frame = framer_->SerializeFrame(headers_frame); | 738 frame = framer_->SerializeFrame(headers_frame); |
736 } | 739 } |
737 EXPECT_CALL(session_, | 740 EXPECT_CALL(session_, |
738 OnStreamHeaderList(stream_id, fin, frame.size(), _)) | 741 OnStreamHeaderList(stream_id, fin, frame.size(), _)) |
739 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList)); | 742 .WillOnce(Invoke(this, &QuicHeadersStreamTest::SaveHeaderList)); |
740 stream_frame_.data_buffer = frame.data(); | 743 stream_frame_.data_buffer = frame.data(); |
741 stream_frame_.data_length = frame.size(); | 744 stream_frame_.data_length = frame.size(); |
742 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); | 745 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); |
743 headers_stream_->OnStreamFrame(stream_frame_); | 746 headers_stream_->OnStreamFrame(stream_frame_); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
780 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); | 783 connection_->AdvanceTime(QuicTime::Delta::FromMilliseconds(1)); |
781 } | 784 } |
782 } | 785 } |
783 } | 786 } |
784 } | 787 } |
785 } | 788 } |
786 | 789 |
787 } // namespace | 790 } // namespace |
788 } // namespace test | 791 } // namespace test |
789 } // namespace net | 792 } // namespace net |
OLD | NEW |