2019-05-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use builtin FindICU
        https://bugs.webkit.org/show_bug.cgi?id=197934

        Reviewed by Michael Catanzaro.

        Remove uses of ICU_INCLUDE_DIRS and ICU_LIBRARIES.

        * PlatformWPE.cmake:

2019-04-14  Don Olmstead  <don.olmstead@sony.com>

        [CMake] JavaScriptCore derived sources should only be referenced inside JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=196742

        Reviewed by Konstantin Tokarev.

        Don't set JavaScriptCore_SCRIPTS_DIR now that it is set within WebKitFS.

        * CMakeLists.txt:

2019-04-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r243833.
        https://bugs.webkit.org/show_bug.cgi?id=196645

        This change breaks build of WPE and GTK ports (Requested by
        annulen on #webkit).

        Reverted changeset:

        "[CMake][WTF] Mirror XCode header directories"
        https://bugs.webkit.org/show_bug.cgi?id=191662
        https://trac.webkit.org/changeset/243833

2019-04-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WTF] Mirror XCode header directories
        https://bugs.webkit.org/show_bug.cgi?id=191662

        Reviewed by Konstantin Tokarev.

        Use WTFFramework as a dependency.

        * CMakeLists.txt:

2019-03-04  Karl Leplat  <karl.leplat_ext@softathome.com>

        WebDriver: fix String not terminated with null caracter
        https://bugs.webkit.org/show_bug.cgi?id=195274

        Reviewed by Carlos Garcia Campos.

        This has been detected by an exception returned by the function
        evaluateJavaScriptFunction with the message :
        [native code]: JS ERROR SyntaxError: Unexpected keyword 'function'. Expected ')' to end a compound expression.
        keyword 'function' has been initialized with a string that come from char array, not a null-terminated string.

        * Session.cpp:
        (WebDriver::Session::fullscreenWindow):
        (WebDriver::Session::findElements):
        (WebDriver::Session::isElementSelected):
        (WebDriver::Session::isElementDisplayed):
        (WebDriver::Session::getElementAttribute):
        (WebDriver::Session::elementClear):

2019-01-31  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed speculative WPE build fix.

        * CMakeLists.txt: Include the WebKitCommon file, as is normally done in
        standalone CMakeLists.txt files.

2019-01-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] WebDriver: race condition when session starts
        https://bugs.webkit.org/show_bug.cgi?id=194086

        Reviewed by Philippe Normand.

        This is causing flakiness in the bots, I can only reproduce it locally when my CPUs are at 100%. The thing
        is that sometimes we receive an empty target list right after the connection is established because
        RemoteInspector::setClient() calls pushListingsSoon() before a target has been registered. Most of the times the
        target is registered before the listing is pushed, but it can happen that when pushed, the listing is still
        empty. After the target is registered an empty target list means the connection was lost, so we clear the
        connection and target. We need to ensure we do that only after the target has been registered.

        * glib/SessionHostGlib.cpp:

2019-01-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: POST commands require a valid parameters object
        https://bugs.webkit.org/show_bug.cgi?id=193906

        Reviewed by Michael Catanzaro.

        We are not failing when http body is empty.

        Fixes tests: imported/w3c/webdriver/tests/set_window_rect/set.py::test_null_parameter_value
                     imported/w3c/webdriver/tests/set_timeouts/set.py::test_null_parameter_value

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::handleRequest):

2019-01-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: element click command should handle user prompts
        https://bugs.webkit.org/show_bug.cgi?id=193139

        Reviewed by Michael Catanzaro.

        * Session.cpp:
        (WebDriver::Session::elementClick): Handle user prompts.

2019-01-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] WebDriver: browser close not correctly detected on session close in some cases
        https://bugs.webkit.org/show_bug.cgi?id=193104

        Reviewed by Michael Catanzaro.

        This happens when the dbus connection is closed right before the response to SendMessageToBackend message is
        going to be sent. In that case, g_dbus_connection_call async ready handler generates an error before the close
        signal is emitted. Then, the close commands try to handle the error checking if SessionHost::isConnected(), but
        it still returns true, because the browser is still alive, but the dbus connection has been closed.

        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::isConnected const): Session is connected when launching or when dbus connection hasn't
        been closed.

2018-12-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GLIB] WebDriver: dbusConnectionClosedCallback can be called after SessionHost has been deleted
        https://bugs.webkit.org/show_bug.cgi?id=192976

        Reviewed by Alejandro G. Castro.

        Disconnect DBus connection signals using SessionHost as user data in SessionHost destructor.

        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::~SessionHost):

2018-12-20  Chris Dumez  <cdumez@apple.com>

        Use Optional::valueOr() instead of Optional::value_or()
        https://bugs.webkit.org/show_bug.cgi?id=192933

        Reviewed by Geoffrey Garen.

        * Session.cpp:
        (WebDriver::Session::handleUnexpectedAlertOpen):
        (WebDriver::Session::computeElementLayout):
        (WebDriver::Session::selectOptionElement):
        (WebDriver::builtAutomationCookie):
        (WebDriver::Session::takeScreenshot):
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::sendResponse const):
        (WebDriver::WebDriverService::createSession):

2018-12-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: Session::findElements should handle user prompts
        https://bugs.webkit.org/show_bug.cgi?id=192928

        Reviewed by Michael Catanzaro.

        All user prompt tests for commands using Session::findElements are failing because of this.

        * Session.cpp:
        (WebDriver::Session::findElements):

2018-12-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: tests in imported/w3c/webdriver/tests/element_clear/user_prompts.py are failing
        https://bugs.webkit.org/show_bug.cgi?id=192927

        Reviewed by Michael Catanzaro.

        Handle user prompts in element clear command.

        * Session.cpp:
        (WebDriver::Session::elementClear):

2018-12-19  Chris Dumez  <cdumez@apple.com>

        wtf/Optional.h: move-constructor and move-assignment operator should disengage the value being moved from
        https://bugs.webkit.org/show_bug.cgi?id=192728
        <rdar://problem/46746779>

        Reviewed by Geoff Garen.

        * :

2018-11-29  Tomas Popela  <tpopela@redhat.com>

        [WebDriver] Fix clang warnings in Session.cpp
        https://bugs.webkit.org/show_bug.cgi?id=192077

        Reviewed by Carlos Garcia Campos.

        * Session.cpp:
        (WebDriver::Session::dismissAndNotifyAlert):
        (WebDriver::Session::acceptAndNotifyAlert):
        (WebDriver::Session::reportUnexpectedAlertOpen):
        (WebDriver::Session::getCurrentURL):
        (WebDriver::Session::getTitle):
        (WebDriver::Session::getWindowHandle):
        (WebDriver::Session::getWindowHandles):
        (WebDriver::Session::getToplevelBrowsingContextRect):
        (WebDriver::Session::computeElementLayout):
        (WebDriver::Session::isElementSelected):
        (WebDriver::Session::getElementText):
        (WebDriver::Session::getElementTagName):
        (WebDriver::Session::getElementRect):
        (WebDriver::Session::isElementEnabled):
        (WebDriver::Session::isElementDisplayed):
        (WebDriver::Session::getElementAttribute):
        (WebDriver::Session::getElementProperty):
        (WebDriver::Session::getElementCSSValue):
        (WebDriver::Session::selectOptionElement):
        (WebDriver::Session::elementClick):
        (WebDriver::Session::elementClear):
        (WebDriver::Session::handleScriptResult):
        (WebDriver::Session::performMouseInteraction):
        (WebDriver::Session::performKeyboardInteractions):
        (WebDriver::Session::getAllCookies):
        (WebDriver::Session::getNamedCookie):
        (WebDriver::Session::addCookie):
        (WebDriver::Session::deleteCookie):
        (WebDriver::Session::deleteAllCookies):
        (WebDriver::Session::performActions):
        (WebDriver::Session::releaseActions):
        (WebDriver::Session::dismissAlert):
        (WebDriver::Session::acceptAlert):
        (WebDriver::Session::getAlertText):
        (WebDriver::Session::sendAlertText):
        (WebDriver::Session::takeScreenshot):
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::deleteSession):

2018-11-02  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] WebDriver: support validating and parsing the 'certificates' capability
        https://bugs.webkit.org/show_bug.cgi?id=191014

        Reviewed by Michael Catanzaro.

        Adopt the same approach as in the GTK's WebDriverService implementation
        for validating and parsing the 'certificates' WebDriver capability.

        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const):
        (WebDriver::WebDriverService::platformParseCapabilities const):

2018-08-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: do not try to set the caret when focusing non text element in send keys command
        https://bugs.webkit.org/show_bug.cgi?id=188515

        Reviewed by Brian Burg.

        It causes a type error exception.

        * Session.cpp:
        (WebDriver::Session::elementSendKeys):

2018-08-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: include all capabilities in the new session response
        https://bugs.webkit.org/show_bug.cgi?id=188511

        Reviewed by Brian Burg.

        As expected by the tests, using the default values when the capability is not provided by the user.

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::createSession):

2018-08-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: several element_send_keys tests are failing since added
        https://bugs.webkit.org/show_bug.cgi?id=181644

        Reviewed by Michael Catanzaro.

        This is because we are implementing an old version of the spec that received a "value" parameter to send keys
        command, instead of the "text" one.

        14.3 Element Send Keys
        https://w3c.github.io/webdriver/#element-send-keys

        * Session.cpp:
        (WebDriver::Session::virtualKeyForKey): Receive a single character instead of a sequence.
        (WebDriver::Session::elementSendKeys): It now receives a String and passes every character to virtualKeyForKey.
        (WebDriver::Session::performActions): Pass first character of sequence to virtualKeyForKey.
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::elementSendKeys): Get text as a String, instead of value as an array.

2018-08-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: do not handle prompts that appear while running scripts
        https://bugs.webkit.org/show_bug.cgi?id=188468

        Reviewed by Žan Doberšek.

        This changed in the spec, we should just finish the script without handling the alert at all.
        https://github.com/w3c/webdriver/commit/afb578090bc95718debeab6a6821da8d12b952c8

        "If at any point during the algorithm a user prompt appears, abort all subsequent substeps of this algorithm,
        and return success with data null."
        https://w3c.github.io/webdriver/#dfn-execute-a-function-body

        * Session.cpp:
        (WebDriver::Session::executeScript):

2018-08-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] WebDriver: do not use default browser arguments when browser binary has been provided
        https://bugs.webkit.org/show_bug.cgi?id=188465

        Reviewed by Žan Doberšek.

        We only want to use --automation when no options or no browser binary is provided, because we fallback to
        MiniBrowser and we know it needs --automation flag.

        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::launchBrowser): Handle the case of browser arguments being std::nullopt.
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformParseCapabilities const): Initialize browser arguments to std:nullopt if
        browser binary was provided.
        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformParseCapabilities const): Ditto.

2018-08-03  Ms2ger  <Ms2ger@igalia.com>

        Fix invalid optional access in WebDriver Session::createTopLevelBrowsingContext.
        https://bugs.webkit.org/show_bug.cgi?id=188304

        Reviewed by Brian Burg.

        * Session.cpp:
        (WebDriver::Session::createTopLevelBrowsingContext): remove incorrect value() call.

2018-07-26  Ross Kirsling  <ross.kirsling@sony.com>

        String(View) should have a splitAllowingEmptyEntries function instead of a flag parameter
        https://bugs.webkit.org/show_bug.cgi?id=187963

        Reviewed by Alex Christensen.

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::findCommand):
        * glib/WebDriverServiceGLib.cpp:
        (WebDriver::parseVersion):
        Update split/splitAllowingEmptyEntries usage.

