1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 05:57:44 +00:00

LibWebView: Use Unicode::parse_unicode_url for parsing URLs

This commit is contained in:
Simon Wanner 2023-10-21 21:16:05 +02:00 committed by Tim Flynn
parent 58f08107b0
commit 0fe192dfd9
2 changed files with 21 additions and 3 deletions

View file

@ -5,9 +5,11 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <AK/LexicalPath.h>
#include <AK/String.h>
#include <LibCore/System.h>
#include <LibFileSystem/FileSystem.h>
#include <LibUnicode/URL.h>
#include <LibWebView/URL.h>
#if defined(ENABLE_PUBLIC_SUFFIX)
@ -16,16 +18,32 @@
namespace WebView {
static Optional<URL> create_url_with_url_or_path(String const& url_or_path)
{
auto url = Unicode::create_unicode_url(url_or_path);
if (!url.is_error() && url.value().is_valid())
return url.release_value();
auto path = LexicalPath::canonicalized_path(url_or_path.to_deprecated_string());
auto url_from_path = URL::create_with_file_scheme(path);
if (url_from_path.is_valid())
return url_from_path;
return {};
}
static Optional<URL> query_public_suffix_list(StringView url_string)
{
auto out = MUST(String::from_utf8(url_string));
if (!out.contains("://"sv))
out = MUST(String::formatted("https://{}"sv, out));
auto url = URL::create_with_url_or_path(out.to_deprecated_string());
if (!url.is_valid())
auto maybe_url = create_url_with_url_or_path(out);
if (!maybe_url.has_value())
return {};
auto url = maybe_url.release_value();
if (url.host().has<URL::IPv4Address>() || url.host().has<URL::IPv6Address>())
return url;