servo/components/script
Delan Azabani 2ce7709b8b
libservo: Add an initial WebView data structure to the API (#35119)
This patch introduces a new handle-based webview API to libservo, with
two main design goals:

1. The lifetime of the handles controls the lifetime of the webview,
   giving the embedder full control over exactly when webviews are
   created and destroyed. This is consistent with how WebKitGTK’s
   WebView works; the engine can only create webviews via a create
   request, and can only destroy them via a close request.
2. All methods are infallible; if the constellation dies, the embedder
   finds out when calling Servo::handle_events.

For the moment, the embedder is only responsible for creating the
WebView id, and not the internal TopLevelBrowsingContext data
structures. This is so that the ScriptThread is able to get a handle on
the new WebView's WindowProxy in the case that it's an auxiliary
browsing context. In the future, the embedder should also be responsible
for creating the TopLevelBrowsingContext and the ScriptThread should
have mechanism to associate the two views so that WebView creation is
always executed through the same code path in the embedding layer. For
now, it's enough that the embedder can get a handle to the new WebView
when it's creation is requested.

Once we replace EmbedderMsg with a webview delegate trait, we will pass
WebView handles to the embedder, rather than webview ids. We’ll also add
detailed docs, once the design settles.

Signed-off-by: Delan Azabani <dazabani@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
2025-01-25 08:17:50 +00:00
..
docs Update branch name to main (#30877) 2023-12-16 09:32:20 +00:00
dom libservo: Add an initial WebView data structure to the API (#35119) 2025-01-25 08:17:50 +00:00
layout_dom script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
xpath script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
animation_timeline.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
animations.rs Implement Event propagation across shadow roots (#34884) 2025-01-22 15:25:16 +00:00
body.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
build.rs script: Move code generation and webidl files to new script_bindings crate. (#35157) 2025-01-24 20:47:43 +00:00
canvas_state.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
Cargo.toml script: Move code generation and webidl files to new script_bindings crate. (#35157) 2025-01-24 20:47:43 +00:00
clipboard_provider.rs
conversions.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
devtools.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
document_collection.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
document_loader.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
drag_data_store.rs DataTransfer: propagate CanGc argument (#35062) 2025-01-18 18:24:49 +00:00
fetch.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
iframe_collection.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
image_listener.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
init.rs Make generated bindings generic over DOM types (#35169) 2025-01-25 05:08:49 +00:00
layout_image.rs net: Use RequestId to cancel fetches instead of creating an IPC channel (#34883) 2025-01-11 11:49:22 +00:00
lib.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
links.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
mem.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
messaging.rs script: Move navigation fetching to the ScriptThread (#34919) 2025-01-10 12:19:40 +00:00
microtask.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
navigation.rs net: Use RequestId to cancel fetches instead of creating an IPC channel (#34883) 2025-01-11 11:49:22 +00:00
network_listener.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
realms.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
script_module.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
script_runtime.rs Fix crash when using builtin memory profiler (#35058) 2025-01-19 04:39:31 +00:00
script_thread.rs script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
security_manager.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
serviceworker_manager.rs api: Flatten and simplify Servo preferences (#34966) 2025-01-14 13:54:06 +00:00
stylesheet_loader.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
stylesheet_set.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
task.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
task_manager.rs Implement HTMLCanvasElement.toBlob (#34938) 2025-01-10 19:04:42 +00:00
task_queue.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
task_source.rs Implement HTMLCanvasElement.toBlob (#34938) 2025-01-10 19:04:42 +00:00
test.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
textinput.rs Implement Clipboard Event Api (#33576) 2025-01-15 19:45:29 +00:00
timers.rs Fix crash when using builtin memory profiler (#35058) 2025-01-19 04:39:31 +00:00
unminify.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
unpremultiplytable.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00
webdriver_handlers.rs webdriver: Serialize JS int values as i32. (#34997) 2025-01-15 08:15:37 +00:00
window_named_properties.rs script: Limit public exports. (#34915) 2025-01-10 08:19:19 +00:00