Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2e0c7a1325e77dfe9a67c60778af5ce27efa4c78
https://github.com/WebKit/WebKit/commit/2e0c7a1325e77dfe9a67c60778af5ce27efa4c78
Author: Matt Woodrow <[email protected]>
Date: 2024-05-02 (Thu, 02 May 2024)
Changed paths:
M LayoutTests/TestExpectations
A
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/support/dialog-in-rtl-iframe-child-old.html
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/gtk/TestExpectations
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
M Source/WebCore/rendering/RenderElement.cpp
M Source/WebCore/rendering/RenderElement.h
M Source/WebCore/rendering/RenderLayer.cpp
M Source/WebCore/rendering/RenderLayerBacking.cpp
M Source/WebCore/rendering/RenderLayerBacking.h
M Source/WebCore/rendering/RenderLayerCompositor.cpp
Log Message:
-----------
[view-transitions] Support view transitions on top layer elements
https://bugs.webkit.org/show_bug.cgi?id=265169
<rdar://118667007>
Reviewed by Tim Nguyen.
If the captured element is the document element, then the captured images
should be
of the RenderView instead.
We already adjust the sizing to that of the view, this changes the actual
snapshots to
happen from the view so that the top layer is included.
Changes the layer parenting for the new snapshot so that the RenderView's layer
gets added
to the ::view-transition-new(pseudo), and the ::view-transition root pseudo get
directly
parented in place of the RenderView.
The render tree for this situation is this:
Content-root
|
RenderView
/ \
<html> ::view-transition
\
::view-transition-group(root)
|
::view-transition-image-pair(root)
|
::view-transition-new(root)
We want to build a GraphicsLayer tree where the RenderView and all its contents
(except the view-transition
tree) are attached to the ::view-transition-new.
Content-root
|
::view-transition
|
::view-transition-group(root)
|
::view-transition-image-pair(root)
|
::view-transition-new(root)
|
RenderView
|
<html>
This happens by:
RenderLayerCompositor::collectViewTransitionNewContentLayers detects when the
captured element is the <html>,
and adjusts to reparent the RenderView instead. This ensures the 'top layer' is
included, as required.
RenderLayerCompositor::updateBackingAndHierarchy skips attaching the
::view-transition's GraphicsLayer
to the parent obtained via the RenderLayer hierarchy (the RenderView's layer).
RenderLayerBacking::childForSuperlayers detects when it's a RenderView and will
already be attached to
the ::view-transition-new, and forwards the request through to the
::view-transition's RenderLayer,
so that ::view-transition gets attached to the parent of the RenderView instead.
Adds a new test for the ::view-transition-old(root) case.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/support/dialog-in-rtl-iframe-child-old.html:
Added.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::activeViewTransitionCapturedDocumentElement const):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::snapshotElementVisualOverflowClippedToViewport):
(WebCore::ViewTransition::documentElementIsCaptured const):
* Source/WebCore/dom/ViewTransition.h:
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::isViewTransitionRoot const):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintList):
* Source/WebCore/rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::childForSuperlayers const):
(WebCore::RenderLayerBacking::childForSuperlayersExcludingViewTransitions
const):
* Source/WebCore/rendering/RenderLayerBacking.h:
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers):
(WebCore::RenderLayerCompositor::updateBackingAndHierarchy):
Canonical link: https://commits.webkit.org/278256@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes