diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp index 337a20270d..cffee72b65 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.cpp @@ -382,6 +382,13 @@ void OutOfProcessWebView::notify_server_did_change_favicon(Gfx::Bitmap const& fa on_favicon_change(favicon); } +Vector OutOfProcessWebView::notify_server_did_request_all_cookies(Badge, AK::URL const& url) +{ + if (on_get_all_cookies) + return on_get_all_cookies(url); + return {}; +} + String OutOfProcessWebView::notify_server_did_request_cookie(Badge, const AK::URL& url, Web::Cookie::Source source) { if (on_get_cookie) diff --git a/Userland/Libraries/LibWebView/OutOfProcessWebView.h b/Userland/Libraries/LibWebView/OutOfProcessWebView.h index a8e68db925..36ec0dab56 100644 --- a/Userland/Libraries/LibWebView/OutOfProcessWebView.h +++ b/Userland/Libraries/LibWebView/OutOfProcessWebView.h @@ -92,6 +92,7 @@ public: Function on_get_dom_node_properties; Function on_js_console_new_message; Function const& message_types, Vector const& messages)> on_get_js_console_messages; + Function(AK::URL const& url)> on_get_all_cookies; Function on_get_cookie; Function on_set_cookie; Function on_resource_status_change; @@ -154,6 +155,7 @@ private: virtual void notify_server_did_output_js_console_message(i32 message_index) override; virtual void notify_server_did_get_js_console_messages(i32 start_index, Vector const& message_types, Vector const& messages) override; virtual void notify_server_did_change_favicon(Gfx::Bitmap const& favicon) override; + virtual Vector notify_server_did_request_all_cookies(Badge, AK::URL const& url) override; virtual String notify_server_did_request_cookie(Badge, const AK::URL& url, Web::Cookie::Source source) override; virtual void notify_server_did_set_cookie(Badge, const AK::URL& url, Web::Cookie::ParsedCookie const& cookie, Web::Cookie::Source source) override; virtual void notify_server_did_update_resource_count(i32 count_waiting) override; diff --git a/Userland/Libraries/LibWebView/ViewImplementation.h b/Userland/Libraries/LibWebView/ViewImplementation.h index 6294114da7..bdd787a8b3 100644 --- a/Userland/Libraries/LibWebView/ViewImplementation.h +++ b/Userland/Libraries/LibWebView/ViewImplementation.h @@ -47,6 +47,7 @@ public: virtual void notify_server_did_output_js_console_message(i32 message_index) = 0; virtual void notify_server_did_get_js_console_messages(i32 start_index, Vector const& message_types, Vector const& messages) = 0; virtual void notify_server_did_change_favicon(Gfx::Bitmap const& favicon) = 0; + virtual Vector notify_server_did_request_all_cookies(Badge, AK::URL const& url) = 0; virtual String notify_server_did_request_cookie(Badge, const AK::URL& url, Web::Cookie::Source source) = 0; virtual void notify_server_did_set_cookie(Badge, const AK::URL& url, Web::Cookie::ParsedCookie const& cookie, Web::Cookie::Source source) = 0; virtual void notify_server_did_update_resource_count(i32 count_waiting) = 0; diff --git a/Userland/Libraries/LibWebView/WebContentClient.cpp b/Userland/Libraries/LibWebView/WebContentClient.cpp index c5bb0a8afd..46d9e83722 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.cpp +++ b/Userland/Libraries/LibWebView/WebContentClient.cpp @@ -185,6 +185,11 @@ void WebContentClient::did_change_favicon(Gfx::ShareableBitmap const& favicon) m_view.notify_server_did_change_favicon(*favicon.bitmap()); } +Messages::WebContentClient::DidRequestAllCookiesResponse WebContentClient::did_request_all_cookies(AK::URL const& url) +{ + return m_view.notify_server_did_request_all_cookies({}, url); +} + Messages::WebContentClient::DidRequestCookieResponse WebContentClient::did_request_cookie(AK::URL const& url, u8 source) { return m_view.notify_server_did_request_cookie({}, url, static_cast(source)); diff --git a/Userland/Libraries/LibWebView/WebContentClient.h b/Userland/Libraries/LibWebView/WebContentClient.h index b8ee9f4ab5..7e784b5adf 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.h +++ b/Userland/Libraries/LibWebView/WebContentClient.h @@ -58,6 +58,7 @@ private: virtual void did_request_alert(String const&) override; virtual Messages::WebContentClient::DidRequestConfirmResponse did_request_confirm(String const&) override; virtual Messages::WebContentClient::DidRequestPromptResponse did_request_prompt(String const&, String const&) override; + virtual Messages::WebContentClient::DidRequestAllCookiesResponse did_request_all_cookies(AK::URL const&) override; virtual Messages::WebContentClient::DidRequestCookieResponse did_request_cookie(AK::URL const&, u8) override; virtual void did_set_cookie(AK::URL const&, Web::Cookie::ParsedCookie const&, u8) override; virtual void did_update_resource_count(i32 count_waiting) override; diff --git a/Userland/Services/WebContent/WebContentClient.ipc b/Userland/Services/WebContent/WebContentClient.ipc index bfe319b0b8..72eb9ad973 100644 --- a/Userland/Services/WebContent/WebContentClient.ipc +++ b/Userland/Services/WebContent/WebContentClient.ipc @@ -1,6 +1,7 @@ #include #include #include +#include #include // FIXME: This isn't used here, but the generated IPC fails to compile without this include. @@ -35,6 +36,7 @@ endpoint WebContentClient did_get_dom_tree(String dom_tree) =| did_get_dom_node_properties(i32 node_id, String specified_style, String computed_style, String custom_properties, String node_box_sizing_json) =| did_change_favicon(Gfx::ShareableBitmap favicon) =| + did_request_all_cookies(URL url) => (Vector cookies) did_request_cookie(URL url, u8 source) => (String cookie) did_set_cookie(URL url, Web::Cookie::ParsedCookie cookie, u8 source) =| did_update_resource_count(i32 count_waiting) =|