[Webkit-unassigned] [Bug 213349] <summary> transitions not when <details> is opened

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sun Dec 11 10:31:47 PST 2022


https://bugs.webkit.org/show_bug.cgi?id=213349

--- Comment #5 from Antoine Quint <graouts at webkit.org> ---
So we create the transition correctly, but it gets canceled later in the same style update.

In Document::resolveStyle(), we end up calling Style::TreeResolver::createAnimatedElementUpdate() with this stack:

#0      0x00000002856970c4 in WebCore::Style::TreeResolver::createAnimatedElementUpdate(std::__1::unique_ptr<WebCore::RenderStyle, std::__1::default_delete<WebCore::RenderStyle> >, WebCore::Styleable const&, WebCore::Style::Change, WebCore::Style::ResolutionContext const&) at WebCore/style/StyleTreeResolver.cpp:586
#1      0x0000000285697950 in WebCore::Style::TreeResolver::resolvePseudoElement(WebCore::Element&, WebCore::PseudoId, WebCore::Style::ElementUpdate const&) at WebCore/style/StyleTreeResolver.cpp:347
#2      0x00000002856974b4 in WebCore::Style::TreeResolver::resolveElement(WebCore::Element&, WebCore::RenderStyle const*, WebCore::Style::TreeResolver::ResolutionType)::$_5::operator()(WebCore::PseudoId) const at WebCore/style/StyleTreeResolver.cpp:262
#3      0x0000000285696cc4 in WebCore::Style::TreeResolver::resolveElement(WebCore::Element&, WebCore::RenderStyle const*, WebCore::Style::TreeResolver::ResolutionType) at WebCore/style/StyleTreeResolver.cpp:286
#4      0x000000028569a70c in WebCore::Style::TreeResolver::resolveComposedTree() at WebCore/style/StyleTreeResolver.cpp:826
#5      0x000000028569ba48 in WebCore::Style::TreeResolver::resolve() at WebCore/style/StyleTreeResolver.cpp:942
#6      0x00000002837f6e4c in WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) at WebCore/dom/Document.cpp:2121
#7      0x00000002837f7cf4 in WebCore::Document::updateStyleIfNeeded() at WebCore/dom/Document.cpp:2257
#8      0x000000028385f52c in WebCore::Document::Document(WebCore::Frame*, WebCore::Settings const&, WTF::URL const&, WTF::OptionSet<WebCore::Document::DocumentClass>, unsigned int, WebCore::ProcessQualified<WTF::UUID>)::$_7::operator()() const at WebCore/dom/Document.cpp:558

But then later on we call Styleable::cancelDeclarativeAnimations() in this stack:

#0      0x000000028569df68 in WebCore::Styleable::cancelDeclarativeAnimations() const at WebCore/style/Styleable.cpp:261
#1      0x000000028569deac in WebCore::Styleable::elementWasRemoved() const at WebCore/style/Styleable.cpp:245
#2      0x00000002839f4ffc in WebCore::PseudoElement::clearHostElement() at WebCore/dom/PseudoElement.cpp:77
#3      0x00000002838ecffc in WebCore::disconnectPseudoElement(WebCore::PseudoElement*) at WebCore/dom/Element.cpp:4004
#4      0x00000002838eced4 in WebCore::Element::clearBeforePseudoElementSlow() at WebCore/dom/Element.cpp:4010
#5      0x00000002838e49ec in WebCore::Element::clearBeforePseudoElement() at WebCore/dom/Element.h:846
#6      0x00000002855b6fb8 in WebCore::RenderTreeUpdater::GeneratedContent::removeBeforePseudoElement(WebCore::Element&, WebCore::RenderTreeBuilder&) at WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp:224
#7      0x00000002855b63ec in WebCore::RenderTreeUpdater::tearDownRenderers(WebCore::Element&, WebCore::RenderTreeUpdater::TeardownType, WebCore::RenderTreeBuilder&)::$_5::operator()(unsigned int) const at WebCore/rendering/updating/RenderTreeUpdater.cpp:600
#8      0x00000002855b4eb4 in WebCore::RenderTreeUpdater::tearDownRenderers(WebCore::Element&, WebCore::RenderTreeUpdater::TeardownType, WebCore::RenderTreeBuilder&) at WebCore/rendering/updating/RenderTreeUpdater.cpp:617
#9      0x00000002855b3e5c in WebCore::RenderTreeUpdater::updateElementRenderer(WebCore::Element&, WebCore::Style::ElementUpdate const&) at WebCore/rendering/updating/RenderTreeUpdater.cpp:325
#10     0x00000002855b33f4 in WebCore::RenderTreeUpdater::updateRenderTree(WebCore::ContainerNode&) at WebCore/rendering/updating/RenderTreeUpdater.cpp:187
#11     0x00000002855b2ca8 in WebCore::RenderTreeUpdater::commit(std::__1::unique_ptr<WebCore::Style::Update const, std::__1::default_delete<WebCore::Style::Update const> >) at WebCore/rendering/updating/RenderTreeUpdater.cpp:114
#12     0x00000002837f69a8 in WebCore::Document::updateRenderTree(std::__1::unique_ptr<WebCore::Style::Update const, std::__1::default_delete<WebCore::Style::Update const> >) at WebCore/dom/Document.cpp:2048
#13     0x00000002837f6fa8 in WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) at WebCore/dom/Document.cpp:2147
#14     0x00000002837f7cf4 in WebCore::Document::updateStyleIfNeeded() at WebCore/dom/Document.cpp:2257
#15     0x000000028385f52c in WebCore::Document::Document(WebCore::Frame*, WebCore::Settings const&, WTF::URL const&, WTF::OptionSet<WebCore::Document::DocumentClass>, unsigned int, WebCore::ProcessQualified<WTF::UUID>)::$_7::operator()() const at WebCore/dom/Document.cpp:558

We need to either avoid tearing down the ::before renderer or ensure its transitions are preserved when the new ::before renderer is created.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20221211/ffd042bb/attachment.htm>


More information about the webkit-unassigned mailing list