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.
This commit is contained in:
Timothy Flynn 2024-09-22 13:25:18 -04:00 committed by Tim Flynn
parent 74588a0a16
commit 9e21e44841
Notes: github-actions[bot] 2024-09-22 18:12:19 +00:00
8 changed files with 26 additions and 103 deletions

View file

@ -11,7 +11,6 @@
#include <LibURL/URL.h> #include <LibURL/URL.h>
#include <LibWeb/HTML/SelectedFile.h> #include <LibWeb/HTML/SelectedFile.h>
#include <LibWebView/Application.h> #include <LibWebView/Application.h>
#include <LibWebView/CookieJar.h>
#include <LibWebView/SearchEngine.h> #include <LibWebView/SearchEngine.h>
#include <LibWebView/SourceHighlighter.h> #include <LibWebView/SourceHighlighter.h>
#include <LibWebView/URL.h> #include <LibWebView/URL.h>
@ -998,26 +997,6 @@ static void copy_data_to_clipboard(StringView data, NSPasteboardType pasteboard_
[NSMenu popUpContextMenu:self.select_dropdown withEvent:event forView:self]; [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]() { m_web_view_bridge->on_restore_window = [weak_self]() {
LadybirdWebView* self = weak_self; LadybirdWebView* self = weak_self;
if (self == nil) { if (self == nil) {

View file

@ -801,26 +801,6 @@ void BrowserWindow::initialize_tab(Tab* tab)
(void)modifiers; (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()); m_tabs_container->setTabIcon(m_tabs_container->indexOf(tab), tab->favicon());
create_close_button_for_tab(tab); create_close_button_for_tab(tab);

View file

@ -198,11 +198,6 @@ public:
Function<void(String const&)> on_received_dom_node_html; Function<void(String const&)> on_received_dom_node_html;
Function<void(i32 message_id)> on_received_console_message; Function<void(i32 message_id)> on_received_console_message;
Function<void(i32 start_index, Vector<ByteString> const& message_types, Vector<ByteString> const& messages)> on_received_console_messages; Function<void(i32 start_index, Vector<ByteString> const& message_types, Vector<ByteString> const& messages)> on_received_console_messages;
Function<Vector<Web::Cookie::Cookie>(URL::URL const& url)> on_get_all_cookies;
Function<Optional<Web::Cookie::Cookie>(URL::URL const& url, String const& name)> on_get_named_cookie;
Function<String(URL::URL const& url, Web::Cookie::Source source)> on_get_cookie;
Function<void(URL::URL const& url, Web::Cookie::ParsedCookie const& cookie, Web::Cookie::Source source)> on_set_cookie;
Function<void(Web::Cookie::Cookie const& cookie)> on_update_cookie;
Function<void(i32 count_waiting)> on_resource_status_change; Function<void(i32 count_waiting)> on_resource_status_change;
Function<void()> on_restore_window; Function<void()> on_restore_window;
Function<Gfx::IntPoint(Gfx::IntPoint)> on_reposition_window; Function<Gfx::IntPoint(Gfx::IntPoint)> on_reposition_window;

View file

@ -8,6 +8,7 @@
#include "Application.h" #include "Application.h"
#include "ViewImplementation.h" #include "ViewImplementation.h"
#include <LibWeb/Cookie/ParsedCookie.h> #include <LibWeb/Cookie/ParsedCookie.h>
#include <LibWebView/CookieJar.h>
namespace WebView { 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()) { return Application::cookie_jar().get_all_cookies(url);
if (view->on_get_all_cookies)
return view->on_get_all_cookies(url);
}
return Vector<Web::Cookie::Cookie> {};
} }
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()) { return Application::cookie_jar().get_named_cookie(url, name);
if (view->on_get_named_cookie)
return view->on_get_named_cookie(url, name);
}
return OptionalNone {};
} }
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()) { return Application::cookie_jar().get_cookie(url, source);
if (view->on_get_cookie)
return view->on_get_cookie(url, source);
}
return String {};
} }
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()) { Application::cookie_jar().set_cookie(url, cookie, source);
if (view->on_set_cookie)
view->on_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()) { Application::cookie_jar().update_cookie(cookie);
if (view->on_update_cookie)
view->on_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<u64> const& page_index) Messages::WebContentClient::DidRequestNewWebViewResponse WebContentClient::did_request_new_web_view(u64 page_id, Web::HTML::ActivateTab const& activate_tab, Web::HTML::WebViewHints const& hints, Optional<u64> const& page_index)

View file

