Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 502bfe7b3124549b8c6cb2d2f6b792aa78fc5e71
      
https://github.com/WebKit/WebKit/commit/502bfe7b3124549b8c6cb2d2f6b792aa78fc5e71
  Author: Youenn Fablet <[email protected]>
  Date:   2025-02-21 (Fri, 21 Feb 2025)

  Changed paths:
    M Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h
    M 
Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp
    M 
Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h
    M Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp
    M Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h
    M Source/WebKit/WebProcess/Network/WebSocketChannel.cpp
    M Source/WebKit/WebProcess/Network/WebSocketChannel.h
    M Source/WebKitLegacy/WebCoreSupport/WebSocketChannel.cpp
    M Source/WebKitLegacy/WebCoreSupport/WebSocketChannel.h

  Log Message:
  -----------
  Using WebSocket in a WebWorker can cause the entire Worker to freeze
rdar://145149784
https://bugs.webkit.org/show_bug.cgi?id=287784

Reviewed by Chris Dumez.

WorkerThreadableWebSocketChannel::send was running the worker run loop while 
waiting for the result of the main thread send operation.
This is not needed and has side effects as JS can be executed within send.

Since this is no longer needed for a long time, we can stop waiting for the 
main thread result.
We still need to wait for main thread initialize, and we do so with a binary 
semaphore.

Remove bufferedAmount infrastructure, since this is handled in WebSocket.
Update the code a bit to align with current secuirty rules.

Covered by existing WebSocket worker tests.

* Source/WebCore/Modules/websockets/ThreadableWebSocketChannel.h:
* Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
(WebCore::ThreadableWebSocketChannelClientWrapper::ThreadableWebSocketChannelClientWrapper):
(WebCore::ThreadableWebSocketChannelClientWrapper::didCreateWebSocketChannel):
(WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks):
(WebCore::ThreadableWebSocketChannelClientWrapper::clearSyncMethodDone): 
Deleted.
(WebCore::ThreadableWebSocketChannelClientWrapper::setSyncMethodDone): Deleted.
(WebCore::ThreadableWebSocketChannelClientWrapper::syncMethodDone const): 
Deleted.
(WebCore::ThreadableWebSocketChannelClientWrapper::sendRequestResult const): 
Deleted.
(WebCore::ThreadableWebSocketChannelClientWrapper::setSendRequestResult): 
Deleted.
(WebCore::ThreadableWebSocketChannelClientWrapper::bufferedAmount const): 
Deleted.
(WebCore::ThreadableWebSocketChannelClientWrapper::setBufferedAmount): Deleted.
* Source/WebCore/Modules/websockets/ThreadableWebSocketChannelClientWrapper.h:
* Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
(WebCore::WorkerThreadableWebSocketChannel::~WorkerThreadableWebSocketChannel):
(WebCore::WorkerThreadableWebSocketChannel::connect):
(WebCore::WorkerThreadableWebSocketChannel::send):
(WebCore::WorkerThreadableWebSocketChannel::close):
(WebCore::WorkerThreadableWebSocketChannel::fail):
(WebCore::WorkerThreadableWebSocketChannel::disconnect):
(WebCore::WorkerThreadableWebSocketChannel::suspend):
(WebCore::WorkerThreadableWebSocketChannel::resume):
(WebCore::WorkerThreadableWebSocketChannel::Peer::connect):
(WebCore::WorkerThreadableWebSocketChannel::Peer::send):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::initialize):
(WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
(WebCore::WorkerThreadableWebSocketChannel::bufferedAmount const): Deleted.
(WebCore::WorkerThreadableWebSocketChannel::Peer::bufferedAmount): Deleted.
(WebCore::WorkerThreadableWebSocketChannel::Bridge::bufferedAmount): Deleted.
(WebCore::WorkerThreadableWebSocketChannel::Bridge::setMethodNotCompleted): 
Deleted.
(WebCore::WorkerThreadableWebSocketChannel::Bridge::waitForMethodCompletion): 
Deleted.
* Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:
* Source/WebKit/WebProcess/Network/WebSocketChannel.cpp:
(WebKit::WebSocketChannel::send):
(WebKit::WebSocketChannel::bufferedAmount const): Deleted.
* Source/WebKit/WebProcess/Network/WebSocketChannel.h:
* Source/WebKitLegacy/WebCoreSupport/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::send):
(WebCore::WebSocketChannel::bufferedAmount const): Deleted.
* Source/WebKitLegacy/WebCoreSupport/WebSocketChannel.h:

Canonical link: https://commits.webkit.org/290802@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to