Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 7f43fa7ebe877fd00e630aa1d61a70ca94edb6af
https://github.com/WebKit/WebKit/commit/7f43fa7ebe877fd00e630aa1d61a70ca94edb6af
Author: Razvan Caliman <[email protected]>
Date: 2026-10-07 (Wed, 07 Oct 2026)
Changed paths:
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/Sources.txt
M Source/WebKit/UIProcess/Automation/BidiEventNames.h
A Source/WebKit/UIProcess/Automation/BidiInputAgent.cpp
A Source/WebKit/UIProcess/Automation/BidiInputAgent.h
M Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.cpp
M Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.h
A Source/WebKit/UIProcess/Automation/protocol/BidiInput.json
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
Log Message:
-----------
[WebDriver][BiDi] Add protocol definition and basic validation for input
module
https://bugs.webkit.org/show_bug.cgi?id=325653
rdar://188706546
Reviewed by BJ Burg.
Add the WebDriver BiDi input module to the Automation backend: the BidiInput
protocol
domain (input.performActions, input.releaseActions, input.setFiles, and the
input.fileDialogOpened event) and BidiInputAgent, registered with
WebDriverBidiProcessor.
input.performActions resolves the navigable, then implements the WebDriver
"extract an
action sequence" algorithm against a per-top-level-context input state. Each
input source
action sequence and each action item is validated in spec order: source type,
id, pointer
parameters, then get-or-create the input source (rejecting a reused id with a
different
type or pointerType), then every action.
Durations, buttons and pointer dimensions must be js-uint; pointerMove
coordinates are floats;
wheel coordinates and deltas must be js-int; pointer pressure, tilt, twist and
angle properties
are range-checked; element origins must be an input.ElementOrigin with a
script.SharedReference;
and wheel sources reject the "pointer" origin. Invalid input produces invalid
argument,
and unknown contexts produce no such frame.
Dispatching validated actions is not implemented yet, so input.performActions
reports
unsupported operation after validation instead of claiming success.
input.releaseActions
resets the input state for the context's top-level traversabl. Since no actions
can have
been dispatched, its input cancel list is always empty. input.setFiles reports
unsupported
operation. Dispatch is tracked in webkit.org/b/288114 and setFiles in
webkit.org/b/287926.
* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Sources.txt:
* Source/WebKit/UIProcess/Automation/BidiEventNames.h:
* Source/WebKit/UIProcess/Automation/BidiInputAgent.cpp: Added.
(WebKit::BidiInput::State::find const):
(WebKit::BidiInput::State::add):
(WebKit::BidiInput::numberValue):
(WebKit::BidiInput::integerValue):
(WebKit::BidiInput::optionalUnsigned):
(WebKit::BidiInput::optionalNumberInRange):
(WebKit::BidiInput::optionalIntegerInRange):
(WebKit::BidiInput::processPauseAction):
(WebKit::BidiInput::isSingleGraphemeCluster):
(WebKit::BidiInput::elementOriginSharedId):
(WebKit::BidiInput::processOrigin):
(WebKit::BidiInput::processPointerProperties):
(WebKit::BidiInput::processButton):
(WebKit::BidiInput::processPointerAction):
(WebKit::BidiInput::processWheelAction):
(WebKit::BidiInput::processKeyAction):
(WebKit::BidiInput::processNullAction):
(WebKit::BidiInput::processInputSourceActionSequence):
(WebKit::BidiInput::extractActionSequence):
(WebKit::BidiInputAgent::BidiInputAgent):
(WebKit::BidiInputAgent::inputStateForTopLevelContext):
(WebKit::BidiInputAgent::resetInputState):
(WebKit::BidiInputAgent::performActions):
(WebKit::BidiInputAgent::releaseActions):
(WebKit::BidiInputAgent::setFiles):
* Source/WebKit/UIProcess/Automation/BidiInputAgent.h: Added.
* Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.cpp:
(WebKit::WebDriverBidiProcessor::WebDriverBidiProcessor):
* Source/WebKit/UIProcess/Automation/WebDriverBidiProcessor.h:
* Source/WebKit/UIProcess/Automation/protocol/BidiInput.json: Added.
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/323011@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications