Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 96c4f6e9ec7c5d548021e4ec2d35d08329377654
      
https://github.com/WebKit/WebKit/commit/96c4f6e9ec7c5d548021e4ec2d35d08329377654
  Author: Matt Woodrow <mattwood...@apple.com>
  Date:   2022-12-06 (Tue, 06 Dec 2022)

  Changed paths:
    M 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/3d-rendering-context-behavior-expected.txt
    M 
LayoutTests/platform/gtk/transforms/3d/point-mapping/3d-point-mapping-2-expected.txt
    A 
LayoutTests/platform/gtk/transforms/3d/point-mapping/3d-point-mapping-4-expected.txt
    M 
LayoutTests/platform/gtk/transforms/3d/point-mapping/3d-point-mapping-expected.txt
    M 
LayoutTests/platform/ios/transforms/3d/point-mapping/3d-point-mapping-2-expected.txt
    A 
LayoutTests/platform/ios/transforms/3d/point-mapping/3d-point-mapping-4-expected.txt
    M 
LayoutTests/platform/ios/transforms/3d/point-mapping/3d-point-mapping-expected.txt
    M 
LayoutTests/platform/mac/transforms/3d/point-mapping/3d-point-mapping-2-expected.txt
    A 
LayoutTests/platform/mac/transforms/3d/point-mapping/3d-point-mapping-4-expected.txt
    M 
LayoutTests/platform/mac/transforms/3d/point-mapping/3d-point-mapping-expected.txt
    M LayoutTests/transforms/3d/point-mapping/3d-point-mapping-3.html
    A LayoutTests/transforms/3d/point-mapping/3d-point-mapping-4.html
    M LayoutTests/transforms/3d/point-mapping/3d-point-mapping.html
    M 
LayoutTests/transforms/3d/preserve-3d-not-applied-to-ancestors-expected.txt
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
    M Source/WebCore/platform/graphics/transforms/TransformState.cpp
    M Source/WebCore/platform/graphics/transforms/TransformState.h
    M Source/WebCore/rendering/LayerOverlapMap.cpp
    M Source/WebCore/rendering/RenderGeometryMap.cpp
    M Source/WebCore/rendering/RenderGeometryMap.h
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/RenderObject.cpp
    M Source/WebCore/rendering/RenderObject.h
    M Source/WebCore/rendering/svg/RenderSVGRoot.cpp
    M Source/WebCore/rendering/svg/SVGLayerTransformComputation.h
    M Source/WebKit/WebProcess/WebPage/wc/GraphicsLayerWC.cpp

  Log Message:
  -----------
  Make TransformState changes to support transform-style:preserve-3d and 
perspective only apply to direct DOM children.
https://bugs.webkit.org/show_bug.cgi?id=248284
<rdar://problem/102632597>

Reviewed by Simon Fraser.

This changes TransformState to support applying the flattening both before and 
after the specified transform is accounted for,
and reverses which happens if 3d transform interop is enabled.

This is because flattening under interop is a property of the child rather than 
the parent. We flatten just that child if it isn't
accumulating its parent's transform, rather than flattening all children 
because we're not preserve-3d).

The existing TransformState only supported flattening after, which I believe 
was always incorrect if we were pushing transforms onto
the state from innermost to outermost. This happens for 
getBoundingClientRect/ApplyTransformDirection, and is why 
preserve-3d-not-applied-to-ancestors.html
failed (despite not being affected being interop changes). These changes make 
that test work correctly.

* 
LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/3d-rendering-context-behavior-expected.txt:
* 
LayoutTests/platform/gtk/transforms/3d/point-mapping/3d-point-mapping-2-expected.txt:
* 
LayoutTests/platform/gtk/transforms/3d/point-mapping/3d-point-mapping-4-expected.txt:
 Added.
* 
LayoutTests/platform/gtk/transforms/3d/point-mapping/3d-point-mapping-expected.txt:
* 
LayoutTests/platform/ios/transforms/3d/point-mapping/3d-point-mapping-2-expected.txt:
* 
LayoutTests/platform/ios/transforms/3d/point-mapping/3d-point-mapping-4-expected.txt:
 Added.
* 
LayoutTests/platform/ios/transforms/3d/point-mapping/3d-point-mapping-expected.txt:
* 
LayoutTests/platform/mac/transforms/3d/point-mapping/3d-point-mapping-2-expected.txt:
* 
LayoutTests/platform/mac/transforms/3d/point-mapping/3d-point-mapping-4-expected.png:
 Added.
* 
LayoutTests/platform/mac/transforms/3d/point-mapping/3d-point-mapping-4-expected.txt:
 Added.
* 
LayoutTests/platform/mac/transforms/3d/point-mapping/3d-point-mapping-expected.txt:
* LayoutTests/transforms/3d/point-mapping/3d-point-mapping-3.html:
* LayoutTests/transforms/3d/point-mapping/3d-point-mapping-4.html: Copied from 
LayoutTests/transforms/3d/point-mapping/3d-point-mapping-3.html.A

New test with spacers around preserve-3d, and confirming that point mapping 
works correctly.

* LayoutTests/transforms/3d/point-mapping/3d-point-mapping.html:
* LayoutTests/transforms/3d/preserve-3d-not-applied-to-ancestors-expected.txt:

Fixed due to supporting flattening on the right 'side' regardless of which 
order transforms are pushed to the
TransformState (innermost to outermost, or outermost to innermost).

* Source/WebCore/platform/graphics/transforms/TransformState.cpp:
(WebCore::TransformState::operator=):
(WebCore::TransformState::move):
(WebCore::TransformState::shouldFlattenBefore):
(WebCore::TransformState::shouldFlattenAfter):
(WebCore::TransformState::applyTransform):
* Source/WebCore/platform/graphics/transforms/TransformState.h:
(WebCore::TransformState::TransformState):
* Source/WebCore/rendering/LayerOverlapMap.cpp:
(WebCore::LayerOverlapMap::LayerOverlapMap):
* Source/WebCore/rendering/RenderGeometryMap.cpp:
(WebCore::RenderGeometryMap::RenderGeometryMap):
(WebCore::RenderGeometryMap::mapToContainer const):
* Source/WebCore/rendering/RenderGeometryMap.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updateLayerPositionsAfterLayout):
(WebCore::RenderLayer::updateLayerPositionsAfterOverflowScroll):
(WebCore::RenderLayer::updateLayerPositionsAfterDocumentScroll):
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::localToAbsolute const):
(WebCore::RenderObject::absoluteToLocal const):
(WebCore::RenderObject::absoluteToLocalQuad const):
(WebCore::RenderObject::pushOntoTransformState const):
(WebCore::RenderObject::pushOntoGeometryMap const):
(WebCore::RenderObject::localToContainerQuad const):
(WebCore::RenderObject::localToContainerPoint const):
(WebCore::RenderObject::participatesInPreserve3D const):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::mapLocalToContainer const):
* Source/WebCore/rendering/svg/SVGLayerTransformComputation.h:
(WebCore::SVGLayerTransformComputation::computeAccumulatedTransform const):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to