[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