diff --git a/Ladybird/AppKit/main.mm b/Ladybird/AppKit/main.mm index f17fddf00e2..e1eed9c648f 100644 --- a/Ladybird/AppKit/main.mm +++ b/Ladybird/AppKit/main.mm @@ -24,22 +24,6 @@ # error "This project requires ARC" #endif -static URL rebase_url_on_serenity_resource_root(StringView url_string) -{ - URL url { url_string }; - Vector paths; - - for (auto segment : s_serenity_resource_root.split('/')) - paths.append(move(segment)); - - for (size_t i = 0; i < url.path_segment_count(); ++i) - paths.append(url.path_segment_at_index(i)); - - url.set_paths(move(paths)); - - return url; -} - ErrorOr serenity_main(Main::Arguments arguments) { [Application sharedApplication]; @@ -66,7 +50,7 @@ ErrorOr serenity_main(Main::Arguments arguments) auto database = TRY(WebView::Database::create(move(sql_server_paths))); auto cookie_jar = TRY(WebView::CookieJar::create(*database)); - auto new_tab_page_url = rebase_url_on_serenity_resource_root(Browser::default_new_tab_url); + URL new_tab_page_url = Browser::default_new_tab_url(); Vector initial_urls; for (auto const& raw_url : raw_urls) { diff --git a/Ladybird/Qt/Settings.cpp b/Ladybird/Qt/Settings.cpp index 140f32bf389..65218bff0c6 100644 --- a/Ladybird/Qt/Settings.cpp +++ b/Ladybird/Qt/Settings.cpp @@ -7,28 +7,10 @@ #include "Settings.h" #include "StringUtils.h" -#include #include -#include namespace Ladybird { -static QString rebase_default_url_on_serenity_resource_root(StringView default_url) -{ - URL url { default_url }; - Vector paths; - - for (auto segment : s_serenity_resource_root.split('/')) - paths.append(move(segment)); - - for (size_t i = 0; i < url.path_segment_count(); ++i) - paths.append(url.path_segment_at_index(i)); - - url.set_paths(move(paths)); - - return qstring_from_ak_deprecated_string(url.to_deprecated_string()); -} - Settings::Settings() : m_search_engine(WebView::default_search_engine()) { @@ -100,7 +82,7 @@ void Settings::set_autocomplete_engine(EngineProvider const& engine_provider) QString Settings::new_tab_page() { - static auto const default_new_tab_url = rebase_default_url_on_serenity_resource_root(Browser::default_new_tab_url); + static auto const default_new_tab_url = qstring_from_ak_string(Browser::default_new_tab_url()); return m_qsettings->value("new_tab_page", default_new_tab_url).toString(); } diff --git a/Userland/Applications/Browser/BrowserWindow.cpp b/Userland/Applications/Browser/BrowserWindow.cpp index 7621ca61257..cf5f8735623 100644 --- a/Userland/Applications/Browser/BrowserWindow.cpp +++ b/Userland/Applications/Browser/BrowserWindow.cpp @@ -284,7 +284,7 @@ void BrowserWindow::build_menus() m_change_homepage_action = GUI::Action::create( "Set Homepage URL...", g_icon_bag.go_home, [this](auto&) { - String homepage_url = String::from_deprecated_string(Config::read_string("Browser"sv, "Preferences"sv, "Home"sv, Browser::default_homepage_url)).release_value_but_fixme_should_propagate_errors(); + String homepage_url = String::from_deprecated_string(Config::read_string("Browser"sv, "Preferences"sv, "Home"sv, Browser::default_homepage_url())).release_value_but_fixme_should_propagate_errors(); if (GUI::InputBox::show(this, homepage_url, "Enter a URL:"sv, "Change Homepage"sv) == GUI::InputBox::ExecResult::OK) { if (URL(homepage_url).is_valid()) { Config::write_string("Browser"sv, "Preferences"sv, "Home"sv, homepage_url); diff --git a/Userland/Applications/Browser/main.cpp b/Userland/Applications/Browser/main.cpp index a42cc1563e1..f850552dc12 100644 --- a/Userland/Applications/Browser/main.cpp +++ b/Userland/Applications/Browser/main.cpp @@ -133,8 +133,8 @@ ErrorOr serenity_main(Main::Arguments arguments) auto app_icon = GUI::Icon::default_icon("app-browser"sv); - Browser::g_home_url = Config::read_string("Browser"sv, "Preferences"sv, "Home"sv, Browser::default_homepage_url); - Browser::g_new_tab_url = Config::read_string("Browser"sv, "Preferences"sv, "NewTab"sv, Browser::default_new_tab_url); + Browser::g_home_url = Config::read_string("Browser"sv, "Preferences"sv, "Home"sv, Browser::default_homepage_url()); + Browser::g_new_tab_url = Config::read_string("Browser"sv, "Preferences"sv, "NewTab"sv, Browser::default_new_tab_url()); Browser::g_search_engine = Config::read_string("Browser"sv, "Preferences"sv, "SearchEngine"sv, WebView::default_search_engine().query_url); Browser::g_content_filters_enabled = Config::read_bool("Browser"sv, "Preferences"sv, "EnableContentFilters"sv, Browser::default_enable_content_filters); Browser::g_autoplay_allowed_on_all_websites = Config::read_bool("Browser"sv, "Preferences"sv, "AllowAutoplayOnAllWebsites"sv, Browser::default_allow_autoplay_on_all_websites); diff --git a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp index 617355d8dff..feed66188a9 100644 --- a/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp +++ b/Userland/Applications/BrowserSettings/BrowserSettingsWidget.cpp @@ -107,11 +107,11 @@ ErrorOr> BrowserSettingsWidget::create() ErrorOr BrowserSettingsWidget::setup() { m_homepage_url_textbox = find_descendant_of_type_named("homepage_url_textbox"); - m_homepage_url_textbox->set_text(Config::read_string("Browser"sv, "Preferences"sv, "Home"sv, Browser::default_homepage_url), GUI::AllowCallback::No); + m_homepage_url_textbox->set_text(Config::read_string("Browser"sv, "Preferences"sv, "Home"sv, Browser::default_homepage_url()), GUI::AllowCallback::No); m_homepage_url_textbox->on_change = [&]() { set_modified(true); }; m_new_tab_url_textbox = find_descendant_of_type_named("new_tab_url_textbox"); - m_new_tab_url_textbox->set_text(Config::read_string("Browser"sv, "Preferences"sv, "NewTab"sv, Browser::default_new_tab_url), GUI::AllowCallback::No); + m_new_tab_url_textbox->set_text(Config::read_string("Browser"sv, "Preferences"sv, "NewTab"sv, Browser::default_new_tab_url()), GUI::AllowCallback::No); m_new_tab_url_textbox->on_change = [&]() { set_modified(true); }; m_color_scheme_combobox = find_descendant_of_type_named("color_scheme_combobox"); @@ -244,8 +244,8 @@ void BrowserSettingsWidget::apply_settings() void BrowserSettingsWidget::reset_default_values() { - m_homepage_url_textbox->set_text(Browser::default_homepage_url); - m_new_tab_url_textbox->set_text(Browser::default_new_tab_url); + m_homepage_url_textbox->set_text(Browser::default_homepage_url()); + m_new_tab_url_textbox->set_text(Browser::default_new_tab_url()); m_show_bookmarks_bar_checkbox->set_checked(Browser::default_show_bookmarks_bar); set_color_scheme(Browser::default_color_scheme); m_auto_close_download_windows_checkbox->set_checked(Browser::default_close_download_widget_on_finish); diff --git a/Userland/Applications/BrowserSettings/Defaults.h b/Userland/Applications/BrowserSettings/Defaults.h index 2b2fb038f1f..4090d4e4ffc 100644 --- a/Userland/Applications/BrowserSettings/Defaults.h +++ b/Userland/Applications/BrowserSettings/Defaults.h @@ -6,16 +6,38 @@ #pragma once +#include #include +#include namespace Browser { -static constexpr StringView default_homepage_url = "file:///res/html/misc/welcome.html"sv; -static constexpr StringView default_new_tab_url = "file:///res/html/misc/new-tab.html"sv; static constexpr StringView default_color_scheme = "auto"sv; static constexpr bool default_enable_content_filters = true; static constexpr bool default_show_bookmarks_bar = true; static constexpr bool default_close_download_widget_on_finish = false; static constexpr bool default_allow_autoplay_on_all_websites = false; +inline String const& default_homepage_url() +{ + // FIXME: Teach LibWeb how to load resource:// URLs, rather than converting to a file:// URL here. + static auto default_homepage_url = []() { + static constexpr auto url = "resource://html/misc/welcome.html"sv; + return MUST(Core::Resource::load_from_uri(url))->file_url(); + }(); + + return default_homepage_url; +} + +inline String const& default_new_tab_url() +{ + // FIXME: Teach LibWeb how to load resource:// URLs, rather than converting to a file:// URL here. + static auto default_new_tab_url = []() { + static constexpr auto url = "resource://html/misc/new-tab.html"sv; + return MUST(Core::Resource::load_from_uri(url))->file_url(); + }(); + + return default_new_tab_url; +} + }