OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_http_stream.h" | 5 #include "net/quic/quic_http_stream.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "net/base/chunked_upload_data_stream.h" | 9 #include "net/base/chunked_upload_data_stream.h" |
10 #include "net/base/elements_upload_data_stream.h" | 10 #include "net/base/elements_upload_data_stream.h" |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 QuicConnectionPeer::SetSendAlgorithm(this, send_algorithm); | 75 QuicConnectionPeer::SetSendAlgorithm(this, send_algorithm); |
76 } | 76 } |
77 | 77 |
78 void SetReceiveAlgorithm(ReceiveAlgorithmInterface* receive_algorithm) { | 78 void SetReceiveAlgorithm(ReceiveAlgorithmInterface* receive_algorithm) { |
79 QuicConnectionPeer::SetReceiveAlgorithm(this, receive_algorithm); | 79 QuicConnectionPeer::SetReceiveAlgorithm(this, receive_algorithm); |
80 } | 80 } |
81 }; | 81 }; |
82 | 82 |
83 class TestReceiveAlgorithm : public ReceiveAlgorithmInterface { | 83 class TestReceiveAlgorithm : public ReceiveAlgorithmInterface { |
84 public: | 84 public: |
85 virtual bool GenerateCongestionFeedback( | |
86 QuicCongestionFeedbackFrame* /*congestion_feedback*/) { | |
87 return false; | |
88 } | |
89 | |
90 MOCK_METHOD3(RecordIncomingPacket, | 85 MOCK_METHOD3(RecordIncomingPacket, |
91 void(QuicByteCount, QuicPacketSequenceNumber, QuicTime)); | 86 void(QuicByteCount, QuicPacketSequenceNumber, QuicTime)); |
92 }; | 87 }; |
93 | 88 |
94 // Subclass of QuicHttpStream that closes itself when the first piece of data | 89 // Subclass of QuicHttpStream that closes itself when the first piece of data |
95 // is received. | 90 // is received. |
96 class AutoClosingStream : public QuicHttpStream { | 91 class AutoClosingStream : public QuicHttpStream { |
97 public: | 92 public: |
98 explicit AutoClosingStream(const base::WeakPtr<QuicClientSession>& session) | 93 explicit AutoClosingStream(const base::WeakPtr<QuicClientSession>& session) |
99 : QuicHttpStream(session) { | 94 : QuicHttpStream(session) { |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 response_headers_ = maker_.GetResponseHeaders(status); | 253 response_headers_ = maker_.GetResponseHeaders(status); |
259 response_data_ = body; | 254 response_data_ = body; |
260 } | 255 } |
261 | 256 |
262 scoped_ptr<QuicEncryptedPacket> ConstructDataPacket( | 257 scoped_ptr<QuicEncryptedPacket> ConstructDataPacket( |
263 QuicPacketSequenceNumber sequence_number, | 258 QuicPacketSequenceNumber sequence_number, |
264 bool should_include_version, | 259 bool should_include_version, |
265 bool fin, | 260 bool fin, |
266 QuicStreamOffset offset, | 261 QuicStreamOffset offset, |
267 base::StringPiece data) { | 262 base::StringPiece data) { |
268 return maker_.MakeDataPacket( | 263 return maker_.MakeDataPacket(sequence_number, stream_id_, |
269 sequence_number, stream_id_, should_include_version, fin, offset, data); | 264 should_include_version, fin, offset, data); |
270 } | 265 } |
271 | 266 |
272 scoped_ptr<QuicEncryptedPacket> ConstructRequestHeadersPacket( | 267 scoped_ptr<QuicEncryptedPacket> ConstructRequestHeadersPacket( |
273 QuicPacketSequenceNumber sequence_number, | 268 QuicPacketSequenceNumber sequence_number, |
274 bool fin) { | 269 bool fin, |
275 return maker_.MakeRequestHeadersPacket( | 270 RequestPriority request_priority) { |
276 sequence_number, stream_id_, kIncludeVersion, fin, request_headers_); | 271 QuicPriority priority = |
| 272 ConvertRequestPriorityToQuicPriority(request_priority); |
| 273 return maker_.MakeRequestHeadersPacket(sequence_number, stream_id_, |
| 274 kIncludeVersion, fin, priority, |
| 275 request_headers_); |
277 } | 276 } |
278 | 277 |
279 scoped_ptr<QuicEncryptedPacket> ConstructResponseHeadersPacket( | 278 scoped_ptr<QuicEncryptedPacket> ConstructResponseHeadersPacket( |
280 QuicPacketSequenceNumber sequence_number, | 279 QuicPacketSequenceNumber sequence_number, |
281 bool fin) { | 280 bool fin) { |
282 return maker_.MakeResponseHeadersPacket( | 281 return maker_.MakeResponseHeadersPacket( |
283 sequence_number, stream_id_, !kIncludeVersion, fin, response_headers_); | 282 sequence_number, stream_id_, !kIncludeVersion, fin, response_headers_); |
284 } | 283 } |
285 | 284 |
286 scoped_ptr<QuicEncryptedPacket> ConstructRstStreamPacket( | 285 scoped_ptr<QuicEncryptedPacket> ConstructRstStreamPacket( |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 EXPECT_TRUE(stream_->CanFindEndOfResponse()); | 353 EXPECT_TRUE(stream_->CanFindEndOfResponse()); |
355 } | 354 } |
356 | 355 |
357 TEST_P(QuicHttpStreamTest, IsConnectionReusable) { | 356 TEST_P(QuicHttpStreamTest, IsConnectionReusable) { |
358 Initialize(); | 357 Initialize(); |
359 EXPECT_FALSE(stream_->IsConnectionReusable()); | 358 EXPECT_FALSE(stream_->IsConnectionReusable()); |
360 } | 359 } |
361 | 360 |
362 TEST_P(QuicHttpStreamTest, GetRequest) { | 361 TEST_P(QuicHttpStreamTest, GetRequest) { |
363 SetRequest("GET", "/", DEFAULT_PRIORITY); | 362 SetRequest("GET", "/", DEFAULT_PRIORITY); |
364 AddWrite(ConstructRequestHeadersPacket(1, kFin)); | 363 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
365 Initialize(); | 364 Initialize(); |
366 | 365 |
367 request_.method = "GET"; | 366 request_.method = "GET"; |
368 request_.url = GURL("http://www.google.com/"); | 367 request_.url = GURL("http://www.google.com/"); |
369 | 368 |
370 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 369 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
371 net_log_, callback_.callback())); | 370 net_log_, callback_.callback())); |
372 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, | 371 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, |
373 callback_.callback())); | 372 callback_.callback())); |
374 | 373 |
(...skipping 18 matching lines...) Expand all Loading... |
393 EXPECT_EQ(0, stream_->ReadResponseBody(read_buffer_.get(), | 392 EXPECT_EQ(0, stream_->ReadResponseBody(read_buffer_.get(), |
394 read_buffer_->size(), | 393 read_buffer_->size(), |
395 callback_.callback())); | 394 callback_.callback())); |
396 EXPECT_TRUE(stream_->IsResponseBodyComplete()); | 395 EXPECT_TRUE(stream_->IsResponseBodyComplete()); |
397 EXPECT_TRUE(AtEof()); | 396 EXPECT_TRUE(AtEof()); |
398 } | 397 } |
399 | 398 |
400 // Regression test for http://crbug.com/288128 | 399 // Regression test for http://crbug.com/288128 |
401 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { | 400 TEST_P(QuicHttpStreamTest, GetRequestLargeResponse) { |
402 SetRequest("GET", "/", DEFAULT_PRIORITY); | 401 SetRequest("GET", "/", DEFAULT_PRIORITY); |
403 AddWrite(ConstructRequestHeadersPacket(1, kFin)); | 402 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
404 Initialize(); | 403 Initialize(); |
405 | 404 |
406 request_.method = "GET"; | 405 request_.method = "GET"; |
407 request_.url = GURL("http://www.google.com/"); | 406 request_.url = GURL("http://www.google.com/"); |
408 | 407 |
409 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 408 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
410 net_log_, callback_.callback())); | 409 net_log_, callback_.callback())); |
411 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, | 410 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, |
412 callback_.callback())); | 411 callback_.callback())); |
413 | 412 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 455 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
457 | 456 |
458 EXPECT_EQ(ERR_CONNECTION_CLOSED, | 457 EXPECT_EQ(ERR_CONNECTION_CLOSED, |
459 stream_->SendRequest(headers_, &response_, | 458 stream_->SendRequest(headers_, &response_, |
460 callback_.callback())); | 459 callback_.callback())); |
461 } | 460 } |
462 | 461 |
463 // Regression test for http://crbug.com/409871 | 462 // Regression test for http://crbug.com/409871 |
464 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { | 463 TEST_P(QuicHttpStreamTest, SessionClosedBeforeReadResponseHeaders) { |
465 SetRequest("GET", "/", DEFAULT_PRIORITY); | 464 SetRequest("GET", "/", DEFAULT_PRIORITY); |
466 AddWrite(ConstructRequestHeadersPacket(1, kFin)); | 465 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
467 Initialize(); | 466 Initialize(); |
468 | 467 |
469 request_.method = "GET"; | 468 request_.method = "GET"; |
470 request_.url = GURL("http://www.google.com/"); | 469 request_.url = GURL("http://www.google.com/"); |
471 | 470 |
472 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 471 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
473 net_log_, callback_.callback())); | 472 net_log_, callback_.callback())); |
474 | 473 |
475 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, | 474 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, |
476 callback_.callback())); | 475 callback_.callback())); |
477 | 476 |
478 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); | 477 session_->connection()->CloseConnection(QUIC_NO_ERROR, true); |
479 | 478 |
480 EXPECT_NE(OK, stream_->ReadResponseHeaders(callback_.callback())); | 479 EXPECT_NE(OK, stream_->ReadResponseHeaders(callback_.callback())); |
481 } | 480 } |
482 | 481 |
483 TEST_P(QuicHttpStreamTest, SendPostRequest) { | 482 TEST_P(QuicHttpStreamTest, SendPostRequest) { |
484 SetRequest("POST", "/", DEFAULT_PRIORITY); | 483 SetRequest("POST", "/", DEFAULT_PRIORITY); |
485 AddWrite(ConstructRequestHeadersPacket(1, !kFin)); | 484 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
486 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); | 485 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, kUploadData)); |
487 AddWrite(ConstructAckPacket(3, 3, 1)); | 486 AddWrite(ConstructAckPacket(3, 3, 1)); |
488 | 487 |
489 Initialize(); | 488 Initialize(); |
490 | 489 |
491 ScopedVector<UploadElementReader> element_readers; | 490 ScopedVector<UploadElementReader> element_readers; |
492 element_readers.push_back( | 491 element_readers.push_back( |
493 new UploadBytesElementReader(kUploadData, strlen(kUploadData))); | 492 new UploadBytesElementReader(kUploadData, strlen(kUploadData))); |
494 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); | 493 ElementsUploadDataStream upload_data_stream(element_readers.Pass(), 0); |
495 request_.method = "POST"; | 494 request_.method = "POST"; |
(...skipping 27 matching lines...) Expand all Loading... |
523 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), | 522 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), |
524 callback_.callback())); | 523 callback_.callback())); |
525 | 524 |
526 EXPECT_TRUE(stream_->IsResponseBodyComplete()); | 525 EXPECT_TRUE(stream_->IsResponseBodyComplete()); |
527 EXPECT_TRUE(AtEof()); | 526 EXPECT_TRUE(AtEof()); |
528 } | 527 } |
529 | 528 |
530 TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { | 529 TEST_P(QuicHttpStreamTest, SendChunkedPostRequest) { |
531 SetRequest("POST", "/", DEFAULT_PRIORITY); | 530 SetRequest("POST", "/", DEFAULT_PRIORITY); |
532 size_t chunk_size = strlen(kUploadData); | 531 size_t chunk_size = strlen(kUploadData); |
533 AddWrite(ConstructRequestHeadersPacket(1, !kFin)); | 532 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
534 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); | 533 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
535 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, | 534 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, |
536 kUploadData)); | 535 kUploadData)); |
537 AddWrite(ConstructAckPacket(4, 3, 1)); | 536 AddWrite(ConstructAckPacket(4, 3, 1)); |
538 Initialize(); | 537 Initialize(); |
539 | 538 |
540 ChunkedUploadDataStream upload_data_stream(0); | 539 ChunkedUploadDataStream upload_data_stream(0); |
541 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 540 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
542 | 541 |
543 request_.method = "POST"; | 542 request_.method = "POST"; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
576 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), | 575 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), |
577 callback_.callback())); | 576 callback_.callback())); |
578 | 577 |
579 EXPECT_TRUE(stream_->IsResponseBodyComplete()); | 578 EXPECT_TRUE(stream_->IsResponseBodyComplete()); |
580 EXPECT_TRUE(AtEof()); | 579 EXPECT_TRUE(AtEof()); |
581 } | 580 } |
582 | 581 |
583 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { | 582 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithFinalEmptyDataPacket) { |
584 SetRequest("POST", "/", DEFAULT_PRIORITY); | 583 SetRequest("POST", "/", DEFAULT_PRIORITY); |
585 size_t chunk_size = strlen(kUploadData); | 584 size_t chunk_size = strlen(kUploadData); |
586 AddWrite(ConstructRequestHeadersPacket(1, !kFin)); | 585 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
587 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); | 586 AddWrite(ConstructDataPacket(2, kIncludeVersion, !kFin, 0, kUploadData)); |
588 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, "")); | 587 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, chunk_size, "")); |
589 AddWrite(ConstructAckPacket(4, 3, 1)); | 588 AddWrite(ConstructAckPacket(4, 3, 1)); |
590 Initialize(); | 589 Initialize(); |
591 | 590 |
592 ChunkedUploadDataStream upload_data_stream(0); | 591 ChunkedUploadDataStream upload_data_stream(0); |
593 upload_data_stream.AppendData(kUploadData, chunk_size, false); | 592 upload_data_stream.AppendData(kUploadData, chunk_size, false); |
594 | 593 |
595 request_.method = "POST"; | 594 request_.method = "POST"; |
596 request_.url = GURL("http://www.google.com/"); | 595 request_.url = GURL("http://www.google.com/"); |
(...skipping 29 matching lines...) Expand all Loading... |
626 ASSERT_EQ(static_cast<int>(strlen(kResponseBody)), | 625 ASSERT_EQ(static_cast<int>(strlen(kResponseBody)), |
627 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), | 626 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), |
628 callback_.callback())); | 627 callback_.callback())); |
629 | 628 |
630 EXPECT_TRUE(stream_->IsResponseBodyComplete()); | 629 EXPECT_TRUE(stream_->IsResponseBodyComplete()); |
631 EXPECT_TRUE(AtEof()); | 630 EXPECT_TRUE(AtEof()); |
632 } | 631 } |
633 | 632 |
634 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { | 633 TEST_P(QuicHttpStreamTest, SendChunkedPostRequestWithOneEmptyDataPacket) { |
635 SetRequest("POST", "/", DEFAULT_PRIORITY); | 634 SetRequest("POST", "/", DEFAULT_PRIORITY); |
636 AddWrite(ConstructRequestHeadersPacket(1, !kFin)); | 635 AddWrite(ConstructRequestHeadersPacket(1, !kFin, DEFAULT_PRIORITY)); |
637 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, "")); | 636 AddWrite(ConstructDataPacket(2, kIncludeVersion, kFin, 0, "")); |
638 AddWrite(ConstructAckPacket(3, 3, 1)); | 637 AddWrite(ConstructAckPacket(3, 3, 1)); |
639 Initialize(); | 638 Initialize(); |
640 | 639 |
641 ChunkedUploadDataStream upload_data_stream(0); | 640 ChunkedUploadDataStream upload_data_stream(0); |
642 | 641 |
643 request_.method = "POST"; | 642 request_.method = "POST"; |
644 request_.url = GURL("http://www.google.com/"); | 643 request_.url = GURL("http://www.google.com/"); |
645 request_.upload_data_stream = &upload_data_stream; | 644 request_.upload_data_stream = &upload_data_stream; |
646 ASSERT_EQ(OK, request_.upload_data_stream->Init( | 645 ASSERT_EQ(OK, request_.upload_data_stream->Init( |
(...skipping 27 matching lines...) Expand all Loading... |
674 ASSERT_EQ(static_cast<int>(strlen(kResponseBody)), | 673 ASSERT_EQ(static_cast<int>(strlen(kResponseBody)), |
675 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), | 674 stream_->ReadResponseBody(read_buffer_.get(), read_buffer_->size(), |
676 callback_.callback())); | 675 callback_.callback())); |
677 | 676 |
678 EXPECT_TRUE(stream_->IsResponseBodyComplete()); | 677 EXPECT_TRUE(stream_->IsResponseBodyComplete()); |
679 EXPECT_TRUE(AtEof()); | 678 EXPECT_TRUE(AtEof()); |
680 } | 679 } |
681 | 680 |
682 TEST_P(QuicHttpStreamTest, DestroyedEarly) { | 681 TEST_P(QuicHttpStreamTest, DestroyedEarly) { |
683 SetRequest("GET", "/", DEFAULT_PRIORITY); | 682 SetRequest("GET", "/", DEFAULT_PRIORITY); |
684 AddWrite(ConstructRequestHeadersPacket(1, kFin)); | 683 AddWrite(ConstructRequestHeadersPacket(1, kFin, DEFAULT_PRIORITY)); |
685 AddWrite(ConstructAckAndRstStreamPacket(2)); | 684 AddWrite(ConstructAckAndRstStreamPacket(2)); |
686 use_closing_stream_ = true; | 685 use_closing_stream_ = true; |
687 Initialize(); | 686 Initialize(); |
688 | 687 |
689 request_.method = "GET"; | 688 request_.method = "GET"; |
690 request_.url = GURL("http://www.google.com/"); | 689 request_.url = GURL("http://www.google.com/"); |
691 | 690 |
692 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, | 691 EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, |
693 net_log_, callback_.callback())); | 692 net_log_, callback_.callback())); |
694 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, | 693 EXPECT_EQ(OK, stream_->SendRequest(headers_, &response_, |
695 callback_.callback())); | 694 callback_.callback())); |
696 | 695 |
697 // Ack the request. | 696 // Ack the request. |
698 ProcessPacket(ConstructAckPacket(1, 0, 0)); | 697 ProcessPacket(ConstructAckPacket(1, 0, 0)); |
699 EXPECT_EQ(ERR_IO_PENDING, | 698 EXPECT_EQ(ERR_IO_PENDING, |
700 stream_->ReadResponseHeaders(callback_.callback())); | 699 stream_->ReadResponseHeaders(callback_.callback())); |
701 | 700 |
702 // Send the response with a body. | 701 // Send the response with a body. |
703 SetResponse("404 OK", "hello world!"); | 702 SetResponse("404 OK", "hello world!"); |
704 // In the course of processing this packet, the QuicHttpStream close itself. | 703 // In the course of processing this packet, the QuicHttpStream close itself. |
705 ProcessPacket(ConstructResponseHeadersPacket(2, kFin)); | 704 ProcessPacket(ConstructResponseHeadersPacket(2, kFin)); |
706 | 705 |
707 EXPECT_TRUE(AtEof()); | 706 EXPECT_TRUE(AtEof()); |
708 } | 707 } |
709 | 708 |
710 TEST_P(QuicHttpStreamTest, Priority) { | 709 TEST_P(QuicHttpStreamTest, Priority) { |
711 SetRequest("GET", "/", MEDIUM); | 710 SetRequest("GET", "/", MEDIUM); |
712 AddWrite(ConstructRequestHeadersPacket(1, kFin)); | 711 AddWrite(ConstructRequestHeadersPacket(1, kFin, MEDIUM)); |
713 AddWrite(ConstructAckAndRstStreamPacket(2)); | 712 AddWrite(ConstructAckAndRstStreamPacket(2)); |
714 use_closing_stream_ = true; | 713 use_closing_stream_ = true; |
715 Initialize(); | 714 Initialize(); |
716 | 715 |
717 request_.method = "GET"; | 716 request_.method = "GET"; |
718 request_.url = GURL("http://www.google.com/"); | 717 request_.url = GURL("http://www.google.com/"); |
719 | 718 |
720 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, | 719 EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, |
721 net_log_, callback_.callback())); | 720 net_log_, callback_.callback())); |
722 | 721 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 // Set Delegate to nullptr and make sure EffectivePriority returns highest | 773 // Set Delegate to nullptr and make sure EffectivePriority returns highest |
775 // priority. | 774 // priority. |
776 reliable_stream->SetDelegate(nullptr); | 775 reliable_stream->SetDelegate(nullptr); |
777 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, | 776 DCHECK_EQ(QuicWriteBlockedList::kHighestPriority, |
778 reliable_stream->EffectivePriority()); | 777 reliable_stream->EffectivePriority()); |
779 reliable_stream->SetDelegate(delegate); | 778 reliable_stream->SetDelegate(delegate); |
780 } | 779 } |
781 | 780 |
782 } // namespace test | 781 } // namespace test |
783 } // namespace net | 782 } // namespace net |
OLD | NEW |