Bug 289259

Summary: REGRESSION(291284@main) WebAutomationSession needs to push a command failure as soon as it gets it
Product: WebKit Reporter: Lauro Moura <lmoura>
Component: WebDriverAssignee: Lauro Moura <lmoura>
Status: RESOLVED FIXED    
Severity: Normal CC: bburg, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 284470    
Bug Blocks:    

Lauro Moura
Reported 2025-03-06 09:41:25 PST
291284@main changed WebAutomationSession callbacks to use a Function<T> approach instead of CallbackBase. In the generated code for the dispatchers, currently we get the following for evaluteJavaScriptFunction, which is used by a number of commands like getElementText: m_agent->evaluateJavaScriptFunction(in_browsingContextHandle, in_opt_frameHandle, in_function, in_arguments.releaseNonNull(), WTFMove(in_opt_expectsImplicitCallbackArgument), WTFMove(in_opt_forceUserGesture), WTFMove(in_opt_callbackTimeout), [backendDispatcher = m_backendDispatcher.copyRef(), protocol_requestId](CommandResult<String> result) { if (!result) { ASSERT(!result.error().isEmpty()); backendDispatcher->reportProtocolError(protocol_requestId, BackendDispatcher::ServerError, result.error()); return; } The problem is that `reportProtocolError` just stores the errors to send them later. This might cause clients to hang, given WebDriver Classic's synchronous approach, or even crash, if we have pending errors and the client (the driver) tries to send another command to be dispatched before flushing the errors. Tentative patch incoming.
Attachments
Lauro Moura
Comment 1 2025-03-06 09:51:27 PST
Radar WebKit Bug Importer
Comment 2 2025-03-12 16:56:04 PDT
EWS
Comment 3 2025-03-12 18:17:36 PDT
Committed 292050@main (cc06097b2c44): <https://commits.webkit.org/292050@main> Reviewed commits have been landed. Closing PR #42011 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.