[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