[webkit-changes] [WebKit/WebKit] fcaf70: [svg] WPT test svg/animations/animateMotion-keyPoi...
Antoine Quint
noreply at github.com
Sat Apr 13 00:41:37 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: fcaf706998523701858ebe0ba15da4bcb372ddf1
https://github.com/WebKit/WebKit/commit/fcaf706998523701858ebe0ba15da4bcb372ddf1
Author: Antoine Quint <graouts at webkit.org>
Date: 2024-04-12 (Fri, 12 Apr 2024)
Changed paths:
M LayoutTests/imported/w3c/web-platform-tests/svg/animations/animateMotion-keyPoints-001-expected.txt
M Source/WebCore/svg/SVGAnimationElement.cpp
Log Message:
-----------
[svg] WPT test svg/animations/animateMotion-keyPoints-001.html fails in WebKit only
https://bugs.webkit.org/show_bug.cgi?id=272602
Reviewed by Dean Jackson.
The SVG Animations spec says [0] that "the default value for the `calcMode` for `animateMotion`
is `paced`". Further, on this `paced` value, the spec says [1] "if `paced` is specified, any
`keyTimes` or `keySplines` will be ignored".
I believe that based on this, our implementation always disregarded `keyTimes` when resolving
animations for `<animationMotion>`. However, `svg/animations/animateMotion-keyPoints-001.html`
has both `keyPoints` and `keyTimes` attributes and so WebKit ignores them. But the spec also
says [2] "SVG adds a `keyPoints` attribute to the `animateMotion` to provide precise control
of the velocity of motion path animations".
While the spec is convoluted in this area, it would make little sense to ignore `keyPoints`
for `<animationMotion>` when it's been expressly added for the purpose of this animation type,
even though its `calcMode` is `paced` and `keyTimes` ought to be ignored. And in fact, Chrome
and Firefox both respect those attributes and passes this test.
So we change our implementation to use the `keyTimes` as specified via the attribute in
`startedActiveInterval()` to determine whether the animation is valid and then, in `updateAnimation()`,
call `calculatePercentFromKeyPoints()` to respect the `keyPoints` value in the case of an
`<animateMotion>` element.
This will also be required to pass the WPT test `svg/path/property/mpath.svg` (see bug 272416)
which also uses an `<animateMotion>` element with a `keyPoints`/`keyTimes` attribute combination.
[0] https://svgwg.org/specs/animations/#AnimateMotionElement
[1] https://svgwg.org/specs/animations/#CalcModeAttribute
[2] https://svgwg.org/specs/animations/#RelationshipToSMILAnimation
* LayoutTests/imported/w3c/web-platform-tests/svg/animations/animateMotion-keyPoints-001-expected.txt:
* Source/WebCore/svg/SVGAnimationElement.cpp:
(WebCore::SVGAnimationElement::calculatePercentFromKeyPoints const):
(WebCore::SVGAnimationElement::startedActiveInterval):
(WebCore::SVGAnimationElement::updateAnimation):
Canonical link: https://commits.webkit.org/277450@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list