Commit Graph

276 Commits

Author SHA1 Message Date
Tooru Fujisawa
e78de2794b Bug 1768275 - Use SetAnyPromiseIsHandled instead of SetSettledPromiseIsHandled for promise that's not guaranteed to be not-yet-resolved. r=birtles
Differential Revision: https://phabricator.services.mozilla.com/D146032
2022-05-11 16:51:52 +00:00
Iulian Moraru
eb2b80be21 Backed out changeset 20e8a5b10f18 (bug 1768275) for causing linting failures on cancel.html with setTimeout error. CLOSED TREE 2022-05-11 17:07:36 +03:00
Tooru Fujisawa
bb22e9899c Bug 1768275 - Use SetAnyPromiseIsHandled instead of SetSettledPromiseIsHandled for promise that's not guaranteed to be not-yet-resolved. r=birtles
Differential Revision: https://phabricator.services.mozilla.com/D146032
2022-05-11 13:32:52 +00:00
Boris Chiou
128390b682 Bug 1767357 - Enable Animation.timeline setter in release channels. r=birtles,emilio
Basically, this patch reverts Bug 1612106 [1].

Webkit just turns this on by default [2], so it's worth to enable this
in our release channels.

[1] https://phabricator.services.mozilla.com/D63432
[2] https://trac.webkit.org/changeset/291868/webkit/

Differential Revision: https://phabricator.services.mozilla.com/D145356
2022-05-05 21:09:33 +00:00
Boris Chiou
9db07201ef Bug 1758527 - Adjust the logic of handing the unresolved current time in PlayNoUpdate() and UpdatePlaybackRate(). r=birtles
Based on the spec [1], the unresolved current time should be checked only if
the auto-rewind flag is ture. Otherwise, the null timeline with the false
auto-rewind flag may get an InvalidStateError DOMException if its effect end
is positive infinity.

Note:
If the animation has no associated timeline, it's current time is
unresolved [2].

Besides, we also tweak the handle for unresolved current time based on the
spec PR: https://github.com/w3c/csswg-drafts/pull/7148, in
UpdatePlaybackRate() and PlayNoUpdate().

Note:
CSS animations and CSS transitions set auto-rewind flag to false [3], and
the current time is unresolved (because the start time and the hold time
are all unresolved), and so the seek time is unresolved as well, especially
when we build a new CSS animation or CSS transition. Therefore we have to
avoid the unresolved seek time to let PlayNoUpdate() early return.

[1] https://drafts.csswg.org/web-animations-1/#playing-an-animation-section
[2] https://drafts.csswg.org/web-animations-1/#animation-current-time
[3] https://drafts.csswg.org/css-animations-2/#animation-play-state

See the spec issue: https://github.com/w3c/csswg-drafts/issues/7145 for
more details.

Differential Revision: https://phabricator.services.mozilla.com/D140682
2022-03-23 01:30:51 +00:00
Boris Chiou
a095169e1f Bug 1741255 - Don't put the scroll animations into PendingAnimationTracker. r=hiro
Basically, we use the current target scroll position as the ready time for
scroll animations, so we don't need to wait until it gets painted.

In fact, it's unclear whether do we need play/pause pending status for
scroll animations, so we choose the natural way for now, and this should
match other browsers' behaviors.

Note:
We avoid puting the scroll animation into PendingAnimationTracker
in PlayNoUpdate() and Pause(). However, we may still "try" to remove
scroll animations from PendingAnimationTracker in some APIs just in
case if those APIs change the animations from using DocumentTimeline to
using ScrollTimeline. They should be revisited once we expose
ScrollTimeline to JS.

Differential Revision: https://phabricator.services.mozilla.com/D132750
2021-12-15 09:54:43 +00:00
Boris Chiou
71f8dc014e Bug 1676791 - Part 7: Disable OMTA for scroll-timeline. r=hiro
For simplicity purposes, we don't consider OMTA for now. OMTA support
for scoll-timeline will be done in Bug 1737180.

