[webkit-changes] [WebKit/WebKit] c35a74: REGRESSION (262875 at main / iOS 17): fill: 'both' no...

Antoine Quint noreply at github.com
Sat Jun 24 11:05:49 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c35a742731035c158245080919ce8589ddddf5e1
      https://github.com/WebKit/WebKit/commit/c35a742731035c158245080919ce8589ddddf5e1
  Author: Antoine Quint <graouts at webkit.org>
  Date:   2023-06-24 (Sat, 24 Jun 2023)

  Changed paths:
    A LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-opacity-replaced-effect-expected.html
    A LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-opacity-replaced-effect-ref.html
    A LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-opacity-replaced-effect.html
    M Source/WebCore/animation/KeyframeEffect.cpp
    M Source/WebCore/animation/KeyframeEffect.h
    M Source/WebCore/animation/KeyframeEffectStack.cpp

  Log Message:
  -----------
  REGRESSION (262875 at main / iOS 17): fill: 'both' not respected with animation
https://bugs.webkit.org/show_bug.cgi?id=257861
rdar://110559121

Reviewed by Dean Jackson.

In 262875 at main we switched to a model where we update all the accelerated effects in the effect stack
when one of the accelerated effects changes. However, we failed to identify the case where an accelerated
effect was removed from the effect stack, either explicitly or through the removal mechanism of the Web
Animations API (https://drafts.csswg.org/web-animations-1/#removing-replaced-animations).

We now have a new `KeyframeEffect::wasRemovedFromStack()` that we call when an effect is removed from the
effect stack, which always goes through `KeyframeEffectStack::removeEffect()`. When this happens we add
a `Stop` accelerated action and commit it to the GraphicsLayer straight away so that the accelerated animation
is removed.

* LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-opacity-replaced-effect-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-opacity-replaced-effect-ref.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-opacity-replaced-effect.html: Added.
* Source/WebCore/animation/KeyframeEffect.cpp:
(WebCore::KeyframeEffect::wasRemovedFromStack):
* Source/WebCore/animation/KeyframeEffect.h:
* Source/WebCore/animation/KeyframeEffectStack.cpp:
(WebCore::KeyframeEffectStack::removeEffect):

Canonical link: https://commits.webkit.org/265498@main




More information about the webkit-changes mailing list