1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 13:07:46 +00:00

WebDriver: Implement POST /session/{id}/cookie endpoint

This allows the WebDriver to create a cookie.
We use a Web::Cookie::ParsedCookie to transport the data through IPC
to take advantage of the RFC6265 Section 5.3 implementation in the
CookieJar.
This commit is contained in:
Tobias Christiansen 2022-10-17 13:20:57 +02:00 committed by Linus Groh
parent b79b78a5cc
commit 122e2d2076
7 changed files with 152 additions and 0 deletions

View file

@ -95,6 +95,20 @@ Messages::WebDriverSessionClient::GetNamedCookieResponse WebDriverConnection::ge
return { {} };
}
void WebDriverConnection::add_cookie(Web::Cookie::ParsedCookie const& cookie)
{
dbgln("WebDriverConnection: add_cookie");
if (auto browser_window = m_browser_window.strong_ref()) {
auto& tab = browser_window->active_tab();
if (tab.on_set_cookie) {
// FIXME: The spec doesn't say anything about the source
// but can we assume a cookie created through a HTTP-request to the WebDriver
// to be (source) from an HTTP-API?
tab.on_set_cookie(tab.url(), cookie, Web::Cookie::Source::Http);
}
}
}
void WebDriverConnection::update_cookie(Web::Cookie::Cookie const& cookie)
{
if (auto browser_window = m_browser_window.strong_ref()) {

View file

@ -45,6 +45,7 @@ public:
virtual void forward() override;
virtual Messages::WebDriverSessionClient::GetAllCookiesResponse get_all_cookies() override;
virtual Messages::WebDriverSessionClient::GetNamedCookieResponse get_named_cookie(String const& name) override;
virtual void add_cookie(Web::Cookie::ParsedCookie const&) override;
virtual void update_cookie(Web::Cookie::Cookie const&) override;
private:

View file

@ -1,6 +1,7 @@
#include <AK/URL.h>
#include <AK/Vector.h>
#include <LibWeb/Cookie/Cookie.h>
#include <LibWeb/Cookie/ParsedCookie.h>
endpoint WebDriverSessionClient {
quit() =|
@ -13,6 +14,7 @@ endpoint WebDriverSessionClient {
forward() =|
get_all_cookies() => (Vector<Web::Cookie::Cookie> cookies)
get_named_cookie(String name) => (Optional<Web::Cookie::Cookie> cookie)
add_cookie(Web::Cookie::ParsedCookie cookie) =|
update_cookie(Web::Cookie::Cookie cookie) =|
}