[webkit-changes] [WebKit/WebKit] b10105: [view-transitions] Add basic DOM infrastructure
Tim Nguyen
noreply at github.com
Sat Dec 2 04:55:43 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b10105f3d6b7e01e12f1c141a0aebc023f2324c9
https://github.com/WebKit/WebKit/commit/b10105f3d6b7e01e12f1c141a0aebc023f2324c9
Author: Tim Nguyen <ntim at apple.com>
Date: 2023-12-02 (Sat, 02 Dec 2023)
Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-capture-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-start-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/group-animation-for-root-transition-expected.txt
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/mix-blend-mode-only-on-transition-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-crash-set-exception-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-css-animation-while-render-blocked-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-raf-while-render-blocked-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-group-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-image-pair-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-new-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-old-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-on-root-element-with-view-transition-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-view-transition-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/paused-animation-at-end-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-computed-style-stays-in-sync-with-new-element-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-get-computed-style-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/ready_resolves_after_dom_before_raf-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/style-inheritance-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-skipped-after-animation-started-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-skipped-from-invalid-callback-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/view-transition-name-on-removed-element-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/web-animation-pseudo-incorrect-name-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-expected.txt
M LayoutTests/platform/ios-wk2/TestExpectations
M Source/WebCore/CMakeLists.txt
M Source/WebCore/DerivedSources-input.xcfilelist
M Source/WebCore/DerivedSources-output.xcfilelist
M Source/WebCore/DerivedSources.make
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/bindings/js/WebCoreBuiltinNames.h
A Source/WebCore/dom/Document+ViewTransition.idl
M Source/WebCore/dom/Document.cpp
M Source/WebCore/dom/Document.h
A Source/WebCore/dom/ViewTransition.cpp
A Source/WebCore/dom/ViewTransition.h
A Source/WebCore/dom/ViewTransition.idl
A Source/WebCore/dom/ViewTransitionUpdateCallback.h
A Source/WebCore/dom/ViewTransitionUpdateCallback.idl
M Source/WebCore/page/Page.cpp
M Source/WebCore/page/Page.h
M Source/WebCore/style/StyleTreeResolver.cpp
Log Message:
-----------
[view-transitions] Add basic DOM infrastructure
https://bugs.webkit.org/show_bug.cgi?id=265155
rdar://118659606
Reviewed by Simon Fraser.
Add basic DOM interfaces and lifecycle hooks.
In order to start passing reftests, we need to implement the barebone DOM infrastructure and lifecycle hooks.
We mostly focus on the web exposed methods and managing the promise states, as it is the minimum required to run reftests without having them timeout/throw.
FIXMEs are added to implement the actual functionality.
>From https://drafts.csswg.org/css-view-transitions/#lifecycle :
A successful view transition goes through the following phases:
1. Developer calls document.startViewTransition(updateCallback), which returns a ViewTransition, viewTransition.
2. Current state captured as the “old” state.
3. Rendering paused.
4. Developer’s updateCallback function, if provided, is called, which updates the document state.
5. viewTransition.updateCallbackDone fulfills.
6. Current state captured as the “new” state.
7. Transition pseudo-elements created. See § 3.2 View Transition Pseudo-elements for an overview of this structure.
8. Rendering unpaused, revealing the transition pseudo-elements.
9. viewTransition.ready fulfills.
10. Pseudo-elements animate until finished.
11. Transition pseudo-elements removed.
12. viewTransition.finished fulfills.
* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-capture-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/duplicate-tag-rejects-start-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/group-animation-for-root-transition-expected.txt:
* 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/mix-blend-mode-only-on-transition-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/no-crash-set-exception-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-raf-while-render-blocked-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-group-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-image-pair-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-new-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-old-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-on-root-element-with-view-transition-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/only-child-view-transition-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/paused-animation-at-end-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-computed-style-stays-in-sync-with-new-element-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-get-computed-style-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/ready_resolves_after_dom_before_raf-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/style-inheritance-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-skipped-after-animation-started-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/transition-skipped-from-invalid-callback-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/view-transition-name-on-removed-element-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/web-animation-pseudo-incorrect-name-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-expected.txt:
* LayoutTests/platform/ios-wk2/TestExpectations:
* Source/WebCore/CMakeLists.txt:
* Source/WebCore/DerivedSources-input.xcfilelist:
* Source/WebCore/DerivedSources-output.xcfilelist:
* Source/WebCore/DerivedSources.make:
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/bindings/js/WebCoreBuiltinNames.h:
* Source/WebCore/dom/Document+ViewTransition.idl: Added.
* Source/WebCore/dom/Document.cpp:
(WebCore::Document::activeViewTransition const):
(WebCore::Document::setActiveViewTransition):
(WebCore::Document::hasViewTransitionPseudoElementTree const):
(WebCore::Document::setHasViewTransitionPseudoElementTree):
(WebCore::Document::startViewTransition):
(WebCore::Document::performPendingViewTransitions):
* Source/WebCore/dom/Document.h:
* Source/WebCore/dom/ViewTransition.cpp: Added.
(WebCore::createPromiseAndWrapper):
(WebCore::ViewTransition::ViewTransition):
(WebCore::ViewTransition::create):
(WebCore::ViewTransition::ready):
(WebCore::ViewTransition::updateCallbackDone):
(WebCore::ViewTransition::finished):
(WebCore::ViewTransition::skipViewTransition):
(WebCore::ViewTransition::skipTransition):
(WebCore::ViewTransition::callUpdateCallback):
(WebCore::ViewTransition::setupViewTransition):
(WebCore::ViewTransition::captureOldState):
(WebCore::ViewTransition::captureNewState):
(WebCore::ViewTransition::setupTransitionPseudoElements):
(WebCore::ViewTransition::activateViewTransition):
(WebCore::ViewTransition::handleTransitionFrame):
(WebCore::ViewTransition::clearViewTransition):
* Source/WebCore/dom/ViewTransition.h: Added.
(WebCore::ViewTransition::phase):
(WebCore::ViewTransition::namedElements const):
(WebCore::ViewTransition::protectedDocument const):
* Source/WebCore/dom/ViewTransition.idl: Added.
* Source/WebCore/dom/ViewTransitionUpdateCallback.h: Added.
* Source/WebCore/dom/ViewTransitionUpdateCallback.idl: Added.
* Source/WebCore/page/Page.cpp:
(WebCore::Page::updateRendering):
(WebCore::operator<<):
* Source/WebCore/page/Page.h:
* Source/WebCore/style/StyleTreeResolver.cpp:
(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::TreeResolver::resolvePseudoElement):
Canonical link: https://commits.webkit.org/271426@main
More information about the webkit-changes
mailing list