Changeset 108731 in webkit
- Timestamp:
- Feb 23, 2012 10:29:33 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 12 added
- 16 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r108729 r108731 1 2012-02-23 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-23 Erik Arvidsson <arv@chromium.org> 2 35 -
trunk/LayoutTests/http/tests/websocket/tests/hybi/compressed-control-frame-expected.txt
r108730 r108731 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
r108476 r108731 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
r108476 r108731 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
r108716 r108731 1 2012-02-23 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-23 Mark Hahnenberg <mhahnenberg@apple.com> 2 13 -
trunk/Source/JavaScriptCore/wtf/Platform.h
r108661 r108731 1195 1195 #endif 1196 1196 1197 #if !PLATFORM(QT) && !PLATFORM(EFL) 1198 #define WTF_USE_ZLIB 1 1199 #endif 1200 1197 1201 #endif /* WTF_Platform_h */ -
trunk/Source/WebCore/CMakeLists.txt
r108710 r108731 2061 2061 websockets/WebSocket.cpp 2062 2062 websockets/WebSocketChannel.cpp 2063 websockets/WebSocketDeflateFramer.cpp 2063 2064 websockets/WebSocketExtensionDispatcher.cpp 2064 2065 websockets/WebSocketHandshake.cpp -
trunk/Source/WebCore/ChangeLog
r108730 r108731 1 2012-02-23 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 This is the second patch to land. The previous patch broke Chromium Win 12 release build. r108600 should fix the build failure. I also added 13 zlib entry to |export_dependent_settings| of |webcore_prerequisites| 14 target. 15 16 Reviewed by Kent Tamura. 17 18 Tests: http/tests/websocket/tests/hybi/compressed-control-frame.html 19 http/tests/websocket/tests/hybi/deflate-frame-comp-bit-onoff.html 20 http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter.html 21 http/tests/websocket/tests/hybi/deflate-frame-parameter.html 22 23 * CMakeLists.txt: Added WebSocketDeflateFramer.(cpp|h) 24 * GNUmakefile.list.am: Ditto. 25 * Target.pri: Ditto. 26 * WebCore.gypi: Ditto. 27 * WebCore.gyp/WebCore.gyp: Added zlib dependency. 28 * WebCore.vcproj/WebCore.vcproj: Added WebSocketDeflateFramer.(cpp|h) 29 * WebCore.xcodeproj/project.pbxproj: Ditto. 30 * websockets/WebSocket.cpp: 31 (WebCore::WebSocket::didConnect): Set m_extensions. 32 * websockets/WebSocketChannel.cpp: 33 (WebCore::WebSocketChannel::connect): Add deflate-frame extension processor to WebSocketHanshake if deflate can use. 34 (WebCore::WebSocketChannel::fail): Call m_deflateFramer.didFail(). 35 (WebCore::WebSocketChannel::processFrame): Decompress frames if needed. 36 (WebCore::WebSocketChannel::sendFrame): Compress frames if possible. 37 * websockets/WebSocketChannel.h: 38 * websockets/WebSocketDeflateFramer.cpp: Added. 39 (WebCore): 40 (WebSocketExtensionDeflateFrame): 41 (WebCore::WebSocketExtensionDeflateFrame::create): 42 (WebCore::WebSocketExtensionDeflateFrame::~WebSocketExtensionDeflateFrame): 43 (WebCore::WebSocketExtensionDeflateFrame::WebSocketExtensionDeflateFrame): 44 (WebCore::WebSocketExtensionDeflateFrame::handshakeString): 45 (WebCore::WebSocketExtensionDeflateFrame::processResponse): 46 (WebCore::DeflateResultHolder::DeflateResultHolder): 47 (WebCore::DeflateResultHolder::~DeflateResultHolder): 48 (WebCore::DeflateResultHolder::fail): 49 (WebCore::InflateResultHolder::InflateResultHolder): 50 (WebCore::InflateResultHolder::~InflateResultHolder): 51 (WebCore::InflateResultHolder::fail): 52 (WebCore::WebSocketDeflateFramer::WebSocketDeflateFramer): 53 (WebCore::WebSocketDeflateFramer::createExtensionProcessor): 54 (WebCore::WebSocketDeflateFramer::canDeflate): 55 (WebCore::WebSocketDeflateFramer::enableDeflate): 56 (WebCore::WebSocketDeflateFramer::deflate): 57 (WebCore::WebSocketDeflateFramer::resetDeflateContext): 58 (WebCore::WebSocketDeflateFramer::inflate): 59 (WebCore::WebSocketDeflateFramer::resetInflateContext): 60 (WebCore::WebSocketDeflateFramer::didFail): 61 * websockets/WebSocketDeflateFramer.h: Added. 62 (WebCore): 63 (DeflateResultHolder): 64 (WebCore::DeflateResultHolder::succeeded): 65 (WebCore::DeflateResultHolder::failureReason): 66 (InflateResultHolder): 67 (WebCore::InflateResultHolder::succeeded): 68 (WebCore::InflateResultHolder::failureReason): 69 (WebSocketDeflateFramer): 70 (WebCore::WebSocketDeflateFramer::enabled): 71 1 72 2012-02-23 Andy Estes <aestes@apple.com> 2 73 -
trunk/Source/WebCore/GNUmakefile.list.am
r108710 r108731 4345 4345 Source/WebCore/websockets/WebSocket.cpp \ 4346 4346 Source/WebCore/websockets/WebSocket.h \ 4347 Source/WebCore/websockets/WebSocketDeflateFramer.cpp \ 4348 Source/WebCore/websockets/WebSocketDeflateFramer.h \ 4347 4349 Source/WebCore/websockets/WebSocketDeflater.cpp \ 4348 4350 Source/WebCore/websockets/WebSocketDeflater.h \ -
trunk/Source/WebCore/Target.pri
r108692 r108731 3676 3676 websockets/WebSocketChannel.h \ 3677 3677 websockets/WebSocketChannelClient.h \ 3678 websockets/WebSocketDeflateFramer.h \ 3678 3679 websockets/WebSocketExtensionDispatcher.h \ 3679 3680 websockets/WebSocketExtensionProcessor.h \ … … 3687 3688 websockets/WebSocket.cpp \ 3688 3689 websockets/WebSocketChannel.cpp \ 3690 websockets/WebSocketDeflateFramer.cpp \ 3689 3691 websockets/WebSocketExtensionDispatcher.cpp \ 3690 3692 websockets/WebSocketHandshake.cpp \ -
trunk/Source/WebCore/WebCore.gyp/WebCore.gyp
r108428 r108731 1196 1196 '<(chromium_src_dir)/third_party/sqlite/sqlite.gyp:sqlite', 1197 1197 '<(chromium_src_dir)/third_party/angle/src/build_angle.gyp:translator_glsl', 1198 '<(chromium_src_dir)/third_party/zlib/zlib.gyp:zlib', 1198 1199 '<(chromium_src_dir)/v8/tools/gyp/v8.gyp:v8', 1199 1200 '<(libjpeg_gyp_path):libjpeg', -
trunk/Source/WebCore/WebCore.gypi
r108727 r108731 4831 4831 'websockets/WebSocketChannel.h', 4832 4832 'websockets/WebSocketChannelClient.h', 4833 'websockets/WebSocketDeflateFramer.cpp', 4834 'websockets/WebSocketDeflateFramer.h', 4833 4835 'websockets/WebSocketDeflater.cpp', 4834 4836 'websockets/WebSocketDeflater.h', -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r108561 r108731 73475 73475 </File> 73476 73476 <File 73477 RelativePath="..\websockets\WebSocketDeflateFramer.cpp" 73478 > 73479 </File> 73480 <File 73481 RelativePath="..\websockets\WebSocketDeflateFramer.h" 73482 > 73483 </File> 73484 <File 73477 73485 RelativePath="..\websockets\WebSocketDeflater.cpp" 73478 73486 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r108710 r108731 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 */; }; … … 8233 8235 4A1E71A314E106AC00626F9D /* JSShadowRoot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSShadowRoot.cpp; sourceTree = "<group>"; }; 8234 8236 4A1E71A414E106AC00626F9D /* JSShadowRoot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSShadowRoot.h; sourceTree = "<group>"; }; 8237 4A29222914F468BA0021F77E /* WebSocketDeflateFramer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebSocketDeflateFramer.cpp; sourceTree = "<group>"; }; 8238 4A29222A14F468BA0021F77E /* WebSocketDeflateFramer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketDeflateFramer.h; sourceTree = "<group>"; }; 8235 8239 4A4A234514F1E1440046FBF1 /* WebSocketFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSocketFrame.h; sourceTree = "<group>"; }; 8236 8240 4A6E9FC113C17D1D0046A7F8 /* FontFeatureValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontFeatureValue.cpp; sourceTree = "<group>"; }; … … 14861 14865 510D4A48103177A20049EA54 /* WebSocketChannel.h */, 14862 14866 510D4A49103177A20049EA54 /* WebSocketChannelClient.h */, 14867 4A29222914F468BA0021F77E /* WebSocketDeflateFramer.cpp */, 14868 4A29222A14F468BA0021F77E /* WebSocketDeflateFramer.h */, 14863 14869 4AE02ABB14E8A9D200BC3BA7 /* WebSocketDeflater.cpp */, 14864 14870 4AE02ABC14E8A9D200BC3BA7 /* WebSocketDeflater.h */, … … 24255 24261 510D4A4F103177A20049EA54 /* WebSocketChannel.h in Headers */, 24256 24262 510D4A50103177A20049EA54 /* WebSocketChannelClient.h in Headers */, 24263 4A29222C14F468BA0021F77E /* WebSocketDeflateFramer.h in Headers */, 24257 24264 4AE02ABE14E8A9D200BC3BA7 /* WebSocketDeflater.h in Headers */, 24258 24265 4A957F0714E241300049DBFB /* WebSocketExtensionDispatcher.h in Headers */, … … 27214 27221 518A34C11026C831001B6896 /* WebSocket.cpp in Sources */, 27215 27222 510D4A4E103177A20049EA54 /* WebSocketChannel.cpp in Sources */, 27223 4A29222B14F468BA0021F77E /* WebSocketDeflateFramer.cpp in Sources */, 27216 27224 4AE02ABD14E8A9D200BC3BA7 /* WebSocketDeflater.cpp in Sources */, 27217 27225 4A957F0614E2412A0049DBFB /* WebSocketExtensionDispatcher.cpp in Sources */, -
trunk/Source/WebCore/websockets/WebSocket.cpp
r108476 r108731 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
r108476 r108731 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
r108476 r108731 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.