Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bbebc590512613655555a348725daf9abd23e75f https://github.com/WebKit/WebKit/commit/bbebc590512613655555a348725daf9abd23e75f Author: Nikolas Zimmermann <nzimmerm...@igalia.com> Date: 2023-11-05 (Sun, 05 Nov 2023)
Changed paths: M Source/WebCore/rendering/RenderLayer.cpp Log Message: ----------- [LBSE] Unbreak clipping (last minute regression) https://bugs.webkit.org/show_bug.cgi?id=264224 Reviewed by Rob Buis. SVG clipping is broken, due to a last minute change in RenderLayer. The intention to check if a renderer inherits from either RenderSVGResourceContainer or RenderSVGHiddenContainer was tested using only one "dynamicDowncast<RenderSVGHiddenContainer">, as RenderSVGResourceContainer also inherits from RenderSVGHiddenContainer. However, the is<> mechanism, implemented using the RenderObject::isXYZ() methods, does not work anymore like this, due to the introduction of the non-virtual type() method. Nowadays is<RenderSVGHiddenContainer> boils down to: bool isSVGHiddenContainer() const { return type() == Type::SVGHiddenContainer; } Any renderer that inherits from RenderSVGHiddenContainer, e.g. RenderSVGResourceClipper, therefore returns 'false' for is<RenderSVGHiddenContainer>(), because RenderSVGResourceClipper carries a different type() - here 'Type::SVGResourceClipper'. --> One explicitly needs to check both is<RenderSVGResourceClipper>() || is<RenderSVGResourceContainer>()) to check if a renderer inherits from RenderSVGResourceClipper or RenderSVGResourceContainer -- not possible with a single check, given the way isRenderSVGResourceContainer() is currently implemented. Let's first fix this regression for now, and then discuss the correct future mechanism. Whether we should respect the base-class hierarchy in is<> or not. Covered by existing tests, when LBSE is activated. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::updateAncestorDependentState): Canonical link: https://commits.webkit.org/270248@main _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes