OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // Tests for WebSocketBasicStream. Note that we do not attempt to verify that | 5 // Tests for WebSocketBasicStream. Note that we do not attempt to verify that |
6 // frame parsing itself functions correctly, as that is covered by the | 6 // frame parsing itself functions correctly, as that is covered by the |
7 // WebSocketFrameParser tests. | 7 // WebSocketFrameParser tests. |
8 | 8 |
9 #include "net/websockets/websocket_basic_stream.h" | 9 #include "net/websockets/websocket_basic_stream.h" |
10 | 10 |
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
821 size_t expected_payload_size = kReadBufferSize; | 821 size_t expected_payload_size = kReadBufferSize; |
822 if (frame == 0) { | 822 if (frame == 0) { |
823 expected_payload_size = kReadBufferSize - kLargeFrameHeaderSize; | 823 expected_payload_size = kReadBufferSize - kLargeFrameHeaderSize; |
824 } else if (frame == kExpectedFrameCount - 1) { | 824 } else if (frame == kExpectedFrameCount - 1) { |
825 expected_payload_size = kLargeFrameHeaderSize; | 825 expected_payload_size = kLargeFrameHeaderSize; |
826 } | 826 } |
827 EXPECT_EQ(expected_payload_size, frames_[0]->header.payload_length); | 827 EXPECT_EQ(expected_payload_size, frames_[0]->header.payload_length); |
828 } | 828 } |
829 } | 829 } |
830 | 830 |
| 831 // A frame with reserved flag(s) set that arrives in chunks should only have the |
| 832 // reserved flag(s) set on the first chunk when split. |
| 833 TEST_F(WebSocketBasicStreamSocketChunkedReadTest, ReservedFlagCleared) { |
| 834 static const char kReservedFlagFrame[] = "\x41\x05Hello"; |
| 835 const size_t kReservedFlagFrameSize = arraysize(kReservedFlagFrame) - 1; |
| 836 const size_t kChunkSize = 5; |
| 837 |
| 838 CreateChunkedRead(ASYNC, |
| 839 kReservedFlagFrame, |
| 840 kReservedFlagFrameSize, |
| 841 kChunkSize, |
| 842 2, |
| 843 LAST_FRAME_BIG); |
| 844 |
| 845 TestCompletionCallback cb[2]; |
| 846 ASSERT_EQ(ERR_IO_PENDING, stream_->ReadFrames(&frames_, cb[0].callback())); |
| 847 EXPECT_EQ(OK, cb[0].WaitForResult()); |
| 848 ASSERT_EQ(1U, frames_.size()); |
| 849 EXPECT_TRUE(frames_[0]->header.reserved1); |
| 850 |
| 851 frames_.clear(); |
| 852 ASSERT_EQ(ERR_IO_PENDING, stream_->ReadFrames(&frames_, cb[1].callback())); |
| 853 EXPECT_EQ(OK, cb[1].WaitForResult()); |
| 854 ASSERT_EQ(1U, frames_.size()); |
| 855 EXPECT_FALSE(frames_[0]->header.reserved1); |
| 856 } |
| 857 |
831 // Check that writing a frame all at once works. | 858 // Check that writing a frame all at once works. |
832 TEST_F(WebSocketBasicStreamSocketWriteTest, WriteAtOnce) { | 859 TEST_F(WebSocketBasicStreamSocketWriteTest, WriteAtOnce) { |
833 MockWrite writes[] = {MockWrite(SYNCHRONOUS, kWriteFrame, kWriteFrameSize)}; | 860 MockWrite writes[] = {MockWrite(SYNCHRONOUS, kWriteFrame, kWriteFrameSize)}; |
834 CreateWriteOnly(writes); | 861 CreateWriteOnly(writes); |
835 | 862 |
836 EXPECT_EQ(OK, stream_->WriteFrames(&frames_, cb_.callback())); | 863 EXPECT_EQ(OK, stream_->WriteFrames(&frames_, cb_.callback())); |
837 } | 864 } |
838 | 865 |
839 // Check that completely async writing works. | 866 // Check that completely async writing works. |
840 TEST_F(WebSocketBasicStreamSocketWriteTest, AsyncWriteAtOnce) { | 867 TEST_F(WebSocketBasicStreamSocketWriteTest, AsyncWriteAtOnce) { |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
909 | 936 |
910 TEST_F(WebSocketBasicStreamSocketTest, GetSubProtocolWorks) { | 937 TEST_F(WebSocketBasicStreamSocketTest, GetSubProtocolWorks) { |
911 sub_protocol_ = "cyberchat"; | 938 sub_protocol_ = "cyberchat"; |
912 CreateNullStream(); | 939 CreateNullStream(); |
913 | 940 |
914 EXPECT_EQ("cyberchat", stream_->GetSubProtocol()); | 941 EXPECT_EQ("cyberchat", stream_->GetSubProtocol()); |
915 } | 942 } |
916 | 943 |
917 } // namespace | 944 } // namespace |
918 } // namespace net | 945 } // namespace net |
OLD | NEW |