From 6c7422e8b7c6af376ec4eac068ed6c6e5615d740 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Tue, 8 Aug 2023 15:59:55 -0400 Subject: [PATCH] Ladybird: Only load a single URL at launch When we launch Ladybird, we currently: 1. Create a BrowserWindow, whose constructor navigates to the configured new tab page URL. 2. Then navigate to either "about:blank" or whatever URL is provided via the command line. This patch removes step 2 and forwards the URL from the command line (if any) to BrowserWindow. BrowserWindow's constructor then either navigates to that URL or the new tab page URL. --- Ladybird/Qt/BrowserWindow.cpp | 9 +++++++-- Ladybird/Qt/BrowserWindow.h | 2 +- Ladybird/Qt/main.cpp | 12 +++++------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Ladybird/Qt/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp index 625cf1bf4a..ea19770026 100644 --- a/Ladybird/Qt/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -40,7 +40,7 @@ static QIcon const& app_icon() return icon; } -BrowserWindow::BrowserWindow(Browser::CookieJar& cookie_jar, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, UseLagomNetworking use_lagom_networking) +BrowserWindow::BrowserWindow(Optional const& initial_url, Browser::CookieJar& cookie_jar, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling enable_callgrind_profiling, UseLagomNetworking use_lagom_networking) : m_cookie_jar(cookie_jar) , m_webdriver_content_ipc_path(webdriver_content_ipc_path) , m_enable_callgrind_profiling(enable_callgrind_profiling) @@ -397,7 +397,12 @@ BrowserWindow::BrowserWindow(Browser::CookieJar& cookie_jar, StringView webdrive m_go_back_action->setEnabled(false); m_go_forward_action->setEnabled(false); - new_tab(s_settings->new_tab_page(), Web::HTML::ActivateTab::Yes); + if (initial_url.has_value()) { + auto initial_url_string = qstring_from_ak_deprecated_string(initial_url->serialize()); + new_tab(initial_url_string, Web::HTML::ActivateTab::Yes); + } else { + new_tab(s_settings->new_tab_page(), Web::HTML::ActivateTab::Yes); + } setCentralWidget(m_tabs_container); setContextMenuPolicy(Qt::PreventContextMenu); diff --git a/Ladybird/Qt/BrowserWindow.h b/Ladybird/Qt/BrowserWindow.h index 6977eae8b9..9f27424761 100644 --- a/Ladybird/Qt/BrowserWindow.h +++ b/Ladybird/Qt/BrowserWindow.h @@ -28,7 +28,7 @@ class WebContentView; class BrowserWindow : public QMainWindow { Q_OBJECT public: - explicit BrowserWindow(Browser::CookieJar&, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, UseLagomNetworking); + explicit BrowserWindow(Optional const& initial_url, Browser::CookieJar&, StringView webdriver_content_ipc_path, WebView::EnableCallgrindProfiling, UseLagomNetworking); WebContentView& view() const { return m_current_tab->view(); } diff --git a/Ladybird/Qt/main.cpp b/Ladybird/Qt/main.cpp index 7e206f1db6..c72720bffa 100644 --- a/Ladybird/Qt/main.cpp +++ b/Ladybird/Qt/main.cpp @@ -107,17 +107,15 @@ ErrorOr serenity_main(Main::Arguments arguments) auto cookie_jar = database ? TRY(Browser::CookieJar::create(*database)) : Browser::CookieJar::create(); + Optional initial_url; + if (auto url = TRY(get_formatted_url(raw_url)); url.is_valid()) + initial_url = move(url); + Ladybird::s_settings = adopt_own_if_nonnull(new Ladybird::Settings()); - Ladybird::BrowserWindow window(cookie_jar, webdriver_content_ipc_path, enable_callgrind_profiling ? WebView::EnableCallgrindProfiling::Yes : WebView::EnableCallgrindProfiling::No, use_lagom_networking ? Ladybird::UseLagomNetworking::Yes : Ladybird::UseLagomNetworking::No); + Ladybird::BrowserWindow window(initial_url, cookie_jar, webdriver_content_ipc_path, enable_callgrind_profiling ? WebView::EnableCallgrindProfiling::Yes : WebView::EnableCallgrindProfiling::No, use_lagom_networking ? Ladybird::UseLagomNetworking::Yes : Ladybird::UseLagomNetworking::No); window.setWindowTitle("Ladybird"); window.resize(800, 600); window.show(); - if (auto url = TRY(get_formatted_url(raw_url)); url.is_valid()) { - window.view().load(url); - } else { - window.view().load("about:blank"sv); - } - return event_loop.exec(); }