Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 15ad704057e0d342d10b792f6108eaeed7accbd7
https://github.com/WebKit/WebKit/commit/15ad704057e0d342d10b792f6108eaeed7accbd7
Author: Matt Woodrow <[email protected]>
Date: 2024-06-18 (Tue, 18 Jun 2024)
Changed paths:
M
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/input-targets-root-while-render-blocked-expected.txt
M
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-css-animation-while-render-blocked-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-painting-while-render-blocked-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-painting-while-render-blocked-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-painting-while-render-blocked.html
M
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-raf-while-render-blocked-expected.txt
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/mac-wk2/TestExpectations
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/page/ElementTargetingController.cpp
M Source/WebCore/page/InteractionRegion.cpp
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/platform/Logging.h
M Source/WebCore/platform/graphics/GraphicsLayer.h
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
M Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h
M Source/WebCore/rendering/EventRegion.cpp
M Source/WebCore/rendering/EventRegion.h
M Source/WebCore/rendering/RenderElementInlines.h
M Source/WebCore/rendering/RenderLayerCompositor.cpp
M Source/WebCore/rendering/RenderLayerCompositor.h
M Source/WebCore/rendering/RenderObject.cpp
M Source/WebCore/rendering/RenderObject.h
M Source/WebCore/rendering/svg/RenderSVGModelObject.cpp
M Source/WebCore/rendering/svg/RenderSVGShape.cpp
M Source/WebCore/rendering/svg/RenderSVGText.cpp
M Source/WebCore/rendering/svg/SVGInlineTextBox.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGShape.cpp
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm
M Source/WebKitLegacy/mac/WebView/WebViewRenderingUpdateScheduler.mm
Log Message:
-----------
[view-transitions] Suppress rendering while a view-transition is being setup.
https://bugs.webkit.org/show_bug.cgi?id=270672
rdar://124240939
Reviewed by Simon Fraser.
This implements rendering suppression by adding a flag to GraphicsLayer that
prevents updates to the PlatformCALayer tree for it and its descendants until
the flag is cleared. This will currently only work on cocoa, with remote
layers enabled.
The flag gets set on the GraphicsLayer after the rendering update completes,
so that any mutations made before rendering suppression were enabled (including
layer tree changes needed for suppression) get flushed before blocking all
future changes.
It also moves all consumers of RenderStyle:::usedPointerEvents to go via the
renderer, where we can override them to none while suppression is in place.
The exceptions are the style change handlers, which can remain unchanged
since we invalidate style entirely when the VT starts.
This doesn't yet prevent async scrolling rendering updates - bug 273612.
It also doesn't work fully with in-process layers - bug 273613.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/input-targets-root-while-render-blocked-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-css-animation-while-render-blocked-expected.txt:
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-painting-while-render-blocked-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-painting-while-render-blocked-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-painting-while-render-blocked.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-raf-while-render-blocked-expected.txt:
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/mac-wk2/TestExpectations:
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::setActiveViewTransition):
(WebCore::Document::renderingIsSuppressedForViewTransition const):
(WebCore::Document::setRenderingIsSuppressedForViewTransitionAfterUpdateRendering):
(WebCore::Document::clearRenderingIsSuppressedForViewTransition):
(WebCore::Document::flushDeferredRenderingIsSuppressedForViewTransitionChanges):
(WebCore::Document::performPendingViewTransitions):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::skipViewTransition):
(WebCore::ViewTransition::setupViewTransition):
(WebCore::ViewTransition::activateViewTransition):
* Source/WebCore/page/ElementTargetingController.cpp:
(WebCore::ElementTargetingController::extractTargets):
* Source/WebCore/page/InteractionRegion.cpp:
(WebCore::interactionRegionForRenderedRegion):
* Source/WebCore/page/Page.cpp:
(WebCore::Page::updateRendering):
(WebCore::Page::doAfterUpdateRendering):
(WebCore::Page::didCompleteRenderingFrame):
(WebCore::Page::prioritizeVisibleResources):
(WebCore::Page::forEachRenderableDocument const):
* Source/WebCore/page/Page.h:
* Source/WebCore/platform/Logging.h:
* Source/WebCore/platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::renderingIsSuppressedIncludingDescendants const):
(WebCore::GraphicsLayer::setRenderingIsSuppressedIncludingDescendants):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::needsCommit):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerRenderingIsSuppressedIncludingDescendants
const):
* Source/WebCore/rendering/EventRegion.cpp:
(WebCore::EventRegionContext::unite):
(WebCore::EventRegion::unite):
* Source/WebCore/rendering/EventRegion.h:
* Source/WebCore/rendering/RenderElementInlines.h:
(WebCore::RenderElement::visibleToHitTesting const):
* Source/WebCore/rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::setRenderingIsSuppressed):
* Source/WebCore/rendering/RenderLayerCompositor.h:
* Source/WebCore/rendering/RenderObject.cpp:
(WebCore::RenderObject::usedPointerEvents const):
* Source/WebCore/rendering/RenderObject.h:
* Source/WebCore/rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::checkIntersection):
(WebCore::RenderSVGModelObject::checkEnclosure):
* Source/WebCore/rendering/svg/RenderSVGShape.cpp:
(WebCore::RenderSVGShape::nodeAtPoint):
* Source/WebCore/rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::nodeAtFloatPoint):
* Source/WebCore/rendering/svg/SVGInlineTextBox.cpp:
(WebCore::SVGInlineTextBox::nodeAtPoint):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGImage.cpp:
(WebCore::LegacyRenderSVGImage::nodeAtFloatPoint):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGModelObject.cpp:
(WebCore::LegacyRenderSVGModelObject::checkIntersection):
(WebCore::LegacyRenderSVGModelObject::checkEnclosure):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGShape.cpp:
(WebCore::LegacyRenderSVGShape::nodeAtFloatPoint):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::recursiveMarkWillBeDisplayed):
(WebKit::PlatformCALayerRemote::recursiveBuildTransaction):
* Source/WebKitLegacy/mac/WebView/WebViewRenderingUpdateScheduler.mm:
(WebViewRenderingUpdateScheduler::postRenderingUpdateCallback):
Canonical link: https://commits.webkit.org/280114@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