-
bashi@chromium.org authored
https://bugs.webkit.org/show_bug.cgi?id=77522 Source/JavaScriptCore: Added USE(ZLIB) flag. Reviewed by Kent Tamura. * wtf/Platform.h: Source/WebCore: Add WebSocketDeflateFramer class which handles deflate-frame extension. This class encapsulates WebSocketDeflater and WebSocketInflater classes, which depend on zlib, so that WebSocketChannel is not necessary to aware zlib dependency. Reviewed by Kent Tamura. Tests: http/tests/websocket/tests/hybi/compressed-control-frame.html http/tests/websocket/tests/hybi/deflate-frame-comp-bit-onoff.html http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter.html http/tests/websocket/tests/hybi/deflate-frame-parameter.html * CMakeLists.txt: Added WebSocketDeflateFramer.(cpp|h) * GNUmakefile.list.am: Ditto. * Target.pri: Ditto. * WebCore.gypi: Ditto. * WebCore.vcproj/WebCore.vcproj: Ditto. * WebCore.xcodeproj/project.pbxproj: Ditto. * websockets/WebSocket.cpp: (WebCore::WebSocket::didConnect): Set m_extensions. * websockets/WebSocketChannel.cpp: (WebCore::WebSocketChannel::connect): Add deflate-frame extension processor to WebSocketHanshake if deflate can use. (WebCore::WebSocketChannel::fail): Call m_deflateFramer.didFail(). (WebCore::WebSocketChannel::processFrame): Decompress frames if needed. (WebCore::WebSocketChannel::sendFrame): Compress frames if possible. * websockets/WebSocketChannel.h: * websockets/WebSocketDeflateFramer.cpp: Added. (WebCore): (WebSocketExtensionDeflateFrame): (WebCore::WebSocketExtensionDeflateFrame::create): (WebCore::WebSocketExtensionDeflateFrame::~WebSocketExtensionDeflateFrame): (WebCore::WebSocketExtensionDeflateFrame::WebSocketExtensionDeflateFrame): (WebCore::WebSocketExtensionDeflateFrame::handshakeString): (WebCore::WebSocketExtensionDeflateFrame::processResponse): (WebCore::DeflateResultHolder::DeflateResultHolder): (WebCore::DeflateResultHolder::~DeflateResultHolder): (WebCore::DeflateResultHolder::fail): (WebCore::InflateResultHolder::InflateResultHolder): (WebCore::InflateResultHolder::~InflateResultHolder): (WebCore::InflateResultHolder::fail): (WebCore::WebSocketDeflateFramer::WebSocketDeflateFramer): (WebCore::WebSocketDeflateFramer::createExtensionProcessor): (WebCore::WebSocketDeflateFramer::canDeflate): (WebCore::WebSocketDeflateFramer::enableDeflate): (WebCore::WebSocketDeflateFramer::deflate): (WebCore::WebSocketDeflateFramer::resetDeflateContext): (WebCore::WebSocketDeflateFramer::inflate): (WebCore::WebSocketDeflateFramer::resetInflateContext): (WebCore::WebSocketDeflateFramer::didFail): * websockets/WebSocketDeflateFramer.h: Added. (WebCore): (DeflateResultHolder): (WebCore::DeflateResultHolder::succeeded): (WebCore::DeflateResultHolder::failureReason): (InflateResultHolder): (WebCore::InflateResultHolder::succeeded): (WebCore::InflateResultHolder::failureReason): (WebSocketDeflateFramer): (WebCore::WebSocketDeflateFramer::enabled): LayoutTests: Added tests for WebSocket deflate-frame extension. Also updated some tests to follow the change. Reviewed by Kent Tamura. * http/tests/websocket/tests/hybi/compressed-control-frame-expected.txt: Added. * http/tests/websocket/tests/hybi/compressed-control-frame.html: Added. * http/tests/websocket/tests/hybi/compressed-control-frame_wsh.py: Added. (web_socket_do_extra_handshake): (web_socket_transfer_data): * http/tests/websocket/tests/hybi/deflate-frame-comp-bit-onoff-expected.txt: Added. * http/tests/websocket/tests/hybi/deflate-frame-comp-bit-onoff.html: Added. * http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter-expected.txt: Added. * http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter.html: Added. * http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter_wsh.py: Added. (web_socket_do_extra_handshake): (web_socket_transfer_data): * http/tests/websocket/tests/hybi/deflate-frame-parameter-expected.txt: Added. * http/tests/websocket/tests/hybi/deflate-frame-parameter.html: Added. * http/tests/websocket/tests/hybi/deflate-frame_wsh.py: Added. (_get_deflate_frame_extension_processor): (web_socket_do_extra_handshake): (web_socket_transfer_data): * http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header-expected.txt: * http/tests/websocket/tests/hybi/send-file-blob_wsh.py: (_retrieve_frame): (web_socket_transfer_data): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@108468 268f45cc-cd09-0410-ab3c-d52691b4dbfc
fc1d3cd0