[webkit-changes] [WebKit/WebKit] b8a264: [web-animations] imported/blink/fast/css-generated...
Antoine Quint
noreply at github.com
Fri Mar 22 13:53:15 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b8a264c14a4a53ba960db617db37dd97496811fc
https://github.com/WebKit/WebKit/commit/b8a264c14a4a53ba960db617db37dd97496811fc
Author: Antoine Quint <graouts at webkit.org>
Date: 2024-03-22 (Fri, 22 Mar 2024)
Changed paths:
R LayoutTests/imported/blink/fast/css-generated-content/pseudo-animation-display-expected.txt
R LayoutTests/imported/blink/fast/css-generated-content/pseudo-animation-display.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-animations/display-none-dont-cancel-pseudo.tentative-expected.txt
A LayoutTests/imported/w3c/web-platform-tests/css/css-animations/display-none-dont-cancel-pseudo.tentative.html
M Source/WebCore/rendering/style/RenderStyle.h
M Source/WebCore/rendering/style/RenderStyleInlines.h
M Source/WebCore/rendering/style/RenderStyleSetters.h
M Source/WebCore/rendering/style/StyleMiscNonInheritedData.cpp
M Source/WebCore/rendering/style/StyleMiscNonInheritedData.h
M Source/WebCore/rendering/updating/RenderTreeUpdater.cpp
M Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp
M Source/WebCore/style/StyleTreeResolver.cpp
M Source/WebCore/style/StyleUpdate.h
Log Message:
-----------
[web-animations] imported/blink/fast/css-generated-content/pseudo-animation-display.html is a failure
https://bugs.webkit.org/show_bug.cgi?id=271375
rdar://125156782
Reviewed by Antti Koivisto.
Pseudo-elements represented by a `PseudoElement`, namely `::before` and `::after`, are torn down if
a `display: none` style is set. An exception to that rule is if such a pseudo-element is targeted
by a script-originated `Animation` object.
Now that the `display` property can be animated, it is possible that a `PseudoElement` is targeted
by an animation that will set `display: none`. So we now ensure that we no longer tear down such
`PseudoElement` objects.
To achieve this, first we move the `animationsAffectedDisplay` bit from `ElementUpdate` to `RenderStyle`,
renaming it as `hasDisplayAffectedByAnimations`, such that it is accessible throughout the style update
since pseudo-element style updates don't have access to the `ElementUpdate` yielded for that specific
pseudo-element, on the one yielded for their owner element.
Second, we also add a new static function `elementHasDisplayAnimationForPseudoId()` we we use within
`RenderTreeUpdater::GeneratedContent::updatePseudoElement()` to introduce another case where we don't
tear down `PseudoElement` objects if `display: none` is set: the case where such a pseudo-element is
targeted by an animation affecting the `display` property.
Finally, we can remove the now-outdated `imported/blink/fast/css-generated-content/pseudo-animation-display.html`
test and replace it with a new WPT test. That test is marked as tentative because I filed a CSS WG issue
(https://github.com/w3c/csswg-drafts/issues/10111) about whether the approach taken here is correct.
* LayoutTests/imported/blink/fast/css-generated-content/pseudo-animation-display-expected.txt: Removed.
* LayoutTests/imported/blink/fast/css-generated-content/pseudo-animation-display.html: Removed.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/display-none-dont-cancel-pseudo.tentative-expected.txt: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-animations/display-none-dont-cancel-pseudo.tentative.html: Added.
* Source/WebCore/rendering/style/RenderStyle.h:
* Source/WebCore/rendering/style/RenderStyleInlines.h:
(WebCore::RenderStyle::hasDisplayAffectedByAnimations const):
* Source/WebCore/rendering/style/RenderStyleSetters.h:
(WebCore::RenderStyle::setHasDisplayAffectedByAnimations):
* Source/WebCore/rendering/style/StyleMiscNonInheritedData.cpp:
(WebCore::StyleMiscNonInheritedData::StyleMiscNonInheritedData):
(WebCore::StyleMiscNonInheritedData::operator== const):
* Source/WebCore/rendering/style/StyleMiscNonInheritedData.h:
* Source/WebCore/rendering/updating/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateElementRenderer):
* Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:
(WebCore::keyframeEffectStackForElementAndPseudoId):
(WebCore::elementIsTargetedByKeyframeEffectRequiringPseudoElement):
(WebCore::elementHasDisplayAnimationForPseudoId):
(WebCore::RenderTreeUpdater::GeneratedContent::updatePseudoElement):
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::createAnimatedElementUpdate):
* Source/WebCore/style/StyleUpdate.h:
Canonical link: https://commits.webkit.org/276568@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