Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ba227e713a9900f87222d60b19da70af868afee5
https://github.com/WebKit/WebKit/commit/ba227e713a9900f87222d60b19da70af868afee5
Author: Karl Dubost <[email protected]>
Date: 2026-04-08 (Wed, 08 Apr 2026)
Changed paths:
A
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots.html
M Source/WebCore/svg/animation/SVGSMILElement.cpp
Log Message:
-----------
Cannot escape Id-value in SVG animation timing attributes
https://bugs.webkit.org/show_bug.cgi?id=42871
rdar://94260935
Reviewed by Antoine Quint.
The SMIL3 specification (ยง Parsing timing specifiers) requires that
the reverse solidus character '\' be used to escape full stop '.'
characters within Id-values in timing attributes, so that dots in
element IDs are not confused with the Id/event separator.
For example, begin="my\.anim.end" should reference an element with
id="my.anim" and its "end" event. WebKit's parseCondition() used a
simple find('.') which matched the first dot regardless of escaping.
The fix finds the first unescaped dot (not preceded by '\') when
splitting the condition string, then strips backslash escapes from
the resolved element ID before lookup.
The tests use only .begin events since parseCondition() handles
begin and end attributes through the same code path.
Spec: https://www.w3.org/TR/SMIL3/smil-timing.html#q22
Test: imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots.html
*
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/svg/animations/syncbase-escaped-dots.html:
Added.
* Source/WebCore/svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::parseCondition):
Canonical link: https://commits.webkit.org/310805@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications