Bug 1891335 - Compute EffectInfo updates at IntersectionObserver time. r=smaug,hiro
What goes on here is that there's a couple of unfortunate style change sequences which end up making us not do the EffectsInfo dance correctly. Twitter uses (maybe didn't use to, which would explain the regression) a visibility: hidden, out-of-flow iframe for a bit (which we correctly throttle). But then they switch to an in-flow, visible, zero-height iframe. That we should _not_ throttle. However, we end up not getting to the display list code at all, because nsBlockFrame decides that we don't need to descend into an empty line[1]. It seems less error prone to re-use the IntersectionObserver timing and computation to determine whether the iframe is visible. That completely matches in-process iframes, too. Removing the empty frame border and putting them on an empty line in dom/base/test/test_bug1639328.html is enough to reproduce the issue without this patch. [1]: https://searchfox.org/mozilla-central/rev/fe2743c6c5c708061c7f6504b26958fcc815bb4a/layout/generic/nsBlockFrame.cpp#7569-7579 Differential Revision: https://phabricator.services.mozilla.com/D207479
This commit is contained in:
@@ -12228,7 +12228,7 @@ PresShell::ProximityToViewportResult PresShell::DetermineProximityToViewport() {
|
||||
// 14.2.3.2
|
||||
bool intersects =
|
||||
DOMIntersectionObserver::Intersect(
|
||||
input, *element,
|
||||
input, *element, DOMIntersectionObserver::BoxToUse::OverflowClip,
|
||||
DOMIntersectionObserver::IsForProximityToViewport::Yes)
|
||||
.Intersects();
|
||||
element->SetVisibleForContentVisibility(intersects);
|
||||
|
||||
Reference in New Issue
Block a user