@ -88,11 +88,11 @@ private:
virtual void did_request_set_prompt_text(u64 page_id, String const& message) override; 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_accept_dialog(u64 page_id) override;
virtual void did_request_dismiss_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::DidRequestAllCookiesResponse did_request_all_cookies(URL::URL const&) override;
virtual Messages::WebContentClient::DidRequestNamedCookieResponse did_request_named_cookie(u64 page_id, URL::URL const&, String const&) override; virtual Messages::WebContentClient::DidRequestNamedCookieResponse did_request_named_cookie(URL::URL const&, String const&) override;
virtual Messages::WebContentClient::DidRequestCookieResponse did_request_cookie(u64 page_id, URL::URL const&, Web::Cookie::Source) override; virtual Messages::WebContentClient::DidRequestCookieResponse did_request_cookie(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_set_cookie(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 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<u64> const& page_index) override; virtual Messages::WebContentClient::DidRequestNewWebViewResponse did_request_new_web_view(u64 page_id, Web::HTML::ActivateTab const&, Web::HTML::WebViewHints const&, Optional<u64> const& page_index) override;
virtual void did_request_activate_tab(u64 page_id) override; virtual void did_request_activate_tab(u64 page_id) override;
virtual void did_close_browsing_context(u64 page_id) override; virtual void did_close_browsing_context(u64 page_id) override;

View file

@ -479,17 +479,17 @@ void PageClient::page_did_change_favicon(Gfx::Bitmap const& favicon)
Vector<Web::Cookie::Cookie> PageClient::page_did_request_all_cookies(URL::URL const& url) Vector<Web::Cookie::Cookie> 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<Web::Cookie::Cookie> PageClient::page_did_request_named_cookie(URL::URL const& url, String const& name) Optional<Web::Cookie::Cookie> 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) String PageClient::page_did_request_cookie(URL::URL const& url, Web::Cookie::Source source)
{ {
auto response = client().send_sync_but_allow_failure<Messages::WebContentClient::DidRequestCookie>(m_id, move(url), source); auto response = client().send_sync_but_allow_failure<Messages::WebContentClient::DidRequestCookie>(url, source);
if (!response) { if (!response) {
dbgln("WebContent client disconnected during DidRequestCookie. Exiting peacefully."); dbgln("WebContent client disconnected during DidRequestCookie. Exiting peacefully.");
exit(0); 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) 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<Messages::WebContentClient::DidSetCookie>(m_id, url, cookie, source); auto response = client().send_sync_but_allow_failure<Messages::WebContentClient::DidSetCookie>(url, cookie, source);
if (!response) { if (!response) {
dbgln("WebContent client disconnected during DidSetCookie. Exiting peacefully."); dbgln("WebContent client disconnected during DidSetCookie. Exiting peacefully.");
exit(0); 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) 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) void PageClient::page_did_update_resource_count(i32 count_waiting)

View file

@ -66,11 +66,11 @@ endpoint WebContentClient
did_get_internal_page_info(u64 page_id, WebView::PageInfoType type, String info) =| did_get_internal_page_info(u64 page_id, WebView::PageInfoType type, String info) =|
did_change_favicon(u64 page_id, Gfx::ShareableBitmap favicon) =| did_change_favicon(u64 page_id, Gfx::ShareableBitmap favicon) =|
did_request_all_cookies(u64 page_id, URL::URL url) => (Vector<Web::Cookie::Cookie> cookies) did_request_all_cookies(URL::URL url) => (Vector<Web::Cookie::Cookie> cookies)
did_request_named_cookie(u64 page_id, URL::URL url, String name) => (Optional<Web::Cookie::Cookie> cookie) did_request_named_cookie(URL::URL url, String name) => (Optional<Web::Cookie::Cookie> cookie)
did_request_cookie(u64 page_id, URL::URL url, Web::Cookie::Source source) => (String cookie) did_request_cookie(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_set_cookie(URL::URL url, Web::Cookie::ParsedCookie cookie, Web::Cookie::Source source) => ()
did_update_cookie(u64 page_id, Web::Cookie::Cookie cookie) =| did_update_cookie(Web::Cookie::Cookie cookie) =|
did_update_resource_count(u64 page_id, i32 count_waiting) =| 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<u64> page_index) => (String handle) did_request_new_web_view(u64 page_id, Web::HTML::ActivateTab activate_tab, Web::HTML::WebViewHints hints, Optional<u64> page_index) => (String handle)
did_request_activate_tab(u64 page_id) =| did_request_activate_tab(u64 page_id) =|

View file

@ -45,13 +45,10 @@
#include <LibImageDecoderClient/Client.h> #include <LibImageDecoderClient/Client.h>
#include <LibRequests/RequestClient.h> #include <LibRequests/RequestClient.h>
#include <LibURL/URL.h> #include <LibURL/URL.h>
#include <LibWeb/Cookie/Cookie.h>
#include <LibWeb/Cookie/ParsedCookie.h>
#include <LibWeb/HTML/ActivateTab.h> #include <LibWeb/HTML/ActivateTab.h>
#include <LibWeb/HTML/SelectedFile.h> #include <LibWeb/HTML/SelectedFile.h>
#include <LibWeb/Worker/WebWorkerClient.h> #include <LibWeb/Worker/WebWorkerClient.h>
#include <LibWebView/Application.h> #include <LibWebView/Application.h>
#include <LibWebView/CookieJar.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>
@ -130,14 +127,6 @@ private:
: m_request_client(move(request_client)) : m_request_client(move(request_client))
, m_image_decoder_client(move(image_decoder_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]() { on_request_worker_agent = [this]() {
auto worker_client = MUST(launch_web_worker_process(MUST(get_paths_for_helper_process("WebWorker"sv)), *m_request_client)); auto worker_client = MUST(launch_web_worker_process(MUST(get_paths_for_helper_process("WebWorker"sv)), *m_request_client));
return worker_client->dup_socket(); return worker_client->dup_socket();