Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 21142271a7e1423a5d85c2df22475858e5f9ae48
https://github.com/WebKit/WebKit/commit/21142271a7e1423a5d85c2df22475858e5f9ae48
Author: Charlie Wolfe <[email protected]>
Date: 2026-10-08 (Thu, 08 Oct 2026)
Changed paths:
M Source/WebCore/dom/Document.h
M Source/WebCore/dom/ViewTransition.cpp
M Source/WebCore/dom/ViewTransition.h
Log Message:
-----------
Setup view transition should flush the update callback queue
https://bugs.webkit.org/show_bug.cgi?id=326835
rdar://189533643
Reviewed by Tim Nguyen.
This fixes the following test failures that only happen after PR 76072:
imported/w3c/web-platform-tests/css/css-view-transitions/start-view-transtion-skips-active.html
imported/w3c/web-platform-tests/css/css-view-transitions/start-skip-start.html
The spec's "setup view transition" flushes the document's update callback queue
before capturing the
old state, so DOM changes from previously skipped transitions are applied
first. WebKit never
implemented this queue. Skipped transitions queued a task to call their update
callback, and
start-skip-start.html and start-view-transtion-skips-active.html only passed
because the first
rendering update happened to run after that task.
Add the update callback queue to Document and implement "schedule the update
callback" and "flush
the update callback queue". Flush the queue before capturing the old state, and
stop if that flush
ran script that skipped the transition.
* Source/WebCore/dom/Document.h:
(WebCore::Document::viewTransitionUpdateCallbackQueue):
* Source/WebCore/dom/ViewTransition.cpp:
(WebCore::ViewTransition::skipViewTransition):
(WebCore::ViewTransition::scheduleUpdateCallback):
(WebCore::ViewTransition::flushUpdateCallbackQueue):
(WebCore::ViewTransition::setupViewTransition):
* Source/WebCore/dom/ViewTransition.h:
Canonical link: https://commits.webkit.org/323173@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications