W3C home > Mailing lists > Public > public-css-archive@w3.org > December 2019

[csswg-drafts] [web-animations-1] (#4553)

From: Antoine Quint via GitHub <sysbot+gh@w3.org>
Date: Mon, 02 Dec 2019 15:12:15 +0000
To: public-css-archive@w3.org
Message-ID: <issues.opened-531191923-1575299534-sysbot+gh@w3.org>
graouts has just created a new issue for https://github.com/w3c/csswg-drafts:

== [web-animations-1]  ==
The test [timing-model/timelines/update-and-send-events.html](https://github.com/web-platform-tests/wpt/blob/master/web-animations/timing-model/timelines/update-and-send-events.html) has this sub-test:

```javascript
promise_test(async t => {
  createStyle(t, { '@keyframes anim': '' });
  const div = createDiv(t);

  let receivedEvents = [];
  function receiveEvent(type, timeStamp) {
    receivedEvents.push({ type, timeStamp });
  }

  div.onanimationcancel = event => receiveEvent(event.type, event.timeStamp);
  div.ontransitioncancel = event => receiveEvent(event.type, event.timeStamp);

  getComputedStyle(div).marginLeft;
  div.style = 'animation: anim 100s; ' +
              'transition: margin-left 100s; ' +
              'margin-left: 100px;';
  div.animate(null, 100 * MS_PER_SEC);
  const animations = div.getAnimations();

  animations.forEach(anim => {
    anim.oncancel = event => {
      receiveEvent(animationType(anim) + ':' + event.type, event.timeStamp);
    };
  });

  await Promise.all(animations.map(anim => anim.ready));

  const timeInAnimationReady = document.timeline.currentTime;

  // Call cancel() in reverse composite order.  I.e. canceling for script
  // animation happen first, then for CSS animation and CSS transition.
  // 'cancel' events for these animations should be sorted by composite
  // order.
  animations.reverse().forEach(anim => anim.cancel());

  // requestAnimationFrame callback which is actually the _same_ frame since we
  // are currently operating in the `ready` callbac of the animations which
  // happens as part of the "Update animations and send events" procedure
  // _before_ we run animation frame callbacks.
  await waitForAnimationFrames(1);

  assert_times_equal(timeInAnimationReady, document.timeline.currentTime,
    'A rAF callback should happen in the same frame');

  assert_array_equals(receivedEvents.map(event => event.type),
    // This ordering needs more clarification in the spec, but the intention is
    // that the cancel playback event fires before the equivalent CSS cancel
    // event in each case.
    [ 'CSSTransition:cancel', 'CSSAnimation:cancel', 'ScriptAnimation:cancel',
      'transitioncancel', 'animationcancel' ],
    'cancel events should be sorted by composite order');
}, 'Sorts cancel events by composite order');
```

This issue is about this comment: 

```javascript
    // This ordering needs more clarification in the spec, but the intention is
    // that the cancel playback event fires before the equivalent CSS cancel
    // event in each case.
```

I don't see any text in the Web Animations spec or the CSS Transitions and CSS Animations specs that specifies that, if I understand correctly, events of type `AnimationPlaybackEvent` sort before events of type `TransitionEvent` or `AnimationEvent`.

If that's the intention, we should make that clear.

Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/4553 using your GitHub account
Received on Monday, 2 December 2019 15:12:17 UTC

This archive was generated by hypermail 2.4.0 : Tuesday, 5 July 2022 06:41:57 UTC