2018-07-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add --host option to WebDriver process
        https://bugs.webkit.org/show_bug.cgi?id=187288

        Reviewed by Žan Doberšek.

        We currently allow to pass a port number and the server always listens for connections on localhost. We should
        allow to optionally pass a host IP address to be able to use WebDriver remotely.

        * HTTPServer.h:
        * WebDriverService.cpp:
        (WebDriver::printUsageStatement): Update usage to include --host option.
        (WebDriver::WebDriverService::run): Parse --host option and pass it to HTTPServer::listen().
        * soup/HTTPServerSoup.cpp:
        (WebDriver::soupServerListen): Helper to call soup_server_listen_local(), soup_server_listen_all() or
        soup_server_listen() depending on the given host.
        (WebDriver::HTTPServer::listen): Use soupServerListen() helper.

2018-06-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix WebDriver tests after r233077.

        WebDriver process is crashing because GVariant doesn't allow to pass a nullptr array when using @ modifier.

        * SessionHost.h:
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::buildSessionCapabilities const): Receive a GVariantBuilder and return true if there are
        session capabilities.
        (WebDriver::SessionHost::startAutomationSession): Remove the @ modifier and use a GVariantBuilder instead, or
        nullptr if there aren't session capabilities.

2018-06-21  Brian Burg  <bburg@apple.com>

        Web Automation: key actions should support multiple pressed virtual keys
        https://bugs.webkit.org/show_bug.cgi?id=186899
        <rdar://problem/38222248>

        Reviewed by Timothy Hatcher.

        Adopt new protocol command argument types.

        * Session.cpp:
        (WebDriver::Session::performActions):

2018-06-23  Yusuke Suzuki  <utatane.tea@gmail.com>

        [WTF] Add user-defined literal for ASCIILiteral
        https://bugs.webkit.org/show_bug.cgi?id=186839

        Reviewed by Darin Adler.

        * CommandResult.cpp:
        (WebDriver::CommandResult::errorString const):
        * Session.cpp:
        (WebDriver::Session::webElementIdentifier):
        (WebDriver::Session::getTimeouts):
        (WebDriver::Session::createTopLevelBrowsingContext):
        (WebDriver::Session::handleUserPrompts):
        (WebDriver::Session::reportUnexpectedAlertOpen):
        (WebDriver::Session::go):
        (WebDriver::Session::getCurrentURL):
        (WebDriver::Session::back):
        (WebDriver::Session::forward):
        (WebDriver::Session::refresh):
        (WebDriver::Session::getTitle):
        (WebDriver::Session::getWindowHandle):
        (WebDriver::Session::closeTopLevelBrowsingContext):
        (WebDriver::Session::switchToWindow):
        (WebDriver::Session::getWindowHandles):
        (WebDriver::Session::switchToFrame):
        (WebDriver::Session::switchToParentFrame):
        (WebDriver::Session::getToplevelBrowsingContextRect):
        (WebDriver::Session::setWindowRect):
        (WebDriver::Session::maximizeWindow):
        (WebDriver::Session::minimizeWindow):
        (WebDriver::Session::fullscreenWindow):
        (WebDriver::Session::computeElementLayout):
        (WebDriver::Session::findElements):
        (WebDriver::Session::getActiveElement):
        (WebDriver::Session::isElementSelected):
        (WebDriver::Session::getElementText):
        (WebDriver::Session::getElementTagName):
        (WebDriver::Session::getElementRect):
        (WebDriver::Session::isElementEnabled):
        (WebDriver::Session::isElementDisplayed):
        (WebDriver::Session::getElementAttribute):
        (WebDriver::Session::getElementProperty):
        (WebDriver::Session::getElementCSSValue):
        (WebDriver::Session::waitForNavigationToComplete):
        (WebDriver::Session::selectOptionElement):
        (WebDriver::Session::elementClear):
        (WebDriver::Session::virtualKeyForKeySequence):
        (WebDriver::Session::elementSendKeys):
        (WebDriver::Session::executeScript):
        (WebDriver::mouseButtonForAutomation):
        (WebDriver::Session::performMouseInteraction):
        (WebDriver::Session::performKeyboardInteractions):
        (WebDriver::parseAutomationCookie):
        (WebDriver::builtAutomationCookie):
        (WebDriver::serializeCookie):
        (WebDriver::Session::getAllCookies):
        (WebDriver::Session::getNamedCookie):
        (WebDriver::Session::addCookie):
        (WebDriver::Session::deleteCookie):
        (WebDriver::Session::deleteAllCookies):
        (WebDriver::Session::performActions):
        (WebDriver::Session::releaseActions):
        (WebDriver::Session::dismissAlert):
        (WebDriver::Session::acceptAlert):
        (WebDriver::Session::getAlertText):
        (WebDriver::Session::sendAlertText):
        (WebDriver::Session::takeScreenshot):
        * SessionHost.cpp:
        (WebDriver::SessionHost::dispatchMessage):
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::sendResponse const):
        (WebDriver::WebDriverService::parseCapabilities const):
        (WebDriver::WebDriverService::findSessionOrCompleteWithError):
        (WebDriver::WebDriverService::matchCapabilities const):
        (WebDriver::WebDriverService::processCapabilities const):
        (WebDriver::WebDriverService::createSession):
        (WebDriver::WebDriverService::deleteSession):
        (WebDriver::WebDriverService::status):
        (WebDriver::WebDriverService::go):
        (WebDriver::WebDriverService::setWindowRect):
        (WebDriver::WebDriverService::switchToWindow):
        (WebDriver::WebDriverService::switchToFrame):
        (WebDriver::findElementOrCompleteWithError):
        (WebDriver::findStrategyAndSelectorOrCompleteWithError):
        (WebDriver::WebDriverService::getElementAttribute):
        (WebDriver::WebDriverService::getElementProperty):
        (WebDriver::WebDriverService::getElementCSSValue):
        (WebDriver::WebDriverService::elementSendKeys):
        (WebDriver::findScriptAndArgumentsOrCompleteWithError):
        (WebDriver::WebDriverService::getNamedCookie):
        (WebDriver::deserializeCookie):
        (WebDriver::WebDriverService::addCookie):
        (WebDriver::WebDriverService::deleteCookie):
        (WebDriver::processPauseAction):
        (WebDriver::processNullAction):
        (WebDriver::processKeyAction):
        (WebDriver::processPointerAction):
        (WebDriver::processPointerParameters):
        (WebDriver::processInputActionSequence):
        (WebDriver::WebDriverService::performActions):
        (WebDriver::WebDriverService::sendAlertText):
        (WebDriver::WebDriverService::takeElementScreenshot):
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::sendMessageToBackend):
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const):
        (WebDriver::WebDriverService::platformParseCapabilities const):
        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const):
        (WebDriver::WebDriverService::platformParseCapabilities const):

2018-06-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: use a dictionary for session capabilities in StartAutomationSession message
        https://bugs.webkit.org/show_bug.cgi?id=186915

        Reviewed by Žan Doberšek.

        Instead of growing the message signature every time we add a new capability, use a dictionary a{sv} and simply add
        new entries when new capabilities are added. This way we won't need to change the message signature anymore.

        * SessionHost.h:
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::buildSessionCapabilities const): Helper to build the session capabilities dictionary.
        (WebDriver::SessionHost::startAutomationSession):

2018-06-21  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] WebDriver: allow applying host-specific TLS certificates for automated sessions
        https://bugs.webkit.org/show_bug.cgi?id=186884

        Reviewed by Carlos Garcia Campos.

        Start handling the 'certificates' capability for the GTK+ port. This is
        a list of host-certificate pairs that should be marked as allowed for a
        given automation session. This object should be positioned inside the
        'webkitgtk:browserOptions' dictionary in the capabilities JSON.

        * Capabilities.h:
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::startAutomationSession): Include any
        host-certificate pairs in the StartAutomationSession DBus message.
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const):
        Properly validate the 'certificates' value, if present.
        (WebDriver::WebDriverService::platformParseCapabilities const):
        Properly parse the 'certificates' value, if present, and extract the
        host-certificate pairs.

2018-06-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] WebDriver: handle acceptInsecureCertificates capability
        https://bugs.webkit.org/show_bug.cgi?id=186560

        Reviewed by Brian Burg.

        Send session capabilities as part of the StartAutomationSession message. For now only acceptInsecureCerts
        capability is sent.

        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::startAutomationSession):
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformCapabilities): Remove default value of acceptInsecureCerts, since that's
        now handled by the browser.
        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformCapabilities): Ditto.

2018-06-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add a MiniBrowser and use it to run WebDriver tests
        https://bugs.webkit.org/show_bug.cgi?id=186345

        Reviewed by Žan Doberšek.

        Use MiniBrowser instead of dyz as the default WebDriver browser for WPE.

        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformParseCapabilities const):

2018-06-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] WebDriver: stop making mandatory to provide a browser path if wpe:browserOptions is present in capabilities
        https://bugs.webkit.org/show_bug.cgi?id=186264

        Reviewed by Žan Doberšek.

        Everything should be optional. Do not consider invalid to not provide a browser binary when wpe:browserOptions
        is present.

        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformParseCapabilities const):

2018-05-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement maximize, minimize and fullscreen window commands
        https://bugs.webkit.org/show_bug.cgi?id=180398

        Reviewed by Brian Burg.

        * CMakeLists.txt: Add EnterFullscreen.js to the build.
        * Session.cpp:
        (WebDriver::Session::maximizeWindow):
        (WebDriver::Session::minimizeWindow):
        (WebDriver::Session::fullscreenWindow):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::maximizeWindow):
        (WebDriver::WebDriverService::minimizeWindow):
        (WebDriver::WebDriverService::fullscreenWindow):
        * WebDriverService.h:

2018-05-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: implement AutomationSessionClient::didDisconnectFromRemote
        https://bugs.webkit.org/show_bug.cgi?id=185866

        Reviewed by Brian Burg.

        Close the dbus connection when receiving an empty target list.

        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::setTargetList):

2018-05-21  Olivier Blin  <olivier.blin@softathome.com>

        [WPE][WebDriver] add ICU include dirs
        https://bugs.webkit.org/show_bug.cgi?id=185824

        Reviewed by Konstantin Tokarev.

        WebDriver does not build in the WPE port when ICU headers are in a non-default directory.

        * PlatformWPE.cmake: Add ICU include dirs

2018-05-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement advance user interactions
        https://bugs.webkit.org/show_bug.cgi?id=174616

        Reviewed by Brian Burg.

        Add initial implementation of action commands.

        * Actions.h: Added.
        (WebDriver::Action::Action):
        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult): Handle MoveTargetOutOfBounds error.
        (WebDriver::CommandResult::httpStatusCode const): Ditto.
        (WebDriver::CommandResult::errorString const): Ditto.
        * CommandResult.h:
        * Session.cpp:
        (WebDriver::Session::webElementIdentifier): Helper to return the web element id.
        (WebDriver::Session::createElement): Use webElementIdentifier().
        (WebDriver::Session::extractElementID): Ditto.
        (WebDriver::Session::virtualKeyForKeySequence): Add more kay codes includes in the spec.
        (WebDriver::mouseButtonForAutomation): Helper to get the mouse button string to pass to automation.
        (WebDriver::Session::performMouseInteraction): Use mouseButtonForAutomation().
        (WebDriver::Session::getOrCreateInputSource): Ensure an input source for given id and add it to the active input
        sources.
        (WebDriver::Session::inputSourceState): Return the current input source state for the given id.
        (WebDriver::Session::computeInViewCenterPointOfElements): Get the in view center point for the list of elements given.
        (WebDriver::automationSourceType): Helper to get the input source type to pass to automation.
        (WebDriver::Session::performActions): Process the list of action by tick and generate a list of states to pass
        to automation.
        (WebDriver::Session::releaseActions): Reset input sources and state table and send a message to automation.
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::processPauseAction):
        (WebDriver::processNullAction):
        (WebDriver::processKeyAction):
        (WebDriver::actionMouseButton):
        (WebDriver::processPointerAction):
        (WebDriver::processPointerParameters):
        (WebDriver::processInputActionSequence):
        (WebDriver::WebDriverService::performActions):
        (WebDriver::WebDriverService::releaseActions):
        * WebDriverService.h:

