[Webkit-unassigned] [Bug 228125] New: [SVG] Attribute change triggers redundant (and out of order) setNeedsLayout call
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Tue Jul 20 13:58:02 PDT 2021
https://bugs.webkit.org/show_bug.cgi?id=228125
Bug ID: 228125
Summary: [SVG] Attribute change triggers redundant (and out of
order) setNeedsLayout call
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: Layout and Rendering
Assignee: webkit-unassigned at lists.webkit.org
Reporter: zalan at apple.com
CC: bfulgham at webkit.org, simon.fraser at apple.com,
zalan at apple.com
<svg id=changeThis></svg>
<script>
document.body.offsetHeight;
changeThis.setAttribute("width","100px");
</script>
The RenderObject::setNeedsLayout(MarkContainingBlockChain) triggered by the SVGElement::attributeChanged (SVGElement::attributeChanged -> SVGSVGElement::svgAttributeChanged -> RenderSVGResource::markForLayoutAndParentResourceInvalidation()) is incorrect and redundant.
Incorrect in the context of how the dirty bits on the render tree should be populated. It is out of order i.e we have to have all the ancestors resolved first when marking descendant renderers dirty.
Redundant because this attribute change on the SVG element also triggers style invalidation as part of the "presentational hints" flow (which applies to pretty much all the valid SVG attributes see SVGElement::hasPresentationalHintsForAttribute) and this style invalidation path would properly update the associated renderer's dirty bit through the normal RenderTreeUpdater process (as if it was just yet another non-svg style update e.g. <div dir=ltr <-changing it to rtl).
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20210720/e6bb2759/attachment.htm>
More information about the webkit-unassigned
mailing list