WebDriver: handle user prompts shown while executing scripts
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 2 Dec 2017 15:13:29 +0000 (15:13 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 2 Dec 2017 15:13:29 +0000 (15:13 +0000)
commitf7308de520f9d7246d618cee48ad9c2b72a3bef3
tree062e214a06ddfd221a75a47b279a16744c2b7b47
parent89aeaef797fd994b0d3e3cd071f06d20546680fc
WebDriver: handle user prompts shown while executing scripts
https://bugs.webkit.org/show_bug.cgi?id=179979

Reviewed by Brian Burg.

Source/WebDriver:

15.2 Executing Script
https://w3c.github.io/webdriver/webdriver-spec.html#executing-script

The rules to execute a function body are as follows. The algorithm will return success with the JSON
representation of the function’s return value, or an error if the evaluation of the function results in a
JavaScript exception being thrown or at any point during its execution an unhandled user prompt appears.

If at any point during the algorithm a user prompt appears, the user prompt handler must be invoked. If its
return value is an error, it must immediately return with that error and abort all subsequent substeps of this
algorithm.

This will be covered by new WPT tests that will be available after the next upgrade.

* CommandResult.cpp:
(WebDriver::CommandResult::CommandResult): Handle UnexpectedAlertOpen internal error.
* Session.cpp:
(WebDriver::Session::handleUserPrompts): Move code to handleUnexpectedAlertOpen() and call it instead.
(WebDriver::Session::handleUnexpectedAlertOpen): Code moved here to be used also by executeScript().
(WebDriver::Session::executeScript): In case of UnexpectedAlertOpen error, call handleUnexpectedAlertOpen().
* Session.h:

Source/WebKit:

* UIProcess/Automation/Automation.json: Add UnexpectedAlertOpen error.
* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::willShowJavaScriptDialog): Finish pending evaluateJavaScriptFunction operations
with UnexpectedAlertOpen error.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225448 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebDriver/ChangeLog
Source/WebDriver/CommandResult.cpp
Source/WebDriver/Session.cpp
Source/WebDriver/Session.h
Source/WebKit/ChangeLog
Source/WebKit/UIProcess/Automation/Automation.json
Source/WebKit/UIProcess/Automation/WebAutomationSession.cpp