OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 #include <utility> | 6 #include <utility> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
739 scoped_ptr<SpdyFrame> req( | 739 scoped_ptr<SpdyFrame> req( |
740 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, p, true)); | 740 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, p, true)); |
741 spdy_util_.UpdateWithStreamDestruction(1); | 741 spdy_util_.UpdateWithStreamDestruction(1); |
742 MockWrite writes[] = {CreateMockWrite(*req, 0)}; | 742 MockWrite writes[] = {CreateMockWrite(*req, 0)}; |
743 | 743 |
744 SpdyPriority spdy_prio = 0; | 744 SpdyPriority spdy_prio = 0; |
745 EXPECT_TRUE(GetSpdyPriority(spdy_util_.spdy_version(), *req, &spdy_prio)); | 745 EXPECT_TRUE(GetSpdyPriority(spdy_util_.spdy_version(), *req, &spdy_prio)); |
746 // this repeats the RequestPriority-->SpdyPriority mapping from | 746 // this repeats the RequestPriority-->SpdyPriority mapping from |
747 // SpdyFramer::ConvertRequestPriorityToSpdyPriority to make | 747 // SpdyFramer::ConvertRequestPriorityToSpdyPriority to make |
748 // sure it's being done right. | 748 // sure it's being done right. |
749 if (spdy_util_.spdy_version() < SPDY3) { | 749 switch (p) { |
750 switch (p) { | 750 case HIGHEST: |
751 case HIGHEST: | 751 EXPECT_EQ(0, spdy_prio); |
752 EXPECT_EQ(0, spdy_prio); | 752 break; |
753 break; | 753 case MEDIUM: |
754 case MEDIUM: | 754 EXPECT_EQ(1, spdy_prio); |
755 EXPECT_EQ(1, spdy_prio); | 755 break; |
756 break; | 756 case LOW: |
757 case LOW: | 757 EXPECT_EQ(2, spdy_prio); |
758 case LOWEST: | 758 break; |
759 EXPECT_EQ(2, spdy_prio); | 759 case LOWEST: |
760 break; | 760 EXPECT_EQ(3, spdy_prio); |
761 case IDLE: | 761 break; |
762 EXPECT_EQ(3, spdy_prio); | 762 case IDLE: |
763 break; | 763 EXPECT_EQ(4, spdy_prio); |
764 default: | 764 break; |
765 FAIL(); | 765 default: |
766 } | 766 FAIL(); |
767 } else { | |
768 switch (p) { | |
769 case HIGHEST: | |
770 EXPECT_EQ(0, spdy_prio); | |
771 break; | |
772 case MEDIUM: | |
773 EXPECT_EQ(1, spdy_prio); | |
774 break; | |
775 case LOW: | |
776 EXPECT_EQ(2, spdy_prio); | |
777 break; | |
778 case LOWEST: | |
779 EXPECT_EQ(3, spdy_prio); | |
780 break; | |
781 case IDLE: | |
782 EXPECT_EQ(4, spdy_prio); | |
783 break; | |
784 default: | |
785 FAIL(); | |
786 } | |
787 } | 767 } |
788 | 768 |
789 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); | 769 scoped_ptr<SpdyFrame> resp(spdy_util_.ConstructSpdyGetSynReply(NULL, 0, 1)); |
790 scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); | 770 scoped_ptr<SpdyFrame> body(spdy_util_.ConstructSpdyBodyFrame(1, true)); |
791 MockRead reads[] = { | 771 MockRead reads[] = { |
792 CreateMockRead(*resp, 1), | 772 CreateMockRead(*resp, 1), |
793 CreateMockRead(*body, 2), | 773 CreateMockRead(*body, 2), |
794 MockRead(ASYNC, 0, 3) // EOF | 774 MockRead(ASYNC, 0, 3) // EOF |
795 }; | 775 }; |
796 | 776 |
(...skipping 5545 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6342 EXPECT_TRUE(stream->stream()->send_stalled_by_flow_control()); | 6322 EXPECT_TRUE(stream->stream()->send_stalled_by_flow_control()); |
6343 | 6323 |
6344 // Read in WINDOW_UPDATE or SETTINGS frame. | 6324 // Read in WINDOW_UPDATE or SETTINGS frame. |
6345 data.Resume(); | 6325 data.Resume(); |
6346 base::RunLoop().RunUntilIdle(); | 6326 base::RunLoop().RunUntilIdle(); |
6347 rv = callback.WaitForResult(); | 6327 rv = callback.WaitForResult(); |
6348 helper.VerifyDataConsumed(); | 6328 helper.VerifyDataConsumed(); |
6349 } | 6329 } |
6350 | 6330 |
6351 TEST_P(SpdyNetworkTransactionTest, GoAwayOnOddPushStreamId) { | 6331 TEST_P(SpdyNetworkTransactionTest, GoAwayOnOddPushStreamId) { |
6352 if (spdy_util_.spdy_version() < SPDY3) | |
6353 return; | |
6354 | |
6355 scoped_ptr<SpdyHeaderBlock> push_headers(new SpdyHeaderBlock); | 6332 scoped_ptr<SpdyHeaderBlock> push_headers(new SpdyHeaderBlock); |
6356 spdy_util_.AddUrlToHeaderBlock("http://www.example.org/a.dat", | 6333 spdy_util_.AddUrlToHeaderBlock("http://www.example.org/a.dat", |
6357 push_headers.get()); | 6334 push_headers.get()); |
6358 scoped_ptr<SpdyFrame> push( | 6335 scoped_ptr<SpdyFrame> push( |
6359 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 3, 1)); | 6336 spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 3, 1)); |
6360 MockRead reads[] = {CreateMockRead(*push, 1)}; | 6337 MockRead reads[] = {CreateMockRead(*push, 1)}; |
6361 | 6338 |
6362 scoped_ptr<SpdyFrame> req( | 6339 scoped_ptr<SpdyFrame> req( |
6363 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); | 6340 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); |
6364 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( | 6341 scoped_ptr<SpdyFrame> goaway(spdy_util_.ConstructSpdyGoAway( |
6365 0, GOAWAY_PROTOCOL_ERROR, "Odd push stream id.")); | 6342 0, GOAWAY_PROTOCOL_ERROR, "Odd push stream id.")); |
6366 MockWrite writes[] = { | 6343 MockWrite writes[] = { |
6367 CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 2), | 6344 CreateMockWrite(*req, 0), CreateMockWrite(*goaway, 2), |
6368 }; | 6345 }; |
6369 | 6346 |
6370 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 6347 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
6371 NormalSpdyTransactionHelper helper( | 6348 NormalSpdyTransactionHelper helper( |
6372 CreateGetRequest(), DEFAULT_PRIORITY, BoundNetLog(), GetParam(), NULL); | 6349 CreateGetRequest(), DEFAULT_PRIORITY, BoundNetLog(), GetParam(), NULL); |
6373 helper.RunToCompletion(&data); | 6350 helper.RunToCompletion(&data); |
6374 TransactionHelperResult out = helper.output(); | 6351 TransactionHelperResult out = helper.output(); |
6375 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); | 6352 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv); |
6376 } | 6353 } |
6377 | 6354 |
6378 TEST_P(SpdyNetworkTransactionTest, | 6355 TEST_P(SpdyNetworkTransactionTest, |
6379 GoAwayOnPushStreamIdLesserOrEqualThanLastAccepted) { | 6356 GoAwayOnPushStreamIdLesserOrEqualThanLastAccepted) { |
6380 if (spdy_util_.spdy_version() < SPDY3) | |
6381 return; | |
6382 | |
6383 scoped_ptr<SpdyFrame> push_a(spdy_util_.ConstructSpdyPush( | 6357 scoped_ptr<SpdyFrame> push_a(spdy_util_.ConstructSpdyPush( |
6384 NULL, 0, 4, 1, GetDefaultUrlWithPath("/a.dat").c_str())); | 6358 NULL, 0, 4, 1, GetDefaultUrlWithPath("/a.dat").c_str())); |
6385 scoped_ptr<SpdyHeaderBlock> push_b_headers(new SpdyHeaderBlock); | 6359 scoped_ptr<SpdyHeaderBlock> push_b_headers(new SpdyHeaderBlock); |
6386 spdy_util_.AddUrlToHeaderBlock(GetDefaultUrlWithPath("/b.dat"), | 6360 spdy_util_.AddUrlToHeaderBlock(GetDefaultUrlWithPath("/b.dat"), |
6387 push_b_headers.get()); | 6361 push_b_headers.get()); |
6388 scoped_ptr<SpdyFrame> push_b(spdy_util_.ConstructInitialSpdyPushFrame( | 6362 scoped_ptr<SpdyFrame> push_b(spdy_util_.ConstructInitialSpdyPushFrame( |
6389 std::move(push_b_headers), 2, 1)); | 6363 std::move(push_b_headers), 2, 1)); |
6390 MockRead reads[] = { | 6364 MockRead reads[] = { |
6391 CreateMockRead(*push_a, 1), CreateMockRead(*push_b, 2), | 6365 CreateMockRead(*push_a, 1), CreateMockRead(*push_b, 2), |
6392 }; | 6366 }; |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6554 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { | 6528 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { |
6555 scoped_ptr<SSLSocketDataProvider> ssl_provider( | 6529 scoped_ptr<SSLSocketDataProvider> ssl_provider( |
6556 new SSLSocketDataProvider(ASYNC, OK)); | 6530 new SSLSocketDataProvider(ASYNC, OK)); |
6557 // Set to TLS_RSA_WITH_NULL_MD5 | 6531 // Set to TLS_RSA_WITH_NULL_MD5 |
6558 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); | 6532 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); |
6559 | 6533 |
6560 RunTLSUsageCheckTest(std::move(ssl_provider)); | 6534 RunTLSUsageCheckTest(std::move(ssl_provider)); |
6561 } | 6535 } |
6562 | 6536 |
6563 } // namespace net | 6537 } // namespace net |
OLD | NEW |