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 #include "net/websockets/websocket_channel.h" | 5 #include "net/websockets/websocket_channel.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include <iostream> | 10 #include <iostream> |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 new WebSocketFrame(source_frame.opcode)); | 327 new WebSocketFrame(source_frame.opcode)); |
328 size_t frame_length = source_frame.data ? strlen(source_frame.data) : 0; | 328 size_t frame_length = source_frame.data ? strlen(source_frame.data) : 0; |
329 WebSocketFrameHeader& result_header = result_frame->header; | 329 WebSocketFrameHeader& result_header = result_frame->header; |
330 result_header.final = (source_frame.final == FINAL_FRAME); | 330 result_header.final = (source_frame.final == FINAL_FRAME); |
331 result_header.masked = (source_frame.masked == MASKED); | 331 result_header.masked = (source_frame.masked == MASKED); |
332 result_header.payload_length = frame_length; | 332 result_header.payload_length = frame_length; |
333 if (source_frame.data) { | 333 if (source_frame.data) { |
334 result_frame->data = new IOBuffer(frame_length); | 334 result_frame->data = new IOBuffer(frame_length); |
335 memcpy(result_frame->data->data(), source_frame.data, frame_length); | 335 memcpy(result_frame->data->data(), source_frame.data, frame_length); |
336 } | 336 } |
337 result_frames.push_back(result_frame.release()); | 337 result_frames.push_back(result_frame.Pass()); |
338 } | 338 } |
339 return result_frames.Pass(); | 339 return result_frames.Pass(); |
340 } | 340 } |
341 | 341 |
342 // A GoogleMock action which can be used to respond to call to ReadFrames with | 342 // A GoogleMock action which can be used to respond to call to ReadFrames with |
343 // some frames. Use like ReadFrames(_, _).WillOnce(ReturnFrames(&frames)); | 343 // some frames. Use like ReadFrames(_, _).WillOnce(ReturnFrames(&frames)); |
344 // |frames| is an array of InitFrame. |frames| needs to be passed by pointer | 344 // |frames| is an array of InitFrame. |frames| needs to be passed by pointer |
345 // because otherwise it will be treated as a pointer and the array size | 345 // because otherwise it will be treated as a pointer and the array size |
346 // information will be lost. | 346 // information will be lost. |
347 ACTION_P(ReturnFrames, source_frames) { | 347 ACTION_P(ReturnFrames, source_frames) { |
(...skipping 2503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2851 // Test the read path for 8-bit cleanliness as well. | 2851 // Test the read path for 8-bit cleanliness as well. |
2852 TEST_F(WebSocketChannelEventInterfaceTest, ReadBinaryFramesAre8BitClean) { | 2852 TEST_F(WebSocketChannelEventInterfaceTest, ReadBinaryFramesAre8BitClean) { |
2853 scoped_ptr<WebSocketFrame> frame( | 2853 scoped_ptr<WebSocketFrame> frame( |
2854 new WebSocketFrame(WebSocketFrameHeader::kOpCodeBinary)); | 2854 new WebSocketFrame(WebSocketFrameHeader::kOpCodeBinary)); |
2855 WebSocketFrameHeader& frame_header = frame->header; | 2855 WebSocketFrameHeader& frame_header = frame->header; |
2856 frame_header.final = true; | 2856 frame_header.final = true; |
2857 frame_header.payload_length = kBinaryBlobSize; | 2857 frame_header.payload_length = kBinaryBlobSize; |
2858 frame->data = new IOBuffer(kBinaryBlobSize); | 2858 frame->data = new IOBuffer(kBinaryBlobSize); |
2859 memcpy(frame->data->data(), kBinaryBlob, kBinaryBlobSize); | 2859 memcpy(frame->data->data(), kBinaryBlob, kBinaryBlobSize); |
2860 ScopedVector<WebSocketFrame> frames; | 2860 ScopedVector<WebSocketFrame> frames; |
2861 frames.push_back(frame.release()); | 2861 frames.push_back(frame.Pass()); |
2862 scoped_ptr<ReadableFakeWebSocketStream> stream( | 2862 scoped_ptr<ReadableFakeWebSocketStream> stream( |
2863 new ReadableFakeWebSocketStream); | 2863 new ReadableFakeWebSocketStream); |
2864 stream->PrepareRawReadFrames( | 2864 stream->PrepareRawReadFrames( |
2865 ReadableFakeWebSocketStream::SYNC, OK, frames.Pass()); | 2865 ReadableFakeWebSocketStream::SYNC, OK, frames.Pass()); |
2866 set_stream(stream.Pass()); | 2866 set_stream(stream.Pass()); |
2867 EXPECT_CALL(*event_interface_, OnAddChannelResponse(_, _)); | 2867 EXPECT_CALL(*event_interface_, OnAddChannelResponse(_, _)); |
2868 EXPECT_CALL(*event_interface_, OnFlowControl(_)); | 2868 EXPECT_CALL(*event_interface_, OnFlowControl(_)); |
2869 EXPECT_CALL(*event_interface_, | 2869 EXPECT_CALL(*event_interface_, |
2870 OnDataFrame(true, | 2870 OnDataFrame(true, |
2871 WebSocketFrameHeader::kOpCodeBinary, | 2871 WebSocketFrameHeader::kOpCodeBinary, |
(...skipping 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3412 channel_->StartClosingHandshake(kWebSocketNormalClosure, "OK"); | 3412 channel_->StartClosingHandshake(kWebSocketNormalClosure, "OK"); |
3413 ASSERT_TRUE(read_frames); | 3413 ASSERT_TRUE(read_frames); |
3414 // Provide the "Close" message from the server. | 3414 // Provide the "Close" message from the server. |
3415 *read_frames = CreateFrameVector(frames); | 3415 *read_frames = CreateFrameVector(frames); |
3416 read_callback.Run(OK); | 3416 read_callback.Run(OK); |
3417 completion.WaitForResult(); | 3417 completion.WaitForResult(); |
3418 } | 3418 } |
3419 | 3419 |
3420 } // namespace | 3420 } // namespace |
3421 } // namespace net | 3421 } // namespace net |
OLD | NEW |