2018-03-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: Also ignore NoSuchwindow errors when waiting for navigation to complete
        https://bugs.webkit.org/show_bug.cgi?id=183280

        Reviewed by Brian Burg.

        We currently ignore NoSuchFrame, but navigation or previous command might have closed the window too.

        Fixes: imported/selenium/py/test/selenium/webdriver/common/window_switching_tests.py::testClickingOnAButtonThatClosesAnOpenWindowDoesNotCauseTheBrowserToHang
               imported/selenium/py/test/selenium/webdriver/common/window_switching_tests.py::testCanCallGetWindowHandlesAfterClosingAWindow

        * Session.cpp:
        (WebDriver::Session::waitForNavigationToComplete): Ignore NoSuchWindow errors.

2018-02-14  Brian Burg  <bburg@apple.com>

        Web Automation: combine session commands to resize and move top-level browsing contexts
        https://bugs.webkit.org/show_bug.cgi?id=182749
        <rdar://problem/37515170>

        Reviewed by Andy Estes.

        The new command can take either size or origin. Just have one session command for use by endpoints.

        * Session.cpp:
        (WebDriver::Session::setWindowRect):
        (WebDriver::Session::moveToplevelBrowsingContextWindow): Deleted.
        (WebDriver::Session::resizeToplevelBrowsingContextWindow): Deleted.
        * Session.h:

2018-01-30  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Make WTF headers copies
        https://bugs.webkit.org/show_bug.cgi?id=182274

        Reviewed by Alex Christensen.

        * CMakeLists.txt:

2018-01-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: evaluateJavaScriptFunction should return null when return value is undefined
        https://bugs.webkit.org/show_bug.cgi?id=180350

        Reviewed by Carlos Alberto Lopez Perez.

        Stop handling the empty string as a special case of evaluateJavaScriptFunction result.

        * Session.cpp:
        (WebDriver::Session::executeScript):

2018-01-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: service hangs after a browser crash
        https://bugs.webkit.org/show_bug.cgi?id=182170

        Reviewed by Carlos Alberto Lopez Perez.

        This is currently happening in the GTK+ debug bot. There's a test that makes the browser crash due to an assert,
        hanging the whole process and preventing the rest of the tests from running. When the browser crashes, we
        correctly handle the pending requests, by completing them with an error. However, if the client tries to send
        another command we fail to send the message to the browser and the reply is never sent to the client. In the
        case of the tests, delete session command is sent, but never gets a reply.

        * Session.cpp:
        (WebDriver::Session::isConnected const): Return whether the session is connected to the browser.
        * Session.h:
        * SessionHost.cpp:
        (WebDriver::SessionHost::sendCommandToBackend): Pass the message ID to SessionHost::sendMessageToBackend().
        * SessionHost.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::deleteSession): Ignore unknown errors if the session is no longer connected.
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::sendMessageToBackend): Handle errors when sending the command by completing the request
        with an error.

2018-01-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: timeouts value and cookie expiry should be limited to max safe integer
        https://bugs.webkit.org/show_bug.cgi?id=182167

        Reviewed by Žan Doberšek.

        This changed recently in the spec, but our implementation was wrong in any case since we were limiting to
        INT_MAX. Use valueAsNumberInRange() to ensure we get a valid double value in the given range, and then convert
        to unsigned if it's a valid integer.

        Fixes: imported/w3c/webdriver/tests/sessions/new_session/create_firstMatch.py::test_valid[timeouts-value10]
               imported/w3c/webdriver/tests/sessions/new_session/create_alwaysMatch.py::test_valid[timeouts-value10]

        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::valueAsNumberInRange):
        (WebDriver::unsignedValue):
        (WebDriver::deserializeTimeouts):
        (WebDriver::deserializeCookie):

2018-01-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: test imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_browserName fails
        https://bugs.webkit.org/show_bug.cgi?id=181985

        Reviewed by Carlos Alberto Lopez Perez.

        The problem is that we are considering a failure when the browser name doesn't match the capabilities, instead
        of trying with the next merged capabilities. This is happening because when processing capabilities, we only
        match the ones that we know without having to launch the browser. Browser name and version are provided by the
        browser during the session initialization. This patch reworks the session creation to make it possible to try
        with the next merged capabilities when matching fails after the browser is launched.

        * Session.cpp:
        (WebDriver::Session::Session): Initialize timeouts from capabilities, because now we have the final capabilities here.
        (WebDriver::Session::id const): Return the session ID from the SessionHost, since it's now created there.
        (WebDriver::Session::createTopLevelBrowsingContext): Do not start the session, it has already been started a
        this point.
        (WebDriver::Session::createElement): Use id() instead of m_id.
        * Session.h:
        * SessionHost.h:
        (WebDriver::SessionHost::sessionID const): Return the session ID.
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::matchCapabilities const): Remove the error handling, and return a boolean instead,
        since not mathing is not an error.
        (WebDriver::WebDriverService::processCapabilities const): Return a list of matched capabilities, instead of the
        JSON object corresponding to the first match.
        (WebDriver::WebDriverService::newSession): Use helper connectToBrowser().
        (WebDriver::WebDriverService::connectToBrowser): Create a session host for the next merged capabilities and
        connect to the browser.
        (WebDriver::WebDriverService::createSession): Start a new automation session. If capabilities didn't match,
        start the process again calling connectToBrowser(), otherwise create the new session and top level.
        * WebDriverService.h:
        * glib/SessionHostGlib.cpp:
        (WebDriver::matchBrowserOptions): Helper to check browser options.
        (WebDriver::SessionHost::matchCapabilities): Use matchBrowserOptions() and return true or false instead of an
        optional error message.
        (WebDriver::SessionHost::startAutomationSession): Create the session ID here and notify the caller in case
        capabilities didn't match.
        (WebDriver::SessionHost::setTargetList): Notify that capabilities did match.
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformMatchCapability const): Make it return bool.
        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformMatchCapability const): Ditto.

2018-01-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: test imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_platformName fails
        https://bugs.webkit.org/show_bug.cgi?id=181984

        Reviewed by Carlos Alberto Lopez Perez.

        Platform name is expected to be lower case, so do not compre ignoring case.

        Fixes: imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_platformName

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::matchCapabilities const):

2018-01-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: several tests in imported/w3c/webdriver/tests/sessions/new_session/merge.py are failing
        https://bugs.webkit.org/show_bug.cgi?id=180407

        Reviewed by Carlos Alberto Lopez Perez.

        This is actually a bug in the spec, see https://github.com/w3c/webdriver/issues/1203. It seems the idea in any
        case is that we should check all the firstMatch capabilities before matching them, and return if there's any
        error.

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::mergeCapabilities const):
        (WebDriver::WebDriverService::processCapabilities const):

2018-01-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: test imported/w3c/webdriver/tests/sessions/new_session/response.py::test_timeouts fails
        https://bugs.webkit.org/show_bug.cgi?id=180412

        Reviewed by Carlos Alberto Lopez Perez.

        Include all missing capabilities in the new session response message.

        Fixes: imported/w3c/webdriver/tests/sessions/new_session/response.py::test_resp_capabilites
               imported/w3c/webdriver/tests/sessions/new_session/response.py::test_resp_data
               imported/w3c/webdriver/tests/sessions/new_session/response.py::test_timeouts

        * Session.h:
        (WebDriver::Session::scriptTimeout const):
        (WebDriver::Session::pageLoadTimeout const):
        (WebDriver::Session::implicitWaitTimeout const):
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::newSession):

2018-01-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: matched capabilities should include setWindowRect
        https://bugs.webkit.org/show_bug.cgi?id=180411

        Reviewed by Carlos Alberto Lopez Perez.

        Handle setWindowRect in capabilities. It's always true for GTK and false for WPE.

        * Capabilities.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::parseCapabilities const):
        (WebDriver::WebDriverService::matchCapabilities const):
        (WebDriver::WebDriverService::newSession):
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformCapabilities):
        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformCapabilities):

2018-01-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: test imported/selenium/py/test/selenium/webdriver/common/api_example_tests.py::testChangeWindowSize fails
        https://bugs.webkit.org/show_bug.cgi?id=181728

        Reviewed by Sergio Villar Senin.

        Due to a copy-paste error we are getting the window height using the width variable.

        Fixes: imported/selenium/py/test/selenium/webdriver/common/api_example_tests.py::testChangeWindowSize
               imported/selenium/py/test/selenium/webdriver/common/position_and_size_tests.py::testShouldScrollPageAndGetCoordinatesOfAnElementThatIsOutOfViewPort
               imported/w3c/webdriver/tests/get_window_rect.py::test_payload
               imported/w3c/webdriver/tests/set_window_rect.py::test_width_height_floats
               imported/w3c/webdriver/tests/set_window_rect.py::test_height_width
               imported/w3c/webdriver/tests/set_window_rect.py::test_height_width_larger_than_max
               imported/w3c/webdriver/tests/contexts/resizing_and_positioning.py::test_window_resize

        * Session.cpp:
        (WebDriver::Session::getToplevelBrowsingContextRect):

2018-01-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement get element CSS value command
        https://bugs.webkit.org/show_bug.cgi?id=181736

        Reviewed by Carlos Alberto Lopez Perez.

        13.4 Get Element CSS Value
        https://w3c.github.io/webdriver/webdriver-spec.html#get-element-css-value

        Fixes: imported/selenium/py/test/selenium/webdriver/common/rendered_webelement_tests.py::testShouldPickUpStyleOfAnElement
               imported/selenium/py/test/selenium/webdriver/common/rendered_webelement_tests.py::testShouldAllowInheritedStylesToBeUsed

        * Session.cpp:
        (WebDriver::Session::getElementProperty):
        (WebDriver::Session::getElementCSSValue):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::getElementCSSValue):
        * WebDriverService.h:

2018-01-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: test imported/w3c/webdriver/tests/sessions/new_session/response.py is crashing in the bots
        https://bugs.webkit.org/show_bug.cgi?id=181904

        Reviewed by Carlos Alberto Lopez Perez.

        Handle the case of failing to launch the browser. The test is actually failing because it's sending wrong
        capabilities, the driver tries to fall back to the default driver, but since WebKit is not installed in the
        bots, it fails to find the MiniBrowser. The test needs to be fixed, but we shouldn't crash when the browser
        can't be spawned for whatever reason in any case. This patch handles that case and changes the boolean result of
        connectToBrowser to be an optional error string instead. This way we can provide more detailed error message
        when we reject the session creation because the browser failed to start.

        * SessionHost.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::newSession):
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::connectToBrowser):
        (WebDriver::ConnectToBrowserAsyncData::ConnectToBrowserAsyncData):
        (WebDriver::SessionHost::launchBrowser):
        (WebDriver::SessionHost::setupConnection):

