servo/components
Oriol Brufau 1cceb5f6a0
layout: Inform child layout about final block size (#36980)
Before this patch it wasn't possibly to simultaneously support intrinsic
min/max sizes and content alignment in the block axis. For example,
block containers only support the former, and flex containers only the
latter.

The reason is that the final block size was decided by the parent
formatting context *after* performing layout, while content alignment is
performed *during* layout.

To address the problem, this introduces the struct `LazySize`, which
contains the data to resolve the final size, except for the intrinsic
size. Thus the parent formatting context can first create a `LazySize`,
then pass it to the child layout so that (if necessary) it can compute
the final size once the intrinsic one is known, and after layout the
parent formatting context uses it to actually size the child.

This PR just provides the functionality that will be used by follow-ups,
but at this point no layout is using the `LazySize` provided by the
parent, so there shouldn't be any behavior change yet.

Testing: Unnecessary (no behavior change)
This is part of #36981 and #36982

Signed-off-by: Oriol Brufau <obrufau@igalia.com>
2025-05-14 20:35:49 +00:00
..
allocator Organize component Cargo.toml dependencies (#36224) 2025-03-30 19:03:54 +00:00
background_hang_monitor Organize component Cargo.toml dependencies (#36224) 2025-03-30 19:03:54 +00:00
bluetooth Replace bluetooth Readme with corrected version from devices repository (#36429) 2025-04-10 18:02:45 +00:00
canvas canvas: Move generic implementations into GenericPathBuilder trait (#36999) 2025-05-14 03:51:56 +00:00
compositing Remove duplicate click event in simulate_mouse_click (#36957) 2025-05-13 10:25:09 +00:00
config Remove some references to layout 2013 vs layout 2020 (#37007) 2025-05-14 19:53:48 +00:00
constellation libservo: Allow embedders to execute JavaScript scripts via the API (#35720) 2025-05-13 12:54:18 +00:00
deny_public_fields Add rust-version to all Cargo.toml files (#33483) 2024-09-17 16:39:07 +00:00
devtools DevTools: Improve resource_available to handle multiple connections (#36933) 2025-05-09 12:06:33 +00:00
dom_struct script: Feature-gate all crown support. (#35055) 2025-01-18 21:36:15 +00:00
domobject_derive Update rustfmt to the 2024 style edition (#35764) 2025-03-03 11:26:53 +00:00
fonts Various memory measurement improvements (#36834) 2025-05-07 04:00:12 +00:00
geometry servoshell: Allow overriding screen resolution with a command-line argument (#34038) 2024-10-30 11:54:13 +00:00
hyper_serde Update rustfmt to the 2024 style edition (#35764) 2025-03-03 11:26:53 +00:00
jstraceable_derive Add rust-version to all Cargo.toml files (#33483) 2024-09-17 16:39:07 +00:00
layout layout: Inform child layout about final block size (#36980) 2025-05-14 20:35:49 +00:00
malloc_size_of layout: Share styles to inline box children via SharedInlineStyles (#36896) 2025-05-12 09:38:50 +00:00
media compositing: Combine webrender_traits and compositing_traits (#36372) 2025-04-06 17:34:18 +00:00
metrics Move ScriptToConstellationMsg to constellation_traits (#36364) 2025-04-05 22:13:29 +00:00
net fix: ReadableStream::get_in_memory_bytes too large (#36914) 2025-05-12 16:00:14 +00:00
pixels pixels: Actually write pixels in MULTIPLY generic_transform_inplace operations (#36895) 2025-05-08 07:38:02 +00:00
profile Make the memory reporting multi-process aware (#35863) 2025-04-05 05:42:12 +00:00
rand Migrate to the 2024 edition (#35755) 2025-03-13 10:28:11 +00:00
range Add rust-version to all Cargo.toml files (#33483) 2024-09-17 16:39:07 +00:00
script Implement inner slot for cryptographic nonce (#36965) 2025-05-14 10:21:21 +00:00
script_bindings Implement iframe.srcdoc trusted type sink (#36960) 2025-05-13 21:07:13 +00:00
servo libservo: Allow embedders to execute JavaScript scripts via the API (#35720) 2025-05-13 12:54:18 +00:00
servo_tracing [tracing] Add convenience macro for function tracing (#36573) 2025-04-22 19:58:20 +00:00
shared libservo: Allow embedders to execute JavaScript scripts via the API (#35720) 2025-05-13 12:54:18 +00:00
timers Update rustfmt to the 2024 style edition (#35764) 2025-03-03 11:26:53 +00:00
url Various memory measurement improvements (#36834) 2025-05-07 04:00:12 +00:00
webdriver_server chore: update webdriver to 0.53 (#37001) 2025-05-14 08:22:40 +00:00
webgl webgl: Use glow::Context::supported_extensions() to implement getSupportedExtensions() (#36911) 2025-05-08 08:34:52 +00:00
webgpu Introduce snapshot concept of canvas (#36119) 2025-04-23 07:32:47 +00:00
webxr libservo: Expose a ServoBuilder (#36549) 2025-04-16 16:58:52 +00:00