⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 287847 in webkit


Ignore:
Timestamp:
Jan 10, 2022, 11:06:53 AM (5 years ago)
Author:
cathiechen
Message:

ASSERTION FAILED in RenderLayer::updateClipRects
https://bugs.webkit.org/show_bug.cgi?id=234315

Reviewed by Simon Fraser.

Source/WebCore:

In clippingRootForPainting(), the dialog element uses the top layer as its clipping root layer.
When it caculates the clip rects, it caculates all its ancestors' clip rects and caches them
including the clipping root layer. However, if the ancestor is a transformed layer, it should be
treated as a root layer. When the transformed layer updates its clip rects, the root layer won't
match the one in cache. This patch stops the dialog descendant propagating its clipping root layer
to the ancestors' in cache.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::clipCrossesPaintingBoundary const):

LayoutTests:

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r287846 r287847  
     12022-01-10  Cathie Chen  <cathiechen@igalia.com>
     2
     3        ASSERTION FAILED in RenderLayer::updateClipRects
     4        https://bugs.webkit.org/show_bug.cgi?id=234315
     5
     6        Reviewed by Simon Fraser.
     7
     8        * TestExpectations:
     9
    1102022-01-10  Chris Dumez  <cdumez@apple.com>
    211
  • trunk/LayoutTests/TestExpectations

    r287846 r287847  
    39503950webkit.org/b/230079 [ Debug ] imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-tr-contains-fixed-position.html [ Skip ]
    39513951webkit.org/b/230079 [ Debug ] imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-tr-percent-height-child.html [ Skip ]
     3952webkit.org/b/230079 [ Debug ] fast/layers/top-layer-ancestor-opacity-and-transform-crash.html [ Skip ]
    39523953
    39533954webkit.org/b/230080 [ Release ] imported/w3c/web-platform-tests/css/css-transforms/transform-transformed-tbody-contains-fixed-position.html [ ImageOnlyFailure ]
     
    51905191imported/w3c/web-platform-tests/css/css-shadow-parts/interaction-with-nested-pseudo-class.html [ ImageOnlyFailure ]
    51915192
    5192 webkit.org/b/234315 [ Debug ] fast/layers/top-layer-ancestor-opacity-and-transform-crash.html [ Skip ]
    5193 
    51945193webkit.org/b/183994 imported/w3c/web-platform-tests/css/cssom/css-style-attr-decl-block.html [ Failure ]
    51955194
  • trunk/Source/WebCore/ChangeLog

    r287845 r287847  
     12022-01-10  Cathie Chen  <cathiechen@igalia.com>
     2
     3        ASSERTION FAILED in RenderLayer::updateClipRects
     4        https://bugs.webkit.org/show_bug.cgi?id=234315
     5
     6        Reviewed by Simon Fraser.
     7
     8        In clippingRootForPainting(), the dialog element uses the top layer as its clipping root layer.
     9        When it caculates the clip rects, it caculates all its ancestors' clip rects and caches them
     10        including the clipping root layer. However, if the ancestor is a transformed layer, it should be
     11        treated as a root layer. When the transformed layer updates its clip rects, the root layer won't
     12        match the one in cache. This patch stops the dialog descendant propagating its clipping root layer
     13        to the ancestors' in cache.
     14
     15        * rendering/RenderLayer.cpp:
     16        (WebCore::RenderLayer::clipCrossesPaintingBoundary const):
     17
    1182022-01-10  Tim Nguyen  <ntim@apple.com>
    219
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r287845 r287847  
    44584458bool RenderLayer::clipCrossesPaintingBoundary() const
    44594459{
     4460    if (establishesTopLayer())
     4461        return true;
     4462
    44604463    return parent()->enclosingPaginationLayer(IncludeCompositedPaginatedLayers) != enclosingPaginationLayer(IncludeCompositedPaginatedLayers)
    44614464        || parent()->enclosingCompositingLayerForRepaint() != enclosingCompositingLayerForRepaint();
Note: See TracChangeset for help on using the changeset viewer.