Chromium Code Reviews| Index: net/websockets/websocket_channel_test.cc |
| diff --git a/net/websockets/websocket_channel_test.cc b/net/websockets/websocket_channel_test.cc |
| index 1bef0d499fee220cea0947f8b2bedadbb5b6e984..9ab7930ffcd6550c57e6b6523d49f7204f03a522 100644 |
| --- a/net/websockets/websocket_channel_test.cc |
| +++ b/net/websockets/websocket_channel_test.cc |
| @@ -142,8 +142,9 @@ class MockWebSocketEventInterface : public WebSocketEventInterface { |
| ChannelState(bool, |
| WebSocketMessageType, |
| const std::vector<char>&)); // NOLINT |
| - MOCK_METHOD1(OnFlowControl, ChannelState(int64)); // NOLINT |
| + MOCK_METHOD1(OnFlowControl, ChannelState(int64)); // NOLINT |
| MOCK_METHOD0(OnClosingHandshake, ChannelState(void)); // NOLINT |
| + MOCK_METHOD1(OnFailChannel, ChannelState(const std::string&)); // NOLINT |
| MOCK_METHOD2(OnDropChannel, |
| ChannelState(uint16, const std::string&)); // NOLINT |
| }; |
| @@ -165,6 +166,9 @@ class FakeWebSocketEventInterface : public WebSocketEventInterface { |
| return CHANNEL_ALIVE; |
| } |
| virtual ChannelState OnClosingHandshake() OVERRIDE { return CHANNEL_ALIVE; } |
| + virtual ChannelState OnFailChannel(const std::string& message) OVERRIDE { |
| + return CHANNEL_DELETED; |
| + } |
| virtual ChannelState OnDropChannel(uint16 code, |
| const std::string& reason) OVERRIDE { |
| return CHANNEL_DELETED; |
| @@ -761,7 +765,8 @@ enum EventInterfaceCall { |
| EVENT_ON_DATA_FRAME = 0x2, |
| EVENT_ON_FLOW_CONTROL = 0x4, |
| EVENT_ON_CLOSING_HANDSHAKE = 0x8, |
| - EVENT_ON_DROP_CHANNEL = 0x10, |
| + EVENT_ON_FAIL_CHANNEL = 0x10, |
| + EVENT_ON_DROP_CHANNEL = 0x20, |
| }; |
| class WebSocketChannelDeletingTest : public WebSocketChannelTest { |
| @@ -780,6 +785,7 @@ class WebSocketChannelDeletingTest : public WebSocketChannelTest { |
| : deleting_(EVENT_ON_ADD_CHANNEL_RESPONSE | EVENT_ON_DATA_FRAME | |
| EVENT_ON_FLOW_CONTROL | |
| EVENT_ON_CLOSING_HANDSHAKE | |
| + EVENT_ON_FAIL_CHANNEL | |
| EVENT_ON_DROP_CHANNEL) {} |
| // Create a ChannelDeletingFakeWebSocketEventInterface. Defined out-of-line to |
| // avoid circular dependency. |
| @@ -820,6 +826,10 @@ class ChannelDeletingFakeWebSocketEventInterface |
| return fixture_->DeleteIfDeleting(EVENT_ON_CLOSING_HANDSHAKE); |
| } |
| + virtual ChannelState OnFailChannel(const std::string& message) OVERRIDE { |
| + return fixture_->DeleteIfDeleting(EVENT_ON_FAIL_CHANNEL); |
| + } |
| + |
| virtual ChannelState OnDropChannel(uint16 code, |
| const std::string& reason) OVERRIDE { |
| return fixture_->DeleteIfDeleting(EVENT_ON_DROP_CHANNEL); |
| @@ -907,8 +917,7 @@ TEST_F(WebSocketChannelTest, EverythingIsPassedToTheCreatorFunction) { |
| TEST_F(WebSocketChannelDeletingTest, OnAddChannelResponseFail) { |
| CreateChannelAndConnect(); |
| EXPECT_TRUE(channel_); |
| - connect_data_.creator.connect_delegate->OnFailure( |
| - kWebSocketErrorNoStatusReceived); |
| + connect_data_.creator.connect_delegate->OnFailure("bye"); |
| EXPECT_EQ(NULL, channel_.get()); |
| } |
| @@ -956,7 +965,7 @@ TEST_F(WebSocketChannelDeletingTest, OnFlowControlAfterConnect) { |
| TEST_F(WebSocketChannelDeletingTest, OnFlowControlAfterSend) { |
| set_stream(make_scoped_ptr(new WriteableFakeWebSocketStream)); |
| // Avoid deleting the channel yet. |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| ASSERT_TRUE(channel_); |
| deleting_ = EVENT_ON_FLOW_CONTROL; |
| @@ -996,7 +1005,7 @@ TEST_F(WebSocketChannelDeletingTest, OnClosingHandshakeAsync) { |
| TEST_F(WebSocketChannelDeletingTest, OnDropChannelWriteError) { |
| set_stream(make_scoped_ptr(new UnWriteableFakeWebSocketStream)); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| ASSERT_TRUE(channel_); |
| channel_->SendFrame( |
| @@ -1010,7 +1019,7 @@ TEST_F(WebSocketChannelDeletingTest, OnDropChannelReadError) { |
| stream->PrepareReadFramesError(ReadableFakeWebSocketStream::ASYNC, |
| ERR_FAILED); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| ASSERT_TRUE(channel_); |
| base::MessageLoop::current()->RunUntilIdle(); |
| @@ -1019,7 +1028,7 @@ TEST_F(WebSocketChannelDeletingTest, OnDropChannelReadError) { |
| TEST_F(WebSocketChannelDeletingTest, FailChannelInSendFrame) { |
| set_stream(make_scoped_ptr(new WriteableFakeWebSocketStream)); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| ASSERT_TRUE(channel_); |
| channel_->SendFrame(true, |
| @@ -1034,7 +1043,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelInOnReadDone) { |
| stream->PrepareReadFramesError(ReadableFakeWebSocketStream::ASYNC, |
| ERR_WS_PROTOCOL_ERROR); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| ASSERT_TRUE(channel_); |
| base::MessageLoop::current()->RunUntilIdle(); |
| @@ -1048,7 +1057,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelDueToMaskedFrame) { |
| {FINAL_FRAME, WebSocketFrameHeader::kOpCodeText, MASKED, "HELLO"}}; |
| stream->PrepareReadFrames(ReadableFakeWebSocketStream::SYNC, OK, frames); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| EXPECT_EQ(NULL, channel_.get()); |
| @@ -1061,7 +1070,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelDueToBadControlFrame) { |
| {NOT_FINAL_FRAME, WebSocketFrameHeader::kOpCodePong, NOT_MASKED, ""}}; |
| stream->PrepareReadFrames(ReadableFakeWebSocketStream::SYNC, OK, frames); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| EXPECT_EQ(NULL, channel_.get()); |
| @@ -1075,7 +1084,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelDueToBadControlFrameNull) { |
| {NOT_FINAL_FRAME, WebSocketFrameHeader::kOpCodePong, NOT_MASKED, NULL}}; |
| stream->PrepareReadFrames(ReadableFakeWebSocketStream::SYNC, OK, frames); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| EXPECT_EQ(NULL, channel_.get()); |
| @@ -1090,7 +1099,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelDueToPongAfterClose) { |
| {FINAL_FRAME, WebSocketFrameHeader::kOpCodePong, NOT_MASKED, ""}}; |
| stream->PrepareReadFrames(ReadableFakeWebSocketStream::SYNC, OK, frames); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| EXPECT_EQ(NULL, channel_.get()); |
| @@ -1105,7 +1114,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelDueToPongAfterCloseNull) { |
| {FINAL_FRAME, WebSocketFrameHeader::kOpCodePong, NOT_MASKED, NULL}}; |
| stream->PrepareReadFrames(ReadableFakeWebSocketStream::SYNC, OK, frames); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| EXPECT_EQ(NULL, channel_.get()); |
| @@ -1117,7 +1126,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelDueToUnknownOpCode) { |
| static const InitFrame frames[] = {{FINAL_FRAME, 0x7, NOT_MASKED, ""}}; |
| stream->PrepareReadFrames(ReadableFakeWebSocketStream::SYNC, OK, frames); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| EXPECT_EQ(NULL, channel_.get()); |
| @@ -1129,7 +1138,7 @@ TEST_F(WebSocketChannelDeletingTest, FailChannelDueToUnknownOpCodeNull) { |
| static const InitFrame frames[] = {{FINAL_FRAME, 0x7, NOT_MASKED, NULL}}; |
| stream->PrepareReadFrames(ReadableFakeWebSocketStream::SYNC, OK, frames); |
| set_stream(stream.Pass()); |
| - deleting_ = EVENT_ON_DROP_CHANNEL; |
| + deleting_ = EVENT_ON_FAIL_CHANNEL | EVENT_ON_DROP_CHANNEL; |
| CreateChannelAndConnectSuccessfully(); |
| EXPECT_EQ(NULL, channel_.get()); |
| @@ -1149,12 +1158,11 @@ TEST_F(WebSocketChannelEventInterfaceTest, ConnectSuccessReported) { |
| TEST_F(WebSocketChannelEventInterfaceTest, ConnectFailureReported) { |
| // true means failure. |
|
Adam Rice
2013/12/09 07:41:12
Please remove this "// true means failure" comment
yhirano
2013/12/09 07:48:09
Done.
|
| - EXPECT_CALL(*event_interface_, OnAddChannelResponse(true, "")); |
| + EXPECT_CALL(*event_interface_, OnFailChannel("hello")); |
| CreateChannelAndConnect(); |
| - connect_data_.creator.connect_delegate->OnFailure( |
| - kWebSocketErrorNoStatusReceived); |
| + connect_data_.creator.connect_delegate->OnFailure("hello"); |
| } |
| TEST_F(WebSocketChannelEventInterfaceTest, NonWebSocketSchemeRejected) { |