However, in this patch, we would like to address:
if the geometic animations use scroll-timeline, we don't have to let it
affect the transform animations on the same animation target:
1. If we don't do scrolling, its geometric properties don't change, so no
   effect on transform-like properties.
2. If we do scrolling, we may un-throttle the transform animations by
   other ways, e.g. Keyframe::CanThrottle(). So we don't need to worry
   about this.

Note: tests are in the next patch.

Differential Revision: https://phabricator.services.mozilla.com/D129103
2021-12-08 01:16:30 +00:00
Boris Chiou
fc02c436ca Bug 1676791 - Part 5: Define the finite timeline and use it in Play() and Pause(). r=hiro
Based on https://github.com/w3c/csswg-drafts/pull/4842, we define
"has finite timeline", which is a timeline that's not monotonically increasing.
We need this to update start time and hold time for scroll-timeline, so
we play scroll-linked animations as we expected, e.g. GetLocalTime() returns
the correct time value from GetCurrentTimeAsDuration().

Known issue: we still have bugs when setting "animation-play-state:paused".
Will do that in Bug 1741255.

Differential Revision: https://phabricator.services.mozilla.com/D131168
2021-12-08 01:16:30 +00:00
Emilio Cobos Álvarez
e0eaeb6a51 Bug 1741491 - Make sure we only record old style value once. r=smaug
The way CommitStyles called into servo caused it to call the closure
multiple times, and we were not dealing with that properly.

Handle the "was called" state internally.

Differential Revision: https://phabricator.services.mozilla.com/D131411
2021-11-17 23:39:32 +00:00
Simon Giesecke
b12714ac26 Bug 1678562 - Avoid including AnimationEffect.h in Animation.h. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D97743

Depends on D97740
2020-11-23 16:12:55 +00:00
Simon Giesecke
423838cf20 Bug 1676363 - Avoid including CycleCollectedJSContext.h and Promise.h from Animation.h. r=#xpcom-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D96561

Depends on D96560
2020-11-23 16:10:57 +00:00
Sylvestre Ledru
68b806d604 Bug 1674637 - Use nested namespaces in dom/ r=sg,andi
Also add some missing namespace qualifications

Done with:
./mach static-analysis check --checks="-*,modernize-concat-nested-namespaces" --fix dom/
./mach clang-format -p $(hg status dom/|grep ^M|awk '{print $2}')

Differential Revision: https://phabricator.services.mozilla.com/D95456
2020-11-04 17:04:01 +00:00
Butkovits Atila
a6e7dcc53f Backed out changeset c0adbf7522dc (bug 1674637) for bustage on GMPParent.cpp. CLOSED TREE 2020-11-04 10:54:36 +02:00
Sylvestre Ledru
8f709b39e8 Bug 1674637 - Use nested namespaces in dom/ r=sg,andi
Also add some missing namespace qualifications

Done with:
./mach static-analysis check --checks="-*,modernize-concat-nested-namespaces" --fix dom/
./mach clang-format -p $(hg status dom/|grep ^M|awk '{print $2}')

Differential Revision: https://phabricator.services.mozilla.com/D95456
2020-11-04 08:29:00 +00:00
Hiroyuki Ikezoe
b4b23c85ae Bug 1669933 - Register cloning paused animations to PendingAnimationTracker to make sure the animations are painted in printing documents. r=boris
Without PendingAnimationTracker, we can't make the refresh driver keep ticking
for the animations until we are ready to paint the printing documents. In other
words we do stop ticking [1] in DocumentTimeline::MostRecentRefreshTimeUpdated.

[1] https://searchfox.org/mozilla-central/rev/25d5a4443a7e13cfa58eff38f1faa5e69f0b170f/dom/animation/DocumentTimeline.cpp#168,183-192

Differential Revision: https://phabricator.services.mozilla.com/D94256
2020-10-21 18:10:10 +00:00
Masayuki Nakano
622e0d1a98 Bug 1660378 - part 9: Avoid QI for getting nsStyledElement pointer r=smaug
The editor modules does QI too many times when it sets or removes some style
with `execCommand` or XPCOM API.  Therefore, there should be an API to
retrieve `nsStyledElement` pointer from `nsINode*`.