2018-01-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement get timeouts command
        https://bugs.webkit.org/show_bug.cgi?id=181524

        Reviewed by Žan Doberšek.

        8.4 Get Timeouts
        https://w3c.github.io/webdriver/webdriver-spec.html#get-timeouts

        Also simplify the way timeouts are handled in Session. Stop using Timeouts struct, because once the session is
        created the timeouts are no longer optional, they have a default value. Use individual members instead that are
        initialized to their default values on construction and only overriden by capabilities or set timeouts command.

        Fixes: imported/w3c/webdriver/tests/sessions/get_timeouts.py::test_get_timeouts
               imported/w3c/webdriver/tests/sessions/get_timeouts.py::test_get_default_timeouts
               imported/w3c/webdriver/tests/sessions/get_timeouts.py::test_get_new_timeouts

        * Session.cpp:
        (WebDriver::Session::Session):
        (WebDriver::Session::getTimeouts):
        (WebDriver::Session::setTimeouts):
        (WebDriver::Session::go):
        (WebDriver::Session::back):
        (WebDriver::Session::forward):
        (WebDriver::Session::refresh):
        (WebDriver::Session::findElements):
        (WebDriver::Session::waitForNavigationToComplete):
        (WebDriver::Session::executeScript):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::getTimeouts):
        * WebDriverService.h:

2018-01-10  Zan Dobersek  <zdobersek@igalia.com>

        WebDriver: deserializeTimeouts() shouldn't reject double timeout values
        https://bugs.webkit.org/show_bug.cgi?id=181473

        Reviewed by Carlos Garcia Campos.

        With these changes, the following tests are fixed:
            imported/selenium/py/test/selenium/webdriver/common/executing_async_javascript_tests.py::testShouldTimeoutIfScriptDoesNotInvokeCallbackWithLongTimeout
            imported/selenium/py/test/selenium/webdriver/common/executing_async_javascript_tests.py::testShouldDetectPageLoadsWhileWaitingOnAnAsyncScriptAndReturnAnError
            imported/selenium/py/test/selenium/webdriver/common/executing_async_javascript_tests.py::testShouldBeAbleToExecuteAsynchronousScripts
            imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldImplicitlyWaitForASingleElement
            imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldStillFailToFindAnElementWhenImplicitWaitsAreEnabled
            imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldReturnAfterFirstAttemptToFindOneAfterDisablingImplicitWaits
            imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldImplicitlyWaitUntilAtLeastOneElementIsFoundWhenSearchingForMany
            imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldStillFailToFindAnElemenstWhenImplicitWaitsAreEnabled
            imported/selenium/py/test/selenium/webdriver/common/implicit_waits_tests.py::testShouldReturnAfterFirstAttemptToFindManyAfterDisablingImplicitWaits
            imported/selenium/py/test/selenium/webdriver/common/page_load_timeout_tests.py::testShouldTimeoutOnPageLoadTakingTooLong
            imported/selenium/py/test/selenium/webdriver/common/page_load_timeout_tests.py::testShouldTimeoutOnPageLoadTakingTooLong
            imported/selenium/py/test/selenium/webdriver/common/webdriverwait_tests.py::testShouldWaitOnlyAsLongAsTimeoutSpecifiedWhenImplicitWaitsAreSet

        The following two tests regress, and will be looked into separately:
            imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid
            imported/w3c/webdriver/tests/sessions/new_session/merge.py::test_merge_invalid

        * WebDriverService.cpp:
        (WebDriver::integerValue): Helper function that retrieves an integer value
        from a given JSON::Value object, if possible.
        (WebDriver::deserializeTimeouts): Timeout JSON value has to be converted to
        an integer, which is allowed if the value is of either Integer or Double type.
        Helper integerValue() function retrieves the integer value, in addition to
        ensuring that possible double value that we convert to an integer is already
        in integer form to begin with.

2017-12-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: add support for accept/dismiss and notify unhandled prompt behavior
        https://bugs.webkit.org/show_bug.cgi?id=179999

        Reviewed by Carlos Alberto Lopez Perez.

        They work as accept and dismiss, but unexpected alert open is still reported.

        18. User Prompts
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-known-prompt-handling-approaches-table

        * Capabilities.h: Add DismissAndNotify and AcceptAndNotify to UnhandledPromptBehavior enum.
        * Session.cpp:
        (WebDriver::Session::handleUnexpectedAlertOpen): Move default implementation to dismissAndNotifyAlert and
        acceptAndNotifyAlert and use dismissAndNotifyAlert by default.
        (WebDriver::Session::dismissAndNotifyAlert):
        (WebDriver::Session::acceptAndNotifyAlert):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::deserializeUnhandledPromptBehavior): Handle accept/dismiss and notify.
        (WebDriver::WebDriverService::newSession): Ditto.

2017-12-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: get active element should return no such element error when there isn't an active element
        https://bugs.webkit.org/show_bug.cgi?id=180421

        Reviewed by Brian Burg.

        We currently return unknown error.

        Fixes: imported/w3c/webdriver/tests/element_retrieval/get_active_element.py::test_missing_document_element

        * Session.cpp:
        (WebDriver::Session::getActiveElement):

2017-12-04  Brian Burg  <bburg@apple.com>

        Web Automation: add flag to preserve legacy page screenshot behavior
        https://bugs.webkit.org/show_bug.cgi?id=180313
        <rdar://problem/34379930>

        Reviewed by Joseph Pecoraro.

        Set the clipToViewport flag to true when sending Automation.takeScreenshot.
        This preserves the current behavior for this driver implementation.

        * Session.cpp:
        (WebDriver::Session::takeScreenshot):

2017-12-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement element property command
        https://bugs.webkit.org/show_bug.cgi?id=180244

        Reviewed by Brian Burg.

        13.3 Get Element Property
        https://w3c.github.io/webdriver/webdriver-spec.html#get-element-property

        Fixes: imported/w3c/webdriver/tests/state/get_element_property.py::test_no_browsing_context
               imported/w3c/webdriver/tests/state/get_element_property.py::test_handle_prompt_dismiss
               imported/w3c/webdriver/tests/state/get_element_property.py::test_handle_prompt_accept
               imported/w3c/webdriver/tests/state/get_element_property.py::test_handle_prompt_missing_value
               imported/w3c/webdriver/tests/state/get_element_property.py::test_element_stale

        * Session.cpp:
        (WebDriver::Session::getElementAttribute):
        (WebDriver::Session::getElementProperty):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::getElementProperty):
        * WebDriverService.h:

2017-12-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: handle user prompts shown while executing scripts
        https://bugs.webkit.org/show_bug.cgi?id=179979

        Reviewed by Brian Burg.

        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:

2017-12-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement status command
        https://bugs.webkit.org/show_bug.cgi?id=180133

        Reviewed by Brian Burg.

        8.3 Status
        https://w3c.github.io/webdriver/webdriver-spec.html#status

        Fixes: imported/w3c/webdriver/tests/sessions/status.py::test_get_status_no_session
               imported/w3c/webdriver/tests/sessions/status.py::test_status_with_session_running_on_endpoint_node

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::status):
        * WebDriverService.h:

2017-12-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: end point nodes are only allowed to have one session
        https://bugs.webkit.org/show_bug.cgi?id=180131

        Reviewed by Brian Burg.

        We are currently keeping a map of sessions, but our service is always and end point node, so only one session
        can exist at a time. Make findSessionOrCompleteWithError() return a boolean instead, failing in case the sessionID
        parameter is not found or it doesn't match the current session. Replace the session map and active session
        pointer with a single session member and return SessionNotCreated error when new session command is received and
        there's an active session.

        8. Sessions
        A remote end has an associated maximum active sessions (an integer) that defines the number of active sessions
        that are supported. This may be “unlimited” for intermediary nodes, but must be exactly one for a remote end
        that is an endpoint node.
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-maximum-active-sessions

        Fixes: imported/w3c/webdriver/tests/sessions/new_session/default_values.py::test_repeat_new_session

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::findSessionOrCompleteWithError):
        (WebDriver::WebDriverService::newSession):
        (WebDriver::WebDriverService::deleteSession):
        (WebDriver::WebDriverService::status):
        (WebDriver::WebDriverService::setTimeouts):
        (WebDriver::WebDriverService::go):
        (WebDriver::WebDriverService::getCurrentURL):
        (WebDriver::WebDriverService::back):
        (WebDriver::WebDriverService::forward):
        (WebDriver::WebDriverService::refresh):
        (WebDriver::WebDriverService::getTitle):
        (WebDriver::WebDriverService::getWindowHandle):
        (WebDriver::WebDriverService::setWindowRect):
        (WebDriver::WebDriverService::closeWindow):
        (WebDriver::WebDriverService::switchToWindow):
        (WebDriver::WebDriverService::getWindowHandles):
        (WebDriver::WebDriverService::switchToFrame):
        (WebDriver::WebDriverService::switchToParentFrame):
        (WebDriver::findStrategyAndSelectorOrCompleteWithError):
        (WebDriver::WebDriverService::findElement):
        (WebDriver::WebDriverService::findElements):
        (WebDriver::WebDriverService::findElementFromElement):
        (WebDriver::WebDriverService::findElementsFromElement):
        (WebDriver::WebDriverService::getActiveElement):
        (WebDriver::WebDriverService::isElementSelected):
        (WebDriver::WebDriverService::getElementAttribute):
        (WebDriver::WebDriverService::getElementText):
        (WebDriver::WebDriverService::getElementTagName):
        (WebDriver::WebDriverService::getElementRect):
        (WebDriver::WebDriverService::isElementEnabled):
        (WebDriver::WebDriverService::isElementDisplayed):
        (WebDriver::WebDriverService::elementClick):
        (WebDriver::WebDriverService::elementClear):
        (WebDriver::WebDriverService::elementSendKeys):
        (WebDriver::findScriptAndArgumentsOrCompleteWithError):
        (WebDriver::WebDriverService::executeScript):
        (WebDriver::WebDriverService::executeAsyncScript):
        (WebDriver::WebDriverService::getAllCookies):
        (WebDriver::WebDriverService::getNamedCookie):
        (WebDriver::deserializeCookie):
        (WebDriver::WebDriverService::addCookie):
        (WebDriver::WebDriverService::deleteCookie):
        (WebDriver::WebDriverService::deleteAllCookies):
        (WebDriver::WebDriverService::dismissAlert):
        (WebDriver::WebDriverService::acceptAlert):
        (WebDriver::WebDriverService::getAlertText):
        (WebDriver::WebDriverService::sendAlertText):
        (WebDriver::WebDriverService::takeScreenshot):
        (WebDriver::WebDriverService::takeElementScreenshot):
        * WebDriverService.h:

2017-11-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: locator strategy should be validated before trying to find elements
        https://bugs.webkit.org/show_bug.cgi?id=180187

        Reviewed by Carlos Alberto Lopez Perez.

        We currently rely on the js atom to raise an exception in case the locator strategy is not valid, but in case of
        find element from element, if the element doesn't exist we fail with stale element error instead of invalid
        argument as expected. So, let's validate the strategies when parsing them, which would also avoid going to the
        browser in cae of invalid strategy.

        Fixes: imported/w3c/webdriver/tests/retrieval/find_element_from_element.py::test_invalid_using_argument[a]

        * WebDriverService.cpp:
        (WebDriver::isValidStrategy):
        (WebDriver::findStrategyAndSelectorOrCompleteWithError):

2017-11-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: remove elementSubmit command
        https://bugs.webkit.org/show_bug.cgi?id=180186

        Reviewed by Carlos Alberto Lopez Perez.

        It's not in the spec, we had it only because selenium used it, but now it uses execute_script with custom code
        to implement submit, so we can just remove it.

        * Session.cpp:
        (WebDriver::Session::elementSubmit): Deleted.
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::elementSubmit): Deleted.
        * WebDriverService.h:

