1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:18:12 +00:00

Ladybird/Qt: Sanitize user-provided URLs with LibWebView

This commit is contained in:
Timothy Flynn 2023-10-13 09:52:06 -04:00 committed by Tim Flynn
parent 191e20d639
commit f023e37de7
8 changed files with 26 additions and 50 deletions

View file

@ -8,7 +8,7 @@
#include "Settings.h"
#include "StringUtils.h"
#include <AK/URL.h>
#include <LibPublicSuffix/URL.h>
#include <LibWebView/URL.h>
#include <QApplication>
#include <QPalette>
#include <QTextLayout>
@ -29,21 +29,17 @@ LocationEdit::LocationEdit(QWidget* parent)
connect(this, &QLineEdit::returnPressed, [&] {
clearFocus();
if (!Settings::the()->enable_search())
return;
auto query = ak_deprecated_string_from_qstring(text());
if (auto result = PublicSuffix::absolute_url(query); !result.is_error())
return;
auto search_url_or_error = AutoComplete::search_url_from_query(query);
if (search_url_or_error.is_error()) {
dbgln("LocationEdit::returnPressed: search_url_from_query failed: {}", search_url_or_error.error());
return;
Optional<String> search_engine_url;
if (Settings::the()->enable_search()) {
auto search_engine = Settings::the()->search_engine();
search_engine_url = MUST(ak_string_from_qstring(search_engine.url));
}
auto search_url = search_url_or_error.release_value();
setText(qstring_from_ak_string(search_url));
auto query = MUST(ak_string_from_qstring(text()));
if (auto url = WebView::sanitize_url(query, search_engine_url.map([](auto& value) { return value.bytes_as_string_view(); })); url.has_value())
setText(qstring_from_ak_deprecated_string(url->serialize()));
});
connect(this, &QLineEdit::textEdited, [this] {