LibWebView: Add context menu support to the Inspector's cookie table

The menu can currently support deleting a specific cookie or all cookies
for the current page.
This commit is contained in:
Timothy Flynn 2024-09-06 13:22:16 -04:00 committed by Andreas Kling
commit fc809f9755
Notes: github-actions[bot] 2024-09-07 09:11:36 +00:00
13 changed files with 73 additions and 0 deletions

View file

@ -213,6 +213,16 @@ InspectorClient::InspectorClient(ViewImplementation& content_web_view, ViewImple
m_content_web_view.replace_dom_node_attribute(node_id, attribute.name, replacement_attributes);
};
m_inspector_web_view.on_inspector_requested_cookie_context_menu = [this](auto cookie_index, auto position) {
if (cookie_index >= m_cookies.size())
return;
m_cookie_context_menu_index = cookie_index;
if (on_requested_cookie_context_menu)
on_requested_cookie_context_menu(position, m_cookies[cookie_index]);
};
m_inspector_web_view.on_inspector_requested_style_sheet_source = [this](auto const& identifier) {
m_content_web_view.request_style_sheet_source(identifier);
};
@ -468,6 +478,33 @@ void InspectorClient::context_menu_copy_dom_node_attribute_value()
m_context_menu_data.clear();
}
void InspectorClient::context_menu_delete_cookie()
{
VERIFY(m_cookie_context_menu_index.has_value());
VERIFY(*m_cookie_context_menu_index < m_cookies.size());
auto& cookie = m_cookies[*m_cookie_context_menu_index];
cookie.expiry_time = UnixDateTime::earliest();
Application::cookie_jar().update_cookie(move(cookie));
load_cookies();
m_cookie_context_menu_index.clear();
}
void InspectorClient::context_menu_delete_all_cookies()
{
for (auto& cookie : m_cookies) {
cookie.expiry_time = UnixDateTime::earliest();
Application::cookie_jar().update_cookie(move(cookie));
}
load_cookies();
m_cookie_context_menu_index.clear();
}
void InspectorClient::load_inspector()
{
auto inspector_html = MUST(Core::Resource::load_from_uri(INSPECTOR_HTML));