1717
1818namespace WebView {
1919
20+ static constexpr auto s_pages = to_array<WebUI::Page>({
21+ { " about" sv, " About URLs" sv, WebUI::PageType::Static },
22+ { " bookmarks" sv, " Bookmarks" sv, WebUI::PageType::Dynamic },
23+ { " downloads" sv, " Downloads" sv, WebUI::PageType::Dynamic },
24+ { " history" sv, " History" sv, WebUI::PageType::Dynamic },
25+ { " newtab" sv, " New Tab" sv, WebUI::PageType::Static },
26+ { " processes" sv, " Task Manager" sv, WebUI::PageType::Dynamic },
27+ { " settings" sv, " Settings" sv, WebUI::PageType::Dynamic },
28+ { " version" sv, " Version" sv, WebUI::PageType::Dynamic },
29+ });
30+
31+ ReadonlySpan<WebUI::Page> WebUI::pages ()
32+ {
33+ return s_pages;
34+ }
35+
36+ Optional<WebUI::Page const &> WebUI::page_for_host (StringView host)
37+ {
38+ for (auto const & page : s_pages) {
39+ if (page.host == host)
40+ return page;
41+ }
42+ return {};
43+ }
44+
2045template <typename WebUIType>
2146static ErrorOr<NonnullRefPtr<WebUIType>> create_web_ui (WebContentClient& client, u64 page_id, String host)
2247{
@@ -33,23 +58,27 @@ static ErrorOr<NonnullRefPtr<WebUIType>> create_web_ui(WebContentClient& client,
3358
3459ErrorOr<RefPtr<WebUI>> WebUI::create (WebContentClient& client, u64 page_id, String host)
3560{
61+ auto page = page_for_host (host);
62+ if (!page.has_value () || page->type == PageType::Static)
63+ return nullptr ;
64+
3665 RefPtr<WebUI> web_ui;
3766
38- if (host == " bookmarks" sv)
67+ if (page-> host == " bookmarks" sv)
3968 web_ui = TRY (create_web_ui<BookmarksUI>(client, page_id, move (host)));
40- else if (host == " downloads" sv)
69+ else if (page-> host == " downloads" sv)
4170 web_ui = TRY (create_web_ui<DownloadsUI>(client, page_id, move (host)));
42- else if (host == " history" sv)
71+ else if (page-> host == " history" sv)
4372 web_ui = TRY (create_web_ui<HistoryUI>(client, page_id, move (host)));
44- else if (host == " processes" sv)
73+ else if (page-> host == " processes" sv)
4574 web_ui = TRY (create_web_ui<ProcessesUI>(client, page_id, move (host)));
46- else if (host == " settings" sv)
75+ else if (page-> host == " settings" sv)
4776 web_ui = TRY (create_web_ui<SettingsUI>(client, page_id, move (host)));
48- else if (host == " version" sv)
77+ else if (page-> host == " version" sv)
4978 web_ui = TRY (create_web_ui<VersionUI>(client, page_id, move (host)));
5079
51- if (web_ui)
52- web_ui->register_interfaces ();
80+ VERIFY (web_ui);
81+ web_ui->register_interfaces ();
5382
5483 return web_ui;
5584}
0 commit comments