mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:38:11 +00:00
headless-browser: Add support for cookies with SQLServer
This will allow us to test cookies and the database during CI.
This commit is contained in:
parent
a4f862a869
commit
0989a81a48
1 changed files with 26 additions and 2 deletions
|
@ -44,6 +44,8 @@
|
||||||
#include <LibWeb/Cookie/Cookie.h>
|
#include <LibWeb/Cookie/Cookie.h>
|
||||||
#include <LibWeb/Cookie/ParsedCookie.h>
|
#include <LibWeb/Cookie/ParsedCookie.h>
|
||||||
#include <LibWeb/HTML/ActivateTab.h>
|
#include <LibWeb/HTML/ActivateTab.h>
|
||||||
|
#include <LibWebView/CookieJar.h>
|
||||||
|
#include <LibWebView/Database.h>
|
||||||
#include <LibWebView/URL.h>
|
#include <LibWebView/URL.h>
|
||||||
#include <LibWebView/ViewImplementation.h>
|
#include <LibWebView/ViewImplementation.h>
|
||||||
#include <LibWebView/WebContentClient.h>
|
#include <LibWebView/WebContentClient.h>
|
||||||
|
@ -61,7 +63,16 @@ class HeadlessWebContentView final : public WebView::ViewImplementation {
|
||||||
public:
|
public:
|
||||||
static ErrorOr<NonnullOwnPtr<HeadlessWebContentView>> create(Core::AnonymousBuffer theme, Gfx::IntSize const& window_size, StringView web_driver_ipc_path, Ladybird::IsLayoutTestMode is_layout_test_mode = Ladybird::IsLayoutTestMode::No)
|
static ErrorOr<NonnullOwnPtr<HeadlessWebContentView>> create(Core::AnonymousBuffer theme, Gfx::IntSize const& window_size, StringView web_driver_ipc_path, Ladybird::IsLayoutTestMode is_layout_test_mode = Ladybird::IsLayoutTestMode::No)
|
||||||
{
|
{
|
||||||
auto view = TRY(adopt_nonnull_own_or_enomem(new (nothrow) HeadlessWebContentView));
|
#if defined(AK_OS_SERENITY)
|
||||||
|
auto database = TRY(WebView::Database::create());
|
||||||
|
#else
|
||||||
|
auto sql_server_paths = TRY(get_paths_for_helper_process("SQLServer"sv));
|
||||||
|
auto database = TRY(WebView::Database::create(move(sql_server_paths)));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
auto cookie_jar = TRY(WebView::CookieJar::create(*database));
|
||||||
|
|
||||||
|
auto view = TRY(adopt_nonnull_own_or_enomem(new (nothrow) HeadlessWebContentView(move(database), move(cookie_jar))));
|
||||||
|
|
||||||
#if defined(AK_OS_SERENITY)
|
#if defined(AK_OS_SERENITY)
|
||||||
view->m_client_state.client = TRY(WebView::WebContentClient::try_create(*view));
|
view->m_client_state.client = TRY(WebView::WebContentClient::try_create(*view));
|
||||||
|
@ -134,7 +145,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
HeadlessWebContentView()
|
HeadlessWebContentView(NonnullRefPtr<WebView::Database> database, WebView::CookieJar cookie_jar)
|
||||||
|
: m_database(move(database))
|
||||||
|
, m_cookie_jar(move(cookie_jar))
|
||||||
{
|
{
|
||||||
on_scroll_to_point = [this](auto position) {
|
on_scroll_to_point = [this](auto position) {
|
||||||
m_viewport_rect.set_location(position);
|
m_viewport_rect.set_location(position);
|
||||||
|
@ -148,6 +161,14 @@ private:
|
||||||
if (on_scroll_to_point)
|
if (on_scroll_to_point)
|
||||||
on_scroll_to_point(position);
|
on_scroll_to_point(position);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
on_get_cookie = [this](auto const& url, auto source) -> ByteString {
|
||||||
|
return m_cookie_jar.get_cookie(url, source);
|
||||||
|
};
|
||||||
|
|
||||||
|
on_set_cookie = [this](auto const& url, auto const& cookie, auto source) {
|
||||||
|
m_cookie_jar.set_cookie(url, cookie, source);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_zoom() override { }
|
void update_zoom() override { }
|
||||||
|
@ -160,6 +181,9 @@ private:
|
||||||
private:
|
private:
|
||||||
Gfx::IntRect m_viewport_rect;
|
Gfx::IntRect m_viewport_rect;
|
||||||
RefPtr<Core::Promise<RefPtr<Gfx::Bitmap>>> m_pending_screenshot;
|
RefPtr<Core::Promise<RefPtr<Gfx::Bitmap>>> m_pending_screenshot;
|
||||||
|
|
||||||
|
NonnullRefPtr<WebView::Database> m_database;
|
||||||
|
WebView::CookieJar m_cookie_jar;
|
||||||
};
|
};
|
||||||
|
|
||||||
static ErrorOr<NonnullRefPtr<Core::Timer>> load_page_for_screenshot_and_exit(Core::EventLoop& event_loop, HeadlessWebContentView& view, int screenshot_timeout)
|
static ErrorOr<NonnullRefPtr<Core::Timer>> load_page_for_screenshot_and_exit(Core::EventLoop& event_loop, HeadlessWebContentView& view, int screenshot_timeout)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue