When the update intersection observations steps run (HTML rendering update step 19), the algorithm calls Element::get_bounding_client_rect() on each observed target and on element-typed roots. That path always calls update_layout_if_needed_for_node() before reading the paintable rect. By the time step 19 runs, layout is already up to date: step 16 has just laid out the document, and the preamble of step 19 itself flushes any post-step-16 invalidation with a single update_layout call. So each per-target update_layout call inside getBoundingClientRect is a guaranteed no-op early-exit. |
||
|---|---|---|
| .. | ||
| IntersectionObserver.cpp | ||
| IntersectionObserver.h | ||
| IntersectionObserver.idl | ||
| IntersectionObserverEntry.cpp | ||
| IntersectionObserverEntry.h | ||
| IntersectionObserverEntry.idl | ||