WebDriver: correctly handle main frame handles
[WebKit-https.git] / Source / WebDriver / ChangeLog
1 2017-07-21  Carlos Garcia Campos  <cgarcia@igalia.com>
2
3         WebDriver: correctly handle main frame handles
4         https://bugs.webkit.org/show_bug.cgi?id=174668
5
6         Reviewed by Brian Burg.
7
8         When I switched to use std::optional instead of empty strings for the browsing contexts in WebDriver, I forgot
9         that automation uses empty string for frames to refer to the main frame. We should handle that case, because we
10         are currently considering empty strings as valid browsing context. It's not a big deal because Automation
11         converts back the empty string received to the main frame, though. We should also ensure we close the current
12         browsing context when switching to a new top level browsing context. This patch adds to helper private methods
13         to switch browsing contexts that deal with the special cases.
14
15         * Session.cpp:
16         (WebDriver::Session::close):
17         (WebDriver::Session::switchToTopLevelBrowsingContext):
18         (WebDriver::Session::switchToBrowsingContext):
19         (WebDriver::Session::createTopLevelBrowsingContext):
20         (WebDriver::Session::go):
21         (WebDriver::Session::back):
22         (WebDriver::Session::forward):
23         (WebDriver::Session::refresh):
24         (WebDriver::Session::switchToWindow):
25         (WebDriver::Session::switchToFrame):
26         (WebDriver::Session::switchToParentFrame):
27         * Session.h:
28
29 2017-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>
30
31         WebDriver: handle invalid selector errors
32         https://bugs.webkit.org/show_bug.cgi?id=174619
33
34         Reviewed by Brian Burg.
35
36         Add InvalidSelector error and handle it in case of protocol server error.
37
38         * CommandResult.cpp:
39         (WebDriver::CommandResult::CommandResult):
40         (WebDriver::CommandResult::httpStatusCode):
41         (WebDriver::CommandResult::errorString):
42         * CommandResult.h:
43
44 2017-07-18  Carlos Alberto Lopez Perez  <clopez@igalia.com>
45
46         [GTK] Fix build with Clang after r219605.
47         https://bugs.webkit.org/show_bug.cgi?id=166682
48
49         Unreviewed build fix.
50
51         Clang-3.8 complains with the following error:
52         non-constant-expression cannot be narrowed from type 'gboolean' (aka 'int') to 'bool' in initializer list [-Wc++11-narrowing]
53
54         * glib/SessionHostGlib.cpp: insert an explicit cast to silence this issue.
55
56 2017-07-13  Carlos Garcia Campos  <cgarcia@igalia.com>
57
58         Add initial implementation of WebDriver process to run the HTTP server
59         https://bugs.webkit.org/show_bug.cgi?id=166682
60
61         Reviewed by Brian Burg.
62
63         Add WebDriver process that runs the HTTP server and implements an initial set of commands. Most of the code is
64         cross-platform, only the HTTP server implementation, the code to launch the browser and the communication with
65         the remote inspector requires platform specific code. This patch includes the GTK port implementation, using
66         libsoup for the HTTP server, and GLib for launching the browser and communicating with the remote
67         inspector. This implementation follows the w3c spec (https://www.w3.org/TR/webdriver) as close as possible, but
68         using the official selenium python tests as reference.
69
70         * CMakeLists.txt: Added.
71         * Capabilities.h: Added.
72         * CommandResult.cpp: Added.
73         * CommandResult.h: Added.
74         * HTTPServer.cpp: Added.
75         * HTTPServer.h: Added.
76         * PlatformGTK.cmake: Added.
77         * Session.cpp: Added.
78         * Session.h: Added.
79         * SessionHost.cpp: Added.
80         * SessionHost.h: Added.
81         * WebDriverMain.cpp: Added.
82         * WebDriverService.cpp: Added.
83         * WebDriverService.h: Added.
84         * config.h: Added.
85         * glib/SessionHostGlib.cpp: Added.
86         * gtk/WebDriverServiceGtk.cpp: Added.
87         * soup/HTTPServerSoup.cpp: Added.