| 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 |