Differential Revision: https://phabricator.services.mozilla.com/D87990
2020-08-26 05:29:06 +00:00
Nathan Froyd
1a5e36fc8f Bug 1223932 - delete guard object uses from the tree; r=jwalden
CLOSED TREE

We don't need these macros anymore, for two reasons:

1. We have static analysis to provide the same sort of checks via `MOZ_RAII`
   and friends.
2. clang now warns for the "temporary that should have been a declaration" case.

The extra requirements on class construction also show up during debug tests
as performance problems.

This change was automated by using the following sed script:

```
# Remove declarations in classes.
/MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER/d
/MOZ_GUARD_OBJECT_NOTIFIER_INIT/d

# Remove individual macros, carefully.
{
  # We don't have to worry about substrings here because the closing
  # parenthesis "anchors" the match.
  s/MOZ_GUARD_OBJECT_NOTIFIER_PARAM)/)/g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT)/)/g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL)/)/g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM_IN_IMPL)/)/g;

  # Remove the longer identifier first.
  s/MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM_TO_PARENT//g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM//g;
}

# Remove the actual include.
\@# *include "mozilla/GuardObjects.h"@d
```

and running:

```
find . -name \*.cpp -o -name \*.h | grep -v 'GuardObjects.h' |xargs sed -i -f script 2>/dev/null
mach clang-format
```

Differential Revision: https://phabricator.services.mozilla.com/D85168
2020-07-30 14:22:38 +00:00
Mihai Alexandru Michis
367903d750 Backed out changeset ac9c811bc427 (bug 1223932) for causing spidermonkey rust failures.
CLOSED TREE
2020-07-30 18:23:21 +03:00
Nathan Froyd
05fe6be54b Bug 1223932 - delete guard object uses from the tree; r=jwalden
We don't need these macros anymore, for two reasons:

1. We have static analysis to provide the same sort of checks via `MOZ_RAII`
   and friends.
2. clang now warns for the "temporary that should have been a declaration" case.

The extra requirements on class construction also show up during debug tests
as performance problems.

This change was automated by using the following sed script:

```
# Remove declarations in classes.
/MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER/d
/MOZ_GUARD_OBJECT_NOTIFIER_INIT/d

# Remove individual macros, carefully.
{
  # We don't have to worry about substrings here because the closing
  # parenthesis "anchors" the match.
  s/MOZ_GUARD_OBJECT_NOTIFIER_PARAM)/)/g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_PARAM_TO_PARENT)/)/g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_PARAM_IN_IMPL)/)/g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM_IN_IMPL)/)/g;

  # Remove the longer identifier first.
  s/MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM_TO_PARENT//g;
  s/MOZ_GUARD_OBJECT_NOTIFIER_ONLY_PARAM//g;
}

# Remove the actual include.
\@# *include "mozilla/GuardObjects.h"@d
```

and running:

```
find . -name \*.cpp -o -name \*.h | grep -v 'GuardObjects.h' |xargs sed -i -f script 2>/dev/null
mach clang-format
```

Differential Revision: https://phabricator.services.mozilla.com/D85168
2020-07-30 14:22:38 +00:00
Hiroyuki Ikezoe
98c4bd8d3f Bug 1324591 - Report janked animations to the main-thread and update them on the main-thread. r=botond,boris
The machinery to report janked animations is;

1) Store the partial pre-rendered animation id and the Animation object in a
   hashtable in LayerManager
2) Store the animation id in the Animation object as well
3) When we detect jank, we send the animation id to the main-thread via an IPC
   call
4) Find the Animation object with the id in the hashtable and update the
   Animaiton
5) Whenever the partial pre-rendered Animation stop running on the compositor
   i.e. the Animation finished normally, the Animation's target element is
   changed, etc. etc., remove the Animation from the hashtable

Depends on D75731

