Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(361)

Side by Side Diff: net/spdy/spdy_session_unittest.cc

Issue 2096713002: Reduce SpdyHeaderBlock copies with move semantics. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clear() does not work after all. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/spdy/spdy_session_pool_unittest.cc ('k') | net/spdy/spdy_stream_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/spdy/spdy_session.h" 5 #include "net/spdy/spdy_session.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 390 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
391 test::StreamDelegateDoNothing delegate1(spdy_stream1); 391 test::StreamDelegateDoNothing delegate1(spdy_stream1);
392 spdy_stream1->SetDelegate(&delegate1); 392 spdy_stream1->SetDelegate(&delegate1);
393 393
394 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously( 394 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously(
395 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 395 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
396 test::StreamDelegateDoNothing delegate2(spdy_stream2); 396 test::StreamDelegateDoNothing delegate2(spdy_stream2);
397 spdy_stream2->SetDelegate(&delegate2); 397 spdy_stream2->SetDelegate(&delegate2);
398 398
399 std::unique_ptr<SpdyHeaderBlock> headers( 399 std::unique_ptr<SpdyHeaderBlock> headers(
400 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 400 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
401 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(*headers)); 401 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(*headers));
402 402
403 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 403 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
404 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 404 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
405 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 405 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
406 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 406 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
407 407
408 base::RunLoop().RunUntilIdle(); 408 base::RunLoop().RunUntilIdle();
409 409
410 EXPECT_EQ(1u, spdy_stream1->stream_id()); 410 EXPECT_EQ(1u, spdy_stream1->stream_id());
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 CreateNetworkSession(); 456 CreateNetworkSession();
457 CreateInsecureSpdySession(); 457 CreateInsecureSpdySession();
458 458
459 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); 459 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion());
460 460
461 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( 461 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously(
462 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 462 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
463 test::StreamDelegateDoNothing delegate1(spdy_stream1); 463 test::StreamDelegateDoNothing delegate1(spdy_stream1);
464 spdy_stream1->SetDelegate(&delegate1); 464 spdy_stream1->SetDelegate(&delegate1);
465 std::unique_ptr<SpdyHeaderBlock> headers1( 465 std::unique_ptr<SpdyHeaderBlock> headers1(
466 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 466 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
467 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); 467 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND);
468 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 468 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
469 469
470 EXPECT_EQ(0u, spdy_stream1->stream_id()); 470 EXPECT_EQ(0u, spdy_stream1->stream_id());
471 471
472 // Active stream 1. 472 // Active stream 1.
473 base::RunLoop().RunUntilIdle(); 473 base::RunLoop().RunUntilIdle();
474 EXPECT_EQ(1u, spdy_stream1->stream_id()); 474 EXPECT_EQ(1u, spdy_stream1->stream_id());
475 EXPECT_TRUE(session_->IsStreamActive(1)); 475 EXPECT_TRUE(session_->IsStreamActive(1));
476 476
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 529 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
530 test::StreamDelegateDoNothing delegate1(spdy_stream1); 530 test::StreamDelegateDoNothing delegate1(spdy_stream1);
531 spdy_stream1->SetDelegate(&delegate1); 531 spdy_stream1->SetDelegate(&delegate1);
532 532
533 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously( 533 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously(
534 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 534 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
535 test::StreamDelegateDoNothing delegate2(spdy_stream2); 535 test::StreamDelegateDoNothing delegate2(spdy_stream2);
536 spdy_stream2->SetDelegate(&delegate2); 536 spdy_stream2->SetDelegate(&delegate2);
537 537
538 std::unique_ptr<SpdyHeaderBlock> headers( 538 std::unique_ptr<SpdyHeaderBlock> headers(
539 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 539 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
540 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(*headers)); 540 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(*headers));
541 541
542 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 542 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
543 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 543 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
544 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 544 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
545 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 545 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
546 546
547 base::RunLoop().RunUntilIdle(); 547 base::RunLoop().RunUntilIdle();
548 548
549 EXPECT_EQ(1u, spdy_stream1->stream_id()); 549 EXPECT_EQ(1u, spdy_stream1->stream_id());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 603 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
604 test::StreamDelegateDoNothing delegate1(spdy_stream1); 604 test::StreamDelegateDoNothing delegate1(spdy_stream1);
605 spdy_stream1->SetDelegate(&delegate1); 605 spdy_stream1->SetDelegate(&delegate1);
606 606
607 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously( 607 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously(
608 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 608 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
609 test::StreamDelegateDoNothing delegate2(spdy_stream2); 609 test::StreamDelegateDoNothing delegate2(spdy_stream2);
610 spdy_stream2->SetDelegate(&delegate2); 610 spdy_stream2->SetDelegate(&delegate2);
611 611
612 std::unique_ptr<SpdyHeaderBlock> headers( 612 std::unique_ptr<SpdyHeaderBlock> headers(
613 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 613 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
614 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(*headers)); 614 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(*headers));
615 615
616 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 616 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
617 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 617 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
618 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 618 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
619 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 619 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
620 620
621 base::RunLoop().RunUntilIdle(); 621 base::RunLoop().RunUntilIdle();
622 622
623 EXPECT_EQ(1u, spdy_stream1->stream_id()); 623 EXPECT_EQ(1u, spdy_stream1->stream_id());
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 688
689 CreateNetworkSession(); 689 CreateNetworkSession();
690 CreateInsecureSpdySession(); 690 CreateInsecureSpdySession();
691 691
692 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 692 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
693 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 693 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
694 test::StreamDelegateDoNothing delegate(spdy_stream); 694 test::StreamDelegateDoNothing delegate(spdy_stream);
695 spdy_stream->SetDelegate(&delegate); 695 spdy_stream->SetDelegate(&delegate);
696 696
697 std::unique_ptr<SpdyHeaderBlock> headers( 697 std::unique_ptr<SpdyHeaderBlock> headers(
698 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 698 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
699 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 699 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
700 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 700 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
701 701
702 base::RunLoop().RunUntilIdle(); 702 base::RunLoop().RunUntilIdle();
703 703
704 // Stream and session closed gracefully. 704 // Stream and session closed gracefully.
705 EXPECT_TRUE(delegate.StreamIsClosed()); 705 EXPECT_TRUE(delegate.StreamIsClosed());
706 EXPECT_EQ(OK, delegate.WaitForClose()); 706 EXPECT_EQ(OK, delegate.WaitForClose());
707 EXPECT_EQ(kUploadData, delegate.TakeReceivedData()); 707 EXPECT_EQ(kUploadData, delegate.TakeReceivedData());
708 EXPECT_FALSE(session_); 708 EXPECT_FALSE(session_);
(...skipping 24 matching lines...) Expand all
733 CreateInsecureSpdySession(); 733 CreateInsecureSpdySession();
734 734
735 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); 735 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion());
736 736
737 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 737 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
738 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 738 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
739 test::StreamDelegateDoNothing delegate(spdy_stream); 739 test::StreamDelegateDoNothing delegate(spdy_stream);
740 spdy_stream->SetDelegate(&delegate); 740 spdy_stream->SetDelegate(&delegate);
741 741
742 std::unique_ptr<SpdyHeaderBlock> headers( 742 std::unique_ptr<SpdyHeaderBlock> headers(
743 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 743 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
744 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 744 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
745 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 745 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
746 746
747 base::RunLoop().RunUntilIdle(); 747 base::RunLoop().RunUntilIdle();
748 748
749 EXPECT_EQ(1u, spdy_stream->stream_id()); 749 EXPECT_EQ(1u, spdy_stream->stream_id());
750 750
751 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 751 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
752 752
753 // Read and process the GOAWAY frame. 753 // Read and process the GOAWAY frame.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 CreateInsecureSpdySession(); 797 CreateInsecureSpdySession();
798 798
799 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); 799 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion());
800 800
801 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 801 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
802 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 802 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
803 test::StreamDelegateDoNothing delegate(spdy_stream); 803 test::StreamDelegateDoNothing delegate(spdy_stream);
804 spdy_stream->SetDelegate(&delegate); 804 spdy_stream->SetDelegate(&delegate);
805 805
806 std::unique_ptr<SpdyHeaderBlock> headers( 806 std::unique_ptr<SpdyHeaderBlock> headers(
807 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 807 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
808 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 808 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
809 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 809 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
810 810
811 base::RunLoop().RunUntilIdle(); 811 base::RunLoop().RunUntilIdle();
812 812
813 EXPECT_EQ(1u, spdy_stream->stream_id()); 813 EXPECT_EQ(1u, spdy_stream->stream_id());
814 814
815 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 815 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
816 816
817 // Read and process the GOAWAY frame. 817 // Read and process the GOAWAY frame.
(...skipping 30 matching lines...) Expand all
848 CreateInsecureSpdySession(); 848 CreateInsecureSpdySession();
849 849
850 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion()); 850 EXPECT_EQ(spdy_util_.spdy_version(), session_->GetProtocolVersion());
851 851
852 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 852 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
853 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 853 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
854 test::StreamDelegateDoNothing delegate(spdy_stream); 854 test::StreamDelegateDoNothing delegate(spdy_stream);
855 spdy_stream->SetDelegate(&delegate); 855 spdy_stream->SetDelegate(&delegate);
856 856
857 std::unique_ptr<SpdyHeaderBlock> headers( 857 std::unique_ptr<SpdyHeaderBlock> headers(
858 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 858 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
859 859
860 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 860 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
861 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 861 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
862 862
863 base::RunLoop().RunUntilIdle(); 863 base::RunLoop().RunUntilIdle();
864 864
865 EXPECT_EQ(1u, spdy_stream->stream_id()); 865 EXPECT_EQ(1u, spdy_stream->stream_id());
866 866
867 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 867 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
868 868
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1009 1009
1010 CreateNetworkSession(); 1010 CreateNetworkSession();
1011 CreateInsecureSpdySession(); 1011 CreateInsecureSpdySession();
1012 1012
1013 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 1013 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
1014 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog()); 1014 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog());
1015 test::StreamDelegateDoNothing delegate(spdy_stream); 1015 test::StreamDelegateDoNothing delegate(spdy_stream);
1016 spdy_stream->SetDelegate(&delegate); 1016 spdy_stream->SetDelegate(&delegate);
1017 1017
1018 std::unique_ptr<SpdyHeaderBlock> headers( 1018 std::unique_ptr<SpdyHeaderBlock> headers(
1019 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 1019 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
1020 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 1020 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
1021 1021
1022 // Shift time so that a ping will be sent out. 1022 // Shift time so that a ping will be sent out.
1023 g_time_delta = base::TimeDelta::FromSeconds(11); 1023 g_time_delta = base::TimeDelta::FromSeconds(11);
1024 1024
1025 base::RunLoop().RunUntilIdle(); 1025 base::RunLoop().RunUntilIdle();
1026 session_->CloseSessionOnError(ERR_ABORTED, "Aborting"); 1026 session_->CloseSessionOnError(ERR_ABORTED, "Aborting");
1027 1027
1028 data.Resume(); 1028 data.Resume();
1029 base::RunLoop().RunUntilIdle(); 1029 base::RunLoop().RunUntilIdle();
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 MEDIUM, BoundNetLog(), callback4.callback())); 1104 MEDIUM, BoundNetLog(), callback4.callback()));
1105 1105
1106 // Streams 1-3 were created. 4th is stalled. No streams are active yet. 1106 // Streams 1-3 were created. 4th is stalled. No streams are active yet.
1107 EXPECT_EQ(0u, session_->num_active_streams()); 1107 EXPECT_EQ(0u, session_->num_active_streams());
1108 EXPECT_EQ(3u, session_->num_created_streams()); 1108 EXPECT_EQ(3u, session_->num_created_streams());
1109 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(MEDIUM)); 1109 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(MEDIUM));
1110 1110
1111 // Activate stream 1. One ID remains available. 1111 // Activate stream 1. One ID remains available.
1112 stream1->SendRequestHeaders( 1112 stream1->SendRequestHeaders(
1113 std::unique_ptr<SpdyHeaderBlock>( 1113 std::unique_ptr<SpdyHeaderBlock>(
1114 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)), 1114 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL))),
1115 NO_MORE_DATA_TO_SEND); 1115 NO_MORE_DATA_TO_SEND);
1116 base::RunLoop().RunUntilIdle(); 1116 base::RunLoop().RunUntilIdle();
1117 1117
1118 EXPECT_EQ(kLastStreamId - 2u, stream1->stream_id()); 1118 EXPECT_EQ(kLastStreamId - 2u, stream1->stream_id());
1119 EXPECT_EQ(1u, session_->num_active_streams()); 1119 EXPECT_EQ(1u, session_->num_active_streams());
1120 EXPECT_EQ(2u, session_->num_created_streams()); 1120 EXPECT_EQ(2u, session_->num_created_streams());
1121 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(MEDIUM)); 1121 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(MEDIUM));
1122 1122
1123 // Activate stream 2. ID space is exhausted. 1123 // Activate stream 2. ID space is exhausted.
1124 stream2->SendRequestHeaders( 1124 stream2->SendRequestHeaders(
1125 std::unique_ptr<SpdyHeaderBlock>( 1125 std::unique_ptr<SpdyHeaderBlock>(
1126 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)), 1126 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL))),
1127 NO_MORE_DATA_TO_SEND); 1127 NO_MORE_DATA_TO_SEND);
1128 base::RunLoop().RunUntilIdle(); 1128 base::RunLoop().RunUntilIdle();
1129 1129
1130 // Active streams remain active. 1130 // Active streams remain active.
1131 EXPECT_EQ(kLastStreamId, stream2->stream_id()); 1131 EXPECT_EQ(kLastStreamId, stream2->stream_id());
1132 EXPECT_EQ(2u, session_->num_active_streams()); 1132 EXPECT_EQ(2u, session_->num_active_streams());
1133 1133
1134 // Session is going away. Created and stalled streams were aborted. 1134 // Session is going away. Created and stalled streams were aborted.
1135 EXPECT_EQ(SpdySession::STATE_GOING_AWAY, session_->availability_state_); 1135 EXPECT_EQ(SpdySession::STATE_GOING_AWAY, session_->availability_state_);
1136 EXPECT_EQ(ERR_ABORTED, delegate3.WaitForClose()); 1136 EXPECT_EQ(ERR_ABORTED, delegate3.WaitForClose());
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1239 EXPECT_EQ(0u, session_->pending_create_stream_queue_size(MEDIUM)); 1239 EXPECT_EQ(0u, session_->pending_create_stream_queue_size(MEDIUM));
1240 EXPECT_EQ(1u, session_->num_created_streams()); 1240 EXPECT_EQ(1u, session_->num_created_streams());
1241 1241
1242 EXPECT_EQ(OK, callback.WaitForResult()); 1242 EXPECT_EQ(OK, callback.WaitForResult());
1243 1243
1244 // Send request. 1244 // Send request.
1245 base::WeakPtr<SpdyStream> stream = request.ReleaseStream(); 1245 base::WeakPtr<SpdyStream> stream = request.ReleaseStream();
1246 test::StreamDelegateDoNothing delegate(stream); 1246 test::StreamDelegateDoNothing delegate(stream);
1247 stream->SetDelegate(&delegate); 1247 stream->SetDelegate(&delegate);
1248 std::unique_ptr<SpdyHeaderBlock> headers( 1248 std::unique_ptr<SpdyHeaderBlock> headers(
1249 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 1249 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
1250 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 1250 stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
1251 EXPECT_TRUE(stream->HasUrlFromHeaders()); 1251 EXPECT_TRUE(stream->HasUrlFromHeaders());
1252 1252
1253 EXPECT_EQ(OK, delegate.WaitForClose()); 1253 EXPECT_EQ(OK, delegate.WaitForClose());
1254 EXPECT_EQ("hello!", delegate.TakeReceivedData()); 1254 EXPECT_EQ("hello!", delegate.TakeReceivedData());
1255 1255
1256 // Session is destroyed. 1256 // Session is destroyed.
1257 EXPECT_FALSE(session_); 1257 EXPECT_FALSE(session_);
1258 } 1258 }
1259 1259
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
1352 CreateNetworkSession(); 1352 CreateNetworkSession();
1353 CreateInsecureSpdySession(); 1353 CreateInsecureSpdySession();
1354 1354
1355 // Process the principal request, and the first push stream request & body. 1355 // Process the principal request, and the first push stream request & body.
1356 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 1356 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
1357 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 1357 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
1358 test::StreamDelegateDoNothing delegate(spdy_stream); 1358 test::StreamDelegateDoNothing delegate(spdy_stream);
1359 spdy_stream->SetDelegate(&delegate); 1359 spdy_stream->SetDelegate(&delegate);
1360 1360
1361 std::unique_ptr<SpdyHeaderBlock> headers( 1361 std::unique_ptr<SpdyHeaderBlock> headers(
1362 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 1362 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
1363 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 1363 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
1364 1364
1365 base::RunLoop().RunUntilIdle(); 1365 base::RunLoop().RunUntilIdle();
1366 1366
1367 // Verify that there is one unclaimed push stream. 1367 // Verify that there is one unclaimed push stream.
1368 EXPECT_EQ(1u, session_->num_unclaimed_pushed_streams()); 1368 EXPECT_EQ(1u, session_->num_unclaimed_pushed_streams());
1369 EXPECT_EQ(1u, session_->count_unclaimed_pushed_streams_for_url( 1369 EXPECT_EQ(1u, session_->count_unclaimed_pushed_streams_for_url(
1370 GURL("http://www.example.org/a.dat"))); 1370 GURL("http://www.example.org/a.dat")));
1371 1371
1372 // Unclaimed push body consumed bytes from the session window. 1372 // Unclaimed push body consumed bytes from the session window.
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
1857 1857
1858 CreateNetworkSession(); 1858 CreateNetworkSession();
1859 CreateInsecureSpdySession(); 1859 CreateInsecureSpdySession();
1860 1860
1861 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 1861 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
1862 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 1862 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
1863 test::StreamDelegateDoNothing delegate(spdy_stream); 1863 test::StreamDelegateDoNothing delegate(spdy_stream);
1864 spdy_stream->SetDelegate(&delegate); 1864 spdy_stream->SetDelegate(&delegate);
1865 1865
1866 std::unique_ptr<SpdyHeaderBlock> headers( 1866 std::unique_ptr<SpdyHeaderBlock> headers(
1867 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 1867 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
1868 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 1868 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
1869 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 1869 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
1870 1870
1871 // Write request headers & capture resulting histogram update. 1871 // Write request headers & capture resulting histogram update.
1872 base::HistogramTester histogram_tester; 1872 base::HistogramTester histogram_tester;
1873 1873
1874 base::RunLoop().RunUntilIdle(); 1874 base::RunLoop().RunUntilIdle();
1875 // Regression test of compression performance under the request fixture. 1875 // Regression test of compression performance under the request fixture.
1876 switch (spdy_util_.spdy_version()) { 1876 switch (spdy_util_.spdy_version()) {
1877 case SPDY3: 1877 case SPDY3:
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, 1947 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_,
1948 test_url_, HIGHEST, BoundNetLog()); 1948 test_url_, HIGHEST, BoundNetLog());
1949 ASSERT_TRUE(spdy_stream_highest); 1949 ASSERT_TRUE(spdy_stream_highest);
1950 EXPECT_EQ(0u, spdy_stream_highest->stream_id()); 1950 EXPECT_EQ(0u, spdy_stream_highest->stream_id());
1951 test::StreamDelegateDoNothing delegate_highest(spdy_stream_highest); 1951 test::StreamDelegateDoNothing delegate_highest(spdy_stream_highest);
1952 spdy_stream_highest->SetDelegate(&delegate_highest); 1952 spdy_stream_highest->SetDelegate(&delegate_highest);
1953 1953
1954 // Queue the lower priority one first. 1954 // Queue the lower priority one first.
1955 1955
1956 std::unique_ptr<SpdyHeaderBlock> headers_lowest( 1956 std::unique_ptr<SpdyHeaderBlock> headers_lowest(
1957 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 1957 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
1958 spdy_stream_lowest->SendRequestHeaders(std::move(headers_lowest), 1958 spdy_stream_lowest->SendRequestHeaders(std::move(headers_lowest),
1959 NO_MORE_DATA_TO_SEND); 1959 NO_MORE_DATA_TO_SEND);
1960 EXPECT_TRUE(spdy_stream_lowest->HasUrlFromHeaders()); 1960 EXPECT_TRUE(spdy_stream_lowest->HasUrlFromHeaders());
1961 1961
1962 std::unique_ptr<SpdyHeaderBlock> headers_highest( 1962 std::unique_ptr<SpdyHeaderBlock> headers_highest(
1963 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 1963 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
1964 spdy_stream_highest->SendRequestHeaders(std::move(headers_highest), 1964 spdy_stream_highest->SendRequestHeaders(std::move(headers_highest),
1965 NO_MORE_DATA_TO_SEND); 1965 NO_MORE_DATA_TO_SEND);
1966 EXPECT_TRUE(spdy_stream_highest->HasUrlFromHeaders()); 1966 EXPECT_TRUE(spdy_stream_highest->HasUrlFromHeaders());
1967 1967
1968 base::RunLoop().RunUntilIdle(); 1968 base::RunLoop().RunUntilIdle();
1969 1969
1970 EXPECT_FALSE(spdy_stream_lowest); 1970 EXPECT_FALSE(spdy_stream_lowest);
1971 EXPECT_FALSE(spdy_stream_highest); 1971 EXPECT_FALSE(spdy_stream_highest);
1972 EXPECT_EQ(3u, delegate_lowest.stream_id()); 1972 EXPECT_EQ(3u, delegate_lowest.stream_id());
1973 EXPECT_EQ(1u, delegate_highest.stream_id()); 1973 EXPECT_EQ(1u, delegate_highest.stream_id());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2010 spdy_stream1->SetDelegate(&delegate1); 2010 spdy_stream1->SetDelegate(&delegate1);
2011 2011
2012 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously( 2012 base::WeakPtr<SpdyStream> spdy_stream2 = CreateStreamSynchronously(
2013 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog()); 2013 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog());
2014 ASSERT_TRUE(spdy_stream2); 2014 ASSERT_TRUE(spdy_stream2);
2015 EXPECT_EQ(0u, spdy_stream2->stream_id()); 2015 EXPECT_EQ(0u, spdy_stream2->stream_id());
2016 test::StreamDelegateDoNothing delegate2(spdy_stream2); 2016 test::StreamDelegateDoNothing delegate2(spdy_stream2);
2017 spdy_stream2->SetDelegate(&delegate2); 2017 spdy_stream2->SetDelegate(&delegate2);
2018 2018
2019 std::unique_ptr<SpdyHeaderBlock> headers( 2019 std::unique_ptr<SpdyHeaderBlock> headers(
2020 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2020 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2021 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 2021 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
2022 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2022 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2023 2023
2024 std::unique_ptr<SpdyHeaderBlock> headers2( 2024 std::unique_ptr<SpdyHeaderBlock> headers2(
2025 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2025 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2026 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 2026 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
2027 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 2027 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
2028 2028
2029 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2029 EXPECT_EQ(0u, spdy_stream1->stream_id());
2030 2030
2031 spdy_stream1->Cancel(); 2031 spdy_stream1->Cancel();
2032 EXPECT_FALSE(spdy_stream1); 2032 EXPECT_FALSE(spdy_stream1);
2033 2033
2034 EXPECT_EQ(0u, delegate1.stream_id()); 2034 EXPECT_EQ(0u, delegate1.stream_id());
2035 2035
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2073 ASSERT_TRUE(spdy_stream2); 2073 ASSERT_TRUE(spdy_stream2);
2074 EXPECT_EQ(0u, spdy_stream2->stream_id()); 2074 EXPECT_EQ(0u, spdy_stream2->stream_id());
2075 2075
2076 test::ClosingDelegate delegate1(spdy_stream1); 2076 test::ClosingDelegate delegate1(spdy_stream1);
2077 spdy_stream1->SetDelegate(&delegate1); 2077 spdy_stream1->SetDelegate(&delegate1);
2078 2078
2079 test::ClosingDelegate delegate2(spdy_stream2); 2079 test::ClosingDelegate delegate2(spdy_stream2);
2080 spdy_stream2->SetDelegate(&delegate2); 2080 spdy_stream2->SetDelegate(&delegate2);
2081 2081
2082 std::unique_ptr<SpdyHeaderBlock> headers( 2082 std::unique_ptr<SpdyHeaderBlock> headers(
2083 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2083 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2084 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 2084 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
2085 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2085 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2086 2086
2087 std::unique_ptr<SpdyHeaderBlock> headers2( 2087 std::unique_ptr<SpdyHeaderBlock> headers2(
2088 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2088 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2089 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 2089 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
2090 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 2090 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
2091 2091
2092 // Ensure that the streams have not yet been activated and assigned an id. 2092 // Ensure that the streams have not yet been activated and assigned an id.
2093 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2093 EXPECT_EQ(0u, spdy_stream1->stream_id());
2094 EXPECT_EQ(0u, spdy_stream2->stream_id()); 2094 EXPECT_EQ(0u, spdy_stream2->stream_id());
2095 2095
2096 // Ensure we don't crash while closing the session. 2096 // Ensure we don't crash while closing the session.
2097 session_->CloseSessionOnError(ERR_ABORTED, std::string()); 2097 session_->CloseSessionOnError(ERR_ABORTED, std::string());
2098 2098
(...skipping 30 matching lines...) Expand all
2129 2129
2130 // Make |spdy_stream1| close |spdy_stream2|. 2130 // Make |spdy_stream1| close |spdy_stream2|.
2131 test::ClosingDelegate delegate1(spdy_stream2); 2131 test::ClosingDelegate delegate1(spdy_stream2);
2132 spdy_stream1->SetDelegate(&delegate1); 2132 spdy_stream1->SetDelegate(&delegate1);
2133 2133
2134 // Make |spdy_stream2| close |spdy_stream1|. 2134 // Make |spdy_stream2| close |spdy_stream1|.
2135 test::ClosingDelegate delegate2(spdy_stream1); 2135 test::ClosingDelegate delegate2(spdy_stream1);
2136 spdy_stream2->SetDelegate(&delegate2); 2136 spdy_stream2->SetDelegate(&delegate2);
2137 2137
2138 std::unique_ptr<SpdyHeaderBlock> headers( 2138 std::unique_ptr<SpdyHeaderBlock> headers(
2139 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2139 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2140 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 2140 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
2141 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2141 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2142 2142
2143 std::unique_ptr<SpdyHeaderBlock> headers2( 2143 std::unique_ptr<SpdyHeaderBlock> headers2(
2144 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2144 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2145 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 2145 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
2146 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 2146 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
2147 2147
2148 // Ensure that the streams have not yet been activated and assigned an id. 2148 // Ensure that the streams have not yet been activated and assigned an id.
2149 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2149 EXPECT_EQ(0u, spdy_stream1->stream_id());
2150 EXPECT_EQ(0u, spdy_stream2->stream_id()); 2150 EXPECT_EQ(0u, spdy_stream2->stream_id());
2151 2151
2152 // Ensure we don't crash while closing the session. 2152 // Ensure we don't crash while closing the session.
2153 session_->CloseSessionOnError(ERR_ABORTED, std::string()); 2153 session_->CloseSessionOnError(ERR_ABORTED, std::string());
2154 2154
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2196 ASSERT_TRUE(spdy_stream2); 2196 ASSERT_TRUE(spdy_stream2);
2197 EXPECT_EQ(0u, spdy_stream2->stream_id()); 2197 EXPECT_EQ(0u, spdy_stream2->stream_id());
2198 2198
2199 test::ClosingDelegate delegate1(spdy_stream1); 2199 test::ClosingDelegate delegate1(spdy_stream1);
2200 spdy_stream1->SetDelegate(&delegate1); 2200 spdy_stream1->SetDelegate(&delegate1);
2201 2201
2202 test::ClosingDelegate delegate2(spdy_stream2); 2202 test::ClosingDelegate delegate2(spdy_stream2);
2203 spdy_stream2->SetDelegate(&delegate2); 2203 spdy_stream2->SetDelegate(&delegate2);
2204 2204
2205 std::unique_ptr<SpdyHeaderBlock> headers( 2205 std::unique_ptr<SpdyHeaderBlock> headers(
2206 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2206 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2207 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 2207 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
2208 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2208 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2209 2209
2210 std::unique_ptr<SpdyHeaderBlock> headers2( 2210 std::unique_ptr<SpdyHeaderBlock> headers2(
2211 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2211 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2212 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 2212 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
2213 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 2213 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
2214 2214
2215 // Ensure that the streams have not yet been activated and assigned an id. 2215 // Ensure that the streams have not yet been activated and assigned an id.
2216 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2216 EXPECT_EQ(0u, spdy_stream1->stream_id());
2217 EXPECT_EQ(0u, spdy_stream2->stream_id()); 2217 EXPECT_EQ(0u, spdy_stream2->stream_id());
2218 2218
2219 base::RunLoop().RunUntilIdle(); 2219 base::RunLoop().RunUntilIdle();
2220 2220
2221 EXPECT_EQ(1u, spdy_stream1->stream_id()); 2221 EXPECT_EQ(1u, spdy_stream1->stream_id());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2272 2272
2273 // Make |spdy_stream1| close |spdy_stream2|. 2273 // Make |spdy_stream1| close |spdy_stream2|.
2274 test::ClosingDelegate delegate1(spdy_stream2); 2274 test::ClosingDelegate delegate1(spdy_stream2);
2275 spdy_stream1->SetDelegate(&delegate1); 2275 spdy_stream1->SetDelegate(&delegate1);
2276 2276
2277 // Make |spdy_stream2| close |spdy_stream1|. 2277 // Make |spdy_stream2| close |spdy_stream1|.
2278 test::ClosingDelegate delegate2(spdy_stream1); 2278 test::ClosingDelegate delegate2(spdy_stream1);
2279 spdy_stream2->SetDelegate(&delegate2); 2279 spdy_stream2->SetDelegate(&delegate2);
2280 2280
2281 std::unique_ptr<SpdyHeaderBlock> headers( 2281 std::unique_ptr<SpdyHeaderBlock> headers(
2282 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2282 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2283 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 2283 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
2284 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2284 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2285 2285
2286 std::unique_ptr<SpdyHeaderBlock> headers2( 2286 std::unique_ptr<SpdyHeaderBlock> headers2(
2287 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2287 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2288 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 2288 spdy_stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
2289 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders()); 2289 EXPECT_TRUE(spdy_stream2->HasUrlFromHeaders());
2290 2290
2291 // Ensure that the streams have not yet been activated and assigned an id. 2291 // Ensure that the streams have not yet been activated and assigned an id.
2292 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2292 EXPECT_EQ(0u, spdy_stream1->stream_id());
2293 EXPECT_EQ(0u, spdy_stream2->stream_id()); 2293 EXPECT_EQ(0u, spdy_stream2->stream_id());
2294 2294
2295 base::RunLoop().RunUntilIdle(); 2295 base::RunLoop().RunUntilIdle();
2296 2296
2297 EXPECT_EQ(1u, spdy_stream1->stream_id()); 2297 EXPECT_EQ(1u, spdy_stream1->stream_id());
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
2360 2360
2361 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 2361 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
2362 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 2362 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
2363 ASSERT_TRUE(spdy_stream); 2363 ASSERT_TRUE(spdy_stream);
2364 EXPECT_EQ(0u, spdy_stream->stream_id()); 2364 EXPECT_EQ(0u, spdy_stream->stream_id());
2365 2365
2366 SessionClosingDelegate delegate(spdy_stream, session_); 2366 SessionClosingDelegate delegate(spdy_stream, session_);
2367 spdy_stream->SetDelegate(&delegate); 2367 spdy_stream->SetDelegate(&delegate);
2368 2368
2369 std::unique_ptr<SpdyHeaderBlock> headers( 2369 std::unique_ptr<SpdyHeaderBlock> headers(
2370 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2370 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2371 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 2371 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
2372 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 2372 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
2373 2373
2374 EXPECT_EQ(0u, spdy_stream->stream_id()); 2374 EXPECT_EQ(0u, spdy_stream->stream_id());
2375 2375
2376 base::RunLoop().RunUntilIdle(); 2376 base::RunLoop().RunUntilIdle();
2377 2377
2378 EXPECT_EQ(1u, spdy_stream->stream_id()); 2378 EXPECT_EQ(1u, spdy_stream->stream_id());
2379 2379
2380 // Ensure we don't crash while closing the stream (which closes the 2380 // Ensure we don't crash while closing the stream (which closes the
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
2535 ASSERT_EQ( 2535 ASSERT_EQ(
2536 ERR_IO_PENDING, 2536 ERR_IO_PENDING,
2537 request3.StartRequest(SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, 2537 request3.StartRequest(SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_,
2538 LOWEST, BoundNetLog(), callback3.callback())); 2538 LOWEST, BoundNetLog(), callback3.callback()));
2539 2539
2540 EXPECT_EQ(0u, session_->num_active_streams()); 2540 EXPECT_EQ(0u, session_->num_active_streams());
2541 EXPECT_EQ(1u, session_->num_created_streams()); 2541 EXPECT_EQ(1u, session_->num_created_streams());
2542 EXPECT_EQ(2u, session_->pending_create_stream_queue_size(LOWEST)); 2542 EXPECT_EQ(2u, session_->pending_create_stream_queue_size(LOWEST));
2543 2543
2544 std::unique_ptr<SpdyHeaderBlock> headers( 2544 std::unique_ptr<SpdyHeaderBlock> headers(
2545 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2545 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2546 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 2546 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
2547 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2547 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2548 2548
2549 // Run until 1st stream is activated and then closed. 2549 // Run until 1st stream is activated and then closed.
2550 EXPECT_EQ(0u, delegate1.stream_id()); 2550 EXPECT_EQ(0u, delegate1.stream_id());
2551 base::RunLoop().RunUntilIdle(); 2551 base::RunLoop().RunUntilIdle();
2552 EXPECT_FALSE(spdy_stream1); 2552 EXPECT_FALSE(spdy_stream1);
2553 EXPECT_EQ(1u, delegate1.stream_id()); 2553 EXPECT_EQ(1u, delegate1.stream_id());
2554 2554
2555 EXPECT_EQ(0u, session_->num_active_streams()); 2555 EXPECT_EQ(0u, session_->num_active_streams());
2556 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(LOWEST)); 2556 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(LOWEST));
2557 2557
2558 // Pump loop for SpdySession::ProcessPendingStreamRequests() to 2558 // Pump loop for SpdySession::ProcessPendingStreamRequests() to
2559 // create the 2nd stream. 2559 // create the 2nd stream.
2560 base::RunLoop().RunUntilIdle(); 2560 base::RunLoop().RunUntilIdle();
2561 2561
2562 EXPECT_EQ(0u, session_->num_active_streams()); 2562 EXPECT_EQ(0u, session_->num_active_streams());
2563 EXPECT_EQ(1u, session_->num_created_streams()); 2563 EXPECT_EQ(1u, session_->num_created_streams());
2564 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(LOWEST)); 2564 EXPECT_EQ(1u, session_->pending_create_stream_queue_size(LOWEST));
2565 2565
2566 base::WeakPtr<SpdyStream> stream2 = request2.ReleaseStream(); 2566 base::WeakPtr<SpdyStream> stream2 = request2.ReleaseStream();
2567 test::StreamDelegateDoNothing delegate2(stream2); 2567 test::StreamDelegateDoNothing delegate2(stream2);
2568 stream2->SetDelegate(&delegate2); 2568 stream2->SetDelegate(&delegate2);
2569 std::unique_ptr<SpdyHeaderBlock> headers2( 2569 std::unique_ptr<SpdyHeaderBlock> headers2(
2570 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2570 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2571 stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND); 2571 stream2->SendRequestHeaders(std::move(headers2), NO_MORE_DATA_TO_SEND);
2572 EXPECT_TRUE(stream2->HasUrlFromHeaders()); 2572 EXPECT_TRUE(stream2->HasUrlFromHeaders());
2573 2573
2574 // Run until 2nd stream is activated and then closed. 2574 // Run until 2nd stream is activated and then closed.
2575 EXPECT_EQ(0u, delegate2.stream_id()); 2575 EXPECT_EQ(0u, delegate2.stream_id());
2576 base::RunLoop().RunUntilIdle(); 2576 base::RunLoop().RunUntilIdle();
2577 EXPECT_FALSE(stream2); 2577 EXPECT_FALSE(stream2);
2578 EXPECT_EQ(3u, delegate2.stream_id()); 2578 EXPECT_EQ(3u, delegate2.stream_id());
2579 2579
2580 EXPECT_EQ(0u, session_->num_active_streams()); 2580 EXPECT_EQ(0u, session_->num_active_streams());
2581 EXPECT_EQ(0u, session_->pending_create_stream_queue_size(LOWEST)); 2581 EXPECT_EQ(0u, session_->pending_create_stream_queue_size(LOWEST));
2582 2582
2583 // Pump loop for SpdySession::ProcessPendingStreamRequests() to 2583 // Pump loop for SpdySession::ProcessPendingStreamRequests() to
2584 // create the 3rd stream. 2584 // create the 3rd stream.
2585 base::RunLoop().RunUntilIdle(); 2585 base::RunLoop().RunUntilIdle();
2586 2586
2587 EXPECT_EQ(0u, session_->num_active_streams()); 2587 EXPECT_EQ(0u, session_->num_active_streams());
2588 EXPECT_EQ(1u, session_->num_created_streams()); 2588 EXPECT_EQ(1u, session_->num_created_streams());
2589 EXPECT_EQ(0u, session_->pending_create_stream_queue_size(LOWEST)); 2589 EXPECT_EQ(0u, session_->pending_create_stream_queue_size(LOWEST));
2590 2590
2591 base::WeakPtr<SpdyStream> stream3 = request3.ReleaseStream(); 2591 base::WeakPtr<SpdyStream> stream3 = request3.ReleaseStream();
2592 test::StreamDelegateDoNothing delegate3(stream3); 2592 test::StreamDelegateDoNothing delegate3(stream3);
2593 stream3->SetDelegate(&delegate3); 2593 stream3->SetDelegate(&delegate3);
2594 std::unique_ptr<SpdyHeaderBlock> headers3( 2594 std::unique_ptr<SpdyHeaderBlock> headers3(
2595 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2595 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2596 stream3->SendRequestHeaders(std::move(headers3), NO_MORE_DATA_TO_SEND); 2596 stream3->SendRequestHeaders(std::move(headers3), NO_MORE_DATA_TO_SEND);
2597 EXPECT_TRUE(stream3->HasUrlFromHeaders()); 2597 EXPECT_TRUE(stream3->HasUrlFromHeaders());
2598 2598
2599 // Run until 2nd stream is activated and then closed. 2599 // Run until 2nd stream is activated and then closed.
2600 EXPECT_EQ(0u, delegate3.stream_id()); 2600 EXPECT_EQ(0u, delegate3.stream_id());
2601 base::RunLoop().RunUntilIdle(); 2601 base::RunLoop().RunUntilIdle();
2602 EXPECT_FALSE(stream3); 2602 EXPECT_FALSE(stream3);
2603 EXPECT_EQ(5u, delegate3.stream_id()); 2603 EXPECT_EQ(5u, delegate3.stream_id());
2604 2604
2605 EXPECT_EQ(0u, session_->num_active_streams()); 2605 EXPECT_EQ(0u, session_->num_active_streams());
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
2734 CreateInsecureSpdySession(); 2734 CreateInsecureSpdySession();
2735 2735
2736 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( 2736 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously(
2737 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 2737 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
2738 ASSERT_TRUE(spdy_stream1); 2738 ASSERT_TRUE(spdy_stream1);
2739 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2739 EXPECT_EQ(0u, spdy_stream1->stream_id());
2740 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2740 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2741 spdy_stream1->SetDelegate(&delegate1); 2741 spdy_stream1->SetDelegate(&delegate1);
2742 2742
2743 std::unique_ptr<SpdyHeaderBlock> headers1( 2743 std::unique_ptr<SpdyHeaderBlock> headers1(
2744 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2744 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2745 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); 2745 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND);
2746 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2746 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2747 2747
2748 // Set up the TaskObserver to verify SpdySession::DoReadLoop doesn't 2748 // Set up the TaskObserver to verify SpdySession::DoReadLoop doesn't
2749 // post a task. 2749 // post a task.
2750 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop"); 2750 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop");
2751 2751
2752 // Run until 1st read. 2752 // Run until 1st read.
2753 EXPECT_EQ(0u, delegate1.stream_id()); 2753 EXPECT_EQ(0u, delegate1.stream_id());
2754 base::RunLoop().RunUntilIdle(); 2754 base::RunLoop().RunUntilIdle();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2798 CreateInsecureSpdySession(); 2798 CreateInsecureSpdySession();
2799 2799
2800 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( 2800 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously(
2801 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 2801 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
2802 ASSERT_TRUE(spdy_stream1); 2802 ASSERT_TRUE(spdy_stream1);
2803 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2803 EXPECT_EQ(0u, spdy_stream1->stream_id());
2804 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2804 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2805 spdy_stream1->SetDelegate(&delegate1); 2805 spdy_stream1->SetDelegate(&delegate1);
2806 2806
2807 std::unique_ptr<SpdyHeaderBlock> headers1( 2807 std::unique_ptr<SpdyHeaderBlock> headers1(
2808 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2808 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2809 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); 2809 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND);
2810 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2810 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2811 2811
2812 // Set up the TaskObserver to verify that SpdySession::DoReadLoop posts a 2812 // Set up the TaskObserver to verify that SpdySession::DoReadLoop posts a
2813 // task. 2813 // task.
2814 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop"); 2814 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop");
2815 2815
2816 EXPECT_EQ(0u, delegate1.stream_id()); 2816 EXPECT_EQ(0u, delegate1.stream_id());
2817 EXPECT_EQ(0u, observer.executed_count()); 2817 EXPECT_EQ(0u, observer.executed_count());
2818 2818
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2869 CreateInsecureSpdySession(); 2869 CreateInsecureSpdySession();
2870 2870
2871 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( 2871 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously(
2872 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 2872 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
2873 ASSERT_TRUE(spdy_stream1); 2873 ASSERT_TRUE(spdy_stream1);
2874 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2874 EXPECT_EQ(0u, spdy_stream1->stream_id());
2875 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2875 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2876 spdy_stream1->SetDelegate(&delegate1); 2876 spdy_stream1->SetDelegate(&delegate1);
2877 2877
2878 std::unique_ptr<SpdyHeaderBlock> headers1( 2878 std::unique_ptr<SpdyHeaderBlock> headers1(
2879 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2879 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2880 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); 2880 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND);
2881 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2881 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2882 2882
2883 // Run until 1st read. 2883 // Run until 1st read.
2884 EXPECT_EQ(0u, delegate1.stream_id()); 2884 EXPECT_EQ(0u, delegate1.stream_id());
2885 base::RunLoop().RunUntilIdle(); 2885 base::RunLoop().RunUntilIdle();
2886 EXPECT_EQ(1u, delegate1.stream_id()); 2886 EXPECT_EQ(1u, delegate1.stream_id());
2887 2887
2888 // Read all the data and verify SpdySession::DoReadLoop has posted a task. 2888 // Read all the data and verify SpdySession::DoReadLoop has posted a task.
2889 data.Resume(); 2889 data.Resume();
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
2950 CreateInsecureSpdySession(); 2950 CreateInsecureSpdySession();
2951 2951
2952 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( 2952 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously(
2953 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 2953 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
2954 ASSERT_TRUE(spdy_stream1); 2954 ASSERT_TRUE(spdy_stream1);
2955 EXPECT_EQ(0u, spdy_stream1->stream_id()); 2955 EXPECT_EQ(0u, spdy_stream1->stream_id());
2956 test::StreamDelegateDoNothing delegate1(spdy_stream1); 2956 test::StreamDelegateDoNothing delegate1(spdy_stream1);
2957 spdy_stream1->SetDelegate(&delegate1); 2957 spdy_stream1->SetDelegate(&delegate1);
2958 2958
2959 std::unique_ptr<SpdyHeaderBlock> headers1( 2959 std::unique_ptr<SpdyHeaderBlock> headers1(
2960 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 2960 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
2961 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); 2961 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND);
2962 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 2962 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
2963 2963
2964 // Set up the TaskObserver to verify SpdySession::DoReadLoop posts a task. 2964 // Set up the TaskObserver to verify SpdySession::DoReadLoop posts a task.
2965 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop"); 2965 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop");
2966 2966
2967 // Run until 1st read. 2967 // Run until 1st read.
2968 EXPECT_EQ(0u, delegate1.stream_id()); 2968 EXPECT_EQ(0u, delegate1.stream_id());
2969 base::RunLoop().RunUntilIdle(); 2969 base::RunLoop().RunUntilIdle();
2970 EXPECT_EQ(1u, delegate1.stream_id()); 2970 EXPECT_EQ(1u, delegate1.stream_id());
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
3057 CreateInsecureSpdySession(); 3057 CreateInsecureSpdySession();
3058 3058
3059 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( 3059 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously(
3060 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 3060 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
3061 ASSERT_TRUE(spdy_stream1); 3061 ASSERT_TRUE(spdy_stream1);
3062 EXPECT_EQ(0u, spdy_stream1->stream_id()); 3062 EXPECT_EQ(0u, spdy_stream1->stream_id());
3063 test::StreamDelegateDoNothing delegate1(spdy_stream1); 3063 test::StreamDelegateDoNothing delegate1(spdy_stream1);
3064 spdy_stream1->SetDelegate(&delegate1); 3064 spdy_stream1->SetDelegate(&delegate1);
3065 3065
3066 std::unique_ptr<SpdyHeaderBlock> headers1( 3066 std::unique_ptr<SpdyHeaderBlock> headers1(
3067 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 3067 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
3068 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); 3068 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND);
3069 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 3069 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
3070 3070
3071 // Set up the TaskObserver to monitor SpdySession::DoReadLoop 3071 // Set up the TaskObserver to monitor SpdySession::DoReadLoop
3072 // posting of tasks. 3072 // posting of tasks.
3073 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop"); 3073 SpdySessionTestTaskObserver observer("spdy_session.cc", "DoReadLoop");
3074 3074
3075 // Run until 1st read. 3075 // Run until 1st read.
3076 EXPECT_EQ(0u, delegate1.stream_id()); 3076 EXPECT_EQ(0u, delegate1.stream_id());
3077 base::RunLoop().RunUntilIdle(); 3077 base::RunLoop().RunUntilIdle();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
3126 CreateInsecureSpdySession(); 3126 CreateInsecureSpdySession();
3127 3127
3128 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( 3128 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously(
3129 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 3129 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
3130 test::StreamDelegateDoNothing delegate1(spdy_stream1); 3130 test::StreamDelegateDoNothing delegate1(spdy_stream1);
3131 spdy_stream1->SetDelegate(&delegate1); 3131 spdy_stream1->SetDelegate(&delegate1);
3132 ASSERT_TRUE(spdy_stream1); 3132 ASSERT_TRUE(spdy_stream1);
3133 EXPECT_EQ(0u, spdy_stream1->stream_id()); 3133 EXPECT_EQ(0u, spdy_stream1->stream_id());
3134 3134
3135 std::unique_ptr<SpdyHeaderBlock> headers1( 3135 std::unique_ptr<SpdyHeaderBlock> headers1(
3136 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 3136 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
3137 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); 3137 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND);
3138 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 3138 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
3139 3139
3140 // Run until 1st read. 3140 // Run until 1st read.
3141 EXPECT_EQ(0u, spdy_stream1->stream_id()); 3141 EXPECT_EQ(0u, spdy_stream1->stream_id());
3142 base::RunLoop().RunUntilIdle(); 3142 base::RunLoop().RunUntilIdle();
3143 EXPECT_EQ(1u, spdy_stream1->stream_id()); 3143 EXPECT_EQ(1u, spdy_stream1->stream_id());
3144 3144
3145 // Run until GoAway. 3145 // Run until GoAway.
3146 data.Resume(); 3146 data.Resume();
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
3343 3343
3344 TestCompletionCallback callback1; 3344 TestCompletionCallback callback1;
3345 base::WeakPtr<SpdyStream> spdy_stream1 = 3345 base::WeakPtr<SpdyStream> spdy_stream1 =
3346 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, 3346 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_,
3347 test_url_, DEFAULT_PRIORITY, BoundNetLog()); 3347 test_url_, DEFAULT_PRIORITY, BoundNetLog());
3348 ASSERT_TRUE(spdy_stream1.get()); 3348 ASSERT_TRUE(spdy_stream1.get());
3349 test::StreamDelegateDoNothing delegate1(spdy_stream1); 3349 test::StreamDelegateDoNothing delegate1(spdy_stream1);
3350 spdy_stream1->SetDelegate(&delegate1); 3350 spdy_stream1->SetDelegate(&delegate1);
3351 3351
3352 std::unique_ptr<SpdyHeaderBlock> headers1( 3352 std::unique_ptr<SpdyHeaderBlock> headers1(
3353 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 3353 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
3354 EXPECT_EQ(ERR_IO_PENDING, spdy_stream1->SendRequestHeaders( 3354 EXPECT_EQ(ERR_IO_PENDING, spdy_stream1->SendRequestHeaders(
3355 std::move(headers1), NO_MORE_DATA_TO_SEND)); 3355 std::move(headers1), NO_MORE_DATA_TO_SEND));
3356 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 3356 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
3357 3357
3358 base::RunLoop().RunUntilIdle(); 3358 base::RunLoop().RunUntilIdle();
3359 3359
3360 // Trying to create a new connection should cause the pool to be stalled, and 3360 // Trying to create a new connection should cause the pool to be stalled, and
3361 // post a task asynchronously to try and close the session. 3361 // post a task asynchronously to try and close the session.
3362 TestCompletionCallback callback2; 3362 TestCompletionCallback callback2;
3363 HostPortPair host_port2("2.com", 80); 3363 HostPortPair host_port2("2.com", 80);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
3473 3473
3474 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 3474 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
3475 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 3475 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
3476 ASSERT_TRUE(spdy_stream); 3476 ASSERT_TRUE(spdy_stream);
3477 EXPECT_EQ(0u, spdy_stream->stream_id()); 3477 EXPECT_EQ(0u, spdy_stream->stream_id());
3478 3478
3479 StreamCreatingDelegate delegate(spdy_stream, session_); 3479 StreamCreatingDelegate delegate(spdy_stream, session_);
3480 spdy_stream->SetDelegate(&delegate); 3480 spdy_stream->SetDelegate(&delegate);
3481 3481
3482 std::unique_ptr<SpdyHeaderBlock> headers( 3482 std::unique_ptr<SpdyHeaderBlock> headers(
3483 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 3483 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
3484 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 3484 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
3485 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 3485 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
3486 3486
3487 EXPECT_EQ(0u, spdy_stream->stream_id()); 3487 EXPECT_EQ(0u, spdy_stream->stream_id());
3488 3488
3489 base::RunLoop().RunUntilIdle(); 3489 base::RunLoop().RunUntilIdle();
3490 3490
3491 EXPECT_EQ(1u, spdy_stream->stream_id()); 3491 EXPECT_EQ(1u, spdy_stream->stream_id());
3492 3492
3493 // Cause the stream to be reset, which should cause another stream 3493 // Cause the stream to be reset, which should cause another stream
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
3760 CreateInsecureSpdySession(); 3760 CreateInsecureSpdySession();
3761 3761
3762 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 3762 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
3763 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog()); 3763 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog());
3764 EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size()); 3764 EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size());
3765 3765
3766 test::StreamDelegateDoNothing delegate(spdy_stream); 3766 test::StreamDelegateDoNothing delegate(spdy_stream);
3767 spdy_stream->SetDelegate(&delegate); 3767 spdy_stream->SetDelegate(&delegate);
3768 3768
3769 std::unique_ptr<SpdyHeaderBlock> headers( 3769 std::unique_ptr<SpdyHeaderBlock> headers(
3770 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 3770 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
3771 EXPECT_EQ(ERR_IO_PENDING, spdy_stream->SendRequestHeaders( 3771 EXPECT_EQ(ERR_IO_PENDING, spdy_stream->SendRequestHeaders(
3772 std::move(headers), NO_MORE_DATA_TO_SEND)); 3772 std::move(headers), NO_MORE_DATA_TO_SEND));
3773 3773
3774 // Request and response. 3774 // Request and response.
3775 base::RunLoop().RunUntilIdle(); 3775 base::RunLoop().RunUntilIdle();
3776 EXPECT_EQ(1u, spdy_stream->stream_id()); 3776 EXPECT_EQ(1u, spdy_stream->stream_id());
3777 3777
3778 // Too large data frame causes flow control error, should close stream. 3778 // Too large data frame causes flow control error, should close stream.
3779 data.Resume(); 3779 data.Resume();
3780 base::RunLoop().RunUntilIdle(); 3780 base::RunLoop().RunUntilIdle();
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
3898 pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size); 3898 pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size);
3899 3899
3900 CreateInsecureSpdySession(); 3900 CreateInsecureSpdySession();
3901 3901
3902 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 3902 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
3903 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog()); 3903 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog());
3904 test::StreamDelegateDoNothing delegate(spdy_stream); 3904 test::StreamDelegateDoNothing delegate(spdy_stream);
3905 spdy_stream->SetDelegate(&delegate); 3905 spdy_stream->SetDelegate(&delegate);
3906 3906
3907 std::unique_ptr<SpdyHeaderBlock> headers( 3907 std::unique_ptr<SpdyHeaderBlock> headers(
3908 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 3908 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
3909 EXPECT_EQ(ERR_IO_PENDING, spdy_stream->SendRequestHeaders( 3909 EXPECT_EQ(ERR_IO_PENDING, spdy_stream->SendRequestHeaders(
3910 std::move(headers), NO_MORE_DATA_TO_SEND)); 3910 std::move(headers), NO_MORE_DATA_TO_SEND));
3911 3911
3912 // Request and response. 3912 // Request and response.
3913 base::RunLoop().RunUntilIdle(); 3913 base::RunLoop().RunUntilIdle();
3914 EXPECT_TRUE(spdy_stream->IsLocallyClosed()); 3914 EXPECT_TRUE(spdy_stream->IsLocallyClosed());
3915 EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size()); 3915 EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size());
3916 3916
3917 // First data frame. 3917 // First data frame.
3918 data.Resume(); 3918 data.Resume();
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
3990 CreateInsecureSpdySession(); 3990 CreateInsecureSpdySession();
3991 3991
3992 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( 3992 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
3993 SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 3993 SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
3994 ASSERT_TRUE(stream); 3994 ASSERT_TRUE(stream);
3995 EXPECT_EQ(0u, stream->stream_id()); 3995 EXPECT_EQ(0u, stream->stream_id());
3996 3996
3997 DropReceivedDataDelegate delegate(stream, msg_data); 3997 DropReceivedDataDelegate delegate(stream, msg_data);
3998 stream->SetDelegate(&delegate); 3998 stream->SetDelegate(&delegate);
3999 3999
4000 std::unique_ptr<SpdyHeaderBlock> headers( 4000 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
4001 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kMsgDataSize)); 4001 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kMsgDataSize)));
4002 EXPECT_EQ(ERR_IO_PENDING, 4002 EXPECT_EQ(ERR_IO_PENDING,
4003 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 4003 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
4004 EXPECT_TRUE(stream->HasUrlFromHeaders()); 4004 EXPECT_TRUE(stream->HasUrlFromHeaders());
4005 4005
4006 const int32_t initial_window_size = 4006 const int32_t initial_window_size =
4007 SpdySession::GetDefaultInitialWindowSize(GetProtocol()); 4007 SpdySession::GetDefaultInitialWindowSize(GetProtocol());
4008 EXPECT_EQ(initial_window_size, session_->session_recv_window_size_); 4008 EXPECT_EQ(initial_window_size, session_->session_recv_window_size_);
4009 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); 4009 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_);
4010 4010
4011 base::RunLoop().RunUntilIdle(); 4011 base::RunLoop().RunUntilIdle();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
4056 CreateInsecureSpdySession(); 4056 CreateInsecureSpdySession();
4057 4057
4058 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( 4058 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
4059 SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 4059 SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
4060 ASSERT_TRUE(stream); 4060 ASSERT_TRUE(stream);
4061 EXPECT_EQ(0u, stream->stream_id()); 4061 EXPECT_EQ(0u, stream->stream_id());
4062 4062
4063 test::StreamDelegateSendImmediate delegate(stream, msg_data); 4063 test::StreamDelegateSendImmediate delegate(stream, msg_data);
4064 stream->SetDelegate(&delegate); 4064 stream->SetDelegate(&delegate);
4065 4065
4066 std::unique_ptr<SpdyHeaderBlock> headers( 4066 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
4067 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kMsgDataSize)); 4067 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kMsgDataSize)));
4068 EXPECT_EQ(ERR_IO_PENDING, 4068 EXPECT_EQ(ERR_IO_PENDING,
4069 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 4069 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
4070 EXPECT_TRUE(stream->HasUrlFromHeaders()); 4070 EXPECT_TRUE(stream->HasUrlFromHeaders());
4071 4071
4072 const int32_t initial_window_size = 4072 const int32_t initial_window_size =
4073 SpdySession::GetDefaultInitialWindowSize(GetProtocol()); 4073 SpdySession::GetDefaultInitialWindowSize(GetProtocol());
4074 EXPECT_EQ(initial_window_size, session_->session_send_window_size_); 4074 EXPECT_EQ(initial_window_size, session_->session_send_window_size_);
4075 4075
4076 // Write request. 4076 // Write request.
4077 base::RunLoop().RunUntilIdle(); 4077 base::RunLoop().RunUntilIdle();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
4141 CreateInsecureSpdySession(); 4141 CreateInsecureSpdySession();
4142 4142
4143 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( 4143 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
4144 SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, MEDIUM, BoundNetLog()); 4144 SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, MEDIUM, BoundNetLog());
4145 ASSERT_TRUE(stream); 4145 ASSERT_TRUE(stream);
4146 EXPECT_EQ(0u, stream->stream_id()); 4146 EXPECT_EQ(0u, stream->stream_id());
4147 4147
4148 test::StreamDelegateSendImmediate delegate(stream, msg_data); 4148 test::StreamDelegateSendImmediate delegate(stream, msg_data);
4149 stream->SetDelegate(&delegate); 4149 stream->SetDelegate(&delegate);
4150 4150
4151 std::unique_ptr<SpdyHeaderBlock> headers( 4151 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
4152 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kMsgDataSize)); 4152 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kMsgDataSize)));
4153 EXPECT_EQ(ERR_IO_PENDING, 4153 EXPECT_EQ(ERR_IO_PENDING,
4154 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 4154 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
4155 EXPECT_TRUE(stream->HasUrlFromHeaders()); 4155 EXPECT_TRUE(stream->HasUrlFromHeaders());
4156 4156
4157 const int32_t initial_window_size = 4157 const int32_t initial_window_size =
4158 SpdySession::GetDefaultInitialWindowSize(GetProtocol()); 4158 SpdySession::GetDefaultInitialWindowSize(GetProtocol());
4159 EXPECT_EQ(initial_window_size, session_->session_send_window_size_); 4159 EXPECT_EQ(initial_window_size, session_->session_send_window_size_);
4160 EXPECT_EQ(initial_window_size, session_->session_recv_window_size_); 4160 EXPECT_EQ(initial_window_size, session_->session_recv_window_size_);
4161 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); 4161 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_);
4162 4162
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
4242 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( 4242 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously(
4243 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog()); 4243 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog());
4244 ASSERT_TRUE(stream); 4244 ASSERT_TRUE(stream);
4245 4245
4246 test::StreamDelegateWithBody delegate(stream, kBodyDataStringPiece); 4246 test::StreamDelegateWithBody delegate(stream, kBodyDataStringPiece);
4247 stream->SetDelegate(&delegate); 4247 stream->SetDelegate(&delegate);
4248 4248
4249 EXPECT_FALSE(stream->HasUrlFromHeaders()); 4249 EXPECT_FALSE(stream->HasUrlFromHeaders());
4250 EXPECT_FALSE(stream->send_stalled_by_flow_control()); 4250 EXPECT_FALSE(stream->send_stalled_by_flow_control());
4251 4251
4252 std::unique_ptr<SpdyHeaderBlock> headers( 4252 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock(
4253 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4253 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4254 EXPECT_EQ(ERR_IO_PENDING, 4254 EXPECT_EQ(ERR_IO_PENDING,
4255 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); 4255 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND));
4256 EXPECT_TRUE(stream->HasUrlFromHeaders()); 4256 EXPECT_TRUE(stream->HasUrlFromHeaders());
4257 EXPECT_EQ(kDefaultURL, stream->GetUrlFromHeaders().spec()); 4257 EXPECT_EQ(kDefaultURL, stream->GetUrlFromHeaders().spec());
4258 4258
4259 stall_function.Run(stream.get()); 4259 stall_function.Run(stream.get());
4260 4260
4261 base::RunLoop().RunUntilIdle(); 4261 base::RunLoop().RunUntilIdle();
4262 4262
4263 EXPECT_TRUE(stream->send_stalled_by_flow_control()); 4263 EXPECT_TRUE(stream->send_stalled_by_flow_control());
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
4381 test::StreamDelegateWithBody delegate2(stream2, kBodyDataStringPiece); 4381 test::StreamDelegateWithBody delegate2(stream2, kBodyDataStringPiece);
4382 stream2->SetDelegate(&delegate2); 4382 stream2->SetDelegate(&delegate2);
4383 4383
4384 EXPECT_FALSE(stream2->HasUrlFromHeaders()); 4384 EXPECT_FALSE(stream2->HasUrlFromHeaders());
4385 4385
4386 EXPECT_FALSE(stream1->send_stalled_by_flow_control()); 4386 EXPECT_FALSE(stream1->send_stalled_by_flow_control());
4387 EXPECT_FALSE(stream2->send_stalled_by_flow_control()); 4387 EXPECT_FALSE(stream2->send_stalled_by_flow_control());
4388 4388
4389 StallSessionSend(); 4389 StallSessionSend();
4390 4390
4391 std::unique_ptr<SpdyHeaderBlock> headers1( 4391 std::unique_ptr<SpdyHeaderBlock> headers1(new SpdyHeaderBlock(
4392 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4392 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4393 EXPECT_EQ(ERR_IO_PENDING, stream1->SendRequestHeaders(std::move(headers1), 4393 EXPECT_EQ(ERR_IO_PENDING, stream1->SendRequestHeaders(std::move(headers1),
4394 MORE_DATA_TO_SEND)); 4394 MORE_DATA_TO_SEND));
4395 EXPECT_TRUE(stream1->HasUrlFromHeaders()); 4395 EXPECT_TRUE(stream1->HasUrlFromHeaders());
4396 EXPECT_EQ(kDefaultURL, stream1->GetUrlFromHeaders().spec()); 4396 EXPECT_EQ(kDefaultURL, stream1->GetUrlFromHeaders().spec());
4397 4397
4398 base::RunLoop().RunUntilIdle(); 4398 base::RunLoop().RunUntilIdle();
4399 EXPECT_EQ(1u, stream1->stream_id()); 4399 EXPECT_EQ(1u, stream1->stream_id());
4400 EXPECT_TRUE(stream1->send_stalled_by_flow_control()); 4400 EXPECT_TRUE(stream1->send_stalled_by_flow_control());
4401 4401
4402 std::unique_ptr<SpdyHeaderBlock> headers2( 4402 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(
4403 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4403 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4404 EXPECT_EQ(ERR_IO_PENDING, stream2->SendRequestHeaders(std::move(headers2), 4404 EXPECT_EQ(ERR_IO_PENDING, stream2->SendRequestHeaders(std::move(headers2),
4405 MORE_DATA_TO_SEND)); 4405 MORE_DATA_TO_SEND));
4406 EXPECT_TRUE(stream2->HasUrlFromHeaders()); 4406 EXPECT_TRUE(stream2->HasUrlFromHeaders());
4407 EXPECT_EQ(kDefaultURL, stream2->GetUrlFromHeaders().spec()); 4407 EXPECT_EQ(kDefaultURL, stream2->GetUrlFromHeaders().spec());
4408 4408
4409 base::RunLoop().RunUntilIdle(); 4409 base::RunLoop().RunUntilIdle();
4410 EXPECT_EQ(3u, stream2->stream_id()); 4410 EXPECT_EQ(3u, stream2->stream_id());
4411 EXPECT_TRUE(stream2->send_stalled_by_flow_control()); 4411 EXPECT_TRUE(stream2->send_stalled_by_flow_control());
4412 4412
4413 // This should unstall only stream2. 4413 // This should unstall only stream2.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
4530 stream3->SetDelegate(&delegate3); 4530 stream3->SetDelegate(&delegate3);
4531 4531
4532 EXPECT_FALSE(stream3->HasUrlFromHeaders()); 4532 EXPECT_FALSE(stream3->HasUrlFromHeaders());
4533 4533
4534 EXPECT_FALSE(stream1->send_stalled_by_flow_control()); 4534 EXPECT_FALSE(stream1->send_stalled_by_flow_control());
4535 EXPECT_FALSE(stream2->send_stalled_by_flow_control()); 4535 EXPECT_FALSE(stream2->send_stalled_by_flow_control());
4536 EXPECT_FALSE(stream3->send_stalled_by_flow_control()); 4536 EXPECT_FALSE(stream3->send_stalled_by_flow_control());
4537 4537
4538 StallSessionSend(); 4538 StallSessionSend();
4539 4539
4540 std::unique_ptr<SpdyHeaderBlock> headers1( 4540 std::unique_ptr<SpdyHeaderBlock> headers1(new SpdyHeaderBlock(
4541 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4541 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4542 EXPECT_EQ(ERR_IO_PENDING, stream1->SendRequestHeaders(std::move(headers1), 4542 EXPECT_EQ(ERR_IO_PENDING, stream1->SendRequestHeaders(std::move(headers1),
4543 MORE_DATA_TO_SEND)); 4543 MORE_DATA_TO_SEND));
4544 EXPECT_TRUE(stream1->HasUrlFromHeaders()); 4544 EXPECT_TRUE(stream1->HasUrlFromHeaders());
4545 EXPECT_EQ(kDefaultURL, stream1->GetUrlFromHeaders().spec()); 4545 EXPECT_EQ(kDefaultURL, stream1->GetUrlFromHeaders().spec());
4546 4546
4547 base::RunLoop().RunUntilIdle(); 4547 base::RunLoop().RunUntilIdle();
4548 EXPECT_EQ(1u, stream1->stream_id()); 4548 EXPECT_EQ(1u, stream1->stream_id());
4549 EXPECT_TRUE(stream1->send_stalled_by_flow_control()); 4549 EXPECT_TRUE(stream1->send_stalled_by_flow_control());
4550 4550
4551 std::unique_ptr<SpdyHeaderBlock> headers2( 4551 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(
4552 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4552 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4553 EXPECT_EQ(ERR_IO_PENDING, stream2->SendRequestHeaders(std::move(headers2), 4553 EXPECT_EQ(ERR_IO_PENDING, stream2->SendRequestHeaders(std::move(headers2),
4554 MORE_DATA_TO_SEND)); 4554 MORE_DATA_TO_SEND));
4555 EXPECT_TRUE(stream2->HasUrlFromHeaders()); 4555 EXPECT_TRUE(stream2->HasUrlFromHeaders());
4556 EXPECT_EQ(kDefaultURL, stream2->GetUrlFromHeaders().spec()); 4556 EXPECT_EQ(kDefaultURL, stream2->GetUrlFromHeaders().spec());
4557 4557
4558 base::RunLoop().RunUntilIdle(); 4558 base::RunLoop().RunUntilIdle();
4559 EXPECT_EQ(3u, stream2->stream_id()); 4559 EXPECT_EQ(3u, stream2->stream_id());
4560 EXPECT_TRUE(stream2->send_stalled_by_flow_control()); 4560 EXPECT_TRUE(stream2->send_stalled_by_flow_control());
4561 4561
4562 std::unique_ptr<SpdyHeaderBlock> headers3( 4562 std::unique_ptr<SpdyHeaderBlock> headers3(new SpdyHeaderBlock(
4563 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4563 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4564 EXPECT_EQ(ERR_IO_PENDING, stream3->SendRequestHeaders(std::move(headers3), 4564 EXPECT_EQ(ERR_IO_PENDING, stream3->SendRequestHeaders(std::move(headers3),
4565 MORE_DATA_TO_SEND)); 4565 MORE_DATA_TO_SEND));
4566 EXPECT_TRUE(stream3->HasUrlFromHeaders()); 4566 EXPECT_TRUE(stream3->HasUrlFromHeaders());
4567 EXPECT_EQ(kDefaultURL, stream3->GetUrlFromHeaders().spec()); 4567 EXPECT_EQ(kDefaultURL, stream3->GetUrlFromHeaders().spec());
4568 4568
4569 base::RunLoop().RunUntilIdle(); 4569 base::RunLoop().RunUntilIdle();
4570 EXPECT_EQ(5u, stream3->stream_id()); 4570 EXPECT_EQ(5u, stream3->stream_id());
4571 EXPECT_TRUE(stream3->send_stalled_by_flow_control()); 4571 EXPECT_TRUE(stream3->send_stalled_by_flow_control());
4572 4572
4573 SpdyStreamId stream_id1 = stream1->stream_id(); 4573 SpdyStreamId stream_id1 = stream1->stream_id();
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
4659 test::StreamDelegateWithBody delegate2(stream2, kBodyDataStringPiece); 4659 test::StreamDelegateWithBody delegate2(stream2, kBodyDataStringPiece);
4660 stream2->SetDelegate(&delegate2); 4660 stream2->SetDelegate(&delegate2);
4661 4661
4662 EXPECT_FALSE(stream2->HasUrlFromHeaders()); 4662 EXPECT_FALSE(stream2->HasUrlFromHeaders());
4663 4663
4664 EXPECT_FALSE(stream1->send_stalled_by_flow_control()); 4664 EXPECT_FALSE(stream1->send_stalled_by_flow_control());
4665 EXPECT_FALSE(stream2->send_stalled_by_flow_control()); 4665 EXPECT_FALSE(stream2->send_stalled_by_flow_control());
4666 4666
4667 StallSessionSend(); 4667 StallSessionSend();
4668 4668
4669 std::unique_ptr<SpdyHeaderBlock> headers1( 4669 std::unique_ptr<SpdyHeaderBlock> headers1(new SpdyHeaderBlock(
4670 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4670 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4671 EXPECT_EQ(ERR_IO_PENDING, stream1->SendRequestHeaders(std::move(headers1), 4671 EXPECT_EQ(ERR_IO_PENDING, stream1->SendRequestHeaders(std::move(headers1),
4672 MORE_DATA_TO_SEND)); 4672 MORE_DATA_TO_SEND));
4673 EXPECT_TRUE(stream1->HasUrlFromHeaders()); 4673 EXPECT_TRUE(stream1->HasUrlFromHeaders());
4674 EXPECT_EQ(kDefaultURL, stream1->GetUrlFromHeaders().spec()); 4674 EXPECT_EQ(kDefaultURL, stream1->GetUrlFromHeaders().spec());
4675 4675
4676 base::RunLoop().RunUntilIdle(); 4676 base::RunLoop().RunUntilIdle();
4677 EXPECT_EQ(1u, stream1->stream_id()); 4677 EXPECT_EQ(1u, stream1->stream_id());
4678 EXPECT_TRUE(stream1->send_stalled_by_flow_control()); 4678 EXPECT_TRUE(stream1->send_stalled_by_flow_control());
4679 4679
4680 std::unique_ptr<SpdyHeaderBlock> headers2( 4680 std::unique_ptr<SpdyHeaderBlock> headers2(new SpdyHeaderBlock(
4681 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)); 4681 spdy_util_.ConstructPostHeaderBlock(kDefaultURL, kBodyDataSize)));
4682 EXPECT_EQ(ERR_IO_PENDING, stream2->SendRequestHeaders(std::move(headers2), 4682 EXPECT_EQ(ERR_IO_PENDING, stream2->SendRequestHeaders(std::move(headers2),
4683 MORE_DATA_TO_SEND)); 4683 MORE_DATA_TO_SEND));
4684 EXPECT_TRUE(stream2->HasUrlFromHeaders()); 4684 EXPECT_TRUE(stream2->HasUrlFromHeaders());
4685 EXPECT_EQ(kDefaultURL, stream2->GetUrlFromHeaders().spec()); 4685 EXPECT_EQ(kDefaultURL, stream2->GetUrlFromHeaders().spec());
4686 4686
4687 base::RunLoop().RunUntilIdle(); 4687 base::RunLoop().RunUntilIdle();
4688 EXPECT_EQ(3u, stream2->stream_id()); 4688 EXPECT_EQ(3u, stream2->stream_id());
4689 EXPECT_TRUE(stream2->send_stalled_by_flow_control()); 4689 EXPECT_TRUE(stream2->send_stalled_by_flow_control());
4690 4690
4691 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); 4691 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_));
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
4741 CreateNetworkSession(); 4741 CreateNetworkSession();
4742 CreateInsecureSpdySession(); 4742 CreateInsecureSpdySession();
4743 4743
4744 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously( 4744 base::WeakPtr<SpdyStream> spdy_stream = CreateStreamSynchronously(
4745 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog()); 4745 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, LOWEST, BoundNetLog());
4746 ASSERT_TRUE(spdy_stream); 4746 ASSERT_TRUE(spdy_stream);
4747 test::StreamDelegateDoNothing delegate(spdy_stream); 4747 test::StreamDelegateDoNothing delegate(spdy_stream);
4748 spdy_stream->SetDelegate(&delegate); 4748 spdy_stream->SetDelegate(&delegate);
4749 4749
4750 std::unique_ptr<SpdyHeaderBlock> headers( 4750 std::unique_ptr<SpdyHeaderBlock> headers(
4751 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 4751 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
4752 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 4752 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
4753 4753
4754 // Write request. 4754 // Write request.
4755 base::RunLoop().RunUntilIdle(); 4755 base::RunLoop().RunUntilIdle();
4756 4756
4757 // Put session on the edge of overflowing it's recv window. 4757 // Put session on the edge of overflowing it's recv window.
4758 session_->session_recv_window_size_ = 1; 4758 session_->session_recv_window_size_ = 1;
4759 4759
4760 // Read response headers & body. Body overflows the session window, and a 4760 // Read response headers & body. Body overflows the session window, and a
4761 // goaway is written. 4761 // goaway is written.
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
4829 EXPECT_EQ(0u, spdy_stream1->stream_id()); 4829 EXPECT_EQ(0u, spdy_stream1->stream_id());
4830 test::StreamDelegateDoNothing delegate1(spdy_stream1); 4830 test::StreamDelegateDoNothing delegate1(spdy_stream1);
4831 spdy_stream1->SetDelegate(&delegate1); 4831 spdy_stream1->SetDelegate(&delegate1);
4832 4832
4833 EXPECT_EQ(0u, session_->num_active_streams()); 4833 EXPECT_EQ(0u, session_->num_active_streams());
4834 EXPECT_EQ(1u, session_->num_created_streams()); 4834 EXPECT_EQ(1u, session_->num_created_streams());
4835 EXPECT_EQ(0u, session_->num_pushed_streams()); 4835 EXPECT_EQ(0u, session_->num_pushed_streams());
4836 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 4836 EXPECT_EQ(0u, session_->num_active_pushed_streams());
4837 4837
4838 std::unique_ptr<SpdyHeaderBlock> headers( 4838 std::unique_ptr<SpdyHeaderBlock> headers(
4839 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 4839 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
4840 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 4840 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
4841 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 4841 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
4842 4842
4843 // Run until 1st stream is activated. 4843 // Run until 1st stream is activated.
4844 EXPECT_EQ(0u, delegate1.stream_id()); 4844 EXPECT_EQ(0u, delegate1.stream_id());
4845 base::RunLoop().RunUntilIdle(); 4845 base::RunLoop().RunUntilIdle();
4846 EXPECT_EQ(1u, delegate1.stream_id()); 4846 EXPECT_EQ(1u, delegate1.stream_id());
4847 EXPECT_EQ(1u, session_->num_active_streams()); 4847 EXPECT_EQ(1u, session_->num_active_streams());
4848 EXPECT_EQ(0u, session_->num_created_streams()); 4848 EXPECT_EQ(0u, session_->num_created_streams());
4849 EXPECT_EQ(0u, session_->num_pushed_streams()); 4849 EXPECT_EQ(0u, session_->num_pushed_streams());
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
4909 EXPECT_EQ(0u, spdy_stream1->stream_id()); 4909 EXPECT_EQ(0u, spdy_stream1->stream_id());
4910 test::StreamDelegateDoNothing delegate1(spdy_stream1); 4910 test::StreamDelegateDoNothing delegate1(spdy_stream1);
4911 spdy_stream1->SetDelegate(&delegate1); 4911 spdy_stream1->SetDelegate(&delegate1);
4912 4912
4913 EXPECT_EQ(0u, session_->num_active_streams()); 4913 EXPECT_EQ(0u, session_->num_active_streams());
4914 EXPECT_EQ(1u, session_->num_created_streams()); 4914 EXPECT_EQ(1u, session_->num_created_streams());
4915 EXPECT_EQ(0u, session_->num_pushed_streams()); 4915 EXPECT_EQ(0u, session_->num_pushed_streams());
4916 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 4916 EXPECT_EQ(0u, session_->num_active_pushed_streams());
4917 4917
4918 std::unique_ptr<SpdyHeaderBlock> headers( 4918 std::unique_ptr<SpdyHeaderBlock> headers(
4919 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 4919 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
4920 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 4920 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
4921 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 4921 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
4922 4922
4923 // Run until 1st stream is activated. 4923 // Run until 1st stream is activated.
4924 EXPECT_EQ(0u, delegate1.stream_id()); 4924 EXPECT_EQ(0u, delegate1.stream_id());
4925 base::RunLoop().RunUntilIdle(); 4925 base::RunLoop().RunUntilIdle();
4926 EXPECT_EQ(1u, delegate1.stream_id()); 4926 EXPECT_EQ(1u, delegate1.stream_id());
4927 EXPECT_EQ(1u, session_->num_active_streams()); 4927 EXPECT_EQ(1u, session_->num_active_streams());
4928 EXPECT_EQ(0u, session_->num_created_streams()); 4928 EXPECT_EQ(0u, session_->num_created_streams());
4929 EXPECT_EQ(0u, session_->num_pushed_streams()); 4929 EXPECT_EQ(0u, session_->num_pushed_streams());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
5003 EXPECT_EQ(0u, spdy_stream->stream_id()); 5003 EXPECT_EQ(0u, spdy_stream->stream_id());
5004 test::StreamDelegateDoNothing delegate(spdy_stream); 5004 test::StreamDelegateDoNothing delegate(spdy_stream);
5005 spdy_stream->SetDelegate(&delegate); 5005 spdy_stream->SetDelegate(&delegate);
5006 5006
5007 EXPECT_EQ(0u, session_->num_active_streams()); 5007 EXPECT_EQ(0u, session_->num_active_streams());
5008 EXPECT_EQ(1u, session_->num_created_streams()); 5008 EXPECT_EQ(1u, session_->num_created_streams());
5009 EXPECT_EQ(0u, session_->num_pushed_streams()); 5009 EXPECT_EQ(0u, session_->num_pushed_streams());
5010 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 5010 EXPECT_EQ(0u, session_->num_active_pushed_streams());
5011 5011
5012 std::unique_ptr<SpdyHeaderBlock> headers( 5012 std::unique_ptr<SpdyHeaderBlock> headers(
5013 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 5013 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
5014 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5014 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5015 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 5015 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
5016 5016
5017 // Run until 1st stream is activated. 5017 // Run until 1st stream is activated.
5018 EXPECT_EQ(0u, delegate.stream_id()); 5018 EXPECT_EQ(0u, delegate.stream_id());
5019 base::RunLoop().RunUntilIdle(); 5019 base::RunLoop().RunUntilIdle();
5020 EXPECT_EQ(1u, delegate.stream_id()); 5020 EXPECT_EQ(1u, delegate.stream_id());
5021 EXPECT_EQ(1u, session_->num_active_streams()); 5021 EXPECT_EQ(1u, session_->num_active_streams());
5022 EXPECT_EQ(0u, session_->num_created_streams()); 5022 EXPECT_EQ(0u, session_->num_created_streams());
5023 EXPECT_EQ(0u, session_->num_pushed_streams()); 5023 EXPECT_EQ(0u, session_->num_pushed_streams());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
5082 EXPECT_EQ(0u, spdy_stream->stream_id()); 5082 EXPECT_EQ(0u, spdy_stream->stream_id());
5083 test::StreamDelegateDoNothing delegate(spdy_stream); 5083 test::StreamDelegateDoNothing delegate(spdy_stream);
5084 spdy_stream->SetDelegate(&delegate); 5084 spdy_stream->SetDelegate(&delegate);
5085 5085
5086 EXPECT_EQ(0u, session_->num_active_streams()); 5086 EXPECT_EQ(0u, session_->num_active_streams());
5087 EXPECT_EQ(1u, session_->num_created_streams()); 5087 EXPECT_EQ(1u, session_->num_created_streams());
5088 EXPECT_EQ(0u, session_->num_pushed_streams()); 5088 EXPECT_EQ(0u, session_->num_pushed_streams());
5089 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 5089 EXPECT_EQ(0u, session_->num_active_pushed_streams());
5090 5090
5091 std::unique_ptr<SpdyHeaderBlock> headers( 5091 std::unique_ptr<SpdyHeaderBlock> headers(
5092 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 5092 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
5093 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5093 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5094 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders()); 5094 EXPECT_TRUE(spdy_stream->HasUrlFromHeaders());
5095 5095
5096 // Run until 1st stream is activated. 5096 // Run until 1st stream is activated.
5097 EXPECT_EQ(0u, delegate.stream_id()); 5097 EXPECT_EQ(0u, delegate.stream_id());
5098 base::RunLoop().RunUntilIdle(); 5098 base::RunLoop().RunUntilIdle();
5099 EXPECT_EQ(1u, delegate.stream_id()); 5099 EXPECT_EQ(1u, delegate.stream_id());
5100 EXPECT_EQ(1u, session_->num_active_streams()); 5100 EXPECT_EQ(1u, session_->num_active_streams());
5101 EXPECT_EQ(0u, session_->num_created_streams()); 5101 EXPECT_EQ(0u, session_->num_created_streams());
5102 EXPECT_EQ(0u, session_->num_pushed_streams()); 5102 EXPECT_EQ(0u, session_->num_pushed_streams());
5103 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 5103 EXPECT_EQ(0u, session_->num_active_pushed_streams());
5104 5104
5105 // Read EOF. 5105 // Read EOF.
5106 data.Resume(); 5106 data.Resume();
5107 base::RunLoop().RunUntilIdle(); 5107 base::RunLoop().RunUntilIdle();
5108 EXPECT_FALSE(session_); 5108 EXPECT_FALSE(session_);
5109 } 5109 }
5110 5110
5111 TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) { 5111 TEST_P(SpdySessionTest, IgnoreReservedRemoteStreamsCount) {
5112 // Streams in reserved remote state exist only in HTTP/2. 5112 // Streams in reserved remote state exist only in HTTP/2.
5113 if (spdy_util_.spdy_version() < HTTP2) 5113 if (spdy_util_.spdy_version() < HTTP2)
5114 return; 5114 return;
5115 5115
5116 std::unique_ptr<SpdySerializedFrame> push_a(spdy_util_.ConstructSpdyPush( 5116 std::unique_ptr<SpdySerializedFrame> push_a(spdy_util_.ConstructSpdyPush(
5117 nullptr, 0, 2, 1, "http://www.example.org/a.dat")); 5117 nullptr, 0, 2, 1, "http://www.example.org/a.dat"));
5118 std::unique_ptr<SpdyHeaderBlock> push_headers(new SpdyHeaderBlock); 5118 SpdyHeaderBlock push_headers;
5119 spdy_util_.AddUrlToHeaderBlock("http://www.example.org/b.dat", 5119 spdy_util_.AddUrlToHeaderBlock("http://www.example.org/b.dat", &push_headers);
5120 push_headers.get());
5121 std::unique_ptr<SpdySerializedFrame> push_b( 5120 std::unique_ptr<SpdySerializedFrame> push_b(
5122 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 4, 1)); 5121 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 4, 1));
5123 std::unique_ptr<SpdySerializedFrame> headers_b( 5122 std::unique_ptr<SpdySerializedFrame> headers_b(
5124 spdy_util_.ConstructSpdyPushHeaders(4, nullptr, 0)); 5123 spdy_util_.ConstructSpdyPushHeaders(4, nullptr, 0));
5125 MockRead reads[] = { 5124 MockRead reads[] = {
5126 MockRead(ASYNC, ERR_IO_PENDING, 1), 5125 MockRead(ASYNC, ERR_IO_PENDING, 1),
5127 CreateMockRead(*push_a, 2), 5126 CreateMockRead(*push_a, 2),
5128 MockRead(ASYNC, ERR_IO_PENDING, 3), 5127 MockRead(ASYNC, ERR_IO_PENDING, 3),
5129 CreateMockRead(*push_b, 4), 5128 CreateMockRead(*push_b, 4),
5130 MockRead(ASYNC, ERR_IO_PENDING, 5), 5129 MockRead(ASYNC, ERR_IO_PENDING, 5),
(...skipping 23 matching lines...) Expand all
5154 EXPECT_EQ(0u, spdy_stream1->stream_id()); 5153 EXPECT_EQ(0u, spdy_stream1->stream_id());
5155 test::StreamDelegateDoNothing delegate1(spdy_stream1); 5154 test::StreamDelegateDoNothing delegate1(spdy_stream1);
5156 spdy_stream1->SetDelegate(&delegate1); 5155 spdy_stream1->SetDelegate(&delegate1);
5157 5156
5158 EXPECT_EQ(0u, session_->num_active_streams()); 5157 EXPECT_EQ(0u, session_->num_active_streams());
5159 EXPECT_EQ(1u, session_->num_created_streams()); 5158 EXPECT_EQ(1u, session_->num_created_streams());
5160 EXPECT_EQ(0u, session_->num_pushed_streams()); 5159 EXPECT_EQ(0u, session_->num_pushed_streams());
5161 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 5160 EXPECT_EQ(0u, session_->num_active_pushed_streams());
5162 5161
5163 std::unique_ptr<SpdyHeaderBlock> headers( 5162 std::unique_ptr<SpdyHeaderBlock> headers(
5164 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 5163 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
5165 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5164 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5166 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 5165 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
5167 5166
5168 // Run until 1st stream is activated. 5167 // Run until 1st stream is activated.
5169 EXPECT_EQ(0u, delegate1.stream_id()); 5168 EXPECT_EQ(0u, delegate1.stream_id());
5170 base::RunLoop().RunUntilIdle(); 5169 base::RunLoop().RunUntilIdle();
5171 EXPECT_EQ(1u, delegate1.stream_id()); 5170 EXPECT_EQ(1u, delegate1.stream_id());
5172 EXPECT_EQ(1u, session_->num_active_streams()); 5171 EXPECT_EQ(1u, session_->num_active_streams());
5173 EXPECT_EQ(0u, session_->num_created_streams()); 5172 EXPECT_EQ(0u, session_->num_created_streams());
5174 EXPECT_EQ(0u, session_->num_pushed_streams()); 5173 EXPECT_EQ(0u, session_->num_pushed_streams());
(...skipping 29 matching lines...) Expand all
5204 base::RunLoop().RunUntilIdle(); 5203 base::RunLoop().RunUntilIdle();
5205 EXPECT_FALSE(session_); 5204 EXPECT_FALSE(session_);
5206 } 5205 }
5207 5206
5208 TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) { 5207 TEST_P(SpdySessionTest, CancelReservedStreamOnHeadersReceived) {
5209 // Streams in reserved remote state exist only in HTTP/2. 5208 // Streams in reserved remote state exist only in HTTP/2.
5210 if (spdy_util_.spdy_version() < HTTP2) 5209 if (spdy_util_.spdy_version() < HTTP2)
5211 return; 5210 return;
5212 5211
5213 const char kPushedUrl[] = "http://www.example.org/a.dat"; 5212 const char kPushedUrl[] = "http://www.example.org/a.dat";
5214 std::unique_ptr<SpdyHeaderBlock> push_headers(new SpdyHeaderBlock); 5213 SpdyHeaderBlock push_headers;
5215 spdy_util_.AddUrlToHeaderBlock(kPushedUrl, push_headers.get()); 5214 spdy_util_.AddUrlToHeaderBlock(kPushedUrl, &push_headers);
5216 std::unique_ptr<SpdySerializedFrame> push_promise( 5215 std::unique_ptr<SpdySerializedFrame> push_promise(
5217 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 2, 1)); 5216 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 2, 1));
5218 std::unique_ptr<SpdySerializedFrame> headers_frame( 5217 std::unique_ptr<SpdySerializedFrame> headers_frame(
5219 spdy_util_.ConstructSpdyPushHeaders(2, nullptr, 0)); 5218 spdy_util_.ConstructSpdyPushHeaders(2, nullptr, 0));
5220 MockRead reads[] = { 5219 MockRead reads[] = {
5221 MockRead(ASYNC, ERR_IO_PENDING, 1), 5220 MockRead(ASYNC, ERR_IO_PENDING, 1),
5222 CreateMockRead(*push_promise, 2), 5221 CreateMockRead(*push_promise, 2),
5223 MockRead(ASYNC, ERR_IO_PENDING, 3), 5222 MockRead(ASYNC, ERR_IO_PENDING, 3),
5224 CreateMockRead(*headers_frame, 4), 5223 CreateMockRead(*headers_frame, 4),
5225 MockRead(ASYNC, ERR_IO_PENDING, 6), 5224 MockRead(ASYNC, ERR_IO_PENDING, 6),
(...skipping 20 matching lines...) Expand all
5246 EXPECT_EQ(0u, spdy_stream1->stream_id()); 5245 EXPECT_EQ(0u, spdy_stream1->stream_id());
5247 test::StreamDelegateDoNothing delegate1(spdy_stream1); 5246 test::StreamDelegateDoNothing delegate1(spdy_stream1);
5248 spdy_stream1->SetDelegate(&delegate1); 5247 spdy_stream1->SetDelegate(&delegate1);
5249 5248
5250 EXPECT_EQ(0u, session_->num_active_streams()); 5249 EXPECT_EQ(0u, session_->num_active_streams());
5251 EXPECT_EQ(1u, session_->num_created_streams()); 5250 EXPECT_EQ(1u, session_->num_created_streams());
5252 EXPECT_EQ(0u, session_->num_pushed_streams()); 5251 EXPECT_EQ(0u, session_->num_pushed_streams());
5253 EXPECT_EQ(0u, session_->num_active_pushed_streams()); 5252 EXPECT_EQ(0u, session_->num_active_pushed_streams());
5254 5253
5255 std::unique_ptr<SpdyHeaderBlock> headers( 5254 std::unique_ptr<SpdyHeaderBlock> headers(
5256 spdy_util_.ConstructGetHeaderBlock(kDefaultURL)); 5255 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kDefaultURL)));
5257 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5256 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5258 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 5257 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
5259 5258
5260 // Run until 1st stream is activated. 5259 // Run until 1st stream is activated.
5261 EXPECT_EQ(0u, delegate1.stream_id()); 5260 EXPECT_EQ(0u, delegate1.stream_id());
5262 base::RunLoop().RunUntilIdle(); 5261 base::RunLoop().RunUntilIdle();
5263 EXPECT_EQ(1u, delegate1.stream_id()); 5262 EXPECT_EQ(1u, delegate1.stream_id());
5264 EXPECT_EQ(1u, session_->num_active_streams()); 5263 EXPECT_EQ(1u, session_->num_active_streams());
5265 EXPECT_EQ(0u, session_->num_created_streams()); 5264 EXPECT_EQ(0u, session_->num_created_streams());
5266 EXPECT_EQ(0u, session_->num_pushed_streams()); 5265 EXPECT_EQ(0u, session_->num_pushed_streams());
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
5498 CreateNetworkSession(); 5497 CreateNetworkSession();
5499 CreateSecureSpdySession(); 5498 CreateSecureSpdySession();
5500 5499
5501 base::WeakPtr<SpdyStream> spdy_stream1 = 5500 base::WeakPtr<SpdyStream> spdy_stream1 =
5502 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, 5501 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_,
5503 GURL(request_origin), MEDIUM, BoundNetLog()); 5502 GURL(request_origin), MEDIUM, BoundNetLog());
5504 test::StreamDelegateDoNothing delegate1(spdy_stream1); 5503 test::StreamDelegateDoNothing delegate1(spdy_stream1);
5505 spdy_stream1->SetDelegate(&delegate1); 5504 spdy_stream1->SetDelegate(&delegate1);
5506 5505
5507 std::unique_ptr<SpdyHeaderBlock> headers( 5506 std::unique_ptr<SpdyHeaderBlock> headers(
5508 spdy_util_.ConstructGetHeaderBlock(request_origin)); 5507 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(request_origin)));
5509 5508
5510 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5509 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5511 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 5510 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
5512 5511
5513 base::RunLoop().RunUntilIdle(); 5512 base::RunLoop().RunUntilIdle();
5514 5513
5515 const url::SchemeHostPort session_origin("https", test_url_.host(), 5514 const url::SchemeHostPort session_origin("https", test_url_.host(),
5516 test_url_.EffectiveIntPort()); 5515 test_url_.EffectiveIntPort());
5517 AlternativeServiceVector altsvc_vector = 5516 AlternativeServiceVector altsvc_vector =
5518 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5517 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
5554 CreateNetworkSession(); 5553 CreateNetworkSession();
5555 CreateSecureSpdySession(); 5554 CreateSecureSpdySession();
5556 5555
5557 base::WeakPtr<SpdyStream> spdy_stream1 = 5556 base::WeakPtr<SpdyStream> spdy_stream1 =
5558 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, 5557 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_,
5559 GURL(request_origin), MEDIUM, BoundNetLog()); 5558 GURL(request_origin), MEDIUM, BoundNetLog());
5560 test::StreamDelegateDoNothing delegate1(spdy_stream1); 5559 test::StreamDelegateDoNothing delegate1(spdy_stream1);
5561 spdy_stream1->SetDelegate(&delegate1); 5560 spdy_stream1->SetDelegate(&delegate1);
5562 5561
5563 std::unique_ptr<SpdyHeaderBlock> headers( 5562 std::unique_ptr<SpdyHeaderBlock> headers(
5564 spdy_util_.ConstructGetHeaderBlock(request_origin)); 5563 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(request_origin)));
5565 5564
5566 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); 5565 spdy_stream1->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND);
5567 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders()); 5566 EXPECT_TRUE(spdy_stream1->HasUrlFromHeaders());
5568 5567
5569 base::RunLoop().RunUntilIdle(); 5568 base::RunLoop().RunUntilIdle();
5570 5569
5571 const url::SchemeHostPort session_origin("https", test_url_.host(), 5570 const url::SchemeHostPort session_origin("https", test_url_.host(),
5572 test_url_.EffectiveIntPort()); 5571 test_url_.EffectiveIntPort());
5573 AlternativeServiceVector altsvc_vector = 5572 AlternativeServiceVector altsvc_vector =
5574 spdy_session_pool_->http_server_properties()->GetAlternativeServices( 5573 spdy_session_pool_->http_server_properties()->GetAlternativeServices(
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
5751 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), 5750 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(),
5752 "spdy_pooling.pem"); 5751 "spdy_pooling.pem");
5753 ssl_info.is_issued_by_known_root = true; 5752 ssl_info.is_issued_by_known_root = true;
5754 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); 5753 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin));
5755 5754
5756 EXPECT_TRUE(SpdySession::CanPool( 5755 EXPECT_TRUE(SpdySession::CanPool(
5757 &tss, ssl_info, "www.example.org", "mail.example.org")); 5756 &tss, ssl_info, "www.example.org", "mail.example.org"));
5758 } 5757 }
5759 5758
5760 } // namespace net 5759 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_session_pool_unittest.cc ('k') | net/spdy/spdy_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698