2017-11-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Move JSONValues to WTF and convert uses of InspectorValues.h to JSONValues.h
        https://bugs.webkit.org/show_bug.cgi?id=173793

        Reviewed by Joseph Pecoraro.

        * CMakeLists.txt:
        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult):
        * CommandResult.h:
        (WebDriver::CommandResult::success):
        (WebDriver::CommandResult::fail):
        (WebDriver::CommandResult::result const):
        (WebDriver::CommandResult::setAdditionalErrorData):
        (WebDriver::CommandResult::additionalErrorData const):
        * Session.cpp:
        (WebDriver::firstWindowHandleInResult):
        (WebDriver::Session::handleUserPrompts):
        (WebDriver::Session::reportUnexpectedAlertOpen):
        (WebDriver::Session::go):
        (WebDriver::Session::getCurrentURL):
        (WebDriver::Session::back):
        (WebDriver::Session::forward):
        (WebDriver::Session::refresh):
        (WebDriver::Session::getTitle):
        (WebDriver::Session::getWindowHandle):
        (WebDriver::Session::closeTopLevelBrowsingContext):
        (WebDriver::Session::switchToWindow):
        (WebDriver::Session::getWindowHandles):
        (WebDriver::Session::switchToFrame):
        (WebDriver::Session::switchToParentFrame):
        (WebDriver::Session::getToplevelBrowsingContextRect):
        (WebDriver::Session::moveToplevelBrowsingContextWindow):
        (WebDriver::Session::resizeToplevelBrowsingContextWindow):
        (WebDriver::Session::createElement):
        (WebDriver::Session::extractElement):
        (WebDriver::Session::extractElementID):
        (WebDriver::Session::computeElementLayout):
        (WebDriver::Session::findElements):
        (WebDriver::Session::isElementSelected):
        (WebDriver::Session::getElementText):
        (WebDriver::Session::getElementTagName):
        (WebDriver::Session::getElementRect):
        (WebDriver::Session::isElementEnabled):
        (WebDriver::Session::isElementDisplayed):
        (WebDriver::Session::getElementAttribute):
        (WebDriver::Session::waitForNavigationToComplete):
        (WebDriver::Session::selectOptionElement):
        (WebDriver::Session::elementClick):
        (WebDriver::Session::elementClear):
        (WebDriver::Session::elementSendKeys):
        (WebDriver::Session::elementSubmit):
        (WebDriver::Session::handleScriptResult):
        (WebDriver::Session::executeScript):
        (WebDriver::Session::performMouseInteraction):
        (WebDriver::Session::performKeyboardInteractions):
        (WebDriver::parseAutomationCookie):
        (WebDriver::builtAutomationCookie):
        (WebDriver::serializeCookie):
        (WebDriver::Session::getAllCookies):
        (WebDriver::Session::getNamedCookie):
        (WebDriver::Session::addCookie):
        (WebDriver::Session::deleteCookie):
        (WebDriver::Session::deleteAllCookies):
        (WebDriver::Session::dismissAlert):
        (WebDriver::Session::acceptAlert):
        (WebDriver::Session::getAlertText):
        (WebDriver::Session::sendAlertText):
        (WebDriver::Session::takeScreenshot):
        * Session.h:
        * SessionHost.cpp:
        (WebDriver::SessionHost::sendCommandToBackend):
        (WebDriver::SessionHost::dispatchMessage):
        * SessionHost.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::handleRequest):
        (WebDriver::WebDriverService::sendResponse const):
        (WebDriver::deserializeTimeouts):
        (WebDriver::WebDriverService::parseCapabilities const):
        (WebDriver::WebDriverService::findSessionOrCompleteWithError):
        (WebDriver::WebDriverService::validatedCapabilities const):
        (WebDriver::WebDriverService::mergeCapabilities const):
        (WebDriver::WebDriverService::matchCapabilities const):
        (WebDriver::WebDriverService::processCapabilities const):
        (WebDriver::WebDriverService::newSession):
        (WebDriver::WebDriverService::deleteSession):
        (WebDriver::WebDriverService::setTimeouts):
        (WebDriver::WebDriverService::go):
        (WebDriver::WebDriverService::getCurrentURL):
        (WebDriver::WebDriverService::back):
        (WebDriver::WebDriverService::forward):
        (WebDriver::WebDriverService::refresh):
        (WebDriver::WebDriverService::getTitle):
        (WebDriver::WebDriverService::getWindowHandle):
        (WebDriver::WebDriverService::getWindowRect):
        (WebDriver::valueAsNumberInRange):
        (WebDriver::WebDriverService::setWindowRect):
        (WebDriver::WebDriverService::closeWindow):
        (WebDriver::WebDriverService::switchToWindow):
        (WebDriver::WebDriverService::getWindowHandles):
        (WebDriver::WebDriverService::switchToFrame):
        (WebDriver::WebDriverService::switchToParentFrame):
        (WebDriver::findElementOrCompleteWithError):
        (WebDriver::findStrategyAndSelectorOrCompleteWithError):
        (WebDriver::WebDriverService::findElement):
        (WebDriver::WebDriverService::findElements):
        (WebDriver::WebDriverService::findElementFromElement):
        (WebDriver::WebDriverService::findElementsFromElement):
        (WebDriver::WebDriverService::isElementSelected):
        (WebDriver::WebDriverService::getElementAttribute):
        (WebDriver::WebDriverService::getElementText):
        (WebDriver::WebDriverService::getElementTagName):
        (WebDriver::WebDriverService::getElementRect):
        (WebDriver::WebDriverService::isElementEnabled):
        (WebDriver::WebDriverService::isElementDisplayed):
        (WebDriver::WebDriverService::elementClick):
        (WebDriver::WebDriverService::elementClear):
        (WebDriver::WebDriverService::elementSendKeys):
        (WebDriver::WebDriverService::elementSubmit):
        (WebDriver::findScriptAndArgumentsOrCompleteWithError):
        (WebDriver::WebDriverService::executeScript):
        (WebDriver::WebDriverService::executeAsyncScript):
        (WebDriver::WebDriverService::getAllCookies):
        (WebDriver::WebDriverService::getNamedCookie):
        (WebDriver::deserializeCookie):
        (WebDriver::WebDriverService::addCookie):
        (WebDriver::WebDriverService::deleteCookie):
        (WebDriver::WebDriverService::deleteAllCookies):
        (WebDriver::WebDriverService::dismissAlert):
        (WebDriver::WebDriverService::acceptAlert):
        (WebDriver::WebDriverService::getAlertText):
        (WebDriver::WebDriverService::sendAlertText):
        (WebDriver::WebDriverService::takeScreenshot):
        (WebDriver::WebDriverService::takeElementScreenshot):
        * WebDriverService.h:
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const):
        (WebDriver::WebDriverService::platformMatchCapability const):
        (WebDriver::WebDriverService::platformParseCapabilities const):
        * wpe/WebDriverServiceWPE.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const):
        (WebDriver::WebDriverService::platformMatchCapability const):
        (WebDriver::WebDriverService::platformParseCapabilities const):

2017-11-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] WebDriver: stop making mandatory to provide a browser path if webkitgtk:browserOptions is present in capabilities
        https://bugs.webkit.org/show_bug.cgi?id=180012

        Reviewed by Carlos Alberto Lopez Perez.

        Everything should be optional. We might want to disable overlay scrollbars, but still using the default browser,
        for example, as I'm doing when running the selenium tests. We might also want to provide additional browser
        arguments, but using the default browser.

        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const): Do not consider invalid to not provide a
        browser binary when webkitgtk:browserOptions is present.
        (WebDriver::WebDriverService::platformParseCapabilities const): Override default capabilities with the ones
        provided.

2017-11-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: Implement get active element command
        https://bugs.webkit.org/show_bug.cgi?id=180001

        Reviewed by Brian Burg.

        12.6 Get Active Element
        https://w3c.github.io/webdriver/webdriver-spec.html#get-active-element

        Fixes imported/w3c/webdriver/tests/element_retrieval/get_active_element.py.

        * Session.cpp:
        (WebDriver::Session::getActiveElement):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::getActiveElement):
        * WebDriverService.h:

2017-11-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: do not try to parse http body if method is not POST
        https://bugs.webkit.org/show_bug.cgi?id=179918

        Reviewed by Darin Adler.

        As said in the spec:

          5. If request’s method is POST:

            1. Let parse result be the result of parsing as JSON with request’s body as the argument. If this process
               throws an exception, return an error with error code invalid argument and jump back to step 1 in this
               overall algorithm.

            2. If parse result is not an Object, send an error with error code invalid argument and jump back to step 1
               in this overall algorithm.

            Otherwise, let parameters be parse result.

          Otherwise, let parameters be null.

        6.3 Processing Model
        https://w3c.github.io/webdriver/webdriver-spec.html#processing-model

        Now, w3c tests are sending null as body of delete session command (it used to be just empty), making it fail
        with invalid argument error.

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::findCommand):
        (WebDriver::WebDriverService::handleRequest):
        * WebDriverService.h:

2017-11-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: crash in Session::computeElementLayout when called without a current browsing context
        https://bugs.webkit.org/show_bug.cgi?id=179917

        Reviewed by Darin Adler.

        In the case of computeElementLayout message, the frameHandle parameter is not optional, but we still need to
        provide a valid value (empty string means the default frame) when m_currentBrowsingContext is std::nullopt. The
        same applies to selectOptionElement.

        * Session.cpp:
        (WebDriver::Session::computeElementLayout):
        (WebDriver::Session::selectOptionElement):

2017-11-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add initial support for WebDriver
        https://bugs.webkit.org/show_bug.cgi?id=179727

        Reviewed by Michael Catanzaro.

        Add WPE implementation for platform-specific methods. Move the version handling to a common file
        WebDriverServiceGLib.cpp.

        * Capabilities.h:
        * PlatformGTK.cmake:
        * PlatformWPE.cmake:
        * glib/WebDriverServiceGLib.cpp: Added.
        (WebDriver::parseVersion):
        (WebDriver::WebDriverService::platformCompareBrowserVersions):
        * gtk/WebDriverServiceGtk.cpp:
        * wpe/WebDriverServiceWPE.cpp: Copied from Source/WebDriver/gtk/WebDriverServiceGtk.cpp.
        (WebDriver::WebDriverService::platformCapabilities):
        (WebDriver::WebDriverService::platformValidateCapability const):
        (WebDriver::WebDriverService::platformMatchCapability const):
        (WebDriver::WebDriverService::platformParseCapabilities const):

2017-11-15  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r224863.

        Introduced LayoutTest crashes on iOS Simulator.

        Reverted changeset:

        "Move JSONValues to WTF and convert uses of InspectorValues.h
        to JSONValues.h"
        https://bugs.webkit.org/show_bug.cgi?id=173793
        https://trac.webkit.org/changeset/224863