Differential Revision: https://phabricator.services.mozilla.com/D75732
2020-07-05 11:45:01 +00:00
Brindusan Cristian
5bbac659d5 Backed out 9 changesets (bug 1324591) for linux build bustages on central on nsDisplayList.h.
Backed out changeset 75966ee1fe65 (bug 1324591)
Backed out changeset d6a01c6bc40e (bug 1324591)
Backed out changeset fef36ff2ea3d (bug 1324591)
Backed out changeset 4a4ae4bd95d1 (bug 1324591)
Backed out changeset 732804c83add (bug 1324591)
Backed out changeset 84657a3522fb (bug 1324591)
Backed out changeset e6c74ba41007 (bug 1324591)
Backed out changeset 8e6d4e9f5aa0 (bug 1324591)
Backed out changeset 6bc284863aff (bug 1324591)
2020-07-05 13:45:35 +03:00
Hiroyuki Ikezoe
87475fb14a Bug 1324591 - Report janked animations to the main-thread and update them on the main-thread. r=botond,boris
The machinery to report janked animations is;

1) Store the partial pre-rendered animation id and the Animation object in a
   hashtable in LayerManager
2) Store the animation id in the Animation object as well
3) When we detect jank, we send the animation id to the main-thread via an IPC
   call
4) Find the Animation object with the id in the hashtable and update the
   Animaiton
5) Whenever the partial pre-rendered Animation stop running on the compositor
   i.e. the Animation finished normally, the Animation's target element is
   changed, etc. etc., remove the Animation from the hashtable

Differential Revision: https://phabricator.services.mozilla.com/D75732
2020-07-05 02:21:01 +00:00
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Emily McDonough
f8928e108c Bug 1626794 - Add strong ref to document and MOZ_CAN_RUN_SCRIPT annotation to Animation::CommitStyles r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D75418
2020-05-17 20:47:37 +00:00
Emily McDonough
a6dea63c4c Bug 1564128 part 1 - Add clone function for Animation and constructor for KeyframeEffect to copy properties but not the target. r=hiro
This is needed for copying animations from an original document to a static
clone during printing/print preview.

Differential Revision: https://phabricator.services.mozilla.com/D73139
2020-05-14 19:41:01 +00:00
Sylvestre Ledru
3ce73036e5 Bug 1519636 - Reformat recent changes to the Google coding style r=jgilbert
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D67574
2020-04-05 13:34:58 +00:00
Emilio Cobos Álvarez
1d36429ad7 Bug 1625608 - Improve some web-animations error messages. r=birtles
Differential Revision: https://phabricator.services.mozilla.com/D68695
2020-03-30 09:48:06 +00:00
André Bargull
5ec91f8150 Bug 1625138 - Part 41: Remove no longer needed includes for mozilla/TypeTraits. r=froydnj
Also adds missing includes in some files, these were previously only transivitely
included through mozilla/TypeTraits.h.

Differential Revision: https://phabricator.services.mozilla.com/D68561
2020-03-28 16:00:09 +00:00
Hiroyuki Ikezoe
de0430a9f6 Bug 1623469 - Add a pref to disable synchronization transform animations with geometric animations. r=boris
Differential Revision: https://phabricator.services.mozilla.com/D67391
2020-03-19 03:36:54 +00:00
Brian Birtles
ea035be080 Bug 1622184 - Mark Animation.finished and Animation.ready as handled when they are rejected; r=boris
As per spec change: 7bcad3219c

Differential Revision: https://phabricator.services.mozilla.com/D67104
2020-03-18 02:22:36 +00:00
Boris Zbarsky
e62a6fc4d1 Bug 1619112 part 2. Pass char literals instead of char16_t literals into ErrorResult throwing methods. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D65538
2020-03-06 21:04:58 +00:00
Boris Chiou
3b6babf311 Bug 1611847 - Update relevance and its effect set in the early return of UpdatePlaybackRate(). r=birtles
To avoid hitting the assertion because of out-of-dated relevance.

