ladybird/Libraries/LibWebView
Aliaksandr Kalenik 9479bc8d7f LibWebView+WebContent: Add feature-gated Compositor process backend
We are moving toward an architecture where the browser owns a single
process that holds the GPU context, so Skia resources can be shared
across every renderer and WebContent processes can be sandboxed away
from direct GPU access. A dedicated Compositor helper process is the
first step. The earlier commits laid the foundation; this one turns the
helper on as a selectable backend, gated behind
--enable-compositor-process so the existing in-process path stays the
shipping default.

Default topology -- one compositor per WebContent, in-process:

      +---------+
      | Browser |
      +---------+
      /    |    \
     v     v     v
   +---+ +---+ +---+    each WebContent runs its own
   |WC | |WC | |WC |    CompositorThread on a dedicated
   |+C+| |+C+| |+C+|    thread, with its own GPU context.
   +---+ +---+ +---+

Opt-in topology -- one single-threaded Compositor, shared by all WCs:

   +---------+   control   +-------------------+
   | Browser |<----------->|    Compositor     |
   +---------+             |  (single thread,  |
   /    |    \             |   single GPU ctx, |
  v     v     v    data    |   shared by all   |
 [WC] [WC] [WC] ---------->|   connected WCs)  |
                           +-------------------+

Three IPC channels carry the work in the opt-in topology. The
existing Browser<->WebContent channel gains context allocation.
A new Browser<->Compositor channel carries context lifetime,
viewport, UI input, and presentation acks plus backing-store and
frame upcalls. A new WebContent<->Compositor channel carries
display lists, scroll state, video, compositor surfaces, async
scrolling, presentation, and screenshots, with upcalls for
delegated input and compositor loss.
2026-05-22 19:50:42 +01:00
..
Plugins LibWeb: Flatten Platform::FontPlugin by merging WebView::FontPlugin 2026-02-28 15:32:14 +01:00
WebUI LibWebView: Add bookmark import/export to about:bookmarks 2026-04-22 08:02:15 -04:00
Application.cpp LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +01:00
Application.h LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +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 RequestServer: Send bytecode cache sidecars as files 2026-05-16 08:13:35 +02:00
Autocomplete.h LibWebView: Add a "Search with <engine>" autocomplete row 2026-04-16 21:01:28 +02:00
BookmarkStore.cpp LibWebView: Add bookmark import/export to about:bookmarks 2026-04-22 08:02:15 -04:00
BookmarkStore.h LibWebView: Add bookmark import/export to about:bookmarks 2026-04-22 08:02:15 -04:00
BrowserProcess.cpp LibWebView: Remove new tab page URL from sanitize_urls API 2026-04-24 20:17:23 +02:00
BrowserProcess.h Everywhere: Remove dynamic Mach bootstrap registration on macOS 2026-03-23 18:50:48 +01:00
CMakeLists.txt Compositor+LibWebView+WebContent: Scaffold opt-in Compositor process 2026-05-22 19:50:42 +01:00
CompositorClient.cpp LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +01:00
CompositorClient.h Compositor+WebContent+LibWebView: Implement service-side compositor IPC 2026-05-22 19:50:42 +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
ErrorHTML.h LibWeb+LibWebView: Preserve crashed page URLs on crash 2026-05-20 20:17:45 +02:00
FileDownloader.cpp RequestServer: Send bytecode cache sidecars as files 2026-05-16 08:13:35 +02:00
FileDownloader.h LibWebView+UI: Add a context menu item to download images 2026-02-05 07:27:34 -05:00
Forward.h Compositor+LibWebView+WebContent: Scaffold opt-in Compositor process 2026-05-22 19:50:42 +01:00
HeadlessWebView.cpp LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +01:00
HeadlessWebView.h test-web: Reset viewport size after each test 2026-02-23 18:44:26 +00:00
HelperProcess.cpp LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +01:00
HelperProcess.h Compositor+LibWebView+WebContent: Scaffold opt-in Compositor process 2026-05-22 19:50:42 +01:00
HistoryDebug.h LibWebView: Add history-backed location autocomplete 2026-04-16 21:01:28 +02:00
HistoryStore.cpp LibWebView: Track recently closed tabs and windows 2026-05-13 11:03:41 +01:00
HistoryStore.h LibWebView: Track recently closed tabs and windows 2026-05-13 11:03:41 +01:00
Menu.cpp LibWebView: Add an engaged state to application menu actions 2026-03-24 12:04:50 -04:00
Menu.h LibWeb: Rename ContentFilter to ContentBlocker 2026-05-21 21:16:56 +02: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 Compositor+LibWebView+WebContent: Scaffold opt-in Compositor process 2026-05-22 19:50:42 +01:00
PageInfo.h test-web: Dump stacking context tree in layout test output 2025-07-09 14:36:08 +02:00
Process.cpp LibThreading/LibSync: Split out sync primitives 2026-05-08 18:58:35 -05: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 Compositor+LibWebView+WebContent: Scaffold opt-in Compositor process 2026-05-22 19:50:42 +01:00
ProcessManager.h WebContent: Exit cleanly when browser IPC disconnects 2026-05-12 20:57:08 +02:00
ProcessMonitor.cpp WebContent: Exit cleanly when browser IPC disconnects 2026-05-12 20:57:08 +02:00
ProcessMonitor.h WebContent: Exit cleanly when browser IPC disconnects 2026-05-12 20:57:08 +02:00
ProcessType.h Compositor+LibWebView+WebContent: Scaffold opt-in Compositor process 2026-05-22 19:50:42 +01: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 LibWeb+LibWebView+WebContent: Add a setting to control primary pasting 2026-05-15 15:47:39 +02:00
Settings.h LibWeb+LibWebView+WebContent: Add a setting to control primary pasting 2026-05-15 15:47:39 +02: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: Remove new tab page URL from sanitize_urls API 2026-04-24 20:17:23 +02:00
URL.h LibWebView: Remove new tab page URL from sanitize_urls API 2026-04-24 20:17:23 +02: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: Do not allow SelectedFile to transfer directories 2026-05-20 21:09:22 +02:00
Utilities.h LibWeb+LibWebView+UI: Move SelectedFile factory to LibWebView 2026-05-20 21:09:22 +02:00
ViewImplementation.cpp LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +01:00
ViewImplementation.h LibWebView: Share content blocker lists as buffers 2026-05-21 21:16:56 +02:00
WebContentClient.cpp LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +01:00
WebContentClient.h LibWebView+WebContent: Add feature-gated Compositor process backend 2026-05-22 19:50:42 +01:00
WebUI.cpp LibURL+LibWeb+LibWebView: Convert about:version to a proper WebUI 2026-04-21 06:59:11 -04:00
WebUI.h LibWebView: Enable EXPLICIT_SYMBOL_EXPORT 2025-08-23 16:04:36 -06:00