diff --git a/AK/URL.cpp b/AK/URL.cpp index eb7da264d15..06e21ae4b2b 100644 --- a/AK/URL.cpp +++ b/AK/URL.cpp @@ -204,22 +204,29 @@ bool URL::compute_validity() const return true; } +// https://url.spec.whatwg.org/#default-port u16 URL::default_port_for_scheme(StringView scheme) { + // Spec defined mappings with port: + if (scheme == "ftp") + return 21; if (scheme == "http") return 80; if (scheme == "https") return 443; + if (scheme == "ws") + return 80; + if (scheme == "wss") + return 443; + + // NOTE: not in spec, but we support these too if (scheme == "gemini") return 1965; if (scheme == "irc") return 6667; if (scheme == "ircs") return 6697; - if (scheme == "ws") - return 80; - if (scheme == "wss") - return 443; + return 0; } diff --git a/Tests/LibWeb/Text/expected/URL/url.txt b/Tests/LibWeb/Text/expected/URL/url.txt new file mode 100644 index 00000000000..ae26759dc9c --- /dev/null +++ b/Tests/LibWeb/Text/expected/URL/url.txt @@ -0,0 +1,9 @@ +ftp://serenityos.org:21 +protocol => 'ftp:' +username => '' +password => '' +host => 'serenityos.org' +hostname => 'serenityos.org' +port => '' +pathname => '/' +search => '' diff --git a/Tests/LibWeb/Text/input/URL/url.html b/Tests/LibWeb/Text/input/URL/url.html new file mode 100644 index 00000000000..c37a2ef030f --- /dev/null +++ b/Tests/LibWeb/Text/input/URL/url.html @@ -0,0 +1,23 @@ + +