[webkit-changes] [WebKit/WebKit] 99677e: REGRESSION (253865 at main): Fixed elements jiggle wh...

Simon Fraser noreply at github.com
Fri Sep 9 09:56:38 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 99677e63f83398f621acad2e766fedf40d3e5fc9
      https://github.com/WebKit/WebKit/commit/99677e63f83398f621acad2e766fedf40d3e5fc9
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2022-09-09 (Fri, 09 Sep 2022)

  Changed paths:
    M LayoutTests/TestExpectations
    M LayoutTests/compositing/absolute-inside-out-of-view-fixed-expected.txt
    M LayoutTests/compositing/backing/backing-store-columns-inside-position-fixed-expected.txt
    M LayoutTests/compositing/contents-opaque/hidden-with-visible-child-expected.txt
    M LayoutTests/compositing/contents-opaque/hidden-with-visible-text-expected.txt
    M LayoutTests/compositing/fixed-positioned-pseudo-content-no-compositing-expected.txt
    M LayoutTests/compositing/fixed-with-fixed-layout-expected.txt
    M LayoutTests/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt
    M LayoutTests/compositing/geometry/fixed-transformed-expected.txt
    M LayoutTests/compositing/geometry/limit-layer-bounds-fixed-expected.txt
    M LayoutTests/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt
    M LayoutTests/compositing/iframes/overlapped-nested-iframes-expected.txt
    M LayoutTests/compositing/layer-creation/fixed-overlap-extent-expected.txt
    M LayoutTests/compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt
    M LayoutTests/compositing/layer-creation/fixed-position-and-transform-expected.txt
    M LayoutTests/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt
    M LayoutTests/compositing/layer-creation/fixed-position-descendants-out-of-view-expected.txt
    M LayoutTests/compositing/layer-creation/fixed-position-transformed-into-view-expected.txt
    M LayoutTests/compositing/layer-creation/fixed-position-under-transform-expected.txt
    M LayoutTests/compositing/layer-creation/zoomed-clip-intersection-expected.txt
    M LayoutTests/compositing/transforms/3d-transformed-fixed-expected.html
    M LayoutTests/compositing/transforms/3d-transformed-fixed.html
    M LayoutTests/editing/editable-region/fixed-and-absolute-contenteditable-scrolled-expected.txt
    M LayoutTests/editing/editable-region/relative-inside-fixed-contenteditable-scrolled-expected.txt
    M LayoutTests/editing/editable-region/transformed-scrolled-on-top-of-fixed-contenteditables-expected.txt
    M LayoutTests/fast/scrolling/mac/negative-z-index-overflow-scroll-expected.txt
    M LayoutTests/fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-expected.txt
    M LayoutTests/fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-then-up-expected.txt
    M LayoutTests/fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolling-layers-state-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/contents-opaque/body-background-painted-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/contents-opaque/body-background-skipped-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/fixed-image-loading-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/geometry/fixed-position-composited-switch-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/layer-creation/fixed-position-transformed-into-view-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/layer-creation/fixed-position-under-transform-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/layer-creation/no-compositing-for-sticky-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/rtl/rtl-fixed-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt
    M LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-fixed-expected.txt
    M LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt
    M LayoutTests/platform/ios/compositing/absolute-inside-out-of-view-fixed-expected.txt
    M LayoutTests/platform/ios/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt
    M LayoutTests/platform/ios/compositing/iframes/overlapped-nested-iframes-expected.txt
    M LayoutTests/platform/ios/compositing/layer-creation/fixed-position-and-transform-expected.txt
    M LayoutTests/platform/ios/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt
    M LayoutTests/platform/ios/scrollingcoordinator/ios/fixed-in-frame-layer-reconcile-layer-position-expected.txt
    M LayoutTests/platform/mac-wk2/compositing/contents-opaque/body-background-painted-expected.txt
    M LayoutTests/platform/mac-wk2/compositing/contents-opaque/body-background-skipped-expected.txt
    M LayoutTests/platform/mac-wk2/compositing/fixed-image-loading-expected.txt
    M LayoutTests/platform/mac-wk2/compositing/rtl/rtl-fixed-expected.txt
    M LayoutTests/platform/mac-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt
    M LayoutTests/platform/mac/compositing/geometry/fixed-position-composited-switch-expected.txt
    M LayoutTests/platform/mac/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt
    M LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt
    M LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-fixed-child-expected.txt
    M LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-inside-fixed-expected.txt
    M LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-fixed-expected.txt
    M LayoutTests/tiled-drawing/scrolling/sticky/sticky-layers-expected.txt
    M Source/WebCore/rendering/RenderLayerBacking.cpp

  Log Message:
  -----------
  REGRESSION (253865 at main): Fixed elements jiggle when scrolling youtube.com
