servo/components/script
Simon Wülker 1188d2b2e7
Never compute style for children of shadow hosts (#35198)
There is some interesting history to this change:

* https://github.com/servo/servo/issues/33495: Servo crashes on
  Cloudflare's turnstile, because we didn't compute style for
  elements inside shadow trees
* https://github.com/servo/servo/pull/34298: Resolves the issue
  by computing style for children of a potential shadow root,
  in addition to the children of an element
* https://github.com/servo/servo/pull/34701: Changes layout
  of elements with shadow roots such that only the contents
  of the shadow root are laid out

Now, we compute style for both the children of the element
and a potential shadow root, but only lay out the contents
of the shadow tree (if there is one).

This behaviour is not technically incorrect,
since regular children are not included in layout
their style doesn't matter. However, it is
inefficient: the only case where we need to compute
style for a child of a shadow host is when
that child is an assigned slottable in a slot
somewhere else.

This part 1/n of upstreaming the changes necessary
to lay out `<slot>` contents. Note that trying to compute
style for `<slot>` contents *and* children of shadow hosts
will crash in stylo, since it expects to see each
element only once.

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
2025-01-28 21:04:32 +00:00
..
docs Update branch name to main (#30877) 2023-12-16 09:32:20 +00:00
dom libservo: Stop using script_traits in the embedding layer (#35185) 2025-01-28 11:15:36 +00:00
layout_dom Never compute style for children of shadow hosts (#35198) 2025-01-28 21:04:32 +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 Remove UTF-8 BOM before parsing JSON (#35175) 2025-01-27 12:18:03 +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
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: Do not set up an IPC route for every image load (#35041) 2025-01-25 09:39:04 +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: Do not set up an IPC route for every image load (#35041) 2025-01-25 09:39:04 +00:00
microtask.rs Fire slot change events when the slot content changes (#35137) 2025-01-27 14:13:22 +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 libservo: Stop using script_traits in the embedding layer (#35185) 2025-01-28 11:15:36 +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