[webkit-changes] [WebKit/WebKit] 64ea9d: [web-animations] pause animation scheduling while ...

Antoine Quint noreply at github.com
Wed Mar 20 13:27:43 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 64ea9d3d29ee05ce871c26618b8d340a5a578d28
      https://github.com/WebKit/WebKit/commit/64ea9d3d29ee05ce871c26618b8d340a5a578d28
  Author: Antoine Quint <graouts at webkit.org>
  Date:   2024-03-20 (Wed, 20 Mar 2024)

  Changed paths:
    M Source/WebCore/animation/DocumentTimeline.cpp
    M Source/WebCore/animation/DocumentTimeline.h
    M Source/WebCore/animation/WebAnimation.h
    M Source/WebCore/animation/WebAnimationTypes.h
    M Source/WebCore/style/StyleTreeResolver.cpp
    M Source/WebCore/style/Styleable.cpp
    M Source/WebCore/style/Styleable.h

  Log Message:
  -----------
  [web-animations] pause animation scheduling while style-originated animations are being updated
https://bugs.webkit.org/show_bug.cgi?id=271311

Reviewed by Dean Jackson.

When we will be adding animation support for the `display` property (see bug 267762) we will
need to resolve animations even when the underlying style has `display: none` to see whether
animations yield a different value. In that process, we may create style-originated animations
that will ultimately be canceled once we're certain `display: none` is still set. As it stands,
the creation of a style-originated animation will immediately lead to animation scheduling and
possibly be observable through Web content by the dispatch of animation events.

As such, in preparation for supporting the animation of the `display` property, we now pause
animation scheduling while we consider new style-originated animations. We now store new animations
that we create in a list as we start the `Style::TreeResolver::createAnimatedElementUpdate()`
process and once it completes, provided that list is not empty, we notify the `DocumentTimeline`
to schedule animation resolution in a single operation.

The purpose of using a list rather than just a boolean flag to signal style-originated animation
creation is that, as mentioned above, we will need to silently cancel those newly created animations
should the animated style have `display: none`.

* Source/WebCore/animation/DocumentTimeline.cpp:
(WebCore::DocumentTimeline::animationTimingDidChange):
(WebCore::DocumentTimeline::styleOriginatedAnimationsWereCreated):
* Source/WebCore/animation/DocumentTimeline.h:
* Source/WebCore/animation/WebAnimation.h:
(WebCore::WebAnimation::isEffectInvalidationSuspended const):
(WebCore::WebAnimation::isEffectInvalidationSuspended): Deleted.
* Source/WebCore/animation/WebAnimationTypes.h:
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::createAnimatedElementUpdate):
* Source/WebCore/style/Styleable.cpp:
(WebCore::Styleable::updateCSSAnimations const):
(WebCore::updateCSSTransitionsForStyleableAndProperty):
(WebCore::Styleable::updateCSSTransitions const):
* Source/WebCore/style/Styleable.h:

Canonical link: https://commits.webkit.org/276414@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