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

Reply via email to