LibWebView+UI: Generate the application debug menu

By migrating the debug menu to LibWebView, the AppKit and Qt UIs are now
in sync - the AppKit UI was previously missing some actions.

Further, this inadvertently fixes bugs around applying debug settings to
new web views, especially across site-isolated processes. We were
previously not applying settings appropriately; this now "just works" in
the LibWebView infra.
This commit is contained in:
Timothy Flynn 2025-09-03 09:00:52 -04:00 committed by Tim Flynn
commit 9c99c48f47
Notes: github-actions[bot] 2025-09-11 18:25:07 +00:00
15 changed files with 212 additions and 632 deletions

View file

@ -149,6 +149,44 @@ static void initialize_native_control(WebView::Action& action, QAction& qaction,
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/audio-volume-high.png"sv));
break;
case WebView::ActionID::DumpSessionHistoryTree:
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/history.png"sv));
break;
case WebView::ActionID::DumpDOMTree:
qaction.setIcon(load_icon_from_uri("resource://icons/browser/dom-tree.png"sv));
break;
case WebView::ActionID::DumpLayoutTree:
case WebView::ActionID::DumpPaintTree:
case WebView::ActionID::DumpDisplayList:
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/layout.png"sv));
break;
case WebView::ActionID::DumpStackingContextTree:
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/layers.png"sv));
break;
case WebView::ActionID::DumpStyleSheets:
case WebView::ActionID::DumpStyles:
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/filetype-css.png"sv));
break;
case WebView::ActionID::DumpCSSErrors:
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/error.png"sv));
break;
case WebView::ActionID::DumpCookies:
qaction.setIcon(load_icon_from_uri("resource://icons/browser/cookie.png"sv));
break;
case WebView::ActionID::DumpLocalStorage:
qaction.setIcon(load_icon_from_uri("resource://icons/browser/local-storage.png"sv));
break;
case WebView::ActionID::ShowLineBoxBorders:
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/box.png"sv));
break;
case WebView::ActionID::CollectGarbage:
qaction.setIcon(load_icon_from_uri("resource://icons/16x16/trash-can.png"sv));
qaction.setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_G));
break;
case WebView::ActionID::ClearCache:
qaction.setIcon(load_icon_from_uri("resource://icons/browser/clear-cache.png"sv));
break;
default:
break;
}
@ -166,6 +204,11 @@ static void add_items_to_menu(QMenu& menu, QWidget& parent, Span<WebView::Menu::
[&](NonnullRefPtr<WebView::Action>& action) {
auto* qaction = create_application_action(parent, action);
menu.addAction(qaction);
if (action->id() == WebView::ActionID::SpoofUserAgent || action->id() == WebView::ActionID::NavigatorCompatibilityMode) {
if (menu.icon().isNull())
menu.setIcon(load_icon_from_uri("resource://icons/16x16/spoof.png"sv));
}
},
[&](NonnullRefPtr<WebView::Menu> const& submenu) {
auto* qsubmenu = new QMenu(qstring_from_ak_string(submenu->title()), &menu);