From c75bd4ed15c1c343d9ccf6f9c1b7b22f6117d520 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Tue, 30 Jan 2024 19:15:55 -0700 Subject: [PATCH] Ladybird/Qt: Rename new_tab to new_tab_from_url and make it take AK::URL Instead of having QString be the API for these load() calls, just pipe AK::URL throughout the UI. --- Ladybird/Qt/BrowserWindow.cpp | 17 ++++++++--------- Ladybird/Qt/BrowserWindow.h | 2 +- Ladybird/Qt/StringUtils.cpp | 10 ++++++++++ Ladybird/Qt/StringUtils.h | 4 ++++ Ladybird/Qt/Tab.cpp | 11 +++++------ Ladybird/Qt/Tab.h | 2 +- 6 files changed, 29 insertions(+), 17 deletions(-) diff --git a/Ladybird/Qt/BrowserWindow.cpp b/Ladybird/Qt/BrowserWindow.cpp index 214474e9f5..1a387cde31 100644 --- a/Ladybird/Qt/BrowserWindow.cpp +++ b/Ladybird/Qt/BrowserWindow.cpp @@ -381,10 +381,10 @@ BrowserWindow::BrowserWindow(Vector const& initial_urls, WebView::CookieJar }); QObject::connect(about_action, &QAction::triggered, this, [this] { - new_tab("about:version", Web::HTML::ActivateTab::Yes); + new_tab_from_url("about:version"sv, Web::HTML::ActivateTab::Yes); }); QObject::connect(new_tab_action, &QAction::triggered, this, [this] { - new_tab(Settings::the()->new_tab_page(), Web::HTML::ActivateTab::Yes); + new_tab_from_url(ak_url_from_qstring(Settings::the()->new_tab_page()), Web::HTML::ActivateTab::Yes); }); QObject::connect(open_file_action, &QAction::triggered, this, &BrowserWindow::open_file); QObject::connect(settings_action, &QAction::triggered, this, [this] { @@ -448,8 +448,7 @@ BrowserWindow::BrowserWindow(Vector const& initial_urls, WebView::CookieJar }); for (size_t i = 0; i < initial_urls.size(); ++i) { - auto url_string = qstring_from_ak_string(initial_urls[i].serialize()); - new_tab(url_string, (i == 0) ? Web::HTML::ActivateTab::Yes : Web::HTML::ActivateTab::No); + new_tab_from_url(initial_urls[i], (i == 0) ? Web::HTML::ActivateTab::Yes : Web::HTML::ActivateTab::No); } setCentralWidget(m_tabs_container); @@ -470,7 +469,7 @@ void BrowserWindow::debug_request(ByteString const& request, ByteString const& a m_current_tab->debug_request(request, argument); } -Tab& BrowserWindow::new_tab(QString const& url, Web::HTML::ActivateTab activate_tab) +Tab& BrowserWindow::new_tab_from_url(AK::URL const& url, Web::HTML::ActivateTab activate_tab) { auto& tab = create_new_tab(activate_tab); tab.navigate(url); @@ -501,19 +500,19 @@ Tab& BrowserWindow::create_new_tab(Web::HTML::ActivateTab activate_tab) QObject::connect(&tab->view(), &WebContentView::urls_dropped, this, [this](auto& urls) { VERIFY(urls.size()); - m_current_tab->navigate(urls[0].toString()); + m_current_tab->navigate(ak_url_from_qurl(urls[0])); for (qsizetype i = 1; i < urls.size(); ++i) - new_tab(urls[i].toString(), Web::HTML::ActivateTab::No); + new_tab_from_url(ak_url_from_qurl(urls[i]), Web::HTML::ActivateTab::No); }); tab->view().on_new_tab = [this](auto activate_tab) { - auto& tab = new_tab("about:blank", activate_tab); + auto& tab = new_tab_from_url("about:blank"sv, activate_tab); return tab.view().handle(); }; tab->view().on_tab_open_request = [this](auto url, auto activate_tab) { - auto& tab = new_tab(qstring_from_ak_string(url.to_byte_string()), activate_tab); + auto& tab = new_tab_from_url(url, activate_tab); return tab.view().handle(); }; diff --git a/Ladybird/Qt/BrowserWindow.h b/Ladybird/Qt/BrowserWindow.h index e4e331adc9..144d931f06 100644 --- a/Ladybird/Qt/BrowserWindow.h +++ b/Ladybird/Qt/BrowserWindow.h @@ -73,7 +73,7 @@ public slots: void device_pixel_ratio_changed(qreal dpi); void tab_title_changed(int index, QString const&); void tab_favicon_changed(int index, QIcon const& icon); - Tab& new_tab(QString const&, Web::HTML::ActivateTab); + Tab& new_tab_from_url(AK::URL const&, Web::HTML::ActivateTab); Tab& new_tab_from_content(StringView html, Web::HTML::ActivateTab); void activate_tab(int index); void close_tab(int index); diff --git a/Ladybird/Qt/StringUtils.cpp b/Ladybird/Qt/StringUtils.cpp index ce26c6b7b7..a34ad01aae 100644 --- a/Ladybird/Qt/StringUtils.cpp +++ b/Ladybird/Qt/StringUtils.cpp @@ -21,3 +21,13 @@ QString qstring_from_ak_string(StringView ak_string) { return QString::fromUtf8(ak_string.characters_without_null_termination(), static_cast(ak_string.length())); } + +AK::URL ak_url_from_qstring(QString const& qstring) +{ + return AK::URL(qstring.toUtf8().data()); +} + +AK::URL ak_url_from_qurl(QUrl const& qurl) +{ + return AK::URL(qurl.toString().toUtf8().data()); +} diff --git a/Ladybird/Qt/StringUtils.h b/Ladybird/Qt/StringUtils.h index 7c856f7b7d..fd1323c0ea 100644 --- a/Ladybird/Qt/StringUtils.h +++ b/Ladybird/Qt/StringUtils.h @@ -10,8 +10,12 @@ #include #include #include +#include #include +#include AK::ByteString ak_byte_string_from_qstring(QString const&); String ak_string_from_qstring(QString const&); QString qstring_from_ak_string(StringView); +AK::URL ak_url_from_qstring(QString const&); +AK::URL ak_url_from_qurl(QUrl const&); diff --git a/Ladybird/Qt/Tab.cpp b/Ladybird/Qt/Tab.cpp index ea61c7f04c..8c8fb1d675 100644 --- a/Ladybird/Qt/Tab.cpp +++ b/Ladybird/Qt/Tab.cpp @@ -309,7 +309,7 @@ Tab::Tab(BrowserWindow* window, WebContentOptions const& web_content_options, St search_selected_text_action->setIcon(load_icon_from_uri("resource://icons/16x16/find.png"sv)); QObject::connect(search_selected_text_action, &QAction::triggered, this, [this]() { auto url = MUST(String::formatted(Settings::the()->search_engine().query_url, URL::percent_encode(*m_page_context_menu_search_text))); - m_window->new_tab(qstring_from_ak_string(url), Web::HTML::ActivateTab::Yes); + m_window->new_tab_from_url(AK::URL(url), Web::HTML::ActivateTab::Yes); }); auto take_screenshot = [this](auto type) { @@ -658,10 +658,9 @@ void Tab::focus_location_editor() m_location_edit->selectAll(); } -void Tab::navigate(QString const& url_qstring) +void Tab::navigate(AK::URL const& url) { - auto url_string = ak_string_from_qstring(url_qstring); - view().load(url_string); + view().load(url); } void Tab::load_html(StringView html) @@ -716,14 +715,14 @@ void Tab::copy_link_url(URL const& url) void Tab::location_edit_return_pressed() { - navigate(m_location_edit->text()); + navigate(ak_url_from_qurl(m_location_edit->text())); } void Tab::open_file() { auto filename = QFileDialog::getOpenFileName(this, "Open file", QDir::homePath(), "All Files (*.*)"); if (!filename.isNull()) - navigate(filename); + navigate(ak_url_from_qstring(filename)); } int Tab::tab_index() diff --git a/Ladybird/Qt/Tab.h b/Ladybird/Qt/Tab.h index b5b9e833f5..bb70c16e13 100644 --- a/Ladybird/Qt/Tab.h +++ b/Ladybird/Qt/Tab.h @@ -33,7 +33,7 @@ public: WebContentView& view() { return *m_view; } - void navigate(QString const&); + void navigate(AK::URL const&); void load_html(StringView); void back();