[WebSocket] Add extension attribute support
authorbashi@chromium.org <bashi@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2012 02:11:46 +0000 (02:11 +0000)
committerbashi@chromium.org <bashi@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Feb 2012 02:11:46 +0000 (02:11 +0000)
commitafb40ae5a3abcd8beab2bf6f9db43af4c9d28832
tree77f83e63c28e8d72f16abc2ad55b0e139b9ebc6b
parent852fdb1d3e95b025b185ab3e52c5cb65f1036dc8
[WebSocket] Add extension attribute support
https://bugs.webkit.org/show_bug.cgi?id=78557

Source/WebCore:

Implement WebSocket "extensions" attribute that holds a list of
extension the server accepted. No change in behavior at this time
because we don't send any extension on handshake.

Reviewed by Kent Tamura.

No new tests. http/tests/websocket/tests/hybi/extensions.html checks the value of this attribute.

* websockets/ThreadableWebSocketChannel.h: Add extensions().
(ThreadableWebSocketChannel):
* websockets/ThreadableWebSocketChannelClientWrapper.cpp:
(WebCore::ThreadableWebSocketChannelClientWrapper::extensions): Added.
(WebCore):
(WebCore::ThreadableWebSocketChannelClientWrapper::setExtensions): Added.
* websockets/ThreadableWebSocketChannelClientWrapper.h:
(ThreadableWebSocketChannelClientWrapper):
* websockets/WebSocket.cpp: Added m_extensions member variable.
(WebCore::WebSocket::WebSocket):
(WebCore::WebSocket::extensions): Returns m_extensions.
* websockets/WebSocket.h:
* websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::extensions): Added.
(WebCore):
* websockets/WebSocketChannel.h:
(WebSocketChannel):
* websockets/WebSocketExtensionDispatcher.cpp:
(WebCore::WebSocketExtensionDispatcher::fail): Added.
(WebCore::WebSocketExtensionDispatcher::processHeaderValue): Stores accepted extensions.
(WebCore::WebSocketExtensionDispatcher::acceptedExtensions): Added.
(WebCore):
(WebCore::WebSocketExtensionDispatcher::acceptedExtensions): Added.
* websockets/WebSocketExtensionDispatcher.h:
(WebSocketExtensionDispatcher):
* websockets/WebSocketHandshake.cpp:
(WebCore::WebSocketHandshake::acceptedExtensions): Added.
(WebCore):
* websockets/WebSocketHandshake.h:
* websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::extensions): Added.
(WebCore):
(WebCore::workerContextDidConnect): Calls ThreadableWebSocketChannelClientWrapper::setExtensions().
(WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect): Passes extensions as an argument.
* websockets/WorkerThreadableWebSocketChannel.h:
(WorkerThreadableWebSocketChannel):

Source/WebKit/chromium:

Add WebSocketExtensionDispatcher::acceptedExtensions() checks.

Reviewed by Kent Tamura.

* tests/WebSocketExtensionDispatcherTest.cpp:
(WebCore::TEST_F):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@107769 268f45cc-cd09-0410-ab3c-d52691b4dbfc
16 files changed:
Source/WebCore/ChangeLog
Source/WebCore/websockets/ThreadableWebSocketChannel.h
Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.cpp
Source/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h
Source/WebCore/websockets/WebSocket.cpp
Source/WebCore/websockets/WebSocket.h
Source/WebCore/websockets/WebSocketChannel.cpp
Source/WebCore/websockets/WebSocketChannel.h
Source/WebCore/websockets/WebSocketExtensionDispatcher.cpp
Source/WebCore/websockets/WebSocketExtensionDispatcher.h
Source/WebCore/websockets/WebSocketHandshake.cpp
Source/WebCore/websockets/WebSocketHandshake.h
Source/WebCore/websockets/WorkerThreadableWebSocketChannel.cpp
Source/WebCore/websockets/WorkerThreadableWebSocketChannel.h
Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/tests/WebSocketExtensionDispatcherTest.cpp