From e54837add5e260e2546a1a43966607b2ef039816 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sun, 11 Apr 2021 10:53:15 -0400 Subject: [PATCH] Browser+LibWeb: Add hooks for getting and setting cookies --- Userland/Applications/Browser/Tab.cpp | 11 +++++++++++ Userland/Applications/Browser/Tab.h | 2 ++ Userland/Applications/Browser/main.cpp | 11 +++++++++++ Userland/Libraries/LibWeb/WebViewHooks.h | 2 ++ 4 files changed, 26 insertions(+) diff --git a/Userland/Applications/Browser/Tab.cpp b/Userland/Applications/Browser/Tab.cpp index 8e7486cd94..f3f924083f 100644 --- a/Userland/Applications/Browser/Tab.cpp +++ b/Userland/Applications/Browser/Tab.cpp @@ -242,6 +242,17 @@ Tab::Tab(Type type) on_favicon_change(icon); }; + hooks().on_get_cookie = [this](auto& url) -> String { + if (on_get_cookie) + return on_get_cookie(url); + return {}; + }; + + hooks().on_set_cookie = [this](auto& url, auto& cookie) { + if (on_set_cookie) + on_set_cookie(url, cookie); + }; + hooks().on_get_source = [this](auto& url, auto& source) { view_source(url, source); }; diff --git a/Userland/Applications/Browser/Tab.h b/Userland/Applications/Browser/Tab.h index 2175da03f3..b880eff5f7 100644 --- a/Userland/Applications/Browser/Tab.h +++ b/Userland/Applications/Browser/Tab.h @@ -70,6 +70,8 @@ public: Function on_tab_open_request; Function on_tab_close_request; Function on_favicon_change; + Function on_get_cookie; + Function on_set_cookie; const String& title() const { return m_title; } const Gfx::Bitmap* icon() const { return m_icon; } diff --git a/Userland/Applications/Browser/main.cpp b/Userland/Applications/Browser/main.cpp index b4edd2dc97..ad28fce092 100644 --- a/Userland/Applications/Browser/main.cpp +++ b/Userland/Applications/Browser/main.cpp @@ -26,6 +26,7 @@ #include "BookmarksBarWidget.h" #include "Browser.h" +#include "CookieJar.h" #include "Tab.h" #include "WindowActions.h" #include @@ -148,6 +149,8 @@ int main(int argc, char** argv) bool bookmarksbar_enabled = true; auto bookmarks_bar = Browser::BookmarksBarWidget::construct(Browser::bookmarks_file_path(), bookmarksbar_enabled); + Browser::CookieJar cookie_jar; + auto window = GUI::Window::construct(); window->resize(640, 480); window->set_icon(app_icon.bitmap_for_size(16)); @@ -216,6 +219,14 @@ int main(int argc, char** argv) }); }; + new_tab.on_get_cookie = [&](auto& url) -> String { + return cookie_jar.get_cookie(url); + }; + + new_tab.on_set_cookie = [&](auto& url, auto& cookie) { + cookie_jar.set_cookie(url, cookie); + }; + new_tab.load(url); dbgln("Added new tab {:p}, loading {}", &new_tab, url); diff --git a/Userland/Libraries/LibWeb/WebViewHooks.h b/Userland/Libraries/LibWeb/WebViewHooks.h index dd5c5d57fc..748d4ce356 100644 --- a/Userland/Libraries/LibWeb/WebViewHooks.h +++ b/Userland/Libraries/LibWeb/WebViewHooks.h @@ -48,6 +48,8 @@ public: Function on_set_document; Function on_get_source; Function on_js_console_output; + Function on_get_cookie; + Function on_set_cookie; }; }