Differential Revision: https://phabricator.services.mozilla.com/D63582
2020-02-25 19:41:14 +00:00
Boris Chiou
2e8146eca6 Bug 1612106 - Use NIGHTLY build flag to distinguish the writable/readonly Animation.timeline. r=birtles,bzbarsky
We only support writable Animation.timeline attribute on nightly
build, so use nightly build flag in WebIDL and Animation.h/cpp.
For the test expectations, we also use this build flag to skip them or
mark them as expected fail if necessary.

Differential Revision: https://phabricator.services.mozilla.com/D63432
2020-02-24 23:07:09 +00:00
Boris Chiou
1377970ec8 Bug 1610981 - Eliminate usage of CSSPseudoElement from KeyframeEffect. r=birtles,smaug
Replace ElementOrCSSPseudoElement with Element and add PseudoElement (which is
a DOMString) into KeyframeAnimationOptions and KeyframeEffect.

Differential Revision: https://phabricator.services.mozilla.com/D62667
2020-02-18 20:44:14 +00:00
Simon Giesecke
9bcfd47601 Bug 1611415 - Prefer using std::move over forget. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980
2020-02-13 14:38:48 +00:00
shindli
6bb3487209 Backed out changeset 0c982bc69cb3 (bug 1611415) for causing build bustages in /builds/worker/workspace/build/src/obj-firefox/dist/include/nsCOMPtr CLOSED TREE 2020-02-12 20:13:29 +02:00
Simon Giesecke
d45525793f Bug 1611415 - Applied FixItHints from mozilla-non-std-move. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D60980
2020-02-12 17:24:41 +00:00
Brian Birtles
1b399af497 Bug 1608858 - Update the effect set when an animation changes relevance due to a call to updatePlaybackRate; r=boris
In this particular case where we're paused, we don't need to repaint or
synchronize animations on layers, but we do need to update the effect set so
that getAnimations() returns the correct result.

Differential Revision: https://phabricator.services.mozilla.com/D61258
2020-01-30 23:39:12 +00:00
Boris Zbarsky
0ec1658e7e Bug 1610140. Stop using NS_ERROR_DOM_TYPE_ERR in Animation. r=heycam
Differential Revision: https://phabricator.services.mozilla.com/D60362
2020-01-19 05:43:10 +00:00
Brian Birtles
2581993753 Bug 1604500 - Update relevance when synchronously updating the playback rate in UpdatePlaybackRate; r=boris
Differential Revision: https://phabricator.services.mozilla.com/D58737
2020-01-06 05:56:54 +00:00
Mirko Brodesser
8462bc2a30 Bug 1593222: part 12) Rename "nsNodeUtils.*" to "MutationObservers.*". r=smaug
Depends on D51827

Differential Revision: https://phabricator.services.mozilla.com/D51828
2019-11-06 09:08:06 +00:00
Mirko Brodesser
723780d87b Bug 1593222: part 10) Move Animation* methods to MutationObservers. r=smaug
Depends on D51825

Differential Revision: https://phabricator.services.mozilla.com/D51826
2019-11-05 20:39:22 +00:00
Mirko Brodesser
a3a7686b0b Bug 1593222: part 2) Move nsNodeUtils::GetTargetForAnimation to Animation class. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D51607
2019-11-05 14:23:13 +00:00
Boris Chiou
b09809f7b8 Bug 1534884 - Add new animation warning for animations overridden by important rules. r=birtles
We move the check of important rule and animation level into
KeyframeEffect::ShouldBlockAsyncTransformAnimations(), and add a new warning
for it.

Note:
1. ShouldBlockAsyncTransformAnimations() only cares about transforms. And
   for other compositor animation properties, we count on
   HasEffectiveAnimationOfPropertySet() (in IsMatchForCompositor()).
2. If we check the important rules in both
   EffectCompositor::HasAnimationsForCompositor() and
   ActiveLayerTracker::IsTransformMaybeAnimated(), we may get the incorrect
   animation warnings (i.e. TransformFrameInactive). In most cases, we
   check these two functions together, so perhaps move the check of important
   rules outside HasEffectiveAnimationOfPropertySet() is fine.
   Besides, ActiveLayerTracker just tracks if there is a style change on this
   property (or display item) on the active layers, so should be OK to not
   check important rules in it.

