WebDriver: implement screen capture commands
[WebKit-https.git] / Source / WebDriver / ChangeLog
1 2017-08-28  Carlos Garcia Campos  <cgarcia@igalia.com>
2
3         WebDriver: implement screen capture commands
4         https://bugs.webkit.org/show_bug.cgi?id=174615
5
6         Reviewed by Brian Burg.
7
8         Implement takeScreenshot and takeElementScreenshot commands.
9
10         19. Screen Capture.
11         https://w3c.github.io/webdriver/webdriver-spec.html#screen-capture
12
13         * CommandResult.cpp:
14         (WebDriver::CommandResult::CommandResult): Handle ScreenshotError protocol error.
15         (WebDriver::CommandResult::httpStatusCode const): Add UnableToCaptureScreen.
16         (WebDriver::CommandResult::errorString const): Ditto.
17         * CommandResult.h:
18         * Session.cpp:
19         (WebDriver::Session::takeScreenshot):
20         * Session.h:
21         * WebDriverService.cpp:
22         (WebDriver::WebDriverService::takeScreenshot):
23         (WebDriver::WebDriverService::takeElementScreenshot):
24         * WebDriverService.h:
25
26 2017-08-28  Carlos Garcia Campos  <cgarcia@igalia.com>
27
28         WebDriver: implement cookies commands
29         https://bugs.webkit.org/show_bug.cgi?id=174613
30
31         Reviewed by Brian Burg.
32
33         Add cookies commands.
34
35         16. Cookies.
36         https://w3c.github.io/webdriver/webdriver-spec.html#cookies
37
38         * CommandResult.cpp:
39         (WebDriver::CommandResult::httpStatusCode const): Add NoSuchCookie error.
40         (WebDriver::CommandResult::errorString const): Ditto.
41         * CommandResult.h:
42         * Session.cpp:
43         (WebDriver::parseAutomationCookie): Parse JSON cookie object returned by automation and convert it to a Cookie struct.
44         (WebDriver::builtAutomationCookie): Build a JSON cookie object as expected by automation from a Cookie struct.
45         (WebDriver::serializeCookie): Serialize a Cookie struct into a JSON cookie object according to the WebDriver spec.
46         (WebDriver::Session::getAllCookies):
47         (WebDriver::Session::getNamedCookie):
48         (WebDriver::Session::addCookie):
49         (WebDriver::Session::deleteCookie):
50         (WebDriver::Session::deleteAllCookies):
51         * Session.h:
52         * WebDriverService.cpp:
53         (WebDriver::WebDriverService::getAllCookies):
54         (WebDriver::WebDriverService::getNamedCookie):
55         (WebDriver::deserializeCookie):
56         (WebDriver::WebDriverService::addCookie):
57         (WebDriver::WebDriverService::deleteCookie):
58         (WebDriver::WebDriverService::deleteAllCookies):
59         * WebDriverService.h:
60
61 2017-07-28  Carlos Garcia Campos  <cgarcia@igalia.com>
62
63         WebDriver: fix return value of close window command
64         https://bugs.webkit.org/show_bug.cgi?id=174861
65
66         Reviewed by Brian Burg.
67
68         We are currently returning null, but we should return the list of window handles, and try to close the session
69         if there aren't more window handles.
70
71         10.2 Close Window
72         https://w3c.github.io/webdriver/webdriver-spec.html#close-window
73
74         3. If there are no more open top-level browsing contexts, then try to close the session.
75         4. Return the result of running the remote end steps for the Get Window Handles command.
76
77         * Session.cpp:
78         (WebDriver::Session::closeAllToplevelBrowsingContexts): Helper function to close the given toplevel browsing
79         context and the next one if there are more.
80         (WebDriver::Session::close): Call closeAllToplevelBrowsingContexts() to delete all toplevel browsing contexts of
81         the session.
82         (WebDriver::Session::closeTopLevelBrowsingContext): Close the given toplevel browsing context and call
83         getWindowHandles() when done.
84         (WebDriver::Session::closeWindow): Call closeTopLevelBrowsingContext() passing the current toplevel browsing context.
85         (WebDriver::Session::getWindowHandles): Remove the early return, this command doesn't depend on a current
86         toplevel browsing context.
87         * Session.h:
88         * SessionHost.h:
89         * WebDriverService.cpp:
90         (WebDriver::WebDriverService::run): Disconnect the server when main loop quits.
91         (WebDriver::WebDriverService::deleteSession): Do not fail if the given session is not active.
92         (WebDriver::WebDriverService::closeWindow): Remove the session if the closed window was the last one.
93         * WebDriverService.h: Remove unused quit() method.
94         * glib/SessionHostGlib.cpp:
95         (WebDriver::SessionHost::isConnected): Return whether host is connected to a browser instance.
96         (WebDriver::SessionHost::dbusConnectionClosedCallback): Delete m_browser.
97
98 2017-08-14  Carlos Garcia Campos  <cgarcia@igalia.com>
99
100         WebDriver: handle click events on option elements
101         https://bugs.webkit.org/show_bug.cgi?id=174710
102         <rdar://problem/33459305>
103
104         Reviewed by Brian Burg.
105
106         Option elements are considered as a special case by the specification. When clicking an option element, we
107         should get its container and use it when scrolling into view and calculating in-view center point instead of the
108         option element itself. Then, we should not emulate a click, but change the selected status of the option element
109         like if it were done by a user action, firing the corresponding events. Now we check whether the element is an
110         option to call selectOptionElement() or performMouseInteraction().
111
112         This fixes more than 20 selenium tests.
113
114         * CommandResult.cpp:
115         (WebDriver::CommandResult::CommandResult): Handle ElementNotSelectable protocol error.
116         (WebDriver::CommandResult::httpStatusCode const): Add ElementNotSelectable.
117         (WebDriver::CommandResult::errorString const): Ditto.
118         * CommandResult.h:
119         * Session.cpp:
120         (WebDriver::Session::selectOptionElement): Ask automation to select the given option element.
121         (WebDriver::Session::elementClick): Call selectOptionElement() or performMouseInteraction() depending on whether
122         the element is an option or not.
123         * Session.h:
124
125 2017-08-11  Carlos Alberto Lopez Perez  <clopez@igalia.com>
126
127         Fix build warning in WebDriverService.h
128         https://bugs.webkit.org/show_bug.cgi?id=166682
129
130         Unreviewed build fix.
131
132         * WebDriverService.h: Fixes the warning: class 'Capabilities' was previously declared as a struct [-Wmismatched-tags]
133
134 2017-08-08  Michael Catanzaro  <mcatanzaro@igalia.com>
135
136         Unreviewed, fix Ubuntu LTS build
137         https://bugs.webkit.org/show_bug.cgi?id=174490
138
139         * glib/SessionHostGlib.cpp:
140
141 2017-08-08  Michael Catanzaro  <mcatanzaro@igalia.com>
142
143         [CMake] Properly test if compiler supports compiler flags
144         https://bugs.webkit.org/show_bug.cgi?id=174490
145
146         Reviewed by Konstantin Tokarev.
147
148         * WebDriverService.cpp:
149         (WebDriver::WebDriverService::run):
150         * glib/SessionHostGlib.cpp:
151
152 2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>
153
154         Web Automation: setUserInputForCurrentJavaScriptPrompt should fail if current dialog is not a prompt
155         https://bugs.webkit.org/show_bug.cgi?id=175261
156
157         Reviewed by Brian Burg.
158
159         * CommandResult.cpp:
160         (WebDriver::CommandResult::CommandResult): Handle ElementNotInteractable protocol error.
161
162 2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>
163
164         WebDriver: implement unhandled prompt behavior
165         https://bugs.webkit.org/show_bug.cgi?id=175184
166
167         Reviewed by Brian Burg.
168
169         Handle user prompts before running some of the commands according to the specification.
170
171         * Capabilities.h: Add UnhandledPromptBehavior capability.
172         * CommandResult.cpp:
173         (WebDriver::CommandResult::httpStatusCode const): Add UnexpectedAlertOpen error.
174         (WebDriver::CommandResult::errorString const): Ditto.
175         * CommandResult.h:
176         (WebDriver::CommandResult::setAdditonalErrorData): New method to set an additional data object that will be sent
177         as part of the result error message.
178         (WebDriver::CommandResult::additionalErrorData const): Return the additional data object.
179         * Session.cpp:
180         (WebDriver::Session::handleUserPrompts): Check if there's an active JavaScript dialog and deal with it depeding
181         on the unhandled prompt behavior.
182         (WebDriver::Session::reportUnexpectedAlertOpen): Generate an error message with UnexpectedAlertOpen error and
183         including the alert text as additional error data.
184         (WebDriver::Session::go): Handle user prompts before running the command.
185         (WebDriver::Session::getCurrentURL): Ditto.
186         (WebDriver::Session::back): Ditto.
187         (WebDriver::Session::forward): Ditto.
188         (WebDriver::Session::refresh): Ditto.
189         (WebDriver::Session::getTitle): Ditto.
190         (WebDriver::Session::closeWindow): Ditto.
191         (WebDriver::Session::switchToFrame): Ditto.
192         (WebDriver::Session::switchToParentFrame): Ditto.
193         (WebDriver::Session::isElementSelected): Ditto.
194         (WebDriver::Session::getElementText): Ditto.
195         (WebDriver::Session::getElementTagName): Ditto.
196         (WebDriver::Session::getElementRect): Ditto.
197         (WebDriver::Session::isElementEnabled): Ditto.
198         (WebDriver::Session::isElementDisplayed): Ditto.
199         (WebDriver::Session::getElementAttribute): Ditto.
200         (WebDriver::Session::elementSendKeys): Ditto.
201         (WebDriver::Session::elementSubmit): Ditto.
202         (WebDriver::Session::executeScript): Ditto.
203         * Session.h:
204         * WebDriverService.cpp:
205         (WebDriver::WebDriverService::sendResponse const): Send data object as part of the result error message if present.
206         (WebDriver::deserializeUnhandledPromptBehavior):
207         (WebDriver::WebDriverService::parseCapabilities const):
208         (WebDriver::WebDriverService::validatedCapabilities const):
209         (WebDriver::WebDriverService::newSession):
210
211 2017-08-07  Carlos Garcia Campos  <cgarcia@igalia.com>
212
213         WebDriver: implement user prompt commands
214         https://bugs.webkit.org/show_bug.cgi?id=174614
215
216         Reviewed by Brian Burg.
217
218         * CommandResult.cpp:
219         (WebDriver::CommandResult::CommandResult): Handle NoJavaScriptDialog protocol error.
220         (WebDriver::CommandResult::httpStatusCode const): Add NoSuchAlert.
221         (WebDriver::CommandResult::errorString const): Ditto.
222         * CommandResult.h:
223         * Session.cpp:
224         (WebDriver::Session::dismissAlert):
225         (WebDriver::Session::acceptAlert):
226         (WebDriver::Session::getAlertText):
227         (WebDriver::Session::sendAlertText):
228         * Session.h:
229         * WebDriverService.cpp:
230         (WebDriver::WebDriverService::dismissAlert):
231         (WebDriver::WebDriverService::acceptAlert):
232         (WebDriver::WebDriverService::getAlertText):
233         (WebDriver::WebDriverService::sendAlertText):
234         * WebDriverService.h:
235
236 2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>
237
238         [GTK][WPE] Add API to provide browser information required by automation
239         https://bugs.webkit.org/show_bug.cgi?id=175130
240
241         Reviewed by Brian Burg.
242
243         * Session.cpp:
244         (WebDriver::Session::createTopLevelBrowsingContext): Check if startAutomationSession and complete the command
245         with error in that case.
246         * SessionHost.h:
247         * glib/SessionHostGlib.cpp:
248         (WebDriver::SessionHost::matchCapabilities): Match the capabilities that are known only after the browser has
249         been launched.
250         (WebDriver::SessionHost::startAutomationSession): Handle the StartAutomationSession response, extracting the
251         capabilities and calling matchCapabilities() to match them.
252         (WebDriver::SessionHost::setTargetList): Return early if the session was rejected before due to invalid
253         capabilities.
254
255 2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>
256
257         WebDriver: Implement page load strategy
258         https://bugs.webkit.org/show_bug.cgi?id=175183
259
260         Reviewed by Brian Burg.
261
262         Validate and parse page load strategy when processing capabilities.
263
264         * Capabilities.h:
265         * Session.cpp:
266         (WebDriver::Session::pageLoadStrategyString const): Helper to get the page load strategy as a String to be
267         passed to Automation.
268         (WebDriver::Session::go): Pass page load strategy if present.
269         (WebDriver::Session::back): Ditto.
270         (WebDriver::Session::forward): Ditto.
271         (WebDriver::Session::refresh): Ditto.
272         (WebDriver::Session::waitForNavigationToComplete): Ditto.
273         * Session.h:
274         * WebDriverService.cpp:
275         (WebDriver::deserializePageLoadStrategy):
276         (WebDriver::WebDriverService::parseCapabilities const):
277         (WebDriver::WebDriverService::validatedCapabilities const):
278         (WebDriver::WebDriverService::newSession):
279
280 2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>
281
282         Unreviewed. Try to fix build with clang after r220315.
283
284         * WebDriverService.cpp:
285         (WebDriver::WebDriverService::validatedCapabilities const):
286         (WebDriver::WebDriverService::mergeCapabilities const):
287
288 2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>
289
290         WebDriver: properly handle capabilities and process firstMatch too
291         https://bugs.webkit.org/show_bug.cgi?id=174618
292
293         Reviewed by Brian Burg.
294
295         Implement processing of capabilities following the spec. This patch adds validation, merging and matching of
296         capabilities.
297
298         7.2 Processing Capabilities.
299         https://w3c.github.io/webdriver/webdriver-spec.html#processing-capabilities
300
301         * Capabilities.h: Make all capabilities optional and move Timeouts struct here.
302         * Session.h:
303         * WebDriverService.cpp:
304         (WebDriver::deserializeTimeouts): Helper to extract timeouts from JSON object.
305         (WebDriver::WebDriverService::parseCapabilities const): At this point capabilities have already been validated,
306         so we just need to get them without checking the value type.
307         (WebDriver::WebDriverService::validatedCapabilities const): Validate the given capabilities, ensuring types of
308         values are the expected one.
309         (WebDriver::WebDriverService::mergeCapabilities const): Merge the alwaysMatch and firstMatch capabilities into a
310         single object ensuring that the same capability is not in both.
311         (WebDriver::WebDriverService::matchCapabilities const): Try to match the merged capabilities againt the platform
312         expected capabilities.
313         (WebDriver::WebDriverService::processCapabilities const): Validate, merge and match the capabilities.
314         (WebDriver::WebDriverService::newSession): Use processCapabilities(). Also initialize the timeouts from
315         capabilities and add all capabilities to the command result.
316         (WebDriver::WebDriverService::setTimeouts): Use deserializeTimeouts().
317         * WebDriverService.h:
318         * glib/SessionHostGlib.cpp:
319         (WebDriver::SessionHost::launchBrowser): Updated to properly access the capabilities that are now optional.
320         (WebDriver::SessionHost::startAutomationSession): Add FIXME.
321         * gtk/WebDriverServiceGtk.cpp:
322         (WebDriver::WebDriverService::platformCapabilities): Return the Capabilities with the known required ones filled.
323         (WebDriver::WebDriverService::platformValidateCapability const): Validate webkitgtk:browserOptions.
324         (WebDriver::WebDriverService::platformMatchCapability const): This does nothing for now.
325         (WebDriver::WebDriverService::platformCompareBrowserVersions): Compare the given browser versions.
326         (WebDriver::WebDriverService::platformParseCapabilities const): Updated now that capabilites have already been
327         validated before.
328
329 2017-08-05  Carlos Garcia Campos  <cgarcia@igalia.com>
330
331         WebDriver: use in-view center point for clicks instead of bounding box center point
332         https://bugs.webkit.org/show_bug.cgi?id=174863
333
334         Reviewed by Simon Fraser.
335
336         The center of the element bounding box is not always part of the element, like in multiline links, for example.
337
338         11.1 Element Interactability.
339         https://www.w3.org/TR/webdriver/#dfn-in-view-center-point
340
341         * CommandResult.cpp:
342         (WebDriver::CommandResult::httpStatusCode): Add ElementClickIntercepted and ElementNotInteractable errors.
343         (WebDriver::CommandResult::errorString): Ditto.
344         * CommandResult.h: Ditto.
345         * Session.cpp:
346         (WebDriver::Session::computeElementLayout): Get the in-view center point and isObscured from the result too.
347         (WebDriver::Session::getElementRect): Ignore in-view center point and isObscured.
348         (WebDriver::Session::elementClick): Fail in case the element is not interactable or is obscured.
349         * Session.h:
350
351 2017-08-01  Michael Catanzaro  <mcatanzaro@igalia.com>
352
353         [CMake] WebKitFS.cmake depends on options set in Option cmake files that are included later
354         https://bugs.webkit.org/show_bug.cgi?id=174855
355
356         Reviewed by Carlos Garcia Campos.
357
358         Don't create derived sources directory here anymore.
359
360         * PlatformGTK.cmake:
361
362 2017-07-26  Carlos Garcia Campos  <cgarcia@igalia.com>
363
364         Unreviewed. Fix GTK distcheck.
365
366         Ensure WebDriver derived sources directory is created, WebKitFS.cmake is useless for this.
367
368         * PlatformGTK.cmake:
369
370 2017-07-24  Carlos Garcia Campos  <cgarcia@igalia.com>
371
372         WebDriver: rename m_browsingContext as m_currentBrowsingContext in Session
373         https://bugs.webkit.org/show_bug.cgi?id=174783
374
375         Reviewed by Brian Burg.
376
377         We have m_toplevelBrowsingContext and m_browsingContext, which is confusing. m_browsingContext is actually the
378         current browsing context, and the spec also refers to it as the current browsing context, so better use
379         m_currentBrowsingContext.
380
381         * Session.cpp:
382         (WebDriver::Session::switchToTopLevelBrowsingContext):
383         (WebDriver::Session::switchToBrowsingContext):
384         (WebDriver::Session::switchToFrame):
385         (WebDriver::Session::switchToParentFrame):
386         (WebDriver::Session::computeElementLayout):
387         (WebDriver::Session::findElements):
388         (WebDriver::Session::isElementSelected):
389         (WebDriver::Session::getElementText):
390         (WebDriver::Session::getElementTagName):
391         (WebDriver::Session::isElementEnabled):
392         (WebDriver::Session::isElementDisplayed):
393         (WebDriver::Session::getElementAttribute):
394         (WebDriver::Session::waitForNavigationToComplete):
395         (WebDriver::Session::elementClear):
396         (WebDriver::Session::elementSendKeys):
397         (WebDriver::Session::elementSubmit):
398         (WebDriver::Session::executeScript):
399         * Session.h:
400
401 2017-07-20  Carlos Garcia Campos  <cgarcia@igalia.com>
402
403         WebDriver: implement page load timeout
404         https://bugs.webkit.org/show_bug.cgi?id=174672
405
406         Reviewed by Brian Burg.
407
408         Handle timeout errors and pass the page load timeout to waitForNavigationToComplete and all other navigation
409         commands. Also fix the setTimeouts command that was still using the legacy name of the page load timeout,
410         instead of the one in the spec.
411
412         8. Sessions
413         https://www.w3.org/TR/webdriver/#dfn-session-page-load-timeout
414
415         * CommandResult.cpp:
416         (WebDriver::CommandResult::CommandResult):
417         (WebDriver::CommandResult::httpStatusCode):
418         (WebDriver::CommandResult::errorString):
419         * CommandResult.h:
420         * Session.cpp:
421         (WebDriver::Session::go):
422         (WebDriver::Session::back):
423         (WebDriver::Session::forward):
424         (WebDriver::Session::refresh):
425         (WebDriver::Session::waitForNavigationToComplete):
426         * WebDriverService.cpp:
427         (WebDriver::WebDriverService::setTimeouts):
428
429 2017-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>
430
431         WebDriver: wait until navigation is complete before running new commands and after a click
432         https://bugs.webkit.org/show_bug.cgi?id=174670
433
434         Reviewed by Brian Burg.
435
436         We are already waiting for navigation to complete after navigation commands (go, back, forward, refresh), but
437         the spec says we should always wait before executing a new command and also after a click. This is causing test
438         testShouldBeAbleToNavigateBackInTheBrowserHistoryInPresenceOfIframes to sometimes fail, because it does .click()
439         + .title and expects the title to tbe the one of the page loaded by the click. Since the load happens very fast,
440         the test usually passes, but in a real case with a slower load, the title of the previous page will be returned
441         most of the times.
442
443         6.3 Processing Model. Step 7. Wait for navigation to complete. If this returns an error return its value and
444         jump to step 1 in this overall algorithm, otherwise continue.
445         https://www.w3.org/TR/webdriver/#processing-model
446
447         14.1 Element Click. Step 10. If the click causes navigation: 1. Run the post-navigation checks and return its
448         value if it is an error. 2. Try to wait for navigation to complete.
449         https://www.w3.org/TR/webdriver/#element-click
450
451         * Session.cpp:
452         (WebDriver::Session::waitForNavigationToComplete): Send waitForNavigationToComplete message to the browser to
453         wait for any pending navigation of current browsing context to complete.
454         (WebDriver::Session::elementClick): Call waitForNavigationToComplete() after the click.
455         * Session.h:
456         * WebDriverService.cpp:
457         (WebDriver::WebDriverService::go): Wait for navigations to complete before running the command.
458         (WebDriver::WebDriverService::getCurrentURL): Ditto.
459         (WebDriver::WebDriverService::back): Ditto.
460         (WebDriver::WebDriverService::forward): Ditto.
461         (WebDriver::WebDriverService::refresh): Ditto.
462         (WebDriver::WebDriverService::getTitle): Ditto.
463         (WebDriver::WebDriverService::switchToFrame): Ditto.
464         (WebDriver::WebDriverService::switchToParentFrame): Ditto.
465         (WebDriver::WebDriverService::findElement): Ditto.
466         (WebDriver::WebDriverService::findElements): Ditto.
467         (WebDriver::WebDriverService::executeScript): Ditto.
468         (WebDriver::WebDriverService::executeAsyncScript): Ditto.
469
470 2017-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>
471
472         WebDriver: correctly handle main frame handles
473         https://bugs.webkit.org/show_bug.cgi?id=174668
474
475         Reviewed by Brian Burg.
476
477         When I switched to use std::optional instead of empty strings for the browsing contexts in WebDriver, I forgot
478         that automation uses empty string for frames to refer to the main frame. We should handle that case, because we
479         are currently considering empty strings as valid browsing context. It's not a big deal because Automation
480         converts back the empty string received to the main frame, though. We should also ensure we close the current
481         browsing context when switching to a new top level browsing context. This patch adds to helper private methods
482         to switch browsing contexts that deal with the special cases.
483
484         * Session.cpp:
485         (WebDriver::Session::close):
486         (WebDriver::Session::switchToTopLevelBrowsingContext):
487         (WebDriver::Session::switchToBrowsingContext):
488         (WebDriver::Session::createTopLevelBrowsingContext):
489         (WebDriver::Session::go):
490         (WebDriver::Session::back):
491         (WebDriver::Session::forward):
492         (WebDriver::Session::refresh):
493         (WebDriver::Session::switchToWindow):
494         (WebDriver::Session::switchToFrame):
495         (WebDriver::Session::switchToParentFrame):
496         * Session.h:
497
498 2017-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>
499
500         WebDriver: handle invalid selector errors
501         https://bugs.webkit.org/show_bug.cgi?id=174619
502
503         Reviewed by Brian Burg.
504
505         Add InvalidSelector error and handle it in case of protocol server error.
506
507         * CommandResult.cpp:
508         (WebDriver::CommandResult::CommandResult):
509         (WebDriver::CommandResult::httpStatusCode):
510         (WebDriver::CommandResult::errorString):
511         * CommandResult.h:
512
513 2017-07-18  Carlos Alberto Lopez Perez  <clopez@igalia.com>
514
515         [GTK] Fix build with Clang after r219605.
516         https://bugs.webkit.org/show_bug.cgi?id=166682
517
518         Unreviewed build fix.
519
520         Clang-3.8 complains with the following error:
521         non-constant-expression cannot be narrowed from type 'gboolean' (aka 'int') to 'bool' in initializer list [-Wc++11-narrowing]
522
523         * glib/SessionHostGlib.cpp: insert an explicit cast to silence this issue.
524
525 2017-07-13  Carlos Garcia Campos  <cgarcia@igalia.com>
526
527         Add initial implementation of WebDriver process to run the HTTP server
528         https://bugs.webkit.org/show_bug.cgi?id=166682
529
530         Reviewed by Brian Burg.
531
532         Add WebDriver process that runs the HTTP server and implements an initial set of commands. Most of the code is
533         cross-platform, only the HTTP server implementation, the code to launch the browser and the communication with
534         the remote inspector requires platform specific code. This patch includes the GTK port implementation, using
535         libsoup for the HTTP server, and GLib for launching the browser and communicating with the remote
536         inspector. This implementation follows the w3c spec (https://www.w3.org/TR/webdriver) as close as possible, but
537         using the official selenium python tests as reference.
538
539         * CMakeLists.txt: Added.
540         * Capabilities.h: Added.
541         * CommandResult.cpp: Added.
542         * CommandResult.h: Added.
543         * HTTPServer.cpp: Added.
544         * HTTPServer.h: Added.
545         * PlatformGTK.cmake: Added.
546         * Session.cpp: Added.
547         * Session.h: Added.
548         * SessionHost.cpp: Added.
549         * SessionHost.h: Added.
550         * WebDriverMain.cpp: Added.
551         * WebDriverService.cpp: Added.
552         * WebDriverService.h: Added.
553         * config.h: Added.
554         * glib/SessionHostGlib.cpp: Added.
555         * gtk/WebDriverServiceGtk.cpp: Added.
556         * soup/HTTPServerSoup.cpp: Added.