2017-11-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Move JSONValues to WTF and convert uses of InspectorValues.h to JSONValues.h
        https://bugs.webkit.org/show_bug.cgi?id=173793

        Reviewed by Brian Burg.

        * CMakeLists.txt:
        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult):
        * CommandResult.h:
        (WebDriver::CommandResult::success):
        (WebDriver::CommandResult::fail):
        (WebDriver::CommandResult::result const):
        (WebDriver::CommandResult::setAdditionalErrorData):
        (WebDriver::CommandResult::additionalErrorData const):
        * Session.cpp:
        (WebDriver::firstWindowHandleInResult):
        (WebDriver::Session::handleUserPrompts):
        (WebDriver::Session::reportUnexpectedAlertOpen):
        (WebDriver::Session::go):
        (WebDriver::Session::getCurrentURL):
        (WebDriver::Session::back):
        (WebDriver::Session::forward):
        (WebDriver::Session::refresh):
        (WebDriver::Session::getTitle):
        (WebDriver::Session::getWindowHandle):
        (WebDriver::Session::closeTopLevelBrowsingContext):
        (WebDriver::Session::switchToWindow):
        (WebDriver::Session::getWindowHandles):
        (WebDriver::Session::switchToFrame):
        (WebDriver::Session::switchToParentFrame):
        (WebDriver::Session::getToplevelBrowsingContextRect):
        (WebDriver::Session::moveToplevelBrowsingContextWindow):
        (WebDriver::Session::resizeToplevelBrowsingContextWindow):
        (WebDriver::Session::createElement):
        (WebDriver::Session::extractElement):
        (WebDriver::Session::extractElementID):
        (WebDriver::Session::computeElementLayout):
        (WebDriver::Session::findElements):
        (WebDriver::Session::isElementSelected):
        (WebDriver::Session::getElementText):
        (WebDriver::Session::getElementTagName):
        (WebDriver::Session::getElementRect):
        (WebDriver::Session::isElementEnabled):
        (WebDriver::Session::isElementDisplayed):
        (WebDriver::Session::getElementAttribute):
        (WebDriver::Session::waitForNavigationToComplete):
        (WebDriver::Session::selectOptionElement):
        (WebDriver::Session::elementClick):
        (WebDriver::Session::elementClear):
        (WebDriver::Session::elementSendKeys):
        (WebDriver::Session::elementSubmit):
        (WebDriver::Session::handleScriptResult):
        (WebDriver::Session::executeScript):
        (WebDriver::Session::performMouseInteraction):
        (WebDriver::Session::performKeyboardInteractions):
        (WebDriver::parseAutomationCookie):
        (WebDriver::builtAutomationCookie):
        (WebDriver::serializeCookie):
        (WebDriver::Session::getAllCookies):
        (WebDriver::Session::getNamedCookie):
        (WebDriver::Session::addCookie):
        (WebDriver::Session::deleteCookie):
        (WebDriver::Session::deleteAllCookies):
        (WebDriver::Session::dismissAlert):
        (WebDriver::Session::acceptAlert):
        (WebDriver::Session::getAlertText):
        (WebDriver::Session::sendAlertText):
        (WebDriver::Session::takeScreenshot):
        * Session.h:
        * SessionHost.cpp:
        (WebDriver::SessionHost::sendCommandToBackend):
        (WebDriver::SessionHost::dispatchMessage):
        * SessionHost.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::handleRequest):
        (WebDriver::WebDriverService::sendResponse const):
        (WebDriver::deserializeTimeouts):
        (WebDriver::WebDriverService::parseCapabilities const):
        (WebDriver::WebDriverService::findSessionOrCompleteWithError):
        (WebDriver::WebDriverService::validatedCapabilities const):
        (WebDriver::WebDriverService::mergeCapabilities const):
        (WebDriver::WebDriverService::matchCapabilities const):
        (WebDriver::WebDriverService::processCapabilities const):
        (WebDriver::WebDriverService::newSession):
        (WebDriver::WebDriverService::deleteSession):
        (WebDriver::WebDriverService::setTimeouts):
        (WebDriver::WebDriverService::go):
        (WebDriver::WebDriverService::getCurrentURL):
        (WebDriver::WebDriverService::back):
        (WebDriver::WebDriverService::forward):
        (WebDriver::WebDriverService::refresh):
        (WebDriver::WebDriverService::getTitle):
        (WebDriver::WebDriverService::getWindowHandle):
        (WebDriver::WebDriverService::getWindowRect):
        (WebDriver::valueAsNumberInRange):
        (WebDriver::WebDriverService::setWindowRect):
        (WebDriver::WebDriverService::closeWindow):
        (WebDriver::WebDriverService::switchToWindow):
        (WebDriver::WebDriverService::getWindowHandles):
        (WebDriver::WebDriverService::switchToFrame):
        (WebDriver::WebDriverService::switchToParentFrame):
        (WebDriver::findElementOrCompleteWithError):
        (WebDriver::findStrategyAndSelectorOrCompleteWithError):
        (WebDriver::WebDriverService::findElement):
        (WebDriver::WebDriverService::findElements):
        (WebDriver::WebDriverService::findElementFromElement):
        (WebDriver::WebDriverService::findElementsFromElement):
        (WebDriver::WebDriverService::isElementSelected):
        (WebDriver::WebDriverService::getElementAttribute):
        (WebDriver::WebDriverService::getElementText):
        (WebDriver::WebDriverService::getElementTagName):
        (WebDriver::WebDriverService::getElementRect):
        (WebDriver::WebDriverService::isElementEnabled):
        (WebDriver::WebDriverService::isElementDisplayed):
        (WebDriver::WebDriverService::elementClick):
        (WebDriver::WebDriverService::elementClear):
        (WebDriver::WebDriverService::elementSendKeys):
        (WebDriver::WebDriverService::elementSubmit):
        (WebDriver::findScriptAndArgumentsOrCompleteWithError):
        (WebDriver::WebDriverService::executeScript):
        (WebDriver::WebDriverService::executeAsyncScript):
        (WebDriver::WebDriverService::getAllCookies):
        (WebDriver::WebDriverService::getNamedCookie):
        (WebDriver::deserializeCookie):
        (WebDriver::WebDriverService::addCookie):
        (WebDriver::WebDriverService::deleteCookie):
        (WebDriver::WebDriverService::deleteAllCookies):
        (WebDriver::WebDriverService::dismissAlert):
        (WebDriver::WebDriverService::acceptAlert):
        (WebDriver::WebDriverService::getAlertText):
        (WebDriver::WebDriverService::sendAlertText):
        (WebDriver::WebDriverService::takeScreenshot):
        (WebDriver::WebDriverService::takeElementScreenshot):
        * WebDriverService.h:
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformValidateCapability const):
        (WebDriver::WebDriverService::platformMatchCapability const):
        (WebDriver::WebDriverService::platformParseCapabilities const):

2017-11-07  Brian Burg  <bburg@apple.com>

        Web Automation: inViewCenterPoint should not include topContentInset when computed in viewport coordinates
        https://bugs.webkit.org/show_bug.cgi?id=179129
        <rdar://problem/35297038>

        Reviewed by Simon Fraser.

        Adjust code to use the proper coordinate system when requesting element layout.

        * Session.cpp:
        (WebDriver::Session::computeElementLayout):

2017-11-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: WebDriverService::matchCapabilities should follow the spec
        https://bugs.webkit.org/show_bug.cgi?id=179371

        Reviewed by Brian Burg.

        The returned object should contain all the entries mentioned in the spec, not only the ones already present in
        the passed in capabilities object.

        7.2 Processing Capabilities
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-matching-capabilities

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::matchCapabilities const):
        (WebDriver::WebDriverService::processCapabilities const):
        * WebDriverService.h:

2017-11-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: capabilities with null value shouldn't be added to the validated capabilities object
        https://bugs.webkit.org/show_bug.cgi?id=179369

        Reviewed by Brian Burg.

        "4. If deserialized is not null, set a property on result with name name and value deserialized."

        7.2 Processing Capabilities
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-validate-capabilities

        Fixes: imported/w3c/webdriver/tests/sessions/new_session/create_firstMatch.py::test_valid[platformName-None]

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::validatedCapabilities const):

2017-10-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: unknown capabilities should produce an InvalidArgument error when validating capabilities
        https://bugs.webkit.org/show_bug.cgi?id=178868

        Reviewed by Brian Burg.

        7.2 Processing Capabilities
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-validate-capabilities

        Fixes: imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py::test_invalid_extensions

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::validatedCapabilities const):

2017-10-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: deserializeTimeouts should fail if the value is not integer
        https://bugs.webkit.org/show_bug.cgi?id=178866

        Reviewed by Brian Burg.

        If value is not an integer, or it is less than 0 or greater than 2^64 – 1, return error with error code invalid
        argument.
        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-deserialize-as-a-timeout

        Fixes: imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py::test_invalid_values[timeouts-value59-body0]
               imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py::test_invalid_values[timeouts-value59-body1]

        * WebDriverService.cpp:
        (WebDriver::deserializeTimeouts):

2017-10-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: failing to process capabilities should produce InvalidArgument error not SessionNotCreated
        https://bugs.webkit.org/show_bug.cgi?id=178864

        Reviewed by Brian Burg.

        Fixes most of the tests in imported/w3c/webdriver/tests/sessions/new_session/invalid_capabilities.py.

        7.2 Processing Capabilities
        https://w3c.github.io/webdriver/webdriver-spec.html#processing-capabilities

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::processCapabilities const):

2017-10-10  Sam Weinig  <sam@webkit.org>

        Replace copyKeysToVector/copyValuesToVector with copyToVector(map.keys())/copyToVector(map.values())
        https://bugs.webkit.org/show_bug.cgi?id=178102

        Reviewed by Tim Horton.

        * SessionHost.cpp:
        (WebDriver::SessionHost::inspectorDisconnected):

2017-10-02  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: HTTP status code is not correct for some of the errors
        https://bugs.webkit.org/show_bug.cgi?id=177354

        Reviewed by Brian Burg.

        I think this changed in the spec at some point. The thing is that no such alert, frame and window and stale
        element reference errors should return 404 instead of 400.

        https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors

        * CommandResult.cpp:
        (WebDriver::CommandResult::httpStatusCode const):

2017-09-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: Implement commands to get and set the window rect
        https://bugs.webkit.org/show_bug.cgi?id=177134

        Reviewed by Brian Burg.

        We are currently implementing the selenium legacy ones, we should implement the w3c ones instead.

        https://w3c.github.io/webdriver/webdriver-spec.html#resizing-and-positioning-windows

        * Session.cpp:
        (WebDriver::Session::getToplevelBrowsingContextRect): Helper to get the window rect. This is used by both get
        and set window rect commands.
        (WebDriver::Session::moveToplevelBrowsingContextwindow): Helper to ask automation to move the window.
        (WebDriver::Session::resizeToplevelBrowsingContextwindow): Helper to ask automation to resize the window.
        (WebDriver::Session::getWindowRect): Handle prompts and then call getToplevelBrowsingContextRect().
        (WebDriver::Session::setWindowRect): Handle prompts and then move and resize the window according to the given
        parameters and finish the operation calling getToplevelBrowsingContextRect().
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::getWindowRect): Ask the session to get the window rect.
        (WebDriver::valueAsNumberInRange): Helper to check a value is a valid number in the given range.
        (WebDriver::WebDriverService::setWindowRect): Get and check size and position from parameters and then ask the
        session to set the window rect.
        * WebDriverService.h:

2017-09-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: wrong response in case of errors
        https://bugs.webkit.org/show_bug.cgi?id=177127

        Reviewed by Brian Burg.

        I misunderstood the spec when I implemented this, so we either return a "value" key with the result in case of
        success or the error object as the body in case of error. We should always add a "value" key to the body and set
        it with either the result or the error object.

        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-send-an-error

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::sendResponse const):

2017-09-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: wrong key name for capabilities in new session response
        https://bugs.webkit.org/show_bug.cgi?id=177074

        Reviewed by Brian Burg.

        We are using "value", it should be "capabilities".
        https://w3c.github.io/webdriver/webdriver-spec.html#new-session

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::newSession):

2017-09-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: HTTP responses should include Cache-Control header with no-cache value
        https://bugs.webkit.org/show_bug.cgi?id=177073

        Reviewed by Sergio Villar Senin.

        6.3 Processing Model.
        Set the response’s header with name and value with the following values:

        Content-Type "application/json; charset=utf-8"
        Cache-Control "no-cache"

        https://w3c.github.io/webdriver/webdriver-spec.html#dfn-send-a-response

        We were setting the Content-Type, but not the Cache-Control. This is checked by all WPT WebDriver tests.

        * soup/HTTPServerSoup.cpp:
        (WebDriver::HTTPServer::listen): Add Cache-Control header.

