[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