Changeset 290995 in webkit
- Timestamp:
- Mar 8, 2022 9:03:09 AM (4 months ago)
- Location:
- trunk
- Files:
-
- 15 added
- 32 deleted
- 29 edited
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any.worker-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any.worker-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-data.any.worker-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any.worker-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/Send-unicode-data.any.worker-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/bufferedAmount-unchanged-by-sync-xhr.any.worker-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/close/close-basic-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/close/close-connecting-expected.txt (modified) (1 diff)
-
LayoutTests/platform/ios-14-wk2/http/tests/websocket/tests/hybi/bufferedAmount-after-close-expected.txt (deleted)
-
LayoutTests/platform/ios-14-wk2/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt (deleted)
-
LayoutTests/platform/ios-14-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/ios-14-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/ios-14-wk2/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt (deleted)
-
LayoutTests/platform/ios-14-wk2/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt (deleted)
-
LayoutTests/platform/ios-14-wk2/imported/w3c/web-platform-tests/websockets/interfaces (deleted)
-
LayoutTests/platform/ios-wk2/http/tests/websocket/tests/hybi/bufferedAmount-after-close-in-busy-expected.txt (deleted)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt (deleted)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt (deleted)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt (deleted)
-
LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/websockets/interfaces (deleted)
-
LayoutTests/platform/mac-bigsur-wk2/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt (deleted)
-
LayoutTests/platform/mac-bigsur-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/mac-bigsur-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/mac-bigsur-wk2/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt (deleted)
-
LayoutTests/platform/mac-bigsur-wk2/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt (deleted)
-
LayoutTests/platform/mac-bigsur-wk2/imported/w3c/web-platform-tests/websockets/interfaces (deleted)
-
LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/websockets (added)
-
LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/websockets/interfaces (added)
-
LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket (added)
-
LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount (added)
-
LayoutTests/platform/mac-bigsur/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting-expected.txt (added)
-
LayoutTests/platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt (deleted)
-
LayoutTests/platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt (deleted)
-
LayoutTests/platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt (deleted)
-
LayoutTests/platform/mac-catalina-wk2/imported/w3c/web-platform-tests/websockets/interfaces (deleted)
-
LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/websockets (added)
-
LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/websockets/interfaces (added)
-
LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket (added)
-
LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount (added)
-
LayoutTests/platform/mac-catalina/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting-expected.txt (added)
-
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/websockets (added)
-
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/websockets/interfaces (added)
-
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket (added)
-
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount (added)
-
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting-expected.txt (added)
-
LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt (deleted)
-
LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt (deleted)
-
LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt (deleted)
-
LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt (deleted)
-
LayoutTests/platform/mac-wk2/imported/w3c/web-platform-tests/websockets/interfaces (deleted)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h (modified) (1 diff)
-
Source/WebCore/Modules/websockets/WebSocket.cpp (modified) (4 diffs)
-
Source/WebCore/Modules/websockets/WebSocketChannel.cpp (modified) (3 diffs)
-
Source/WebCore/Modules/websockets/WebSocketChannel.h (modified) (2 diffs)
-
Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp (modified) (4 diffs)
-
Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h (modified) (3 diffs)
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/WebProcess/Network/WebSocketChannel.cpp (modified) (1 diff)
-
Source/WebKit/WebProcess/Network/WebSocketChannel.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/imported/w3c/ChangeLog
r290977 r290995 1 2022-03-08 Alex Christensen <achristensen@webkit.org> 2 3 WebSocket.send() should synchronously update bufferedAmount 4 https://bugs.webkit.org/show_bug.cgi?id=235707 5 6 Reviewed by Chris Dumez. 7 8 * web-platform-tests/websockets/Send-binary-65K-arraybuffer.any.worker-expected.txt: 9 * web-platform-tests/websockets/Send-binary-arraybuffer.any.worker-expected.txt: 10 * web-platform-tests/websockets/Send-data.any.worker-expected.txt: 11 * web-platform-tests/websockets/Send-paired-surrogates.any.worker-expected.txt: 12 * web-platform-tests/websockets/Send-unicode-data.any.worker-expected.txt: 13 * web-platform-tests/websockets/bufferedAmount-unchanged-by-sync-xhr.any.worker-expected.txt: 14 * web-platform-tests/websockets/interfaces/WebSocket/close/close-basic-expected.txt: 15 * web-platform-tests/websockets/interfaces/WebSocket/close/close-connecting-expected.txt: 16 1 17 2022-03-08 Chris Dumez <cdumez@apple.com> 2 18 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-65K-data.any-expected.txt
r279228 r290995 1 1 2 FAIL Send 65K data on a WebSocket - Connection should be closed assert_equals: expected 0 but got 65000 2 PASS Send 65K data on a WebSocket - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any-expected.txt
r279228 r290995 1 1 2 FAIL Send 65K binary data on a WebSocket - ArrayBuffer - Connection should be closed assert_equals: expected 0 but got 65000 2 PASS Send 65K binary data on a WebSocket - ArrayBuffer - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-65K-arraybuffer.any.worker-expected.txt
r279228 r290995 1 1 2 FAIL Send 65K binary data on a WebSocket - ArrayBuffer - Connection should be closed assert_equals: expected 0 but got 65000 2 PASS Send 65K binary data on a WebSocket - ArrayBuffer - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any-expected.txt
r279228 r290995 1 1 2 FAIL Send binary data on a WebSocket - ArrayBuffer - Connection should be closed assert_equals: expected 0 but got 15 2 PASS Send binary data on a WebSocket - ArrayBuffer - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-binary-arraybuffer.any.worker-expected.txt
r279228 r290995 1 1 2 FAIL Send binary data on a WebSocket - ArrayBuffer - Connection should be closed assert_equals: expected 0 but got 15 2 PASS Send binary data on a WebSocket - ArrayBuffer - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-data.any-expected.txt
r279228 r290995 1 1 2 FAIL Send data on a WebSocket - Connection should be closed assert_equals: expected 0 but got 15 2 PASS Send data on a WebSocket - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-data.any.worker-expected.txt
r279228 r290995 1 1 2 FAIL Send data on a WebSocket - Connection should be closed assert_equals: expected 0 but got 15 2 PASS Send data on a WebSocket - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any-expected.txt
r279228 r290995 1 1 2 FAIL Send paired surrogates data on a WebSocket - Connection should be closed assert_equals: expected 0 but got 4 2 PASS Send paired surrogates data on a WebSocket - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-paired-surrogates.any.worker-expected.txt
r279228 r290995 1 1 2 FAIL Send paired surrogates data on a WebSocket - Connection should be closed assert_equals: expected 0 but got 4 2 PASS Send paired surrogates data on a WebSocket - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/Send-unicode-data.any.worker-expected.txt
r279228 r290995 1 1 2 FAIL Send unicode data on a WebSocket - Connection should be closed assert_equals: expected 0 but got 12 2 PASS Send unicode data on a WebSocket - Connection should be closed 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/bufferedAmount-unchanged-by-sync-xhr.any.worker-expected.txt
r252633 r290995 1 1 2 FAIL bufferedAmount should not be updated during a sync XHR assert_equals: expected 5 but got 0 2 PASS bufferedAmount should not be updated during a sync XHR 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-arraybuffer-expected.txt
r246406 r290995 1 1 2 FAIL WebSockets: bufferedAmount for ArrayBuffer assert_equals: expected 10 but got 0 2 PASS WebSockets: bufferedAmount for ArrayBuffer 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-blob-expected.txt
r246406 r290995 1 1 2 FAIL WebSockets: bufferedAmount for blob assert_equals: expected 10 but got 0 2 PASS WebSockets: bufferedAmount for blob 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-getting-expected.txt
r246406 r290995 1 1 2 FAIL WebSockets: bufferedAmount after send()ing assert_equals: bufferedAmount after sent "x" expected 1 but got 0 2 PASS WebSockets: bufferedAmount after send()ing 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-large-expected.txt
r246406 r290995 1 1 2 FAIL WebSockets: bufferedAmount for 65K data assert_equals: expected 0 but got 65000 2 PASS WebSockets: bufferedAmount for 65K data 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/bufferedAmount/bufferedAmount-unicode-expected.txt
r246406 r290995 1 1 2 FAIL WebSockets: bufferedAmount for unicode data assert_equals: expected 0 but got 12 2 PASS WebSockets: bufferedAmount for unicode data 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/close/close-basic-expected.txt
r253331 r290995 1 1 2 FAIL WebSockets: close() assert_equals: expected 2 but got 3 2 PASS WebSockets: close() 3 3 -
trunk/LayoutTests/imported/w3c/web-platform-tests/websockets/interfaces/WebSocket/close/close-connecting-expected.txt
r253331 r290995 1 1 2 FAIL WebSockets: close() when connecting assert_equals: expected 2 but got 3 2 PASS WebSockets: close() when connecting 3 3 -
trunk/Source/WebCore/ChangeLog
r290994 r290995 1 2022-03-08 Alex Christensen <achristensen@webkit.org> 2 3 WebSocket.send() should synchronously update bufferedAmount 4 https://bugs.webkit.org/show_bug.cgi?id=235707 5 6 Reviewed by Chris Dumez. 7 8 This matches the behavior of Chrome and Firefox and is covered by web platform tests. 9 10 * Modules/websockets/ThreadableWebSocketChannel.h: 11 * Modules/websockets/WebSocket.cpp: 12 (WebCore::WebSocket::send): 13 * Modules/websockets/WebSocketChannel.cpp: 14 (WebCore::WebSocketChannel::send): 15 (WebCore::WebSocketChannel::enqueueTextFrame): 16 * Modules/websockets/WebSocketChannel.h: 17 * Modules/websockets/WorkerThreadableWebSocketChannel.cpp: 18 (WebCore::WorkerThreadableWebSocketChannel::send): 19 (WebCore::WorkerThreadableWebSocketChannel::Peer::send): 20 (WebCore::WorkerThreadableWebSocketChannel::Bridge::send): 21 * Modules/websockets/WorkerThreadableWebSocketChannel.h: 22 1 23 2022-03-08 Kate Cheney <katherine_cheney@apple.com> 2 24 -
trunk/Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h
r290856 r290995 73 73 74 74 enum SendResult { SendSuccess, SendFail }; 75 virtual SendResult send( const String& message) = 0;75 virtual SendResult send(CString&&) = 0; 76 76 virtual SendResult send(const JSC::ArrayBuffer&, unsigned byteOffset, unsigned byteLength) = 0; 77 77 virtual SendResult send(Blob&) = 0; -
trunk/Source/WebCore/Modules/websockets/WebSocket.cpp
r290856 r290995 344 344 if (m_state == CONNECTING) 345 345 return Exception { InvalidStateError }; 346 auto utf8 = message.utf8(StrictConversionReplacingUnpairedSurrogatesWithFFFD); 346 347 // No exception is raised if the connection was once established but has subsequently been closed. 347 348 if (m_state == CLOSING || m_state == CLOSED) { 348 size_t payloadSize = message.utf8().length();349 size_t payloadSize = utf8.length(); 349 350 m_bufferedAmountAfterClose = saturateAdd(m_bufferedAmountAfterClose, payloadSize); 350 351 m_bufferedAmountAfterClose = saturateAdd(m_bufferedAmountAfterClose, getFramingOverhead(payloadSize)); 351 352 return { }; 352 353 } 354 // FIXME: WebSocketChannel also has a m_bufferedAmount. Remove that one. This one is the correct one accessed by JS. 355 m_bufferedAmount = saturateAdd(m_bufferedAmount, utf8.length()); 353 356 ASSERT(m_channel); 354 m_channel->send( message);357 m_channel->send(WTFMove(utf8)); 355 358 return { }; 356 359 } … … 367 370 return { }; 368 371 } 372 m_bufferedAmount = saturateAdd(m_bufferedAmount, binaryData.byteLength()); 369 373 ASSERT(m_channel); 370 374 m_channel->send(binaryData, 0, binaryData.byteLength()); … … 384 388 return { }; 385 389 } 390 m_bufferedAmount = saturateAdd(m_bufferedAmount, arrayBufferView.byteLength()); 386 391 ASSERT(m_channel); 387 392 m_channel->send(*arrayBufferView.unsharedBuffer(), arrayBufferView.byteOffset(), arrayBufferView.byteLength()); … … 400 405 return { }; 401 406 } 407 m_bufferedAmount = saturateAdd(m_bufferedAmount, binaryData.size()); 402 408 ASSERT(m_channel); 403 409 m_channel->send(binaryData); -
trunk/Source/WebCore/Modules/websockets/WebSocketChannel.cpp
r290856 r290995 143 143 } 144 144 145 ThreadableWebSocketChannel::SendResult WebSocketChannel::send( const String& message)145 ThreadableWebSocketChannel::SendResult WebSocketChannel::send(CString&& message) 146 146 { 147 147 if (m_outgoingFrameQueueStatus != OutgoingFrameQueueOpen) 148 148 return ThreadableWebSocketChannel::SendSuccess; 149 149 150 LOG(Network, "WebSocketChannel %p send() Sending String '%s'", this, message.utf8().data()); 151 CString utf8 = message.utf8(StrictConversionReplacingUnpairedSurrogatesWithFFFD); 152 enqueueTextFrame(utf8); 150 LOG(Network, "WebSocketChannel %p send() Sending String '%s'", this, message.data()); 151 enqueueTextFrame(WTFMove(message)); 153 152 processOutgoingFrameQueue(); 154 153 // According to WebSocket API specification, WebSocket.send() should return void instead … … 720 719 } 721 720 722 void WebSocketChannel::enqueueTextFrame( const CString& string)721 void WebSocketChannel::enqueueTextFrame(CString&& string) 723 722 { 724 723 ASSERT(m_outgoingFrameQueueStatus == OutgoingFrameQueueOpen); … … 726 725 frame->opCode = WebSocketFrame::OpCodeText; 727 726 frame->frameType = QueuedFrameTypeString; 728 frame->stringData = string;727 frame->stringData = WTFMove(string); 729 728 m_outgoingFrameQueue.append(WTFMove(frame)); 730 729 } -
trunk/Source/WebCore/Modules/websockets/WebSocketChannel.h
r290856 r290995 75 75 String subprotocol() final; 76 76 String extensions() final; 77 ThreadableWebSocketChannel::SendResult send( const String& message) final;77 ThreadableWebSocketChannel::SendResult send(CString&&) final; 78 78 ThreadableWebSocketChannel::SendResult send(const JSC::ArrayBuffer&, unsigned byteOffset, unsigned byteLength) final; 79 79 ThreadableWebSocketChannel::SendResult send(Blob&) final; … … 168 168 RefPtr<Blob> blobData; 169 169 }; 170 void enqueueTextFrame( const CString&);170 void enqueueTextFrame(CString&&); 171 171 void enqueueRawFrame(WebSocketFrame::OpCode, const uint8_t* data, size_t dataLength); 172 172 void enqueueBlobFrame(WebSocketFrame::OpCode, Blob&); -
trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp
r290901 r290995 85 85 } 86 86 87 ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::send( const String& message)87 ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::send(CString&& message) 88 88 { 89 89 if (!m_bridge) 90 90 return ThreadableWebSocketChannel::SendFail; 91 return m_bridge->send( message);91 return m_bridge->send(WTFMove(message)); 92 92 } 93 93 … … 169 169 } 170 170 171 void WorkerThreadableWebSocketChannel::Peer::send( const String& message)172 { 173 ASSERT(isMainThread()); 174 if (!m_mainWebSocketChannel) 175 return; 176 177 ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel->send( message);171 void WorkerThreadableWebSocketChannel::Peer::send(CString&& message) 172 { 173 ASSERT(isMainThread()); 174 if (!m_mainWebSocketChannel) 175 return; 176 177 ThreadableWebSocketChannel::SendResult sendRequestResult = m_mainWebSocketChannel->send(WTFMove(message)); 178 178 m_loaderProxy.postTaskForModeToWorkerOrWorkletGlobalScope([workerClientWrapper = m_workerClientWrapper, sendRequestResult](ScriptExecutionContext&) mutable { 179 179 workerClientWrapper->setSendRequestResult(sendRequestResult); … … 425 425 } 426 426 427 ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send( const String& message)427 ThreadableWebSocketChannel::SendResult WorkerThreadableWebSocketChannel::Bridge::send(CString&& message) 428 428 { 429 429 if (!m_peer) … … 431 431 setMethodNotCompleted(); 432 432 433 m_loaderProxy.postTaskToLoader([peer = m_peer, message = message.isolatedCopy()](ScriptExecutionContext& context){434 ASSERT(isMainThread()); 435 ASSERT_UNUSED(context, context.isDocument()); 436 ASSERT(peer); 437 438 peer->send( message);433 m_loaderProxy.postTaskToLoader([peer = m_peer, message = WTFMove(message)](ScriptExecutionContext& context) mutable { 434 ASSERT(isMainThread()); 435 ASSERT_UNUSED(context, context.isDocument()); 436 ASSERT(peer); 437 438 peer->send(WTFMove(message)); 439 439 }); 440 440 -
trunk/Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h
r290856 r290995 59 59 String subprotocol() final; 60 60 String extensions() final; 61 ThreadableWebSocketChannel::SendResult send( const String& message) final;61 ThreadableWebSocketChannel::SendResult send(CString&&) final; 62 62 ThreadableWebSocketChannel::SendResult send(const JSC::ArrayBuffer&, unsigned byteOffset, unsigned byteLength) final; 63 63 ThreadableWebSocketChannel::SendResult send(Blob&) final; … … 78 78 79 79 ConnectStatus connect(const URL&, const String& protocol); 80 void send( const String& message);80 void send(CString&&); 81 81 void send(const JSC::ArrayBuffer&); 82 82 void send(Blob&); … … 122 122 void initialize(); 123 123 void connect(const URL&, const String& protocol); 124 ThreadableWebSocketChannel::SendResult send( const String& message);124 ThreadableWebSocketChannel::SendResult send(CString&&); 125 125 ThreadableWebSocketChannel::SendResult send(const JSC::ArrayBuffer&, unsigned byteOffset, unsigned byteLength); 126 126 ThreadableWebSocketChannel::SendResult send(Blob&); -
trunk/Source/WebKit/ChangeLog
r290989 r290995 1 2022-03-08 Alex Christensen <achristensen@webkit.org> 2 3 WebSocket.send() should synchronously update bufferedAmount 4 https://bugs.webkit.org/show_bug.cgi?id=235707 5 6 Reviewed by Chris Dumez. 7 8 * WebProcess/Network/WebSocketChannel.cpp: 9 (WebKit::WebSocketChannel::send): 10 * WebProcess/Network/WebSocketChannel.h: 11 1 12 2022-03-08 Alex Christensen <achristensen@webkit.org> 2 13 -
trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.cpp
r290856 r290995 160 160 } 161 161 162 WebSocketChannel::SendResult WebSocketChannel::send(const String& message) 163 { 164 auto utf8 = message.utf8(StrictConversionReplacingUnpairedSurrogatesWithFFFD); 165 if (!increaseBufferedAmount(utf8.length())) 162 WebSocketChannel::SendResult WebSocketChannel::send(CString&& message) 163 { 164 if (!increaseBufferedAmount(message.length())) 166 165 return SendFail; 167 166 168 m_messageQueue.enqueue(WTFMove( utf8));167 m_messageQueue.enqueue(WTFMove(message)); 169 168 return SendSuccess; 170 169 } -
trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h
r290856 r290995 66 66 String subprotocol() final; 67 67 String extensions() final; 68 SendResult send( const String& message) final;68 SendResult send(CString&&) final; 69 69 SendResult send(const JSC::ArrayBuffer&, unsigned byteOffset, unsigned byteLength) final; 70 70 SendResult send(WebCore::Blob&) final;
Note: See TracChangeset
for help on using the changeset viewer.