2017-09-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Rename WebKit target to WebKitLegacy and rename WebKit2 target to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=174558

        Reviewed by Alex Christensen.

        * CMakeLists.txt:

2017-09-15  JF Bastien  <jfbastien@apple.com>

        WTF: use Forward.h when appropriate instead of Vector.h
        https://bugs.webkit.org/show_bug.cgi?id=176984

        Reviewed by Saam Barati.

        There's no need to include Vector.h when Forward.h will suffice. All we need is to move the template default parameters from Vector, and then the forward declaration can be used in so many new places: if a header only takes Vector by reference, rvalue reference, pointer, returns any of these, or has them as members then the header doesn't need to see the definition because the declaration will suffice.

        * Session.h:

2017-09-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: ensure we close all windows handles when closing the session
        https://bugs.webkit.org/show_bug.cgi?id=176508

        Reviewed by Brian Burg.

        The spec says that when closing the session all top level browsing contexts should be closed. We are currently
        checking if we have an active top level browsing context and then we try to close it before trying with the
        rest. It can happen that we are in an inconsistent state, for example if the current top level browsing context
        has been closed by JavaScript or another action and the user didn't switch to another one before closing the
        session. In such case, closing the session will fail with NoSuchwindow and any other window open will not be
        closed. It's safer to always ask for all window handles and close them, which is what the spec says too.

        * Session.cpp:
        (WebDriver::firstWindowHandleInResult): Helper class to get the first window handle in the result array.
        (WebDriver::Session::closeAllToplevelBrowsingContexts): Use firstWindowHandleInResult().
        (WebDriver::Session::close): Close the current top level browsing context and get all window handles to close
        them all if needed.

2017-08-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement screen capture commands
        https://bugs.webkit.org/show_bug.cgi?id=174615

        Reviewed by Brian Burg.

        Implement takeScreenshot and takeElementScreenshot commands.

        19. Screen Capture.
        https://w3c.github.io/webdriver/webdriver-spec.html#screen-capture

        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult): Handle ScreenshotError protocol error.
        (WebDriver::CommandResult::httpStatusCode const): Add UnableToCaptureScreen.
        (WebDriver::CommandResult::errorString const): Ditto.
        * CommandResult.h:
        * Session.cpp:
        (WebDriver::Session::takeScreenshot):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::takeScreenshot):
        (WebDriver::WebDriverService::takeElementScreenshot):
        * WebDriverService.h:

2017-08-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement cookies commands
        https://bugs.webkit.org/show_bug.cgi?id=174613

        Reviewed by Brian Burg.

        Add cookies commands.

        16. Cookies.
        https://w3c.github.io/webdriver/webdriver-spec.html#cookies

        * CommandResult.cpp:
        (WebDriver::CommandResult::httpStatusCode const): Add NoSuchCookie error.
        (WebDriver::CommandResult::errorString const): Ditto.
        * CommandResult.h:
        * Session.cpp:
        (WebDriver::parseAutomationCookie): Parse JSON cookie object returned by automation and convert it to a Cookie struct.
        (WebDriver::builtAutomationCookie): Build a JSON cookie object as expected by automation from a Cookie struct.
        (WebDriver::serializeCookie): Serialize a Cookie struct into a JSON cookie object according to the WebDriver spec.
        (WebDriver::Session::getAllCookies):
        (WebDriver::Session::getNamedCookie):
        (WebDriver::Session::addCookie):
        (WebDriver::Session::deleteCookie):
        (WebDriver::Session::deleteAllCookies):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::getAllCookies):
        (WebDriver::WebDriverService::getNamedCookie):
        (WebDriver::deserializeCookie):
        (WebDriver::WebDriverService::addCookie):
        (WebDriver::WebDriverService::deleteCookie):
        (WebDriver::WebDriverService::deleteAllCookies):
        * WebDriverService.h:

2017-07-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: fix return value of close window command
        https://bugs.webkit.org/show_bug.cgi?id=174861

        Reviewed by Brian Burg.

        We are currently returning null, but we should return the list of window handles, and try to close the session
        if there aren't more window handles.

        10.2 Close Window
        https://w3c.github.io/webdriver/webdriver-spec.html#close-window

        3. If there are no more open top-level browsing contexts, then try to close the session.
        4. Return the result of running the remote end steps for the Get Window Handles command.

        * Session.cpp:
        (WebDriver::Session::closeAllToplevelBrowsingContexts): Helper function to close the given toplevel browsing
        context and the next one if there are more.
        (WebDriver::Session::close): Call closeAllToplevelBrowsingContexts() to delete all toplevel browsing contexts of
        the session.
        (WebDriver::Session::closeTopLevelBrowsingContext): Close the given toplevel browsing context and call
        getWindowHandles() when done.
        (WebDriver::Session::closeWindow): Call closeTopLevelBrowsingContext() passing the current toplevel browsing context.
        (WebDriver::Session::getWindowHandles): Remove the early return, this command doesn't depend on a current
        toplevel browsing context.
        * Session.h:
        * SessionHost.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::run): Disconnect the server when main loop quits.
        (WebDriver::WebDriverService::deleteSession): Do not fail if the given session is not active.
        (WebDriver::WebDriverService::closeWindow): Remove the session if the closed window was the last one.
        * WebDriverService.h: Remove unused quit() method.
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::isConnected): Return whether host is connected to a browser instance.
        (WebDriver::SessionHost::dbusConnectionClosedCallback): Delete m_browser.

2017-08-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: handle click events on option elements
        https://bugs.webkit.org/show_bug.cgi?id=174710
        <rdar://problem/33459305>

        Reviewed by Brian Burg.

        Option elements are considered as a special case by the specification. When clicking an option element, we
        should get its container and use it when scrolling into view and calculating in-view center point instead of the
        option element itself. Then, we should not emulate a click, but change the selected status of the option element
        like if it were done by a user action, firing the corresponding events. Now we check whether the element is an
        option to call selectOptionElement() or performMouseInteraction().

        This fixes more than 20 selenium tests.

        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult): Handle ElementNotSelectable protocol error.
        (WebDriver::CommandResult::httpStatusCode const): Add ElementNotSelectable.
        (WebDriver::CommandResult::errorString const): Ditto.
        * CommandResult.h:
        * Session.cpp:
        (WebDriver::Session::selectOptionElement): Ask automation to select the given option element.
        (WebDriver::Session::elementClick): Call selectOptionElement() or performMouseInteraction() depending on whether
        the element is an option or not.
        * Session.h:

2017-08-11  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        Fix build warning in WebDriverService.h
        https://bugs.webkit.org/show_bug.cgi?id=166682

        Unreviewed build fix.

        * WebDriverService.h: Fixes the warning: class 'Capabilities' was previously declared as a struct [-Wmismatched-tags]

2017-08-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix Ubuntu LTS build
        https://bugs.webkit.org/show_bug.cgi?id=174490

        * glib/SessionHostGlib.cpp:

2017-08-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Properly test if compiler supports compiler flags
        https://bugs.webkit.org/show_bug.cgi?id=174490

        Reviewed by Konstantin Tokarev.

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::run):
        * glib/SessionHostGlib.cpp:

2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        Web Automation: setUserInputForCurrentJavaScriptPrompt should fail if current dialog is not a prompt
        https://bugs.webkit.org/show_bug.cgi?id=175261

        Reviewed by Brian Burg.

        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult): Handle ElementNotInteractable protocol error.

2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement unhandled prompt behavior
        https://bugs.webkit.org/show_bug.cgi?id=175184

        Reviewed by Brian Burg.

        Handle user prompts before running some of the commands according to the specification.

        * Capabilities.h: Add UnhandledPromptBehavior capability.
        * CommandResult.cpp:
        (WebDriver::CommandResult::httpStatusCode const): Add UnexpectedAlertOpen error.
        (WebDriver::CommandResult::errorString const): Ditto.
        * CommandResult.h:
        (WebDriver::CommandResult::setAdditonalErrorData): New method to set an additional data object that will be sent
        as part of the result error message.
        (WebDriver::CommandResult::additionalErrorData const): Return the additional data object.
        * Session.cpp:
        (WebDriver::Session::handleUserPrompts): Check if there's an active JavaScript dialog and deal with it depeding
        on the unhandled prompt behavior.
        (WebDriver::Session::reportUnexpectedAlertOpen): Generate an error message with UnexpectedAlertOpen error and
        including the alert text as additional error data.
        (WebDriver::Session::go): Handle user prompts before running the command.
        (WebDriver::Session::getCurrentURL): Ditto.
        (WebDriver::Session::back): Ditto.
        (WebDriver::Session::forward): Ditto.
        (WebDriver::Session::refresh): Ditto.
        (WebDriver::Session::getTitle): Ditto.
        (WebDriver::Session::closeWindow): Ditto.
        (WebDriver::Session::switchToFrame): Ditto.
        (WebDriver::Session::switchToParentFrame): Ditto.
        (WebDriver::Session::isElementSelected): Ditto.
        (WebDriver::Session::getElementText): Ditto.
        (WebDriver::Session::getElementTagName): Ditto.
        (WebDriver::Session::getElementRect): Ditto.
        (WebDriver::Session::isElementEnabled): Ditto.
        (WebDriver::Session::isElementDisplayed): Ditto.
        (WebDriver::Session::getElementAttribute): Ditto.
        (WebDriver::Session::elementSendKeys): Ditto.
        (WebDriver::Session::elementSubmit): Ditto.
        (WebDriver::Session::executeScript): Ditto.
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::sendResponse const): Send data object as part of the result error message if present.
        (WebDriver::deserializeUnhandledPromptBehavior):
        (WebDriver::WebDriverService::parseCapabilities const):
        (WebDriver::WebDriverService::validatedCapabilities const):
        (WebDriver::WebDriverService::newSession):

2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement user prompt commands
        https://bugs.webkit.org/show_bug.cgi?id=174614

        Reviewed by Brian Burg.

        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult): Handle NoJavaScriptDialog protocol error.
        (WebDriver::CommandResult::httpStatusCode const): Add NoSuchAlert.
        (WebDriver::CommandResult::errorString const): Ditto.
        * CommandResult.h:
        * Session.cpp:
        (WebDriver::Session::dismissAlert):
        (WebDriver::Session::acceptAlert):
        (WebDriver::Session::getAlertText):
        (WebDriver::Session::sendAlertText):
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::dismissAlert):
        (WebDriver::WebDriverService::acceptAlert):
        (WebDriver::WebDriverService::getAlertText):
        (WebDriver::WebDriverService::sendAlertText):
        * WebDriverService.h:

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to provide browser information required by automation
        https://bugs.webkit.org/show_bug.cgi?id=175130

        Reviewed by Brian Burg.

        * Session.cpp:
        (WebDriver::Session::createTopLevelBrowsingContext): Check if startAutomationSession and complete the command
        with error in that case.
        * SessionHost.h:
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::matchCapabilities): Match the capabilities that are known only after the browser has
        been launched.
        (WebDriver::SessionHost::startAutomationSession): Handle the StartAutomationSession response, extracting the
        capabilities and calling matchCapabilities() to match them.
        (WebDriver::SessionHost::setTargetList): Return early if the session was rejected before due to invalid
        capabilities.

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: Implement page load strategy
        https://bugs.webkit.org/show_bug.cgi?id=175183

        Reviewed by Brian Burg.

        Validate and parse page load strategy when processing capabilities.

        * Capabilities.h:
        * Session.cpp:
        (WebDriver::Session::pageLoadStrategyString const): Helper to get the page load strategy as a String to be
        passed to Automation.
        (WebDriver::Session::go): Pass page load strategy if present.
        (WebDriver::Session::back): Ditto.
        (WebDriver::Session::forward): Ditto.
        (WebDriver::Session::refresh): Ditto.
        (WebDriver::Session::waitForNavigationToComplete): Ditto.
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::deserializePageLoadStrategy):
        (WebDriver::WebDriverService::parseCapabilities const):
        (WebDriver::WebDriverService::validatedCapabilities const):
        (WebDriver::WebDriverService::newSession):

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Try to fix build with clang after r220315.

        * WebDriverService.cpp:
        (WebDriver::WebDriverService::validatedCapabilities const):
        (WebDriver::WebDriverService::mergeCapabilities const):

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: properly handle capabilities and process firstMatch too
        https://bugs.webkit.org/show_bug.cgi?id=174618

        Reviewed by Brian Burg.

        Implement processing of capabilities following the spec. This patch adds validation, merging and matching of
        capabilities.

        7.2 Processing Capabilities.
        https://w3c.github.io/webdriver/webdriver-spec.html#processing-capabilities

        * Capabilities.h: Make all capabilities optional and move Timeouts struct here.
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::deserializeTimeouts): Helper to extract timeouts from JSON object.
        (WebDriver::WebDriverService::parseCapabilities const): At this point capabilities have already been validated,
        so we just need to get them without checking the value type.
        (WebDriver::WebDriverService::validatedCapabilities const): Validate the given capabilities, ensuring types of
        values are the expected one.
        (WebDriver::WebDriverService::mergeCapabilities const): Merge the alwaysMatch and firstMatch capabilities into a
        single object ensuring that the same capability is not in both.
        (WebDriver::WebDriverService::matchCapabilities const): Try to match the merged capabilities againt the platform
        expected capabilities.
        (WebDriver::WebDriverService::processCapabilities const): Validate, merge and match the capabilities.
        (WebDriver::WebDriverService::newSession): Use processCapabilities(). Also initialize the timeouts from
        capabilities and add all capabilities to the command result.
        (WebDriver::WebDriverService::setTimeouts): Use deserializeTimeouts().
        * WebDriverService.h:
        * glib/SessionHostGlib.cpp:
        (WebDriver::SessionHost::launchBrowser): Updated to properly access the capabilities that are now optional.
        (WebDriver::SessionHost::startAutomationSession): Add FIXME.
        * gtk/WebDriverServiceGtk.cpp:
        (WebDriver::WebDriverService::platformCapabilities): Return the Capabilities with the known required ones filled.
        (WebDriver::WebDriverService::platformValidateCapability const): Validate webkitgtk:browserOptions.
        (WebDriver::WebDriverService::platformMatchCapability const): This does nothing for now.
        (WebDriver::WebDriverService::platformCompareBrowserVersions): Compare the given browser versions.
        (WebDriver::WebDriverService::platformParseCapabilities const): Updated now that capabilites have already been
        validated before.

2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: use in-view center point for clicks instead of bounding box center point
        https://bugs.webkit.org/show_bug.cgi?id=174863

        Reviewed by Simon Fraser.

        The center of the element bounding box is not always part of the element, like in multiline links, for example.

        11.1 Element Interactability.
        https://www.w3.org/TR/webdriver/#dfn-in-view-center-point

        * CommandResult.cpp:
        (WebDriver::CommandResult::httpStatusCode): Add ElementClickIntercepted and ElementNotInteractable errors.
        (WebDriver::CommandResult::errorString): Ditto.
        * CommandResult.h: Ditto.
        * Session.cpp:
        (WebDriver::Session::computeElementLayout): Get the in-view center point and isObscured from the result too.
        (WebDriver::Session::getElementRect): Ignore in-view center point and isObscured.
        (WebDriver::Session::elementClick): Fail in case the element is not interactable or is obscured.
        * Session.h:

2017-08-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] WebKitFS.cmake depends on options set in Option cmake files that are included later
        https://bugs.webkit.org/show_bug.cgi?id=174855

        Reviewed by Carlos Garcia Campos.

        Don't create derived sources directory here anymore.

        * PlatformGTK.cmake:

2017-07-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK distcheck.

        Ensure WebDriver derived sources directory is created, WebKitFS.cmake is useless for this.

        * PlatformGTK.cmake:

2017-07-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: rename m_browsingContext as m_currentBrowsingContext in Session
        https://bugs.webkit.org/show_bug.cgi?id=174783

        Reviewed by Brian Burg.

        We have m_toplevelBrowsingContext and m_browsingContext, which is confusing. m_browsingContext is actually the
        current browsing context, and the spec also refers to it as the current browsing context, so better use
        m_currentBrowsingContext.

        * Session.cpp:
        (WebDriver::Session::switchToTopLevelBrowsingContext):
        (WebDriver::Session::switchToBrowsingContext):
        (WebDriver::Session::switchToFrame):
        (WebDriver::Session::switchToParentFrame):
        (WebDriver::Session::computeElementLayout):
        (WebDriver::Session::findElements):
        (WebDriver::Session::isElementSelected):
        (WebDriver::Session::getElementText):
        (WebDriver::Session::getElementTagName):
        (WebDriver::Session::isElementEnabled):
        (WebDriver::Session::isElementDisplayed):
        (WebDriver::Session::getElementAttribute):
        (WebDriver::Session::waitForNavigationToComplete):
        (WebDriver::Session::elementClear):
        (WebDriver::Session::elementSendKeys):
        (WebDriver::Session::elementSubmit):
        (WebDriver::Session::executeScript):
        * Session.h:

2017-07-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: implement page load timeout
        https://bugs.webkit.org/show_bug.cgi?id=174672

        Reviewed by Brian Burg.

        Handle timeout errors and pass the page load timeout to waitForNavigationToComplete and all other navigation
        commands. Also fix the setTimeouts command that was still using the legacy name of the page load timeout,
        instead of the one in the spec.

        8. Sessions
        https://www.w3.org/TR/webdriver/#dfn-session-page-load-timeout

        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult):
        (WebDriver::CommandResult::httpStatusCode):
        (WebDriver::CommandResult::errorString):
        * CommandResult.h:
        * Session.cpp:
        (WebDriver::Session::go):
        (WebDriver::Session::back):
        (WebDriver::Session::forward):
        (WebDriver::Session::refresh):
        (WebDriver::Session::waitForNavigationToComplete):
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::setTimeouts):

2017-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: wait until navigation is complete before running new commands and after a click
        https://bugs.webkit.org/show_bug.cgi?id=174670

        Reviewed by Brian Burg.

        We are already waiting for navigation to complete after navigation commands (go, back, forward, refresh), but
        the spec says we should always wait before executing a new command and also after a click. This is causing test
        testShouldBeAbleToNavigateBackInTheBrowserHistoryInPresenceOfIframes to sometimes fail, because it does .click()
        + .title and expects the title to tbe the one of the page loaded by the click. Since the load happens very fast,
        the test usually passes, but in a real case with a slower load, the title of the previous page will be returned
        most of the times.

        6.3 Processing Model. Step 7. Wait for navigation to complete. If this returns an error return its value and
        jump to step 1 in this overall algorithm, otherwise continue.
        https://www.w3.org/TR/webdriver/#processing-model

        14.1 Element Click. Step 10. If the click causes navigation: 1. Run the post-navigation checks and return its
        value if it is an error. 2. Try to wait for navigation to complete.
        https://www.w3.org/TR/webdriver/#element-click

        * Session.cpp:
        (WebDriver::Session::waitForNavigationToComplete): Send waitForNavigationToComplete message to the browser to
        wait for any pending navigation of current browsing context to complete.
        (WebDriver::Session::elementClick): Call waitForNavigationToComplete() after the click.
        * Session.h:
        * WebDriverService.cpp:
        (WebDriver::WebDriverService::go): Wait for navigations to complete before running the command.
        (WebDriver::WebDriverService::getCurrentURL): Ditto.
        (WebDriver::WebDriverService::back): Ditto.
        (WebDriver::WebDriverService::forward): Ditto.
        (WebDriver::WebDriverService::refresh): Ditto.
        (WebDriver::WebDriverService::getTitle): Ditto.
        (WebDriver::WebDriverService::switchToFrame): Ditto.
        (WebDriver::WebDriverService::switchToParentFrame): Ditto.
        (WebDriver::WebDriverService::findElement): Ditto.
        (WebDriver::WebDriverService::findElements): Ditto.
        (WebDriver::WebDriverService::executeScript): Ditto.
        (WebDriver::WebDriverService::executeAsyncScript): Ditto.

2017-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: correctly handle main frame handles
        https://bugs.webkit.org/show_bug.cgi?id=174668

        Reviewed by Brian Burg.

        When I switched to use std::optional instead of empty strings for the browsing contexts in WebDriver, I forgot
        that automation uses empty string for frames to refer to the main frame. We should handle that case, because we
        are currently considering empty strings as valid browsing context. It's not a big deal because Automation
        converts back the empty string received to the main frame, though. We should also ensure we close the current
        browsing context when switching to a new top level browsing context. This patch adds to helper private methods
        to switch browsing contexts that deal with the special cases.

        * Session.cpp:
        (WebDriver::Session::close):
        (WebDriver::Session::switchToTopLevelBrowsingContext):
        (WebDriver::Session::switchToBrowsingContext):
        (WebDriver::Session::createTopLevelBrowsingContext):
        (WebDriver::Session::go):
        (WebDriver::Session::back):
        (WebDriver::Session::forward):
        (WebDriver::Session::refresh):
        (WebDriver::Session::switchToWindow):
        (WebDriver::Session::switchToFrame):
        (WebDriver::Session::switchToParentFrame):
        * Session.h:

2017-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: handle invalid selector errors
        https://bugs.webkit.org/show_bug.cgi?id=174619

        Reviewed by Brian Burg.

        Add InvalidSelector error and handle it in case of protocol server error.

        * CommandResult.cpp:
        (WebDriver::CommandResult::CommandResult):
        (WebDriver::CommandResult::httpStatusCode):
        (WebDriver::CommandResult::errorString):
        * CommandResult.h:

2017-07-18  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK] Fix build with Clang after r219605.
        https://bugs.webkit.org/show_bug.cgi?id=166682

        Unreviewed build fix.

        Clang-3.8 complains with the following error:
        non-constant-expression cannot be narrowed from type 'gboolean' (aka 'int') to 'bool' in initializer list [-Wc++11-narrowing]

        * glib/SessionHostGlib.cpp: insert an explicit cast to silence this issue.

2017-07-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add initial implementation of WebDriver process to run the HTTP server
        https://bugs.webkit.org/show_bug.cgi?id=166682

        Reviewed by Brian Burg.

        Add WebDriver process that runs the HTTP server and implements an initial set of commands. Most of the code is
        cross-platform, only the HTTP server implementation, the code to launch the browser and the communication with
        the remote inspector requires platform specific code. This patch includes the GTK port implementation, using
        libsoup for the HTTP server, and GLib for launching the browser and communicating with the remote
        inspector. This implementation follows the w3c spec (https://www.w3.org/TR/webdriver) as close as possible, but
        using the official selenium python tests as reference.

        * CMakeLists.txt: Added.
        * Capabilities.h: Added.
        * CommandResult.cpp: Added.
        * CommandResult.h: Added.
        * HTTPServer.cpp: Added.
        * HTTPServer.h: Added.
        * PlatformGTK.cmake: Added.
        * Session.cpp: Added.
        * Session.h: Added.
        * SessionHost.cpp: Added.
        * SessionHost.h: Added.
        * WebDriverMain.cpp: Added.
        * WebDriverService.cpp: Added.
        * WebDriverService.h: Added.
        * config.h: Added.
        * glib/SessionHostGlib.cpp: Added.
        * gtk/WebDriverServiceGtk.cpp: Added.
        * soup/HTTPServerSoup.cpp: Added.
