Changeset 108468 in webkit
- Timestamp:
- Feb 22, 2012 2:03:46 AM (12 years ago)
- Location:
- trunk
- Files:
-
- 12 added
- 15 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r108460 r108468 1 2012-02-22 Kenichi Ishibashi <bashi@chromium.org> 2 3 Adding WebSocket per-frame DEFLATE extension 4 https://bugs.webkit.org/show_bug.cgi?id=77522 5 6 Added tests for WebSocket deflate-frame extension. Also updated some 7 tests to follow the change. 8 9 Reviewed by Kent Tamura. 10 11 * http/tests/websocket/tests/hybi/compressed-control-frame-expected.txt: Added. 12 * http/tests/websocket/tests/hybi/compressed-control-frame.html: Added. 13 * http/tests/websocket/tests/hybi/compressed-control-frame_wsh.py: Added. 14 (web_socket_do_extra_handshake): 15 (web_socket_transfer_data): 16 * http/tests/websocket/tests/hybi/deflate-frame-comp-bit-onoff-expected.txt: Added. 17 * http/tests/websocket/tests/hybi/deflate-frame-comp-bit-onoff.html: Added. 18 * http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter-expected.txt: Added. 19 * http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter.html: Added. 20 * http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter_wsh.py: Added. 21 (web_socket_do_extra_handshake): 22 (web_socket_transfer_data): 23 * http/tests/websocket/tests/hybi/deflate-frame-parameter-expected.txt: Added. 24 * http/tests/websocket/tests/hybi/deflate-frame-parameter.html: Added. 25 * http/tests/websocket/tests/hybi/deflate-frame_wsh.py: Added. 26 (_get_deflate_frame_extension_processor): 27 (web_socket_do_extra_handshake): 28 (web_socket_transfer_data): 29 * http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header-expected.txt: 30 * http/tests/websocket/tests/hybi/send-file-blob_wsh.py: 31 (_retrieve_frame): 32 (web_socket_transfer_data): 33 1 34 2012-02-22 Yanbin Zhang <yanbin.zhang@intel.com> 2 35 -
trunk/LayoutTests/http/tests/websocket/tests/hybi/compressed-control-frame-expected.txt
r108467 r108468 1 CONSOLE MESSAGE: Received unexpected Sec-WebSocket-Extensions header2 Test whether WebSocket handshake fails if the server sends Sec-WebSocket-Extensions header.1 CONSOLE MESSAGE: Received unexpected compressed frame 2 Test whether a compressed control frame is rejected 3 3 4 4 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". 5 5 6 onopen() was called. 7 onclose() was called. 6 8 PASS closeEvent.wasClean is false 7 9 PASS successfullyParsed is true -
trunk/LayoutTests/http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header-expected.txt
r107365 r108468 1 CONSOLE MESSAGE: Received unexpected Sec-WebSocket-Extensions header1 CONSOLE MESSAGE: Received unexpected extension: x-foo 2 2 Test whether WebSocket handshake fails if the server sends Sec-WebSocket-Extensions header. 3 3 -
trunk/LayoutTests/http/tests/websocket/tests/hybi/send-file-blob_wsh.py
r94405 r108468 1 1 from mod_pywebsocket import common 2 2 from mod_pywebsocket import msgutil 3 4 5 def _retrieve_frame(stream): 6 # FIXME: Use better API. 7 frame = stream._receive_frame_as_frame_object() 8 for frame_filter in stream._options.incoming_frame_filters: 9 frame_filter.filter(frame) 10 return frame 3 11 4 12 … … 11 19 12 20 for test_number, expected_message in enumerate(expected_messages): 13 # FIXME: Use better API. 14 opcode, payload, final, unused_reserved1, unused_reserved2, unused_reserved3 = request.ws_stream._receive_frame() 15 if opcode == common.OPCODE_BINARY and payload == expected_message and final: 21 frame = _retrieve_frame(request.ws_stream) 22 if frame.opcode == common.OPCODE_BINARY and frame.payload == expected_message and frame.fin: 16 23 msgutil.send_message(request, 'PASS: Message #%d.' % test_number) 17 24 else: 18 msgutil.send_message(request, 'FAIL: Message #%d: Received unexpected frame: opcode = %r, payload = %r, final = %r' % (test_number, opcode, payload, final))25 msgutil.send_message(request, 'FAIL: Message #%d: Received unexpected frame: opcode = %r, payload = %r, final = %r' % (test_number, frame.opcode, frame.payload, frame.fin)) 19 26 20 27 -
trunk/Source/JavaScriptCore/ChangeLog
r108456 r108468 1 2012-02-22 Kenichi Ishibashi <bashi@chromium.org> 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 1 12 2012-02-22 Hojong Han <hojong.han@samsung.com> 2 13 -
trunk/Source/JavaScriptCore/wtf/Platform.h
r108444 r108468 1194 1194 #endif 1195 1195 1196 #if !PLATFORM(QT) && !PLATFORM(EFL) 1197 #define WTF_USE_ZLIB 1 1198 #endif 1199 1196 1200 #endif /* WTF_Platform_h */ -
trunk/Source/WebCore/CMakeLists.txt
r108464 r108468 2057 2057 websockets/WebSocket.cpp 2058 2058 websockets/WebSocketChannel.cpp 2059 websockets/WebSocketDeflateFramer.cpp 2059 2060 websockets/WebSocketExtensionDispatcher.cpp 2060 2061 websockets/WebSocketHandshake.cpp -
trunk/Source/WebCore/ChangeLog
r108467 r108468 1 2012-02-22 Kenichi Ishibashi <bashi@chromium.org> 2 3 Adding WebSocket per-frame DEFLATE extension 4 https://bugs.webkit.org/show_bug.cgi?id=77522 5 6 Add WebSocketDeflateFramer class which handles deflate-frame extension. 7 This class encapsulates WebSocketDeflater and WebSocketInflater classes, 8 which depend on zlib, so that WebSocketChannel is not necessary to aware 9 zlib dependency. 10 11 Reviewed by Kent Tamura. 12 13 Tests: http/tests/websocket/tests/hybi/compressed-control-frame.html 14 http/tests/websocket/tests/hybi/deflate-frame-comp-bit-onoff.html 15 http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter.html 16 http/tests/websocket/tests/hybi/deflate-frame-parameter.html 17 18 * CMakeLists.txt: Added WebSocketDeflateFramer.(cpp|h) 19 * GNUmakefile.list.am: Ditto. 20 * Target.pri: Ditto. 21 * WebCore.gypi: Ditto. 22 * WebCore.vcproj/WebCore.vcproj: Ditto. 23 * WebCore.xcodeproj/project.pbxproj: Ditto. 24 * websockets/WebSocket.cpp: 25 (WebCore::WebSocket::didConnect): Set m_extensions. 26 * websockets/WebSocketChannel.cpp: 27 (WebCore::WebSocketChannel::connect): Add deflate-frame extension processor to WebSocketHanshake if deflate can use. 28 (WebCore::WebSocketChannel::fail): Call m_deflateFramer.didFail(). 29 (WebCore::WebSocketChannel::processFrame): Decompress frames if needed. 30 (WebCore::WebSocketChannel::sendFrame): Compress frames if possible. 31 * websockets/WebSocketChannel.h: 32 * websockets/WebSocketDeflateFramer.cpp: Added. 33 (WebCore): 34 (WebSocketExtensionDeflateFrame): 35 (WebCore::WebSocketExtensionDeflateFrame::create): 36 (WebCore::WebSocketExtensionDeflateFrame::~WebSocketExtensionDeflateFrame): 37 (WebCore::WebSocketExtensionDeflateFrame::WebSocketExtensionDeflateFrame): 38 (WebCore::WebSocketExtensionDeflateFrame::handshakeString): 39 (WebCore::WebSocketExtensionDeflateFrame::processResponse): 40 (WebCore::DeflateResultHolder::DeflateResultHolder): 41 (WebCore::DeflateResultHolder::~DeflateResultHolder): 42 (WebCore::DeflateResultHolder::fail): 43 (WebCore::InflateResultHolder::InflateResultHolder): 44 (WebCore::InflateResultHolder::~InflateResultHolder): 45 (WebCore::InflateResultHolder::fail): 46 (WebCore::WebSocketDeflateFramer::WebSocketDeflateFramer): 47 (WebCore::WebSocketDeflateFramer::createExtensionProcessor): 48 (WebCore::WebSocketDeflateFramer::canDeflate): 49 (WebCore::WebSocketDeflateFramer::enableDeflate): 50 (WebCore::WebSocketDeflateFramer::deflate): 51 (WebCore::WebSocketDeflateFramer::resetDeflateContext): 52 (WebCore::WebSocketDeflateFramer::inflate): 53 (WebCore::WebSocketDeflateFramer::resetInflateContext): 54 (WebCore::WebSocketDeflateFramer::didFail): 55 * websockets/WebSocketDeflateFramer.h: Added. 56 (WebCore): 57 (DeflateResultHolder): 58 (WebCore::DeflateResultHolder::succeeded): 59 (WebCore::DeflateResultHolder::failureReason): 60 (InflateResultHolder): 61 (WebCore::InflateResultHolder::succeeded): 62 (WebCore::InflateResultHolder::failureReason): 63 (WebSocketDeflateFramer): 64 (WebCore::WebSocketDeflateFramer::enabled): 65 1 66 2012-02-22 Yuta Kitamura <yutak@chromium.org> 2 67 -
trunk/Source/WebCore/GNUmakefile.list.am
r108464 r108468 4340 4340 Source/WebCore/websockets/WebSocket.cpp \ 4341 4341 Source/WebCore/websockets/WebSocket.h \ 4342 Source/WebCore/websockets/WebSocketDeflateFramer.cpp \ 4343 Source/WebCore/websockets/WebSocketDeflateFramer.h \ 4342 4344 Source/WebCore/websockets/WebSocketDeflater.cpp \ 4343 4345 Source/WebCore/websockets/WebSocketDeflater.h \ -
trunk/Source/WebCore/Target.pri
r108464 r108468 3667 3667 websockets/WebSocketChannel.h \ 3668 3668 websockets/WebSocketChannelClient.h \ 3669 websockets/WebSocketDeflateFramer.h \ 3669 3670 websockets/WebSocketExtensionDispatcher.h \ 3670 3671 websockets/WebSocketExtensionProcessor.h \ … … 3678 3679 websockets/WebSocket.cpp \ 3679 3680 websockets/WebSocketChannel.cpp \ 3681 websockets/WebSocketDeflateFramer.cpp \ 3680 3682 websockets/WebSocketExtensionDispatcher.cpp \ 3681 3683 websockets/WebSocketHandshake.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r108467 r108468 4818 4818 'websockets/WebSocketChannel.h', 4819 4819 'websockets/WebSocketChannelClient.h', 4820 'websockets/WebSocketDeflateFramer.cpp', 4821 'websockets/WebSocketDeflateFramer.h', 4820 4822 'websockets/WebSocketDeflater.cpp', 4821 4823 'websockets/WebSocketDeflater.h', -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r108464 r108468 73463 73463 </File> 73464 73464 <File 73465 RelativePath="..\websockets\WebSocketDeflateFramer.cpp" 73466 > 73467 </File> 73468 <File 73469 RelativePath="..\websockets\WebSocketDeflateFramer.h" 73470 > 73471 </File> 73472 <File 73465 73473 RelativePath="..\websockets\WebSocketDeflater.cpp" 73466 73474 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r108464 r108468 1368 1368 4A1E71A514E106AC00626F9D /* JSShadowRoot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A1E71A314E106AC00626F9D /* JSShadowRoot.cpp */; }; 1369 1369 4A1E71A614E106AC00626F9D /* JSShadowRoot.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A1E71A414E106AC00626F9D /* JSShadowRoot.h */; }; 1370 4A29222B14F468BA0021F77E /* WebSocketDeflateFramer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A29222914F468BA0021F77E /* WebSocketDeflateFramer.cpp */; }; 1371 4A29222C14F468BA0021F77E /* WebSocketDeflateFramer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A29222A14F468BA0021F77E /* WebSocketDeflateFramer.h */; }; 1370 1372 4A4A234614F1E1440046FBF1 /* WebSocketFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4A234514F1E1440046FBF1 /* WebSocketFrame.h */; }; 1371 1373 4A6E9FC313C17D1D0046A7F8 /* FontFeatureValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4A6E9FC113C17D1D0046A7F8 /* FontFeatureValue.cpp */; }; … … 8232 8234 4A1E71A314E106AC00626F9D /* JSShadowRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSShadowRoot.cpp; sourceTree = "<group>"; }; 8233 8235 4A1E71A414E106AC00626F9D /* JSShadowRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSShadowRoot.h; sourceTree = "<group>"; }; 8236 4A29222914F468BA0021F77E /* WebSocketDeflateFramer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSocketDeflateFramer.cpp; sourceTree = "<group>"; }; 8237 4A29222A14F468BA0021F77E /* WebSocketDeflateFramer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketDeflateFramer.h; sourceTree = "<group>"; }; 8234 8238 4A4A234514F1E1440046FBF1 /* WebSocketFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketFrame.h; sourceTree = "<group>"; }; 8235 8239 4A6E9FC113C17D1D0046A7F8 /* FontFeatureValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFeatureValue.cpp; sourceTree = "<group>"; }; … … 14855 14859 510D4A48103177A20049EA54 /* WebSocketChannel.h */, 14856 14860 510D4A49103177A20049EA54 /* WebSocketChannelClient.h */, 14861 4A29222914F468BA0021F77E /* WebSocketDeflateFramer.cpp */, 14862 4A29222A14F468BA0021F77E /* WebSocketDeflateFramer.h */, 14857 14863 4AE02ABB14E8A9D200BC3BA7 /* WebSocketDeflater.cpp */, 14858 14864 4AE02ABC14E8A9D200BC3BA7 /* WebSocketDeflater.h */, … … 24245 24251 510D4A4F103177A20049EA54 /* WebSocketChannel.h in Headers */, 24246 24252 510D4A50103177A20049EA54 /* WebSocketChannelClient.h in Headers */, 24253 4A29222C14F468BA0021F77E /* WebSocketDeflateFramer.h in Headers */, 24247 24254 4AE02ABE14E8A9D200BC3BA7 /* WebSocketDeflater.h in Headers */, 24248 24255 4A957F0714E241300049DBFB /* WebSocketExtensionDispatcher.h in Headers */, … … 27204 27211 518A34C11026C831001B6896 /* WebSocket.cpp in Sources */, 27205 27212 510D4A4E103177A20049EA54 /* WebSocketChannel.cpp in Sources */, 27213 4A29222B14F468BA0021F77E /* WebSocketDeflateFramer.cpp in Sources */, 27206 27214 4AE02ABD14E8A9D200BC3BA7 /* WebSocketDeflater.cpp in Sources */, 27207 27215 4A957F0614E2412A0049DBFB /* WebSocketExtensionDispatcher.cpp in Sources */, -
trunk/Source/WebCore/websockets/WebSocket.cpp
r107769 r108468 479 479 m_state = OPEN; 480 480 m_subprotocol = m_channel->subprotocol(); 481 m_extensions = m_channel->extensions(); 481 482 dispatchEvent(Event::create(eventNames().openEvent, false, false)); 482 483 } -
trunk/Source/WebCore/websockets/WebSocketChannel.cpp
r108439 r108468 128 128 m_handshake = adoptPtr(new WebSocketHandshake(url, protocol, m_document, m_useHixie76Protocol)); 129 129 m_handshake->reset(); 130 if (!m_useHixie76Protocol && m_deflateFramer.canDeflate()) 131 m_handshake->addExtensionProcessor(m_deflateFramer.createExtensionProcessor()); 130 132 if (m_identifier) 131 133 InspectorInstrumentation::didCreateWebSocket(m_document, m_identifier, url, m_document->url()); … … 229 231 if (m_buffer) 230 232 skipBuffer(m_bufferSize); // Save memory. 233 m_deflateFramer.didFail(); 231 234 m_hasContinuousFrame = false; 232 235 m_continuousFrameData.clear(); … … 618 621 ASSERT(m_buffer < frameEnd); 619 622 ASSERT(frameEnd <= m_buffer + m_bufferSize); 623 624 InflateResultHolder inflateResult = m_deflateFramer.inflate(frame); 625 if (!inflateResult.succeeded()) { 626 fail(inflateResult.failureReason()); 627 return false; 628 } 620 629 621 630 // Validate the frame data. … … 1012 1021 ASSERT(!(opCode & ~opCodeMask)); // Checks whether "opCode" fits in the range of opCodes. 1013 1022 WebSocketFrame frame(opCode, true, false, true, data, dataLength); 1023 1024 DeflateResultHolder deflateResult = m_deflateFramer.deflate(frame); 1025 if (!deflateResult.succeeded()) { 1026 fail(deflateResult.failureReason()); 1027 return false; 1028 } 1029 1014 1030 Vector<char> frameData; 1015 1031 makeFrameData(frame, frameData); -
trunk/Source/WebCore/websockets/WebSocketChannel.h
r108240 r108468 38 38 #include "ThreadableWebSocketChannel.h" 39 39 #include "Timer.h" 40 #include "WebSocketDeflateFramer.h" 40 41 #include "WebSocketFrame.h" 41 42 #include "WebSocketHandshake.h" … … 232 233 BlobLoaderStatus m_blobLoaderStatus; 233 234 #endif 235 236 WebSocketDeflateFramer m_deflateFramer; 234 237 }; 235 238
Note: See TracChangeset
for help on using the changeset viewer.