Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 81156f087d4a7f806965e361402a8d55cc6f64ac
      
https://github.com/WebKit/WebKit/commit/81156f087d4a7f806965e361402a8d55cc6f64ac
  Author: Karl Dubost <[email protected]>
  Date:   2026-07-26 (Sun, 26 Jul 2026)

  Changed paths:
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/support/attribute-testcommon.js
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-valid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-invalid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-invalid.svg
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-valid-expected.txt
    A 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-valid.svg
    M 
LayoutTests/platform/mac-tahoe-wk2-lbse-text/svg/hixie/error/007-expected.txt
    M LayoutTests/svg/hixie/error/007-expected.txt
    M Source/WebCore/svg/SVGLengthValue.cpp

  Log Message:
  -----------
  SVGLength.value returns raw negative numbers for 
r/rx/ry/width/height/textLength after setAttribute, disagreeing with 
getComputedStyle()
https://bugs.webkit.org/show_bug.cgi?id=318324
rdar://181108927

Reviewed by Taher Ali.

SVG 2 says a negative value for 'r', 'rx', or 'ry' is invalid and must be
ignored, e.g. https://w3c.github.io/svgwg/svg2-draft/geometry.html#R. Before
this change, getComputedStyle() correctly fell back to the initial value, but
SVGAnimatedLength.baseVal.value leaked the raw negative number through:

    <svg xmlns="http://www.w3.org/2000/svg";>
    <circle id="c" r="5"/>
    </svg>
    <script>
    c.setAttribute("r", "-10");
    getComputedStyle(c).r;   // "0px" (correct)
    c.r.baseVal.value;       // -10 (wrong; now 0)
    </script>

The bug was in SVGLengthValue::construct(): when a negative value is
forbidden, it only reset the parsed length to a fallback value if the call
site explicitly passed one (via the `fallbackValue` parameter). Most call
sites don't pass one, so the negative value survived into baseVal.

The same shape of bug also affects width/height on <rect>, <image>,
<pattern>, and <use>, and textLength on <text>, which all pass
`SVGLengthNegativeValuesMode::Forbid` without a fallback. A cross-engine
probe confirmed a single fix in SVGLengthValue::construct() is correct
for all of them, rather than only patching the three call sites named
in this bug.

Added ellipse rx/ry coverage to the existing WPT attribute-syntax tests,
which previously only covered rect for those two attributes.

* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cx-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/cy-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-rx-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ellipse-ry-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/height-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/r-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/rx-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/ry-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/support/attribute-testcommon.js:
 Added.
(test_valid_attribute_value):
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/width-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/x-attribute-valid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-invalid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-invalid.svg:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-valid-expected.txt:
 Added.
* 
LayoutTests/imported/w3c/web-platform-tests/svg/geometry/parsing/y-attribute-valid.svg:
 Added.
* LayoutTests/svg/hixie/error/007-expected.txt
* Source/WebCore/svg/SVGLengthValue.cpp:
(WebCore::SVGLengthValue::construct):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to