Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: acdddb0cc38fddbd787d1ef56f0fb64ccd2b51bd
https://github.com/WebKit/WebKit/commit/acdddb0cc38fddbd787d1ef56f0fb64ccd2b51bd
Author: Ahmad Saleem <[email protected]>
Date: 2026-08-10 (Mon, 10 Aug 2026)
Changed paths:
M LayoutTests/TestExpectations
A
LayoutTests/imported/w3c/web-platform-tests/infrastructure/testdriver/key-source-pause-expected.txt
A
LayoutTests/imported/w3c/web-platform-tests/infrastructure/testdriver/key-source-pause.html
M LayoutTests/platform/ios/TestExpectations
M LayoutTests/resources/testdriver-vendor.js
Log Message:
-----------
testdriver-vendor.js rejects action sequences containing a pause in a key
source
https://bugs.webkit.org/show_bug.cgi?id=320983
rdar://184016970
Reviewed by Sam Sneddon.
window.test_driver_internal.action_sequence() threw
"does not yet support pause key action" for any pause action in a key source,
rejecting the whole sequence. Two kinds of pause reach that code:
- An explicit pause, from test_driver.Actions.prototype.pause(duration, "key").
- An implicit one: KeySource.serialize() in testdriver-actions.js pads every
tick in which the key source has no action of its own with
{type: "pause"} and no duration. Such a pause has nothing to wait for, so
the test never asked for a delay at all, yet the sequence was rejected.
Do what the FIXME suggested and translate a pause with a duration into an
eventSender.leapForward(), the same way pauses from the "none" source are
already injected below, and treat a pause with no duration as a no-op.
This matches Blink's testdriver-vendor.js, which likewise awaits the pause
rather than failing.
The test calls test_driver.action_sequence() with a hand-written source list
instead of building one with test_driver.Actions, because a padding pause
needs a second source occupying ticks and the only such combination, a key
source alongside a pointer source, is rejected earlier as unsupported: no
Actions chain in the tree reaches this code path. It covers a pause with a
duration and a padding pause without one, and fails with the rejection above
before this change. Since infrastructure/testdriver is skipped as a directory
for needing an interactive window, opt this one test back in; it does not.
Skip it on iOS: there, action_sequence() dispatches key actions from a UI
script that references eventSender, which does not exist in the UI-script
context, and uiController has no leapForward equivalent, so a key source
resolves without dispatching anything. That is pre-existing and unrelated to
this change, which is why the existing key-driven tests such as
shadow-dom/accesskey.tentative.html are already skipped there.
* LayoutTests/TestExpectations:
*
LayoutTests/imported/w3c/web-platform-tests/infrastructure/testdriver/key-source-pause-expected.txt:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/infrastructure/testdriver/key-source-pause.html:
Added.
* LayoutTests/platform/ios/TestExpectations:
* LayoutTests/resources/testdriver-vendor.js:
(window.test_driver_internal.action_sequence):
Canonical link: https://commits.webkit.org/318929@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications