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.
