Ignore:
Timestamp:
Feb 22, 2012, 2:03:46 AM (13 years ago)
Author:
[email protected]
Message:

Adding WebSocket per-frame DEFLATE extension
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):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r108456 r108468  
     12012-02-22  Kenichi Ishibashi  <[email protected]>
     2
     3        Adding WebSocket per-frame DEFLATE extension
     4        https://bugs.webkit.org/show_bug.cgi?id=77522
     5
     6        Added USE(ZLIB) flag.
     7
     8        Reviewed by Kent Tamura.
     9
     10        * wtf/Platform.h:
     11
    1122012-02-22  Hojong Han  <[email protected]>
    213
Note: See TracChangeset for help on using the changeset viewer.