Timothy Flynn
a3d6c2f6af
Browser+WebContent+WebDriver: Move Get Named Cookie to WebContent
...
Instead of sending *all* cookies over IPC and filtering by name, we now
filter by name from the cookie jar and send just the first matching
cookie.
2022-11-11 18:02:04 +00:00
Timothy Flynn
c77260c480
Browser+WebContent+WebDriver: Move Get All Cookies to WebContent
...
There are a couple changes here from the existing Get All Cookies
implementation.
1. Previously, WebDriver actually returned *all* cookies in the cookie
jar. The spec dictates that we only return cookies that match the
document's URL. Specifically, it calls out that we must run just the
first step of RFC 6265 section 5.4 to perform domain matching.
This change adds a special mode to our implementation of that section
to skip the remaining steps.
2. We now fill in the SameSite cookie attribute when serializing the
cookie to JSON (this was a trival FIXME that didn't get picked up
when SameSite was implemented).
2022-11-11 18:02:04 +00:00
Timothy Flynn
31469ee45a
Browser+WebContent+WebDriver: Move Execute Async Script to WebContent
...
With this, WebDriverEndpoints is unused and removed :^)
2022-11-11 11:36:07 +00:00
Timothy Flynn
0b9803dc93
WebContent+WebDriver: Move Execute Script to WebContent
2022-11-11 11:36:07 +00:00
Timothy Flynn
88dcdf681f
Browser+WebContent+WebDriver: Move Get Page Source to WebContent
2022-11-11 11:36:07 +00:00
Timothy Flynn
ea0561a0b3
Browser+WebContent+WebDriver: Move Take Element Screenshot to WebContent
2022-11-11 11:36:07 +00:00
Timothy Flynn
de1e882601
Browser+WebContent+WebDriver: Move Take Screenshot to WebContent
2022-11-11 11:36:07 +00:00
Timothy Flynn
93e14799c5
Browser+WebContent+WebDriver: Move Is Element Enabled to WebContent
2022-11-10 17:02:11 +00:00
Timothy Flynn
30d6a73d0e
Browser+WebContent+WebDriver: Move Get Element Rect to WebContent
2022-11-10 17:02:11 +00:00
Timothy Flynn
9dd62228c8
Browser+WebContent+WebDriver: Move Get Element Tag Name to WebContent
2022-11-10 17:02:11 +00:00
Timothy Flynn
5d32fd7026
Browser+WebContent+WebDriver: Move Get Element Text to WebContent
2022-11-10 17:02:11 +00:00
Timothy Flynn
06f1b8825c
Browser+WebContent+WebDriver: Move Get Element CSS Value to WebContent
2022-11-10 17:02:11 +00:00
Timothy Flynn
3c00d0e92b
Browser+WebContent+WebDriver: Move Get Element Property to WebContent
2022-11-10 17:02:11 +00:00
Timothy Flynn
1bc94e135f
Browser+WebContent+WebDriver: Move Get Element Attribute to WebContent
...
In doing so, this also implements a FIXME to handle boolean attributes.
2022-11-10 17:02:11 +00:00
Timothy Flynn
04ea3992e9
Browser+WebContent+WebDriver: Move Is Element Selected to WebContent
2022-11-10 17:02:11 +00:00
Timothy Flynn
560da56a1d
Browser+WebContent+WebDriver: Move Find Elements From Element to WC
...
This also lets us remove the element location strategy and some
WebContent IPC from Browser/LibWebView now that they are unused.
2022-11-10 13:10:16 +00:00
Timothy Flynn
5a750dc58c
WebContent+WebDriver: Move Find Element From Element to WebContent
2022-11-10 13:10:16 +00:00
Timothy Flynn
6dca784fc4
WebContent+WebDriver: Move Find Elements to WebContent
2022-11-10 13:10:16 +00:00
Timothy Flynn
61de50c7fd
WebContent+WebDriver: Move Find Element to WebContent
...
Note that this does nothing to "fix" how element references are created.
We continue to return the element ID because, otherwise, all other
element WebDriver endpoints would break.
On the bright side, we avoid several IPC round trips now that we perform
the entire 'find' operation in the WebContent process; and we are able
to work directly on DOM nodes.
2022-11-10 13:10:16 +00:00
Timothy Flynn
03d0c7a5b6
Browser+WebContent+WebDriver: Move [Max,Min]imize Window to WebContent
...
This also lets us more fully implement the "iconify the window" method,
which requires we block until the document reaches the "hidden" state.
2022-11-09 19:59:26 +00:00
Timothy Flynn
b57d7e4332
Browser+WebContent+WebDriver: Move Get/Set Window Rect to WebContent
...
This also lets us more fully implement the "restore the window" method,
which requires we block until the document reaches the "visible" state.
2022-11-09 19:59:26 +00:00
Timothy Flynn
cc78a74c51
WebContent+WebDriver: Fully implement closing a session
...
There were a couple steps missing to close the remote end. Further, we
were not removing the session from the list of active sessions.
2022-11-08 19:58:34 -05:00
Timothy Flynn
3ba6b5a7cb
WebContent+WebDriver: Move the Get Current URL command to WebContent
2022-11-08 19:58:34 -05:00
Timothy Flynn
31bb79295d
WebContent+WebDriver: Move the Navigate To command to WebContent
2022-11-08 19:58:34 -05:00
Timothy Flynn
f7c212a19d
WebContent+WebDriver: Set the navigator.webdriver flag from WebDriver
...
This moves setting the navigator.webdriver flag from after WebContent
creates the WebDriver connection, to its own IPC to be triggered from
WebDriver. This is closer to the spec, but mostly serves as an easy
test to validate the connection.
2022-11-08 19:58:34 -05:00
Timothy Flynn
8ae10ba0fd
LibWeb+WebDriver: Add an IPC-transferable Web::WebDriver::Response class
...
This is essentially an ErrorOr<JsonValue, Web::WebDriver::Error> class.
Unfortunately, that ErrorOr would not be default-constructible, which is
required for the generated IPC classes. So this is a thin wrapper around
a Variant<JsonValue, Web::WebDriver::Error> to emulate ErrorOr.
2022-11-08 19:58:34 -05:00
Timothy Flynn
0246abec80
LibWeb+WebDriver: Move WebDriverError to Web::WebDriver::Error
...
This is to prepare for WebContent becoming the WebDriver client.
2022-11-08 19:58:34 -05:00
Timothy Flynn
b0eb45f7c7
WebDriver+Browser: Implement GET /session/{id}/element/{id}/screenshot
2022-11-05 01:10:03 +00:00
Timothy Flynn
2d75229192
WebDriver+Browser: Implement GET /session/{id}/element/{id}/selected
2022-11-03 19:40:43 -04:00
Timothy Flynn
0f2b4d0aac
WebDriver+Browser: Implement GET /session/{id}/element/{id}/enabled
2022-11-03 19:15:43 +00:00
Timothy Flynn
08c687ef20
WebDriver+Browser: Implement GET /session/{id}/element/{id}/rect
2022-11-03 19:15:43 +00:00
Timothy Flynn
61d0b66bfb
WebDriver+Browser: Implement GET /session/{id}/source
2022-11-03 14:48:04 +00:00
Linus Groh
629fbc2cfc
WebDriver: Implement POST /session/{session id}/execute/async
endpoint
2022-11-02 23:46:30 +00:00
Linus Groh
f88a0c51a3
WebDriver: Implement POST /session/{session id}/execute/sync
endpoint
2022-11-02 23:46:30 +00:00
Linus Groh
6e1131e6de
WebDriver: Support "data" field in error responses
2022-11-02 23:46:30 +00:00
Timothy Flynn
1ffaad29e1
WebDriver+Browser: Implement GET /session/{id}/screenshot
...
This doesn't follow the spec to a tee. Our OutOfProcessWebView already
has a bitmap that can be used as the window screenshot. Therefore, we
can bypass the steps that assume we need to access the window's frame
buffer in-flight.
We also don't create an HTMLCanvasElement. We would need a Document in
the WebDriver process to do so. Instead, we can still run the encoding
steps exactly as-is using the screenshot bitmap.
2022-11-02 17:55:37 +00:00
Timothy Flynn
819598aecf
WebContent: Support sending large responses to the WebDriver client
...
Some endpoints, like /session/{id}/screenshot, will require sending
large data to the client. We won't be able to write all of the data in
one shot, so loop over the data until we've sent it all (or fail).
2022-11-02 17:55:37 +00:00
Timothy Flynn
11d0489fa3
WebDriver+Browser: Implement POST /session/{id}/window/minimize
2022-11-02 15:41:19 +00:00
Timothy Flynn
89b2ff72f7
WebDriver+Browser: Implement POST /session/{id}/window/maximize
2022-11-02 15:41:19 +00:00
Timothy Flynn
174248678e
WebDriver+Browser: Implement POST /session/{id}/window/rect
2022-11-02 15:41:19 +00:00
Timothy Flynn
dac91c5790
WebDriver+Browser: Implement GET /session/{id}/window/rect
2022-11-02 15:41:19 +00:00
Timothy Flynn
7561308af1
WebDriver: Convert a couple tabs to spaces
2022-11-02 15:41:19 +00:00
martinfalisse
76da0c6c54
WebDriver: Implement GET /session/{id}/element/{id}/text
endpoint
2022-11-01 10:55:34 +00:00
demostanis
3e8b5ac920
AK+Everywhere: Turn bool keep_empty to an enum in split* functions
2022-10-24 23:29:18 +01:00
Tobias Christiansen
a534e61b44
WebDriver: Implement GET /session/{id}/element/{id}/name
endpoint
2022-10-22 13:44:49 +02:00
Sam Atkins
3232622255
WebDriver: Use WebDriverError::from_code() for all error creation
2022-10-21 19:59:03 +02:00
Sam Atkins
89c3e0b567
WebDriver: Rename HttpError -> WebDriverError
2022-10-21 19:59:03 +02:00
Tobias Christiansen
354a845d65
WebDriver: Implement GET /session/{id}/element/{id}/css/{name}
2022-10-20 21:26:10 +02:00
Tobias Christiansen
e87456e38f
WebDriver: Implement GET /session/{id}/element/{id}/property/{name}
2022-10-19 22:30:06 +02:00
Linus Groh
6641c99c80
WebDriver: Implement GET /session/{session id}/window/handles
endpoint
2022-10-19 22:23:47 +02:00