https://bugs.webkit.org/show_bug.cgi?id=244767
<rdar://99495036>

Reviewed by Alan Bujtas.

Part of the fix in 253865 at main was based on the false premise that `perspective` on some
ancestor could affect the 3D transform on a layer with `position:fixed` behavior; that
patch fiddled with boundsOrigin on the anchor layer to allow the perspective
sublayerTransform to influence the fixed layer.

However, per spec[1], `perspective` creates a containing block for fixed position, and
indeed this was fixed in the compositing code path in 253809 at main (the lack of this fix
confused my testing when writing the original patch). So it turns out that the anchor
layer used for fixed and sticky layers doesn't need any boundsOrigin adjustment.
Removing the boundsOrigin adjustment fixes some scrolling thread jiggles that I didn't
fully debug. The anchor layer still uses `GraphicsLayer::Type::Structural` to allow
perspective to affect a `position:sticky` element and to avoid flattening by
`preserve-3d`, as tested by the
`css/css-transforms/3dtransform-and-position-sticky-002.html` WPT.

[1] https://www.w3.org/TR/css-transforms-2/#perspective-property

* LayoutTests/compositing/absolute-inside-out-of-view-fixed-expected.txt:
* LayoutTests/compositing/absolute-inside-out-of-view-fixed-expected.txt:
* LayoutTests/compositing/backing/backing-store-columns-inside-position-fixed-expected.txt:
* LayoutTests/compositing/backing/backing-store-columns-inside-position-fixed-expected.txt:
* LayoutTests/compositing/backing/no-backing-for-offscreen-children-of-position-fixed-expected.txt:
* LayoutTests/compositing/backing/no-backing-for-offscreen-children-of-position-fixed-expected.txt:
* LayoutTests/compositing/contents-opaque/hidden-with-visible-child-expected.txt:
* LayoutTests/compositing/contents-opaque/hidden-with-visible-child-expected.txt:
* LayoutTests/compositing/contents-opaque/hidden-with-visible-text-expected.txt:
* LayoutTests/compositing/contents-opaque/hidden-with-visible-text-expected.txt:
* LayoutTests/compositing/fixed-positioned-pseudo-content-no-compositing-expected.txt:
* LayoutTests/compositing/fixed-positioned-pseudo-content-no-compositing-expected.txt:
* LayoutTests/compositing/fixed-with-fixed-layout-expected.txt:
* LayoutTests/compositing/fixed-with-fixed-layout-expected.txt:
* LayoutTests/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
* LayoutTests/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
* LayoutTests/compositing/geometry/fixed-transformed-expected.txt:
* LayoutTests/compositing/geometry/fixed-transformed-expected.txt:
* LayoutTests/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* LayoutTests/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* LayoutTests/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* LayoutTests/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* LayoutTests/compositing/iframes/overlapped-nested-iframes-expected.txt:
* LayoutTests/compositing/iframes/overlapped-nested-iframes-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-overlap-extent-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-overlap-extent-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-and-transform-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-and-transform-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-change-out-of-view-in-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-descendants-out-of-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-descendants-out-of-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-out-of-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-out-of-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-transformed-into-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-transformed-into-view-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-under-transform-expected.txt:
* LayoutTests/compositing/layer-creation/fixed-position-under-transform-expected.txt:
* LayoutTests/compositing/layer-creation/zoomed-clip-intersection-expected.txt:
* LayoutTests/compositing/layer-creation/zoomed-clip-intersection-expected.txt:
* LayoutTests/compositing/no-compositing-when-fulll-screen-is-present-expected.txt:
* LayoutTests/compositing/no-compositing-when-fulll-screen-is-present-expected.txt:
* LayoutTests/compositing/transforms/3d-transformed-fixed-expected.html:
* LayoutTests/compositing/transforms/3d-transformed-fixed.html:
* LayoutTests/compositing/visibility/visibility-change-in-subframe-expected.txt:
* LayoutTests/compositing/visibility/visibility-change-in-subframe-expected.txt:
* LayoutTests/editing/editable-region/fixed-and-absolute-contenteditable-scrolled-expected.txt:
* LayoutTests/editing/editable-region/fixed-and-absolute-contenteditable-scrolled-expected.txt:
* LayoutTests/editing/editable-region/relative-inside-fixed-contenteditable-scrolled-expected.txt:
* LayoutTests/editing/editable-region/relative-inside-fixed-contenteditable-scrolled-expected.txt:
* LayoutTests/editing/editable-region/transformed-scrolled-on-top-of-fixed-contenteditables-expected.txt:
* LayoutTests/editing/editable-region/transformed-scrolled-on-top-of-fixed-contenteditables-expected.txt:
* LayoutTests/fast/repaint/iframe-on-subpixel-position-expected.txt:
* LayoutTests/fast/scrolling/mac/negative-z-index-overflow-scroll-expected.txt:
* LayoutTests/fast/scrolling/mac/negative-z-index-overflow-scroll-expected.txt:
* LayoutTests/fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-expected.txt:
* LayoutTests/fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-then-up-expected.txt:
* LayoutTests/fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolling-layers-state-expected.txt:
* LayoutTests/fullscreen/full-screen-layer-dump-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/contents-opaque/body-background-painted-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/contents-opaque/body-background-painted-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/contents-opaque/body-background-skipped-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/contents-opaque/body-background-skipped-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/fixed-image-loading-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/fixed-image-loading-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/geometry/fixed-position-composited-switch-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/geometry/fixed-position-composited-switch-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/layer-creation/fixed-position-transformed-into-view-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/layer-creation/fixed-position-transformed-into-view-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/layer-creation/fixed-position-under-transform-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/layer-creation/fixed-position-under-transform-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/layer-creation/no-compositing-for-sticky-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/layer-creation/no-compositing-for-sticky-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/rtl/rtl-fixed-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/rtl/rtl-fixed-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-fixed-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/rtl/rtl-iframe-fixed-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/visibility/visibility-change-in-subframe-expected.txt:
* LayoutTests/platform/ios-wk2/compositing/visibility/visibility-change-in-subframe-expected.txt:
* LayoutTests/platform/ios-wk2/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
* LayoutTests/platform/ios/compositing/absolute-inside-out-of-view-fixed-expected.txt:
* LayoutTests/platform/ios/compositing/absolute-inside-out-of-view-fixed-expected.txt:
* LayoutTests/platform/ios/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
* LayoutTests/platform/ios/compositing/geometry/fixed-position-flipped-writing-mode-expected.txt:
* LayoutTests/platform/ios/compositing/iframes/overlapped-nested-iframes-expected.txt:
* LayoutTests/platform/ios/compositing/iframes/overlapped-nested-iframes-expected.txt:
* LayoutTests/platform/ios/compositing/layer-creation/fixed-position-and-transform-expected.txt:
* LayoutTests/platform/ios/compositing/layer-creation/fixed-position-and-transform-expected.txt:
* LayoutTests/platform/ios/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
* LayoutTests/platform/ios/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
* LayoutTests/platform/ios/scrollingcoordinator/ios/fixed-in-frame-layer-reconcile-layer-position-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/contents-opaque/body-background-painted-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/contents-opaque/body-background-painted-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/contents-opaque/body-background-skipped-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/contents-opaque/body-background-skipped-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/fixed-image-loading-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/fixed-image-loading-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/rtl/rtl-fixed-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/rtl/rtl-fixed-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
* LayoutTests/platform/mac-wk2/compositing/rtl/rtl-fixed-overflow-expected.txt:
* LayoutTests/platform/mac/compositing/geometry/fixed-position-composited-switch-expected.txt:
* LayoutTests/platform/mac/compositing/geometry/fixed-position-composited-switch-expected.txt:
* LayoutTests/platform/mac/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
* LayoutTests/platform/mac/compositing/rtl/rtl-fixed-overflow-scrolled-expected.txt:
* LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
* LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-frame-expected.txt:
* LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-fixed-child-expected.txt:
* LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-fixed-child-expected.txt:
* LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-inside-fixed-expected.txt:
* LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-inside-fixed-expected.txt:
* LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-fixed-expected.txt:
* LayoutTests/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-fixed-expected.txt:
* LayoutTests/tiled-drawing/scrolling/sticky/sticky-layers-expected.txt:
* LayoutTests/tiled-drawing/scrolling/sticky/sticky-layers-expected.txt:

* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::updateViewportConstrainedAnchorLayer):

Canonical link: https://commits.webkit.org/254304@main




More information about the webkit-changes mailing list