mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 01:37:36 +00:00
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.
This commit is contained in:
parent
c6a0888088
commit
a3d6c2f6af
14 changed files with 51 additions and 57 deletions
|
@ -579,6 +579,10 @@ void BrowserWindow::create_new_tab(URL url, bool activate)
|
|||
return m_cookie_jar.get_all_cookies(url);
|
||||
};
|
||||
|
||||
new_tab.on_get_named_cookie = [this](auto& url, auto& name) {
|
||||
return m_cookie_jar.get_named_cookie(url, name);
|
||||
};
|
||||
|
||||
new_tab.on_get_cookie = [this](auto& url, auto source) -> String {
|
||||
return m_cookie_jar.get_cookie(url, source);
|
||||
};
|
||||
|
|
|
@ -134,6 +134,22 @@ Vector<Web::Cookie::Cookie> CookieJar::get_all_cookies(URL const& url)
|
|||
return cookies;
|
||||
}
|
||||
|
||||
Optional<Web::Cookie::Cookie> CookieJar::get_named_cookie(URL const& url, String const& name)
|
||||
{
|
||||
auto domain = canonicalize_domain(url);
|
||||
if (!domain.has_value())
|
||||
return {};
|
||||
|
||||
auto cookie_list = get_matching_cookies(url, domain.value(), Web::Cookie::Source::Http, MatchingCookiesSpecMode::WebDriver);
|
||||
|
||||
for (auto const& cookie : cookie_list) {
|
||||
if (cookie.name == name)
|
||||
return cookie;
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
Optional<String> CookieJar::canonicalize_domain(const URL& url)
|
||||
{
|
||||
// https://tools.ietf.org/html/rfc6265#section-5.1.2
|
||||
|
|
|
@ -32,6 +32,7 @@ public:
|
|||
void dump_cookies() const;
|
||||
Vector<Web::Cookie::Cookie> get_all_cookies() const;
|
||||
Vector<Web::Cookie::Cookie> get_all_cookies(URL const& url);
|
||||
Optional<Web::Cookie::Cookie> get_named_cookie(URL const& url, String const& name);
|
||||
|
||||
private:
|
||||
static Optional<String> canonicalize_domain(const URL& url);
|
||||
|
|
|
@ -357,6 +357,12 @@ Tab::Tab(BrowserWindow& window)
|
|||
return {};
|
||||
};
|
||||
|
||||
view().on_get_named_cookie = [this](auto& url, auto& name) -> Optional<Web::Cookie::Cookie> {
|
||||
if (on_get_named_cookie)
|
||||
return on_get_named_cookie(url, name);
|
||||
return {};
|
||||
};
|
||||
|
||||
view().on_get_cookie = [this](auto& url, auto source) -> String {
|
||||
if (on_get_cookie)
|
||||
return on_get_cookie(url, source);
|
||||
|
|
|
@ -65,6 +65,7 @@ public:
|
|||
Function<void(Tab&)> on_tab_close_other_request;
|
||||
Function<void(Gfx::Bitmap const&)> on_favicon_change;
|
||||
Function<Vector<Web::Cookie::Cookie>(AK::URL const& url)> on_get_all_cookies;
|
||||
Function<Optional<Web::Cookie::Cookie>(AK::URL const& url, String const& name)> on_get_named_cookie;
|
||||
Function<String(const URL&, Web::Cookie::Source source)> on_get_cookie;
|
||||
Function<void(const URL&, Web::Cookie::ParsedCookie const& cookie, Web::Cookie::Source source)> on_set_cookie;
|
||||
Function<void()> on_dump_cookies;
|
||||
|
|
|
@ -69,21 +69,6 @@ Messages::WebDriverSessionClient::GetAllCookiesResponse WebDriverConnection::get
|
|||
return { {} };
|
||||
}
|
||||
|
||||
Messages::WebDriverSessionClient::GetNamedCookieResponse WebDriverConnection::get_named_cookie(String const& name)
|
||||
{
|
||||
dbgln_if(WEBDRIVER_DEBUG, "WebDriverConnection: get_named_cookie {}", name);
|
||||
if (auto browser_window = m_browser_window.strong_ref()) {
|
||||
if (browser_window->active_tab().on_get_cookies_entries) {
|
||||
for (auto cookie : browser_window->active_tab().on_get_cookies_entries()) {
|
||||
if (cookie.name == name)
|
||||
return { cookie };
|
||||
}
|
||||
return Optional<Web::Cookie::Cookie> {};
|
||||
}
|
||||
}
|
||||
return { {} };
|
||||
}
|
||||
|
||||
void WebDriverConnection::add_cookie(Web::Cookie::ParsedCookie const& cookie)
|
||||
{
|
||||
dbgln_if(WEBDRIVER_DEBUG, "WebDriverConnection: add_cookie {}", cookie.name);
|
||||
|
|
|
@ -43,7 +43,6 @@ public:
|
|||
virtual void back() override;
|
||||
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;
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@ endpoint WebDriverSessionClient {
|
|||
back() =|
|
||||
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) =|
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue