Bug 42871 - Cannot escape Id-value in SVG animation timing attributes
Summary: Cannot escape Id-value in SVG animation timing attributes
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: SVG (show other bugs)
Version: 528+ (Nightly build)
Hardware: Mac (Intel) OS X 10.6
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2010-07-22 21:56 PDT by pipian
Modified: 2022-06-14 17:08 PDT (History)
9 users (show)

See Also:


Attachments
Test case (449 bytes, image/svg+xml)
2010-07-22 21:56 PDT, pipian
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description pipian 2010-07-22 21:56:48 PDT
Created attachment 62381 [details]
Test case

The SVG spec states that <a href="http://www.w3.org/TR/SVG/animate.html#TimingAttributes">Id-values may be used as parts of certain kinds of timing values</a> on SVG animation elements (such as syncbase-values used for the begin and end attributes) and references the SMIL Animation spec for normativity.  The SMIL Animation spec states that, as XML IDs are permitted to have the dot (.) separator, <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904/#TimingAttrValGrammars">identifiers may be escaped with the backslash</a>.  Webkit currently does not support escaping dot characters in timing values, however.

The attached file provides a simple example in which a filled path should slowly change from black to red over 3 seconds.  A second animate element has been added to begin 3 seconds after the end of the first animation and should fade the fill back to black by referencing the first animation, whose ID has been properly escaped in the begin attribute.  Batik correctly performs both animations.  Webkit only performs the first.

This should be a pretty quick fix in SVGSMILElement.cpp (SVGSMILElement::parseCondition).
Comment 1 Ahmad Saleem 2022-05-31 12:46:09 PDT
I am able to reproduce this bug in Safari 15.5 on macOS 12.4 and Technical Preview 146. It is also reproducible in Chrome Canary 104.

Only in Firefox Nightly 102, the black box animation have second loop to go back to black after three seconds.

Thanks!
Comment 2 Radar WebKit Bug Importer 2022-06-01 19:05:41 PDT
<rdar://problem/94260935>
Comment 3 Ahmad Saleem 2022-06-14 17:08:50 PDT
Just for reference:

Webkit File - https://github.com/WebKit/WebKit/blob/main/Source/WebCore/svg/animation/SVGSMILElement.cpp#L377

In Firefox Source Code - how they are doing "escaping dot".

https://searchfox.org/mozilla-central/source/dom/smil/SMILParserUtils.cpp#251