ladybird/Services/WebDriver
Aliaksandr Kalenik e47f4cf90f Everywhere: Simplify Mach bootstrap transport handshake
Previously, the bootstrap handshake used a two-state machine
(WaitingForPorts / WaitingForReplyPort) to handle a race: the parent
registering transport ports and the child sending a bootstrap request
could arrive in either order, so whichever came first stored its half
and the second completed the handshake.

Eliminate the race by holding a mutex across spawn() and
register_child_transport(). Since the child cannot send a bootstrap
request before it exists, and the lock isn't released until its
transport is registered, handle_bootstrap_request() is guaranteed to
find the entry. This reduces the pending map to a simple pid-to-ports
lookup and collapses the two-variant state into two straightforward
branches: known child, or on-demand (non-child) caller like WebDriver.
2026-03-24 19:51:52 +01:00
..
Client.cpp WebDriver: Stop using the ancient Core::EventReceiver parent/child API 2025-08-11 16:55:25 +02:00
Client.h WebDriver: Stop using the ancient Core::EventReceiver parent/child API 2025-08-11 16:55:25 +02:00
CMakeLists.txt CMake: Add Windows executable helper function 2025-10-29 21:07:52 -06:00
main.cpp Everywhere: Remove dynamic Mach bootstrap registration on macOS 2026-03-23 18:50:48 +01:00
Session.cpp Everywhere: Simplify Mach bootstrap transport handshake 2026-03-24 19:51:52 +01:00
Session.h Everywhere: Remove dynamic Mach bootstrap registration on macOS 2026-03-23 18:50:48 +01:00
WebContentConnection.cpp WebDriver: Send window handle asynchronously after WebContent connects 2026-02-15 08:21:41 -05:00
WebContentConnection.h WebDriver: Send window handle asynchronously after WebContent connects 2026-02-15 08:21:41 -05:00