ladybird/Libraries/LibWebView
Aliaksandr Kalenik 4ea4d63008 Everywhere: Replace Unix socket IPC transport with Mach ports on macOS
On macOS, use Mach port messaging instead of Unix domain sockets for
all IPC transport. This makes the transport capable of carrying Mach
port rights as message attachments, which is a prerequisite for sending
IOSurface handles over the main IPC channel (currently sent via a
separate out-of-band path). It also avoids the need for the FD
acknowledgement protocol that TransportSocket requires, since Mach port
right transfers are atomic in the kernel.

Three connection establishment patterns:

- Spawned helper processes (WebContent, RequestServer, etc.) use the
  existing MachPortServer: the child sends its task port with a reply
  port, and the parent responds with a pre-created port pair.

- Socket-bootstrapped connections (WebDriver, BrowserProcess) exchange
  Mach port names over the socket, then drop the socket.

- Pre-created pairs for IPC tests and in-message transport transfer.

Attachment on macOS now wraps a MachPort instead of a file descriptor,
converting between the two via fileport_makeport()/fileport_makefd().

The LibIPC socket transport tests are disabled on macOS since they are
socket-specific.
2026-03-23 18:50:48 +01:00
..
Plugins LibWeb: Flatten Platform::FontPlugin by merging WebView::FontPlugin 2026-02-28 15:32:14 +01:00
WebUI Base+LibWebView: Organize the settings page into tabs 2026-03-05 10:00:32 -05:00
Application.cpp Everywhere: Replace Unix socket IPC transport with Mach ports on macOS 2026-03-23 18:50:48 +01:00
Application.h Everywhere: Replace Unix socket IPC transport with Mach ports on macOS 2026-03-23 18:50:48 +01:00
Attribute.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Attribute.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
Autocomplete.cpp LibHTTP+LibWeb+RequestServer: Move Fetch's HTTP header infra to LibHTTP 2025-11-27 14:57:29 +01:00
Autocomplete.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
BrowserProcess.cpp Everywhere: Replace Unix socket IPC transport with Mach ports on macOS 2026-03-23 18:50:48 +01:00
BrowserProcess.h LibIPC+LibWebView: Remove MultiServer 2026-03-20 23:23:28 +01:00
CMakeLists.txt LibWeb: Flatten Platform::FontPlugin by merging WebView::FontPlugin 2026-02-28 15:32:14 +01:00
ConsoleOutput.cpp LibJS: Add source locations to console.trace() 2026-02-06 11:58:07 +00:00
ConsoleOutput.h LibJS: Add source locations to console.trace() 2026-02-06 11:58:07 +00:00
CookieJar.cpp LibHTTP+Everywhere: Move the cookie implementation to LibHTTP 2026-02-10 12:21:20 +01:00
CookieJar.h LibHTTP+Everywhere: Move the cookie implementation to LibHTTP 2026-02-10 12:21:20 +01:00
DOMNodeProperties.cpp LibDevTools+LibWebView+WebContent: Selectively fetch DOM node properties 2025-03-20 09:01:26 +01:00
DOMNodeProperties.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
FileDownloader.cpp LibWeb+RequestServer: Attach HTTP cookie headers from RequestServer 2026-02-10 12:21:20 +01:00
FileDownloader.h LibWebView+UI: Add a context menu item to download images 2026-02-05 07:27:34 -05:00
Forward.h LibDatabase+LibWebView: Extract our SQLite wrapper to its own library 2025-10-14 13:40:33 +02:00
HeadlessWebView.cpp Everywhere: Add an is_fullscreen parameter to set_viewport 2026-03-17 18:58:37 -05:00
HeadlessWebView.h test-web: Reset viewport size after each test 2026-02-23 18:44:26 +00:00
HelperProcess.cpp Everywhere: Replace Unix socket IPC transport with Mach ports on macOS 2026-03-23 18:50:48 +01:00
HelperProcess.h LibWeb+LibWebView+WebContent: Send service sockets over IPC channel 2026-03-12 20:32:55 +01:00
MachPortServer.cpp Everywhere: Replace Unix socket IPC transport with Mach ports on macOS 2026-03-23 18:50:48 +01:00
MachPortServer.h Everywhere: Replace Unix socket IPC transport with Mach ports on macOS 2026-03-23 18:50:48 +01:00
Menu.cpp LibWebView+UI: Add structures to hold context menu and action data 2025-09-11 14:23:45 -04:00
Menu.h LibWeb+LibWebView+UI: Add a context menu item to toggle fullscreen state 2026-03-01 15:41:43 -06:00
Mutation.cpp LibWeb+LibWebView+WebContent: Inform the UI about DOM mutations 2025-03-08 01:25:55 +01:00
Mutation.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
Native.css Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
Options.h LibWeb+LibWebView+Services: Add a flag to enable experimental interfaces 2026-02-17 22:17:50 +01:00
PageInfo.h test-web: Dump stacking context tree in layout test output 2025-07-09 14:36:08 +02:00
Process.cpp Everywhere: Replace Unix socket IPC transport with Mach ports on macOS 2026-03-23 18:50:48 +01:00
Process.h test-web: Add results directory and live terminal display 2026-01-13 21:05:58 +01:00
ProcessHandle.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
ProcessHandle.h Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
ProcessManager.cpp LibWebView: Defer process cleanup to avoid signal handler deadlock 2026-01-13 21:05:58 +01:00
ProcessManager.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
ProcessType.h LibWebView: Rename the Chrome process type to Browser 2025-03-15 19:57:27 -04:00
SearchEngine.cpp LibWebView: Support custom search engines 2025-04-06 13:45:10 +02:00
SearchEngine.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
Settings.cpp Base+LibWebView: Organize the settings page into tabs 2026-03-05 10:00:32 -05:00
Settings.h Base+LibWebView: Organize the settings page into tabs 2026-03-05 10:00:32 -05:00
SiteIsolation.cpp LibWebView: Keep javascript URL navigations in the same process 2025-03-16 10:59:41 -04:00
SiteIsolation.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
SourceHighlighter.cpp LibJS: Remove C++ lexer, use Rust tokenizer for syntax highlighting 2026-03-19 21:55:10 -05:00
SourceHighlighter.h Everywhere: Slap some [[clang::lifetimebound]] where appropriate 2025-09-01 11:11:38 +02:00
StorageJar.cpp LibWeb: Fix storage set broadcast event never broadcasting old value 2026-01-21 22:27:59 +01:00
StorageJar.h LibWeb: Fix storage set broadcast event never broadcasting old value 2026-01-21 22:27:59 +01:00
StorageSetResult.h LibWeb: Fix storage set broadcast event never broadcasting old value 2026-01-21 22:27:59 +01:00
UIProcessClient.ipc Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
UIProcessServer.ipc Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
URL.cpp LibWebView: Add a bit of explicit handling for "localhost:port" URLs 2025-11-08 11:14:44 -05:00
URL.h LibWebView: Return a ByteString from WebView::url_text_to_copy 2025-09-11 14:23:45 -04:00
UserAgent.cpp Everywhere: Hoist the Libraries folder to the top-level 2024-11-10 12:50:45 +01:00
UserAgent.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
Utilities.cpp LibWebView+UI: Migrate some UI process init to LibWebView 2025-06-11 07:26:32 -04:00
Utilities.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00
ViewImplementation.cpp LibWebView: Actually set the fullscreen flag when entering fullscreen 2026-03-20 20:28:32 -05:00
ViewImplementation.h Everywhere: Add an is_fullscreen parameter to set_viewport 2026-03-17 18:58:37 -05:00
WebContentClient.cpp WebContent: Remove the sync result from did_request_fullscreen_window 2026-03-17 18:58:37 -05:00
WebContentClient.h WebContent: Remove the sync result from did_request_fullscreen_window 2026-03-17 18:58:37 -05:00
WebUI.cpp LibIPC: Return TransportHandle directly from create_paired() 2026-03-14 18:25:18 +01:00
WebUI.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00