[webkit-changes] [WebKit/WebKit] cf6047: REGRESSION: Top bar is jumpy and glitchy on scmp.com
Simon Fraser
noreply at github.com
Sat Mar 25 15:55:40 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: cf604717c41c53cb1a1b0af630cd883b70fdbf72
https://github.com/WebKit/WebKit/commit/cf604717c41c53cb1a1b0af630cd883b70fdbf72
Author: Simon Fraser <simon.fraser at apple.com>
Date: 2023-03-25 (Sat, 25 Mar 2023)
Changed paths:
A LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed-expected.txt
A LayoutTests/platform/wpe/scrollingcoordinator/scrolling-tree/fixed-inside-stacking-overflow-inside-transformed-expected.txt
A LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed-expected.txt
A LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed.html
M Source/WebCore/rendering/RenderLayerCompositor.cpp
Log Message:
-----------
REGRESSION: Top bar is jumpy and glitchy on scmp.com
https://bugs.webkit.org/show_bug.cgi?id=253503
rdar://106407870
Reviewed by Alan Baradlay and Myles C. Maxfield.
The South China Morning Post has a content structure that looks like this:
<div style="transform:translateZ(0)">
<div style="overflow: scroll">
<div style="position: relative">
<div class="masthead" style="position: fixed"></div>
<div style="something that triggers compositing"></div>
</div>
</div>
</div>
So the position:fixed is inside a transformed ancestor (which becomes its containing block),
crossing the overflow boundary, and there's a relative position element in between.
In this configuration, the containing block tree walk done in
collectStationaryLayerRelatedOverflowNodes() for the fixedpos element would bail at the
non-composited relpos element, so failing to find the overflow scrolling ancestor. This means that
the scrolling tree would fail to reposition the "fixed" element on scrolling.
The check for a non-composted layer in this tree walk was added in 247609 at main, but the relevant
content no longer hits this condition, probably because of other dialog-related fixes. So remove it.
* LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed-expected.txt: Added.
* LayoutTests/platform/wpe/scrollingcoordinator/scrolling-tree/fixed-inside-stacking-overflow-inside-transformed-expected.txt: Added.
* LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed-expected.txt: Added.
* LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed.html: Added.
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::collectStationaryLayerRelatedOverflowNodes):
Canonical link: https://commits.webkit.org/262118@main
More information about the webkit-changes
mailing list