From 9e21e44841176803450d6c124c1697a4c5a53a6f Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sun, 22 Sep 2024 13:25:18 -0400 Subject: [PATCH] LibWebView+WebContent+UI: Remove cookie related WebView callbacks There's no need for each individual chrome to implement the cookie callbacks. We can handle these entirely within LibWebView. --- Ladybird/AppKit/UI/LadybirdWebView.mm | 21 ---------- Ladybird/Qt/BrowserWindow.cpp | 20 --------- .../Libraries/LibWebView/ViewImplementation.h | 5 --- .../Libraries/LibWebView/WebContentClient.cpp | 42 +++++-------------- .../Libraries/LibWebView/WebContentClient.h | 10 ++--- Userland/Services/WebContent/PageClient.cpp | 10 ++--- .../Services/WebContent/WebContentClient.ipc | 10 ++--- Userland/Utilities/headless-browser.cpp | 11 ----- 8 files changed, 26 insertions(+), 103 deletions(-) diff --git a/Ladybird/AppKit/UI/LadybirdWebView.mm b/Ladybird/AppKit/UI/LadybirdWebView.mm index 592dbbf5f07..89909fca2f0 100644 --- a/Ladybird/AppKit/UI/LadybirdWebView.mm +++ b/Ladybird/AppKit/UI/LadybirdWebView.mm @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -998,26 +997,6 @@ static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_ [NSMenu popUpContextMenu:self.select_dropdown withEvent:event forView:self]; }; - m_web_view_bridge->on_get_all_cookies = [](auto const& url) { - return WebView::Application::cookie_jar().get_all_cookies(url); - }; - - m_web_view_bridge->on_get_named_cookie = [](auto const& url, auto const& name) { - return WebView::Application::cookie_jar().get_named_cookie(url, name); - }; - - m_web_view_bridge->on_get_cookie = [](auto const& url, auto source) { - return WebView::Application::cookie_jar().get_cookie(url, source); - }; - - m_web_view_bridge->on_set_cookie = [](auto const& url, auto const& cookie, auto source) { - WebView::Application::cookie_jar().set_cookie(url, cookie, source); - }; - - m_web_view_bridge->on_update_cookie = [](auto const& cookie) { - WebView::Application::cookie_jar().update_cookie(cookie); - }; - m_web_view_bridge->on_restore_window = [weak_self]() { LadybirdWebView* self = weak_self; if (self == nil) { diff --git a/Ladybird/Qt/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp index 92360513283..d86c8e704e9 100644 --- a/Ladybird/Qt/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -801,26 +801,6 @@ void BrowserWindow::initialize_tab(Tab* tab) (void)modifiers; }; - tab->view().on_get_all_cookies = [](auto const& url) { - return WebView::Application::cookie_jar().get_all_cookies(url); - }; - - tab->view().on_get_named_cookie = [](auto const& url, auto const& name) { - return WebView::Application::cookie_jar().get_named_cookie(url, name); - }; - - tab->view().on_get_cookie = [](auto& url, auto source) { - return WebView::Application::cookie_jar().get_cookie(url, source); - }; - - tab->view().on_set_cookie = [](auto& url, auto& cookie, auto source) { - WebView::Application::cookie_jar().set_cookie(url, cookie, source); - }; - - tab->view().on_update_cookie = [](auto const& cookie) { - WebView::Application::cookie_jar().update_cookie(cookie); - }; - m_tabs_container->setTabIcon(m_tabs_container->indexOf(tab), tab->favicon()); create_close_button_for_tab(tab); diff --git a/Userland/Libraries/LibWebView/ViewImplementation.h b/Userland/Libraries/LibWebView/ViewImplementation.h index ac2c736efae..35103faa7c0 100644 --- a/Userland/Libraries/LibWebView/ViewImplementation.h +++ b/Userland/Libraries/LibWebView/ViewImplementation.h @@ -198,11 +198,6 @@ public: Function on_received_dom_node_html; Function on_received_console_message; Function const& message_types, Vector const& messages)> on_received_console_messages; - Function(URL::URL const& url)> on_get_all_cookies; - Function(URL::URL const& url, String const& name)> on_get_named_cookie; - Function on_get_cookie; - Function on_set_cookie; - Function on_update_cookie; Function on_resource_status_change; Function on_restore_window; Function on_reposition_window; diff --git a/Userland/Libraries/LibWebView/WebContentClient.cpp b/Userland/Libraries/LibWebView/WebContentClient.cpp index 14245b9332f..163cc549f80 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.cpp +++ b/Userland/Libraries/LibWebView/WebContentClient.cpp @@ -8,6 +8,7 @@ #include "Application.h" #include "ViewImplementation.h" #include +#include namespace WebView { @@ -425,50 +426,29 @@ void WebContentClient::did_change_favicon(u64 page_id, Gfx::ShareableBitmap cons } } -Messages::WebContentClient::DidRequestAllCookiesResponse WebContentClient::did_request_all_cookies(u64 page_id, URL::URL const& url) +Messages::WebContentClient::DidRequestAllCookiesResponse WebContentClient::did_request_all_cookies(URL::URL const& url) { - if (auto view = view_for_page_id(page_id); view.has_value()) { - if (view->on_get_all_cookies) - return view->on_get_all_cookies(url); - } - - return Vector {}; + return Application::cookie_jar().get_all_cookies(url); } -Messages::WebContentClient::DidRequestNamedCookieResponse WebContentClient::did_request_named_cookie(u64 page_id, URL::URL const& url, String const& name) +Messages::WebContentClient::DidRequestNamedCookieResponse WebContentClient::did_request_named_cookie(URL::URL const& url, String const& name) { - if (auto view = view_for_page_id(page_id); view.has_value()) { - if (view->on_get_named_cookie) - return view->on_get_named_cookie(url, name); - } - - return OptionalNone {}; + return Application::cookie_jar().get_named_cookie(url, name); } -Messages::WebContentClient::DidRequestCookieResponse WebContentClient::did_request_cookie(u64 page_id, URL::URL const& url, Web::Cookie::Source source) +Messages::WebContentClient::DidRequestCookieResponse WebContentClient::did_request_cookie(URL::URL const& url, Web::Cookie::Source source) { - if (auto view = view_for_page_id(page_id); view.has_value()) { - if (view->on_get_cookie) - return view->on_get_cookie(url, source); - } - - return String {}; + return Application::cookie_jar().get_cookie(url, source); } -void WebContentClient::did_set_cookie(u64 page_id, URL::URL const& url, Web::Cookie::ParsedCookie const& cookie, Web::Cookie::Source source) +void WebContentClient::did_set_cookie(URL::URL const& url, Web::Cookie::ParsedCookie const& cookie, Web::Cookie::Source source) { - if (auto view = view_for_page_id(page_id); view.has_value()) { - if (view->on_set_cookie) - view->on_set_cookie(url, cookie, source); - } + Application::cookie_jar().set_cookie(url, cookie, source); } -void WebContentClient::did_update_cookie(u64 page_id, Web::Cookie::Cookie const& cookie) +void WebContentClient::did_update_cookie(Web::Cookie::Cookie const& cookie) { - if (auto view = view_for_page_id(page_id); view.has_value()) { - if (view->on_update_cookie) - view->on_update_cookie(cookie); - } + Application::cookie_jar().update_cookie(cookie); } Messages::WebContentClient::DidRequestNewWebViewResponse WebContentClient::did_request_new_web_view(u64 page_id, Web::HTML::ActivateTab const& activate_tab, Web::HTML::WebViewHints const& hints, Optional const& page_index) diff --git a/Userland/Libraries/LibWebView/WebContentClient.h b/Userland/Libraries/LibWebView/WebContentClient.h index 6c8a3e9cb2a..d4f70b38210 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.h +++ b/Userland/Libraries/LibWebView/WebContentClient.h @@ -88,11 +88,11 @@ private: virtual void did_request_set_prompt_text(u64 page_id, String const& message) override; virtual void did_request_accept_dialog(u64 page_id) override; virtual void did_request_dismiss_dialog(u64 page_id) override; - virtual Messages::WebContentClient::DidRequestAllCookiesResponse did_request_all_cookies(u64 page_id, URL::URL const&) override; - virtual Messages::WebContentClient::DidRequestNamedCookieResponse did_request_named_cookie(u64 page_id, URL::URL const&, String const&) override; - virtual Messages::WebContentClient::DidRequestCookieResponse did_request_cookie(u64 page_id, URL::URL const&, Web::Cookie::Source) override; - virtual void did_set_cookie(u64 page_id, URL::URL const&, Web::Cookie::ParsedCookie const&, Web::Cookie::Source) override; - virtual void did_update_cookie(u64 page_id, Web::Cookie::Cookie const&) override; + virtual Messages::WebContentClient::DidRequestAllCookiesResponse did_request_all_cookies(URL::URL const&) override; + virtual Messages::WebContentClient::DidRequestNamedCookieResponse did_request_named_cookie(URL::URL const&, String const&) override; + virtual Messages::WebContentClient::DidRequestCookieResponse did_request_cookie(URL::URL const&, Web::Cookie::Source) override; + virtual void did_set_cookie(URL::URL const&, Web::Cookie::ParsedCookie const&, Web::Cookie::Source) override; + virtual void did_update_cookie(Web::Cookie::Cookie const&) override; virtual Messages::WebContentClient::DidRequestNewWebViewResponse did_request_new_web_view(u64 page_id, Web::HTML::ActivateTab const&, Web::HTML::WebViewHints const&, Optional const& page_index) override; virtual void did_request_activate_tab(u64 page_id) override; virtual void did_close_browsing_context(u64 page_id) override; diff --git a/Userland/Services/WebContent/PageClient.cpp b/Userland/Services/WebContent/PageClient.cpp index 70d8e7679c9..131403dcc47 100644 --- a/Userland/Services/WebContent/PageClient.cpp +++ b/Userland/Services/WebContent/PageClient.cpp @@ -479,17 +479,17 @@ void PageClient::page_did_change_favicon(Gfx::Bitmap const& favicon) Vector PageClient::page_did_request_all_cookies(URL::URL const& url) { - return client().did_request_all_cookies(m_id, url); + return client().did_request_all_cookies(url); } Optional PageClient::page_did_request_named_cookie(URL::URL const& url, String const& name) { - return client().did_request_named_cookie(m_id, url, name); + return client().did_request_named_cookie(url, name); } String PageClient::page_did_request_cookie(URL::URL const& url, Web::Cookie::Source source) { - auto response = client().send_sync_but_allow_failure(m_id, move(url), source); + auto response = client().send_sync_but_allow_failure(url, source); if (!response) { dbgln("WebContent client disconnected during DidRequestCookie. Exiting peacefully."); exit(0); @@ -499,7 +499,7 @@ String PageClient::page_did_request_cookie(URL::URL const& url, Web::Cookie::Sou void PageClient::page_did_set_cookie(URL::URL const& url, Web::Cookie::ParsedCookie const& cookie, Web::Cookie::Source source) { - auto response = client().send_sync_but_allow_failure(m_id, url, cookie, source); + auto response = client().send_sync_but_allow_failure(url, cookie, source); if (!response) { dbgln("WebContent client disconnected during DidSetCookie. Exiting peacefully."); exit(0); @@ -508,7 +508,7 @@ void PageClient::page_did_set_cookie(URL::URL const& url, Web::Cookie::ParsedCoo void PageClient::page_did_update_cookie(Web::Cookie::Cookie cookie) { - client().async_did_update_cookie(m_id, move(cookie)); + client().async_did_update_cookie(move(cookie)); } void PageClient::page_did_update_resource_count(i32 count_waiting) diff --git a/Userland/Services/WebContent/WebContentClient.ipc b/Userland/Services/WebContent/WebContentClient.ipc index 3a5b8fed2b8..230c35de914 100644 --- a/Userland/Services/WebContent/WebContentClient.ipc +++ b/Userland/Services/WebContent/WebContentClient.ipc @@ -66,11 +66,11 @@ endpoint WebContentClient did_get_internal_page_info(u64 page_id, WebView::PageInfoType type, String info) =| did_change_favicon(u64 page_id, Gfx::ShareableBitmap favicon) =| - did_request_all_cookies(u64 page_id, URL::URL url) => (Vector cookies) - did_request_named_cookie(u64 page_id, URL::URL url, String name) => (Optional cookie) - did_request_cookie(u64 page_id, URL::URL url, Web::Cookie::Source source) => (String cookie) - did_set_cookie(u64 page_id, URL::URL url, Web::Cookie::ParsedCookie cookie, Web::Cookie::Source source) => () - did_update_cookie(u64 page_id, Web::Cookie::Cookie cookie) =| + did_request_all_cookies(URL::URL url) => (Vector cookies) + did_request_named_cookie(URL::URL url, String name) => (Optional cookie) + did_request_cookie(URL::URL url, Web::Cookie::Source source) => (String cookie) + did_set_cookie(URL::URL url, Web::Cookie::ParsedCookie cookie, Web::Cookie::Source source) => () + did_update_cookie(Web::Cookie::Cookie cookie) =| did_update_resource_count(u64 page_id, i32 count_waiting) =| did_request_new_web_view(u64 page_id, Web::HTML::ActivateTab activate_tab, Web::HTML::WebViewHints hints, Optional page_index) => (String handle) did_request_activate_tab(u64 page_id) =| diff --git a/Userland/Utilities/headless-browser.cpp b/Userland/Utilities/headless-browser.cpp index 2f0311688a0..99dddfadc4c 100644 --- a/Userland/Utilities/headless-browser.cpp +++ b/Userland/Utilities/headless-browser.cpp @@ -45,13 +45,10 @@ #include #include #include -#include -#include #include #include #include #include -#include #include #include #include @@ -130,14 +127,6 @@ private: : m_request_client(move(request_client)) , m_image_decoder_client(move(image_decoder_client)) { - on_get_cookie = [](auto const& url, auto source) { - return WebView::Application::cookie_jar().get_cookie(url, source); - }; - - on_set_cookie = [](auto const& url, auto const& cookie, auto source) { - WebView::Application::cookie_jar().set_cookie(url, cookie, source); - }; - on_request_worker_agent = [this]() { auto worker_client = MUST(launch_web_worker_process(MUST(get_paths_for_helper_process("WebWorker"sv)), *m_request_client)); return worker_client->dup_socket();