servo/components
Martin Robinson f451dccd0b
layout: Store scroll offsets in the ScrollTree (#37428)
There are currently five places that scroll offsets are stored:

 - DOM: A set of scroll offsets used for script.
 - Layout: An array of scroll offsets that is used for tracking
   layout-side scroll offsets.
 - Layout: The scroll offsets stored in the `ScrollTree`. These are
   currently unset and unused.
 - Compositor: The scroll offsets stored in the `ScrollTree` mirrored
   from layout.
 - WebRender: The scrolled offsets stored in the WebRender spatial tree.

This change is the first step in combining the first three into the
layout `ScrollTree`. It eliminates the extra array of scroll offsets
stored in layout in favor of the storing them in the `ScrollTree`. A
followup change will eliminate the ones stored in the DOM.

- In addition the `ScrollState` data structure is eliminated as these
are
now stored in a `HashMap` everywhere when passing them via IPC.
- The offsests stored in layout can now never scroll past the boundaries
of the scrolled content.

Testing: This should not change behavior and is thus covered by existing
WPT tests.

Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: stevennovaryo <steven.novaryo@gmail.com>
2025-06-13 12:01:27 +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 Change canvas/context/snapshot size from u64 -> u32 (#36827) 2025-06-07 14:37:21 +00:00
compositing layout: Store scroll offsets in the ScrollTree (#37428) 2025-06-13 12:01:27 +00:00
config Unconditionally enable the URLPattern API (#37116) 2025-05-24 13:20:45 +00:00
constellation layout: Store scroll offsets in the ScrollTree (#37428) 2025-06-13 12:01:27 +00:00
deny_public_fields Add rust-version to all Cargo.toml files (#33483) 2024-09-17 16:39:07 +00:00
devtools DevTools: Implement support for showing source_content in Debugger > Source panel (#36774) 2025-06-13 09:31: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 chore: fix warnings for Windows-specific fonts code (#37063) 2025-05-21 16:30:43 +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: Store scroll offsets in the ScrollTree (#37428) 2025-06-13 12:01:27 +00:00
malloc_size_of Add support for static SVG images using resvg crate (#36721) 2025-05-27 11:02:40 +00:00
media compositing: Combine webrender_traits and compositing_traits (#36372) 2025-04-06 17:34:18 +00:00
metrics Removing unused dependencies in crates. (#37096) 2025-05-23 12:58:00 +00:00
net tests: Use Ahem font provided by WPT harness. (#37054) 2025-06-09 08:13:05 +00:00
pixels Change canvas/context/snapshot size from u64 -> u32 (#36827) 2025-06-07 14:37:21 +00:00
profile Constellation can now optionally report memory usage when the page is loaded. (#37151) 2025-05-30 17:15:06 +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 layout: Store scroll offsets in the ScrollTree (#37428) 2025-06-13 12:01:27 +00:00
script_bindings AbortController: integrate with stream piping. (#37244) 2025-06-13 09:52:38 +00:00
servo libservo: Let libservo manage compositor message reception (#37372) 2025-06-11 09:50:20 +00:00
servo_tracing [tracing] Add convenience macro for function tracing (#36573) 2025-04-22 19:58:20 +00:00
shared layout: Store scroll offsets in the ScrollTree (#37428) 2025-06-13 12:01:27 +00:00
timers script: Allow reflows that do not produce display lists (#37186) 2025-06-12 19:25:04 +00:00
url Various memory measurement improvements (#36834) 2025-05-07 04:00:12 +00:00
webdriver_server Wait enough time for tick duration in webdriver dispatch actions (#37423) 2025-06-13 08:40:23 +00:00
webgl webgl: Use glow::Context::supported_extensions() to implement getSupportedExtensions() (#36911) 2025-05-08 08:34:52 +00:00
webgpu Removing unused dependencies in crates. (#37096) 2025-05-23 12:58:00 +00:00
webxr Removing unused dependencies in crates. (#37096) 2025-05-23 12:58:00 +00:00