Index: Source/modules/websockets/NewWebSocketChannelImplTest.cpp |
diff --git a/Source/modules/websockets/NewWebSocketChannelImplTest.cpp b/Source/modules/websockets/NewWebSocketChannelImplTest.cpp |
deleted file mode 100644 |
index 0a62a268ca153fbf1fcdf2ad70e6134a129da9a1..0000000000000000000000000000000000000000 |
--- a/Source/modules/websockets/NewWebSocketChannelImplTest.cpp |
+++ /dev/null |
@@ -1,740 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "config.h" |
-#include "modules/websockets/WebSocketChannel.h" |
- |
-#include "core/dom/Document.h" |
-#include "core/fileapi/Blob.h" |
-#include "core/frame/ConsoleTypes.h" |
-#include "core/testing/DummyPageHolder.h" |
-#include "modules/websockets/NewWebSocketChannelImpl.h" |
-#include "modules/websockets/WebSocketChannelClient.h" |
-#include "platform/heap/Handle.h" |
-#include "platform/weborigin/KURL.h" |
-#include "public/platform/WebSerializedOrigin.h" |
-#include "public/platform/WebSocketHandle.h" |
-#include "public/platform/WebSocketHandleClient.h" |
-#include "public/platform/WebString.h" |
-#include "public/platform/WebURL.h" |
-#include "public/platform/WebVector.h" |
-#include "wtf/ArrayBuffer.h" |
-#include "wtf/OwnPtr.h" |
-#include "wtf/Vector.h" |
-#include "wtf/text/WTFString.h" |
- |
-#include <gmock/gmock.h> |
-#include <gtest/gtest.h> |
- |
-using testing::_; |
-using testing::InSequence; |
-using testing::PrintToString; |
-using testing::AnyNumber; |
- |
- |
-namespace blink { |
- |
-namespace { |
- |
-typedef testing::StrictMock< testing::MockFunction<void(int)> > Checkpoint; |
- |
-class MockWebSocketChannelClient : public GarbageCollectedFinalized<MockWebSocketChannelClient>, public WebSocketChannelClient { |
- USING_GARBAGE_COLLECTED_MIXIN(MockWebSocketChannelClient); |
-public: |
- static MockWebSocketChannelClient* create() |
- { |
- return new testing::StrictMock<MockWebSocketChannelClient>(); |
- } |
- |
- MockWebSocketChannelClient() { } |
- |
- virtual ~MockWebSocketChannelClient() { } |
- |
- MOCK_METHOD2(didConnect, void(const String&, const String&)); |
- MOCK_METHOD1(didReceiveTextMessage, void(const String&)); |
- virtual void didReceiveBinaryMessage(PassOwnPtr<Vector<char> > payload) override |
- { |
- didReceiveBinaryMessageMock(*payload); |
- } |
- MOCK_METHOD1(didReceiveBinaryMessageMock, void(const Vector<char>&)); |
- MOCK_METHOD0(didError, void()); |
- MOCK_METHOD1(didConsumeBufferedAmount, void(unsigned long)); |
- MOCK_METHOD0(didStartClosingHandshake, void()); |
- MOCK_METHOD3(didClose, void(ClosingHandshakeCompletionStatus, unsigned short, const String&)); |
- |
- virtual void trace(Visitor* visitor) override |
- { |
- WebSocketChannelClient::trace(visitor); |
- } |
- |
-}; |
- |
-class MockWebSocketHandle : public WebSocketHandle { |
-public: |
- static MockWebSocketHandle* create() |
- { |
- return new testing::StrictMock<MockWebSocketHandle>(); |
- } |
- |
- MockWebSocketHandle() { } |
- |
- virtual ~MockWebSocketHandle() { } |
- |
- MOCK_METHOD4(connect, void(const WebURL&, const WebVector<WebString>&, const WebSerializedOrigin&, WebSocketHandleClient*)); |
- MOCK_METHOD4(send, void(bool, WebSocketHandle::MessageType, const char*, size_t)); |
- MOCK_METHOD1(flowControl, void(int64_t)); |
- MOCK_METHOD2(close, void(unsigned short, const WebString&)); |
-}; |
- |
-class NewWebSocketChannelImplTest : public ::testing::Test { |
-public: |
- NewWebSocketChannelImplTest() |
- : m_pageHolder(DummyPageHolder::create()) |
- , m_channelClient(MockWebSocketChannelClient::create()) |
- , m_handle(MockWebSocketHandle::create()) |
- , m_channel(NewWebSocketChannelImpl::create(&m_pageHolder->document(), m_channelClient.get(), String(), 0, handle())) |
- , m_sumOfConsumedBufferedAmount(0) |
- { |
- ON_CALL(*channelClient(), didConsumeBufferedAmount(_)).WillByDefault(Invoke(this, &NewWebSocketChannelImplTest::didConsumeBufferedAmount)); |
- } |
- |
- ~NewWebSocketChannelImplTest() |
- { |
- channel()->disconnect(); |
- } |
- |
- MockWebSocketChannelClient* channelClient() |
- { |
- return m_channelClient.get(); |
- } |
- |
- WebSocketChannel* channel() |
- { |
- return static_cast<WebSocketChannel*>(m_channel.get()); |
- } |
- |
- WebSocketHandleClient* handleClient() |
- { |
- return static_cast<WebSocketHandleClient*>(m_channel.get()); |
- } |
- |
- MockWebSocketHandle* handle() |
- { |
- return m_handle; |
- } |
- |
- void didConsumeBufferedAmount(unsigned long a) |
- { |
- m_sumOfConsumedBufferedAmount += a; |
- } |
- |
- void connect() |
- { |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), connect(WebURL(KURL(KURL(), "ws://localhost/")), _, _, handleClient())); |
- EXPECT_CALL(*handle(), flowControl(65536)); |
- EXPECT_CALL(*channelClient(), didConnect(String("a"), String("b"))); |
- } |
- EXPECT_TRUE(channel()->connect(KURL(KURL(), "ws://localhost/"), "x")); |
- handleClient()->didConnect(handle(), false, WebString("a"), WebString("b")); |
- ::testing::Mock::VerifyAndClearExpectations(this); |
- } |
- |
- OwnPtr<DummyPageHolder> m_pageHolder; |
- Persistent<MockWebSocketChannelClient> m_channelClient; |
- MockWebSocketHandle* m_handle; |
- Persistent<NewWebSocketChannelImpl> m_channel; |
- unsigned long m_sumOfConsumedBufferedAmount; |
-}; |
- |
-MATCHER_P2(MemEq, p, len, |
- std::string("pointing to memory") |
- + (negation ? " not" : "") |
- + " equal to \"" |
- + std::string(p, len) + "\" (length=" + PrintToString(len) + ")" |
-) |
-{ |
- return memcmp(arg, p, len) == 0; |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, connectSuccess) |
-{ |
- Checkpoint checkpoint; |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), connect(WebURL(KURL(KURL(), "ws://localhost/")), _, _, handleClient())); |
- EXPECT_CALL(*handle(), flowControl(65536)); |
- EXPECT_CALL(checkpoint, Call(1)); |
- EXPECT_CALL(*channelClient(), didConnect(String("a"), String("b"))); |
- } |
- |
- EXPECT_TRUE(channel()->connect(KURL(KURL(), "ws://localhost/"), "x")); |
- checkpoint.Call(1); |
- handleClient()->didConnect(handle(), false, WebString("a"), WebString("b")); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendText) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeText, MemEq("foo", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeText, MemEq("bar", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeText, MemEq("baz", 3), 3)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- channel()->send("foo"); |
- channel()->send("bar"); |
- channel()->send("baz"); |
- |
- EXPECT_EQ(9ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendTextContinuation) |
-{ |
- connect(); |
- Checkpoint checkpoint; |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeText, MemEq("0123456789abcdef", 16), 16)); |
- EXPECT_CALL(checkpoint, Call(1)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("g", 1), 1)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeText, MemEq("hijk", 4), 4)); |
- EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeText, MemEq("lmnopqrstuv", 11), 11)); |
- EXPECT_CALL(checkpoint, Call(2)); |
- EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeContinuation, MemEq("wxyzABCDEFGHIJKL", 16), 16)); |
- EXPECT_CALL(checkpoint, Call(3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("MNOPQRSTUVWXYZ", 14), 14)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- channel()->send("0123456789abcdefg"); |
- channel()->send("hijk"); |
- channel()->send("lmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); |
- checkpoint.Call(1); |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- checkpoint.Call(2); |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- checkpoint.Call(3); |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- |
- EXPECT_EQ(62ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendTextNonLatin1) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeText, MemEq("\xe7\x8b\x90\xe0\xa4\x94", 6), 6)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- UChar nonLatin1String[] = { |
- 0x72d0, |
- 0x0914, |
- 0x0000 |
- }; |
- channel()->send(nonLatin1String); |
- |
- EXPECT_EQ(6ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendTextNonLatin1Continuation) |
-{ |
- connect(); |
- Checkpoint checkpoint; |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeText, MemEq("\xe7\x8b\x90\xe0\xa4\x94\xe7\x8b\x90\xe0\xa4\x94\xe7\x8b\x90\xe0", 16), 16)); |
- EXPECT_CALL(checkpoint, Call(1)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("\xa4\x94", 2), 2)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- UChar nonLatin1String[] = { |
- 0x72d0, |
- 0x0914, |
- 0x72d0, |
- 0x0914, |
- 0x72d0, |
- 0x0914, |
- 0x0000 |
- }; |
- channel()->send(nonLatin1String); |
- checkpoint.Call(1); |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- |
- EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInVector) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("foo", 3), 3)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- Vector<char> fooVector; |
- fooVector.append("foo", 3); |
- channel()->send(adoptPtr(new Vector<char>(fooVector))); |
- |
- EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInVectorWithNullBytes) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0ar", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("b\0z", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("qu\0", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0\0\0", 3), 3)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- { |
- Vector<char> v; |
- v.append("\0ar", 3); |
- channel()->send(adoptPtr(new Vector<char>(v))); |
- } |
- { |
- Vector<char> v; |
- v.append("b\0z", 3); |
- channel()->send(adoptPtr(new Vector<char>(v))); |
- } |
- { |
- Vector<char> v; |
- v.append("qu\0", 3); |
- channel()->send(adoptPtr(new Vector<char>(v))); |
- } |
- { |
- Vector<char> v; |
- v.append("\0\0\0", 3); |
- channel()->send(adoptPtr(new Vector<char>(v))); |
- } |
- |
- EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInVectorNonLatin1UTF8) |
-{ |
- connect(); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\xe7\x8b\x90", 3), 3)); |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- Vector<char> v; |
- v.append("\xe7\x8b\x90", 3); |
- channel()->send(adoptPtr(new Vector<char>(v))); |
- |
- EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInVectorNonUTF8) |
-{ |
- connect(); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\x80\xff\xe7", 3), 3)); |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- Vector<char> v; |
- v.append("\x80\xff\xe7", 3); |
- channel()->send(adoptPtr(new Vector<char>(v))); |
- |
- EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInVectorNonLatin1UTF8Continuation) |
-{ |
- connect(); |
- Checkpoint checkpoint; |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, MemEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7", 16), 16)); |
- EXPECT_CALL(checkpoint, Call(1)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("\x8b\x90", 2), 2)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- Vector<char> v; |
- v.append("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90", 18); |
- channel()->send(adoptPtr(new Vector<char>(v))); |
- checkpoint.Call(1); |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- |
- EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInArrayBuffer) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("foo", 3), 3)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- RefPtr<ArrayBuffer> fooBuffer = ArrayBuffer::create("foo", 3); |
- channel()->send(*fooBuffer, 0, 3); |
- |
- EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInArrayBufferPartial) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("foo", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("bar", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("baz", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("a", 1), 1)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- RefPtr<ArrayBuffer> foobarBuffer = ArrayBuffer::create("foobar", 6); |
- RefPtr<ArrayBuffer> qbazuxBuffer = ArrayBuffer::create("qbazux", 6); |
- channel()->send(*foobarBuffer, 0, 3); |
- channel()->send(*foobarBuffer, 3, 3); |
- channel()->send(*qbazuxBuffer, 1, 3); |
- channel()->send(*qbazuxBuffer, 2, 1); |
- |
- EXPECT_EQ(10ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInArrayBufferWithNullBytes) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0ar", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("b\0z", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("qu\0", 3), 3)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\0\0\0", 3), 3)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- { |
- RefPtr<ArrayBuffer> b = ArrayBuffer::create("\0ar", 3); |
- channel()->send(*b, 0, 3); |
- } |
- { |
- RefPtr<ArrayBuffer> b = ArrayBuffer::create("b\0z", 3); |
- channel()->send(*b, 0, 3); |
- } |
- { |
- RefPtr<ArrayBuffer> b = ArrayBuffer::create("qu\0", 3); |
- channel()->send(*b, 0, 3); |
- } |
- { |
- RefPtr<ArrayBuffer> b = ArrayBuffer::create("\0\0\0", 3); |
- channel()->send(*b, 0, 3); |
- } |
- |
- EXPECT_EQ(12ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInArrayBufferNonLatin1UTF8) |
-{ |
- connect(); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\xe7\x8b\x90", 3), 3)); |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- RefPtr<ArrayBuffer> b = ArrayBuffer::create("\xe7\x8b\x90", 3); |
- channel()->send(*b, 0, 3); |
- |
- EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInArrayBufferNonUTF8) |
-{ |
- connect(); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeBinary, MemEq("\x80\xff\xe7", 3), 3)); |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- RefPtr<ArrayBuffer> b = ArrayBuffer::create("\x80\xff\xe7", 3); |
- channel()->send(*b, 0, 3); |
- |
- EXPECT_EQ(3ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, sendBinaryInArrayBufferNonLatin1UTF8Continuation) |
-{ |
- connect(); |
- Checkpoint checkpoint; |
- { |
- InSequence s; |
- EXPECT_CALL(*handle(), send(false, WebSocketHandle::MessageTypeBinary, MemEq("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7", 16), 16)); |
- EXPECT_CALL(checkpoint, Call(1)); |
- EXPECT_CALL(*handle(), send(true, WebSocketHandle::MessageTypeContinuation, MemEq("\x8b\x90", 2), 2)); |
- } |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- EXPECT_CALL(*channelClient(), didConsumeBufferedAmount(_)).Times(AnyNumber()); |
- |
- RefPtr<ArrayBuffer> b = ArrayBuffer::create("\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90\xe7\x8b\x90", 18); |
- channel()->send(*b, 0, 18); |
- checkpoint.Call(1); |
- |
- handleClient()->didReceiveFlowControl(handle(), 16); |
- |
- EXPECT_EQ(18ul, m_sumOfConsumedBufferedAmount); |
-} |
- |
-// FIXME: Add tests for WebSocketChannel::send(PassRefPtr<BlobDataHandle>) |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveText) |
-{ |
- connect(); |
- { |
- InSequence s; |
- EXPECT_CALL(*channelClient(), didReceiveTextMessage(String("FOO"))); |
- EXPECT_CALL(*channelClient(), didReceiveTextMessage(String("BAR"))); |
- } |
- |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeText, "FOOX", 3); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeText, "BARX", 3); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveTextContinuation) |
-{ |
- connect(); |
- EXPECT_CALL(*channelClient(), didReceiveTextMessage(String("BAZ"))); |
- |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeText, "BX", 1); |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeContinuation, "AX", 1); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeContinuation, "ZX", 1); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveTextNonLatin1) |
-{ |
- connect(); |
- UChar nonLatin1String[] = { |
- 0x72d0, |
- 0x0914, |
- 0x0000 |
- }; |
- EXPECT_CALL(*channelClient(), didReceiveTextMessage(String(nonLatin1String))); |
- |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeText, "\xe7\x8b\x90\xe0\xa4\x94", 6); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveTextNonLatin1Continuation) |
-{ |
- connect(); |
- UChar nonLatin1String[] = { |
- 0x72d0, |
- 0x0914, |
- 0x0000 |
- }; |
- EXPECT_CALL(*channelClient(), didReceiveTextMessage(String(nonLatin1String))); |
- |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeText, "\xe7\x8b", 2); |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeContinuation, "\x90\xe0", 2); |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeContinuation, "\xa4", 1); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeContinuation, "\x94", 1); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveBinary) |
-{ |
- connect(); |
- Vector<char> fooVector; |
- fooVector.append("FOO", 3); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(fooVector)); |
- |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeBinary, "FOOx", 3); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveBinaryContinuation) |
-{ |
- connect(); |
- Vector<char> bazVector; |
- bazVector.append("BAZ", 3); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(bazVector)); |
- |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeBinary, "Bx", 1); |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeContinuation, "Ax", 1); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeContinuation, "Zx", 1); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveBinaryWithNullBytes) |
-{ |
- connect(); |
- { |
- InSequence s; |
- { |
- Vector<char> v; |
- v.append("\0AR", 3); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); |
- } |
- { |
- Vector<char> v; |
- v.append("B\0Z", 3); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); |
- } |
- { |
- Vector<char> v; |
- v.append("QU\0", 3); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); |
- } |
- { |
- Vector<char> v; |
- v.append("\0\0\0", 3); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); |
- } |
- } |
- |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeBinary, "\0AR", 3); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeBinary, "B\0Z", 3); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeBinary, "QU\0", 3); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeBinary, "\0\0\0", 3); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveBinaryNonLatin1UTF8) |
-{ |
- connect(); |
- Vector<char> v; |
- v.append("\xe7\x8b\x90\xe0\xa4\x94", 6); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); |
- |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeBinary, "\xe7\x8b\x90\xe0\xa4\x94", 6); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveBinaryNonLatin1UTF8Continuation) |
-{ |
- connect(); |
- Vector<char> v; |
- v.append("\xe7\x8b\x90\xe0\xa4\x94", 6); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); |
- |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeBinary, "\xe7\x8b", 2); |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeContinuation, "\x90\xe0", 2); |
- handleClient()->didReceiveData(handle(), false, WebSocketHandle::MessageTypeContinuation, "\xa4", 1); |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeContinuation, "\x94", 1); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, receiveBinaryNonUTF8) |
-{ |
- connect(); |
- Vector<char> v; |
- v.append("\x80\xff", 2); |
- EXPECT_CALL(*channelClient(), didReceiveBinaryMessageMock(v)); |
- |
- handleClient()->didReceiveData(handle(), true, WebSocketHandle::MessageTypeBinary, "\x80\xff", 2); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, closeFromBrowser) |
-{ |
- connect(); |
- Checkpoint checkpoint; |
- { |
- InSequence s; |
- |
- EXPECT_CALL(*channelClient(), didStartClosingHandshake()); |
- EXPECT_CALL(checkpoint, Call(1)); |
- |
- EXPECT_CALL(*handle(), close(WebSocketChannel::CloseEventCodeNormalClosure, WebString("close reason"))); |
- EXPECT_CALL(checkpoint, Call(2)); |
- |
- EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHandshakeComplete, WebSocketChannel::CloseEventCodeNormalClosure, String("close reason"))); |
- EXPECT_CALL(checkpoint, Call(3)); |
- } |
- |
- handleClient()->didStartClosingHandshake(handle()); |
- checkpoint.Call(1); |
- |
- channel()->close(WebSocketChannel::CloseEventCodeNormalClosure, String("close reason")); |
- checkpoint.Call(2); |
- |
- handleClient()->didClose(handle(), true, WebSocketChannel::CloseEventCodeNormalClosure, String("close reason")); |
- checkpoint.Call(3); |
- |
- channel()->disconnect(); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, closeFromWebSocket) |
-{ |
- connect(); |
- Checkpoint checkpoint; |
- { |
- InSequence s; |
- |
- EXPECT_CALL(*handle(), close(WebSocketChannel::CloseEventCodeNormalClosure, WebString("close reason"))); |
- EXPECT_CALL(checkpoint, Call(1)); |
- |
- EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHandshakeComplete, WebSocketChannel::CloseEventCodeNormalClosure, String("close reason"))); |
- EXPECT_CALL(checkpoint, Call(2)); |
- } |
- |
- channel()->close(WebSocketChannel::CloseEventCodeNormalClosure, String("close reason")); |
- checkpoint.Call(1); |
- |
- handleClient()->didClose(handle(), true, WebSocketChannel::CloseEventCodeNormalClosure, String("close reason")); |
- checkpoint.Call(2); |
- |
- channel()->disconnect(); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, failFromBrowser) |
-{ |
- connect(); |
- { |
- InSequence s; |
- |
- EXPECT_CALL(*channelClient(), didError()); |
- EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHandshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String())); |
- } |
- |
- handleClient()->didFail(handle(), "fail message"); |
-} |
- |
-TEST_F(NewWebSocketChannelImplTest, failFromWebSocket) |
-{ |
- connect(); |
- { |
- InSequence s; |
- |
- EXPECT_CALL(*channelClient(), didError()); |
- EXPECT_CALL(*channelClient(), didClose(WebSocketChannelClient::ClosingHandshakeIncomplete, WebSocketChannel::CloseEventCodeAbnormalClosure, String())); |
- } |
- |
- channel()->fail("fail message from WebSocket", ErrorMessageLevel, "sourceURL", 1234); |
-} |
- |
-} // namespace |
- |
-} // namespace blink |