Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
[LBSE] Activate support for 'defs' (hidden containers)
https://bugs.webkit.org/show_bug.cgi?id=243497 Reviewed by Rob Buis. Activate support for <defs> (and hidden containers, in general). All children of a RenderSVGHiddenContainer are never painted directly, independant of their visibility / display property values. Extend SVGGraphicsElement to implement the 'didAttachRenderers' function, which is called after a freshly setup renderer was inserted into the tree. Dirty the content visibility status of the associated layer, to assure that it is going to be re-evaluated during the next layout phase. RenderLayer computeHasVisibleContent() needs to consider the ancestor chain for SVG renderers: the presence of a RenderSVGHiddenContainer in the ancestor chain unconditionally flags each affected renderer as "invisible". This new logic also partly fixes webkit.org/b/243417. Fixes 1 additional SVG 1.1 testcase. * LayoutTests/platform/mac-monterey-wk2-lbse-text/TestExpectations: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-30-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-31-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-39-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-40-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-41-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-46-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-61-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-63-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-64-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-65-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-66-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-67-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-68-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-69-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-70-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-77-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-78-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-80-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-81-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-82-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/animate-elem-83-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/filters-composite-02-b-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/filters-gauss-01-b-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/filters-morph-01-f-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/pservers-grad-13-b-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/struct-defs-01-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/struct-group-03-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/struct-image-02-b-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/struct-symbol-01-b-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/struct-use-01-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/struct-use-03-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/text-align-04-b-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/text-path-01-b-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/text-text-04-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/text-text-05-t-expected.txt: * LayoutTests/platform/mac-monterey-wk2-lbse-text/svg/W3C-SVG-1.1/text-text-06-t-expected.txt: * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/accessibility/AccessibilitySVGElement.cpp: (WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored const): * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::layerCreationAllowedForSubtree const): * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::computeHasVisibleContent const): * Source/WebCore/rendering/RenderLayer.h: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::paintsContent const): * Source/WebCore/rendering/RenderObject.h: (WebCore::RenderObject::isLegacySVGHiddenContainer const): * Source/WebCore/rendering/svg/LegacyRenderSVGHiddenContainer.cpp: Copied from Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp. (WebCore::LegacyRenderSVGHiddenContainer::LegacyRenderSVGHiddenContainer): (WebCore::LegacyRenderSVGHiddenContainer::layout): (WebCore::LegacyRenderSVGHiddenContainer::paint): (WebCore::LegacyRenderSVGHiddenContainer::absoluteQuads const): (WebCore::LegacyRenderSVGHiddenContainer::nodeAtFloatPoint): * Source/WebCore/rendering/svg/LegacyRenderSVGHiddenContainer.h: Copied from Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h. * Source/WebCore/rendering/svg/LegacyRenderSVGRoot.cpp: (WebCore::LegacyRenderSVGRoot::paintReplaced): * Source/WebCore/rendering/svg/RenderSVGHiddenContainer.cpp: (WebCore::RenderSVGHiddenContainer::RenderSVGHiddenContainer): (WebCore::RenderSVGHiddenContainer::layout): (WebCore::RenderSVGHiddenContainer::styleDidChange): (WebCore::RenderSVGHiddenContainer::paint): Deleted. (WebCore::RenderSVGHiddenContainer::absoluteQuads const): Deleted. (WebCore::RenderSVGHiddenContainer::nodeAtFloatPoint): Deleted. * Source/WebCore/rendering/svg/RenderSVGHiddenContainer.h: * Source/WebCore/rendering/svg/RenderSVGModelObject.h: * Source/WebCore/rendering/svg/RenderSVGResourceContainer.cpp: (WebCore::RenderSVGResourceContainer::RenderSVGResourceContainer): (WebCore::RenderSVGResourceContainer::layout): (WebCore::RenderSVGResourceContainer::willBeDestroyed): (WebCore::RenderSVGResourceContainer::styleDidChange): * Source/WebCore/rendering/svg/RenderSVGResourceContainer.h: * Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.cpp: (WebCore::RenderSVGResourceFilterPrimitive::RenderSVGResourceFilterPrimitive): (WebCore::RenderSVGResourceFilterPrimitive::filterPrimitiveElement const): (WebCore::RenderSVGResourceFilterPrimitive::styleDidChange): * Source/WebCore/rendering/svg/RenderSVGResourceFilterPrimitive.h: * Source/WebCore/rendering/svg/SVGBoundingBoxComputation.cpp: (WebCore::SVGBoundingBoxComputation::handleRootOrContainer const): * Source/WebCore/rendering/svg/SVGContainerLayout.cpp: (WebCore::SVGContainerLayout::layoutChildren): * Source/WebCore/rendering/svg/SVGRenderSupport.cpp: (WebCore::SVGRenderSupport::computeContainerBoundingBoxes): * Source/WebCore/svg/SVGDefsElement.cpp: (WebCore::SVGDefsElement::createElementRenderer): * Source/WebCore/svg/SVGElement.cpp: (WebCore::createSVGLayerAwareElementSet): * Source/WebCore/svg/SVGForeignObjectElement.cpp: (WebCore::SVGForeignObjectElement::rendererIsNeeded): * Source/WebCore/svg/SVGGElement.cpp: (WebCore::SVGGElement::createElementRenderer): * Source/WebCore/svg/SVGGradientElement.cpp: * Source/WebCore/svg/SVGGraphicsElement.cpp: (WebCore::SVGGraphicsElement::createElementRenderer): (WebCore::SVGGraphicsElement::didAttachRenderers): * Source/WebCore/svg/SVGGraphicsElement.h: * Source/WebCore/svg/SVGSVGElement.cpp: (WebCore::SVGSVGElement::didAttachRenderers): * Source/WebCore/svg/SVGSymbolElement.cpp: (WebCore::SVGSymbolElement::createElementRenderer): Canonical link: https://commits.webkit.org/253510@main
- Loading branch information