Bug 265170 - [view-transitions] Implement "capture the image" algorithm
Summary: [view-transitions] Implement "capture the image" algorithm
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Layout and Rendering (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Matt Woodrow
URL:
Keywords: InRadar
Depends on: 269743
Blocks: css-view-transitions
  Show dependency treegraph
 
Reported: 2023-11-20 17:56 PST by Tim Nguyen (:ntim)
Modified: 2024-02-21 00:26 PST (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Tim Nguyen (:ntim) 2023-11-20 17:56:10 PST Comment hidden (obsolete)
Comment 2 Radar WebKit Bug Importer 2023-11-20 17:59:36 PST
<rdar://problem/118667021>
Comment 3 Tim Nguyen (:ntim) 2023-12-02 02:26:07 PST
It would probably make sense to implement the "snapshot containing block" too:

https://drafts.csswg.org/css-view-transitions/#snapshot-containing-block-concept
Comment 4 Matt Woodrow 2024-02-15 18:17:04 PST
Pull request: https://github.com/WebKit/WebKit/pull/24570
Comment 5 EWS 2024-02-18 19:08:19 PST
Committed 274957@main (115f0206bb9c): <https://commits.webkit.org/274957@main>

Reviewed commits have been landed. Closing PR #24570 and removing active labels.
Comment 6 Fujii Hironori 2024-02-18 22:12:54 PST
This change introduced a new assertion failure.

ASSERTION FAILED: fixedPositionContainerLayer
rendering/RenderLayer.cpp(2391) : const WebCore::RenderLayer *WebCore::accumulateOffsetTowardsAncestor(const WebCore::RenderLayer *, const WebCore::RenderLayer *, WebCore::LayoutPoint &, RenderLayer::ColumnOffsetAdjustment)
1   0x1042ed058 WTFCrash
2   0x2df82a9c0 WebCore::NetworkResourcesData::ResourceData::hasContent() const
3   0x2e10075dc WebCore::accumulateOffsetTowardsAncestor(WebCore::RenderLayer const*, WebCore::RenderLayer const*, WebCore::LayoutPoint&, WebCore::RenderLayer::ColumnOffsetAdjustment)
4   0x2e10072ac WebCore::RenderLayer::convertToLayerCoords(WebCore::RenderLayer const*, WebCore::LayoutPoint const&, WebCore::RenderLayer::ColumnOffsetAdjustment) const
5   0x2e10019ec WebCore::RenderLayer::offsetFromAncestor(WebCore::RenderLayer const*, WebCore::RenderLayer::ColumnOffsetAdjustment) const
6   0x2e10533f0 WebCore::RenderLayerCompositor::repaintInCompositedAncestor(WebCore::RenderLayer&, WebCore::LayoutRect const&)
7   0x2e106776c WebCore::RenderLayerCompositor::layerWillBeRemoved(WebCore::RenderLayer&, WebCore::RenderLayer&)
8   0x2e0ffddf0 WebCore::RenderLayer::removeChild(WebCore::RenderLayer&)
9   0x2e0f737dc WebCore::RenderElement::removeLayers()
10  0x2e0f76b3c WebCore::RenderElement::willBeRemovedFromTree(WebCore::RenderObject::IsInternalMove)
11  0x2e1073f80 WebCore::RenderLayerModelObject::willBeRemovedFromTree(WebCore::RenderObject::IsInternalMove)
12  0x2e0ef869c WebCore::RenderBox::willBeRemovedFromTree(WebCore::RenderObject::IsInternalMove)
13  0x2e14310a8 WebCore::RenderTreeBuilder::detachFromRenderElement(WebCore::RenderElement&, WebCore::RenderObject&, WebCore::RenderTreeBuilder::WillBeDestroyed)
14  0x2e14306c4 WebCore::RenderTreeBuilder::Block::detach(WebCore::RenderBlock&, WebCore::RenderObject&, WebCore::RenderTreeBuilder::CanCollapseAnonymousBlock)
15  0x2e143058c WebCore::RenderTreeBuilder::Block::detach(WebCore::RenderBlockFlow&, WebCore::RenderObject&, WebCore::RenderTreeBuilder::CanCollapseAnonymousBlock)
16  0x2e142da04 WebCore::RenderTreeBuilder::detach(WebCore::RenderElement&, WebCore::RenderObject&, WebCore::RenderTreeBuilder::CanCollapseAnonymousBlock)
17  0x2e142d680 WebCore::RenderTreeBuilder::destroy(WebCore::RenderObject&, WebCore::RenderTreeBuilder::CanCollapseAnonymousBlock)
18  0x2e142d75c WebCore::RenderTreeBuilder::destroy(WebCore::RenderObject&, WebCore::RenderTreeBuilder::CanCollapseAnonymousBlock)
19  0x2e145cd84 WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree(WebCore::RenderElement&)::$_11::operator()() const
20  0x2e1459bb4 WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree(WebCore::RenderElement&)
21  0x2e1459318 WebCore::RenderTreeUpdater::updateAfterDescendants(WebCore::Element&, WebCore::Style::ElementUpdate const*)
22  0x2e1459224 WebCore::RenderTreeUpdater::popParent()
23  0x2e1458640 WebCore::RenderTreeUpdater::popParentsToDepth(unsigned int)
24  0x2e1457f34 WebCore::RenderTreeUpdater::updateRenderTree(WebCore::ContainerNode&)
25  0x2e145770c WebCore::RenderTreeUpdater::commit(std::__1::unique_ptr<WebCore::Style::Update, std::__1::default_delete<WebCore::Style::Update> >)
26  0x2dec1aac0 WebCore::Document::updateRenderTree(std::__1::unique_ptr<WebCore::Style::Update, std::__1::default_delete<WebCore::Style::Update> >)
27  0x2dec1b198 WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType)
28  0x2dec1bde8 WebCore::Document::updateStyleIfNeeded()
29  0x2de77d4c0 WebCore::ComputedStyleExtractor::updateStyleIfNeededForProperty(WebCore::Element&, WebCore::CSSPropertyID)
30  0x2de77cfcc WebCore::ComputedStyleExtractor::propertyValue(WebCore::CSSPropertyID, WebCore::ComputedStyleExtractor::UpdateLayout, WebCore::ComputedStyleExtractor::PropertyValueType) const
31  0x2de7c700c std::__1::optional<WebCore::CSSProperty> WebCore::ComputedStyleExtractor::copyProperties(std::__1::span<WebCore::CSSPropertyID const, 18446744073709551615ul>) const::$_17::operator()<WebCore::CSSPropertyID const>(WebCore::CSSPropertyID const&) const
com.apple.WebKit.WebContent.Development terminated (pid 39702) for reason: crash

https://build.webkit.org/results/Apple-Monterey-Debug-AppleSilicon-WK2-Tests/274957@main%20(8215)/results.html
Comment 7 WebKit Commit Bot 2024-02-19 13:06:17 PST
Re-opened since this is blocked by bug 269743
Comment 8 Matt Woodrow 2024-02-20 17:22:49 PST
Pull request: https://github.com/WebKit/WebKit/pull/24850
Comment 9 EWS 2024-02-21 00:26:17 PST
Committed 275087@main (1360173f7d2b): <https://commits.webkit.org/275087@main>

Reviewed commits have been landed. Closing PR #24850 and removing active labels.