Skip to content
  • bashi@chromium.org's avatar
    [WebSocket] Add extension attribute support · afb40ae5
    bashi@chromium.org authored
    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
    afb40ae5