So IsMatchForCompositor() should check all transform-like properties,
instead of each one, to get the correct result. (That's why we have to
refactor KeyframeEffect::GetPropertiesForCompositor() as well.)

Differential Revision: https://phabricator.services.mozilla.com/D34432
2019-06-28 18:18:08 +00:00
Brian Birtles
c30bdaedc2 Bug 1253476 - Use update() to update declarations from Servo_DeclarationBlock_SetPropertyToAnimationValue; r=emilio
This method is used when updating the SMIL override style and from Web
Animations' Animation.commitStyles method. By using update we accurately return
false when no change is made to a declaration block.

For SMIL this simply acts as an optimization, meaning we can avoid updating the
SMIL override style ub some cases.

For Animation.commitStyles, however, this allows us to avoid generating
a mutation record. Normally making a redundant change to an attribute *does*
generate a mutation record but the style attribute is different. All browsers
avoid generating a mutation record for a redundant change to inline style.
This is specified in the behavior for setProperty[1] which does not update the
style attribute if updated is false.

[1] https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty

Differential Revision: https://phabricator.services.mozilla.com/D30871
2019-05-20 05:22:39 +00:00
Brian Birtles
0f1beb0a8a Bug 1253476 - Implement Animation.commitStyles; r=boris,emilio,bzbarsky,smaug
Differential Revision: https://phabricator.services.mozilla.com/D30327
2019-05-20 06:04:23 +00:00
Brian Birtles
da57e655f3 Bug 1253476 - Implement Animation::Persist; r=boris,bzbarsky
https://drafts.csswg.org/web-animations-1/#dom-animation-persist

Differential Revision: https://phabricator.services.mozilla.com/D30325
2019-05-20 05:22:22 +00:00
Brian Birtles
0a02966cf4 Bug 1253476 - Don't composite removed animations; r=boris
Differential Revision: https://phabricator.services.mozilla.com/D30324
2019-05-20 05:55:52 +00:00
Brian Birtles
caef0cb453 Bug 1253476 - Add remove events; r=boris,bzbarsky
This patch introduces the machinery for dispatching remove events but does not
actually cause removing to do anything to the output of the animation beyond
updating its replaceState member.

The expected behavior is defined in:

  https://drafts.csswg.org/web-animations-1/#removing-replaced-animations

And the corresponding IDL members are defined in:

  https://drafts.csswg.org/web-animations-1/#animation
  https://drafts.csswg.org/web-animations-1/#enumdef-animationreplacestate

Tests for these events are added in the next patch in this series.

Differential Revision: https://phabricator.services.mozilla.com/D30322
2019-05-20 05:48:29 +00:00
Brian Birtles
833497491f Bug 1253476 - Make Animation::Tick do finish actions synchronously; r=hiro
Animation::UpdateTiming takes a SyncNotifyFlag parameter. This is passed to
UpdateFinishedState where it determines how we handle finish actions.

If it is async we queue a microtask where we re-evaluate if the animation is
finished or not before queuing events / resolving promises.

That allows code like the following to _not_ trigger finish events:

```
const animation = elem.animate({...}, 1000);
animation.currentTime += 1000;
animation.effect.updateTiming({ duration: 2000 });
```

(Since the check that the animation is finished will run in a microtask _after_
the call to updateTiming.)

When the flag is "sync" we still don't _actually_ run the finish actions
entirely synchronously: the finished promise is resolved synchronously, but
resolving a promise actually queues a microtask for each callback. Likewise, the
finish event is queued synchronously, but not dispatched.

Since there should be no opportunity for script to run between when we call
Animation::Tick and when we run the next microtask checkpoint (currently at the
end of DocumentTimeline::WillRefresh but that will change slightly in the next
patch in this series) there is no need to introduce the extra "async" microtask
for re-evaluating an animation's finished state. Instead it should be possible
to use the "sync" finishing behavior. Such a change should be unobservable to
Web content but will reduce indirection somewhat.

Differential Revision: https://phabricator.services.mozilla.com/D30318
2019-05-20 05:20:17 +00:00