Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

URL: file and non-special URL setters #4696

Merged
merged 1 commit into from
Feb 8, 2017
Merged

Conversation

annevk
Copy link
Member

@annevk annevk commented Feb 1, 2017

Also file URL host parsing.

See whatwg/url#224 for the corresponding URL Standard change.

@wpt-pr-bot
Copy link
Collaborator

Notifying @Sebmaster, @domenic, @mikewest, @rubys, @sideshowbarker, @smola, @tomalec, @xiaojunwu, and @zcorpan. (Learn how reviewing works.)

These tests will be available shortly on w3c-test.org.

w3c-test:do-not-mirror (What's this?)

@wpt-pr-bot wpt-pr-bot added the url label Feb 1, 2017
@wpt-stability-bot
Copy link

wpt-stability-bot commented Feb 1, 2017

Chrome (unstable channel)

Testing web-platform-tests at revision 37e78cf
Using browser at version 57.0.2987.19 dev
Starting 10 test iterations
All results were stable

All results

/url/url-constructor.html
Subtest Results
ERROR
/url/url-setters.html
Subtest Results
OK
<area>: Setting <http://me@example.net>.password = 'secret' PASS
<a>: Setting <sc://x/>.hostname = '\n' FAIL
URL: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' PASS
<a>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. FAIL
<a>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value FAIL
<area>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password PASS
URL: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' FAIL
<a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased PASS
URL: Setting <http://example.net>.port = '8080' PASS
<area>: Setting <nonsense:///test>.protocol = 'https' FAIL
<area>: Setting <http://example.net>.port = '8080' PASS
<area>: Setting <http://:secret@example.net>.username = 'me' PASS
URL: Setting <https://example.net>.search = '' PASS
<area>: Setting <https://example.net?lang=en-US>.hash = '##nav' PASS
<a>: Setting <sc://x/>.hostname = '\r' FAIL
URL: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes PASS
<area>: Setting <ftp://example.net>.protocol = 'test' FAIL
<a>: Setting <https://example.net#nav>.pathname = '../home' PASS
URL: Setting <file://y/>.host = 'x:123' FAIL
URL: Setting <https://example.net#nav>.search = 'lang=fr' PASS
<area>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path PASS
<area>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password PASS
<a>: Setting <https://example.net#nav>.hash = 'main' PASS
URL: Setting <sc://x/>.host = '?' FAIL
<area>: Setting <sc://x/>.hostname = '@' FAIL
<a>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. PASS
URL: Setting <file:///home/you/index.html>.username = 'me' No host means no username PASS
URL: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' FAIL
URL: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored PASS
<area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error FAIL
URL: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error FAIL
URL: Setting <http://example.net/>.host = '[::1.]' FAIL
URL: Setting <sc://x/>.host = ' ' FAIL
<area>: Setting <sc://x/>.port = '12' FAIL
<area>: Setting <sc://x/>.hostname = '\r' FAIL
<area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 FAIL
<a>: Setting <sc://x/>.hostname = '?' FAIL
<area>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored PASS
<area>: Setting <sc://x/>.hostname = '#' FAIL
<a>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes PASS
<a>: Setting <http://example.net/>.host = '[::1.]' FAIL
URL: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes PASS
<area>: Setting <file://y/>.hostname = 'x:123' FAIL
<a>: Setting <ssh://me@example.net>.protocol = 'file' FAIL
<area>: Setting <ssh://me@example.net>.protocol = 'gopher' FAIL
<a>: Setting <sc://x/>.hostname = '@' FAIL
<area>: Setting <a:/>.pathname = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.`
URL: Setting <http://example.net:8080>.port = '80' Default port number is removed PASS
URL: Setting <http://example.net/>.host = '[::1.2.]' FAIL
<area>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' FAIL
<area>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized PASS
<area>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username PASS
<area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' FAIL
<a>: Setting <sc:///>.username = 'x' PASS
<a>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host PASS
<a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special FAIL
URL: Setting <a:/>.hash = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' Simple percent-encoding; nuls, tabs, and newlines are removed`
<a>: Setting <http://example.net/>.host = '[::1.2.]' FAIL
<a>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host PASS
URL: Setting <sc://x/>.host = '@' FAIL
<a>: Setting <sc:///>.port = '12' PASS
<area>: Setting <a://example.net>.protocol = '+b' No leading punctuation PASS
<area>: Setting <sc://test@test/>.hostname = '' FAIL
<area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special FAIL
URL: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized PASS
<area>: Setting <http://example.net:8080>.port = '80' Default port number is removed PASS
URL: Setting <https://example.net?lang=en-US>.search = '' PASS
<area>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password PASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' FAIL
<a>: Setting <sc://x/>.hostname = ' ' FAIL
<area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value FAIL
URL: Setting <file:///home/me/index.html>.password = 'secret' No host means no password PASS
<a>: Setting <https://example.net?lang=en-US#nav>.hash = '' PASS
<a>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value PASS
<a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. PASS
<area>: Setting <http://example.net>.username = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the userinfo encode set.`
<a>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme PASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored PASS
<a>: Setting <a://example.net>.protocol = 'b' PASS
URL: Setting <http://me@example.net>.username = '' PASS
<a>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored FAIL
URL: Setting <file://localhost/>.port = '12' FAIL
<a>: Setting <file:///home/you/index.html>.username = 'me' No host means no username PASS
<a>: Setting <sc://x/>.hostname = '\t' FAIL
<a>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored PASS
<a>: Setting <a://example.net>.protocol = 'bC0+-.' PASS
<a>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. FAIL
URL: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored FAIL
<area>: Setting <file://test/>.port = '12' PASS
<area>: Setting <sc://x/>.host = '/' FAIL
<area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored FAIL
<a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 FAIL
<area>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password PASS
<a>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers PASS
<a>: Setting <a:/>.search = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.`
<a>: Setting <http://me:secret@example.net>.username = '' PASS
URL: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is FAIL
URL: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized FAIL
<a>: Setting <https://example.net>.hash = 'main' PASS
URL: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored FAIL
<a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 FAIL
<a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs PASS
<a>: Setting <sc://test:12/>.host = '' FAIL
<area>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' PASS
<a>: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password PASS
URL: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme FAIL
<area>: Setting <file://test/>.username = 'test' PASS
<area>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error FAIL
URL: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs FAIL
<area>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes PASS
URL: Setting <http://example.net>.pathname = '?' ? needs to be encoded PASS
<area>: Setting <file:///home/you/index.html>.username = 'me' No host means no username PASS
URL: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password PASS
URL: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
URL: Setting <sc://x/>.host = '\t' FAIL
<area>: Setting <http://example.net/>.host = '[::1.]' FAIL
<area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs PASS
<a>: Setting <a:/>.hash = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' Simple percent-encoding; nuls, tabs, and newlines are removed`
<a>: Setting <sc://x/>.host = '/' FAIL
<area>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme PASS
<area>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes FAIL
URL: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased PASS
URL: Setting <https://example.net>.host = 'example.com:443' Default port number is removed PASS
URL: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. FAIL
<area>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored PASS
<a>: Setting <http://example.net/>.host = '[::1.2.3.4x]' FAIL
URL: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host PASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' PASS
<a>: Setting <https://example.net?lang=en-US#nav>.search = '?' FAIL
URL: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value PASS
<area>: Setting <file://y/>.hostname = 'loc%41lhost' FAIL
<area>: Setting <a:/>.hash = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' Simple percent-encoding; nuls, tabs, and newlines are removed`
URL: Setting <a://example.net>.protocol = 'b' PASS
<a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. PASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host PASS
URL: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored PASS
<a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error FAIL
<a>: Setting <http://example.net/>.hostname = '[::1.]' FAIL
URL: Setting <https://example.net#nav>.pathname = 'home' PASS
URL: Setting <http://example.net/>.hostname = '[::1.]' FAIL
<area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable PASS
<area>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is FAIL
<a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts FAIL
<area>: Setting <https://example.net#nav>.pathname = 'home' PASS
<area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized PASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored PASS
<area>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored FAIL
<area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected PASS
URL: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password PASS
URL: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. PASS
<area>: Setting <http://example.net>.password = 'secret' PASS
URL: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored FAIL
URL: Setting <sc://x/>.hostname = '/' FAIL
<a>: Setting <https://example.net?lang=en-US#nav>.search = '' PASS
URL: Setting <https://example.net?lang=en-US#nav>.hash = '#' FAIL
<a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. FAIL
<a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected PASS
<a>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username PASS
<area>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host FAIL
URL: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes FAIL
URL: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme PASS
<area>: Setting <http://example.net>.host = 'example.com:8080' PASS
<area>: Setting <file://test/>.password = 'test' PASS
<a>: Setting <nonsense:///test>.protocol = 'https' FAIL
URL: Setting <sc://x/>.host = '\n' FAIL
<area>: Setting <https://example.net?lang=en-US#nav>.search = '' PASS
<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#' FAIL
URL: Setting <a://example.net>.protocol = '+b' No leading punctuation PASS
<area>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. PASS
<area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password PASS
<area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' FAIL
<area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored FAIL
<a>: Setting <ftp://example.net>.protocol = 'test' FAIL
URL: Setting <sc:///>.password = 'x' PASS
URL: Setting <file://test/>.password = 'test' PASS
URL: Setting <file://y/>.hostname = 'x:123' FAIL
URL: Setting <http://example.net>.password = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the userinfo encode set.`
<area>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<a>: Setting <sc://x/>.host = '#' FAIL
<area>: Setting <http://example.net>.host = '' The empty host is not valid for special schemes PASS
<a>: Setting <http://example.net>.password = 'secret' PASS
<area>: Setting <sc://x/>.hostname = '' Non-special scheme FAIL
<a>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs FAIL
URL: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected PASS
<area>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes PASS
<area>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes FAIL
URL: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized PASS
<area>: Setting <https://example.net>.search = '' PASS
URL: Setting <http://me:secret@example.net>.password = '' PASS
<area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. PASS
<a>: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error FAIL
URL: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified FAIL
<area>: Setting <http://example.net/>.host = '[::1.2.]' FAIL
URL: Setting <http://example.net>.host = 'example.com:80' Default port number is removed PASS
URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special FAIL
<area>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored PASS
<a>: Setting <a://example.net>.protocol = '+b' No leading punctuation PASS
<area>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed PASS
<a>: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host FAIL
URL: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected PASS
URL: Setting <https://example.net?lang=en-US#nav>.search = '?' FAIL
<a>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts FAIL
<a>: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<area>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers PASS
<a>: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes PASS
<area>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host PASS
URL: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. PASS
<area>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 FAIL
<a>: Setting <file:///home/me/index.html>.password = 'secret' No host means no password PASS
URL: Setting <data:text/plain,Stuff>.host = 'example.net' Cannot-be-a-base means no password PASS
<area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts FAIL
<a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored FAIL
URL: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host FAIL
URL: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers PASS
<a>: Setting <sc://x/>.hostname = '#' FAIL
URL: Setting <http://example.net>.pathname = '#' # needs to be encoded PASS
<area>: Setting <a://example.net>.protocol = '0b' No leading digit PASS
<area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme FAIL
URL: Setting <sc://test@test/>.hostname = '' FAIL
Loading data… PASS
<area>: Setting <http://example.net/path>.host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though. FAIL
<a>: Setting <https://example.net>.search = '' PASS
<a>: Setting <file://y/>.hostname = 'loc%41lhost' FAIL
<a>: Setting <sc://test:12/>.hostname = '' FAIL
<a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected PASS
URL: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored PASS
<a>: Setting <https://example.net?lang=en-US>.hash = '##nav' PASS
URL: Setting <non-base:value>.port = '12' PASS
<area>: Setting <http://:secret@example.net>.password = '' PASS
<area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host FAIL
URL: Setting <file://test/>.port = '12' PASS
URL: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored PASS
<area>: Setting <sc://x/>.hostname = '/' FAIL
<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#' FAIL
<area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special FAIL
<area>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized FAIL
URL: Setting <sc://test@test/>.host = '' FAIL
<a>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<a>: Setting <sc://test@test/>.hostname = '' FAIL
<a>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored FAIL
<area>: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored PASS
<area>: Setting <view-source+http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is *not* a segment delimiter for non-'special' URLs FAIL
<a>: Setting <sc://x/>.hostname = '' Non-special scheme FAIL
<a>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' PASS
<area>: Setting <sc://x/>.host = '@' FAIL
<a>: Setting <http://:secret@example.net>.username = 'me' PASS
<a>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password PASS
URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts FAIL
<a>: Setting <https://example.net#nav>.search = 'lang=fr' PASS
URL: Setting <sc://x/>.hostname = '\n' FAIL
URL: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs PASS
URL: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored FAIL
URL: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable PASS
<a>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error FAIL
<a>: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<area>: Setting <ssh://me@example.net>.protocol = 'file' FAIL
<a>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]' FAIL
<area>: Setting <file://y/>.host = 'loc%41lhost' FAIL
<area>: Setting <https://example.net?lang=en-US>.search = '' PASS
URL: Setting <sc://x/>.host = '/' FAIL
<area>: Setting <http://me:secret@example.net>.password = '' PASS
<area>: Setting <https://example.net?lang=en-US#nav>.hash = '' PASS
<area>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' PASS
<a>: Setting <http://example.net>.password = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the userinfo encode set.`
<a>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored PASS
<area>: Setting <https://example.net#nav>.pathname = '../home' PASS
<a>: Setting <http://example.net:8080>.port = '80' Default port number is removed PASS
<a>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes PASS
<a>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes PASS
<a>: Setting <file://y/>.host = 'x:123' FAIL
<a>: Setting <sc://x/>.hostname = '/' FAIL
<area>: Setting <a://example.net>.protocol = 'bC0+-.' PASS
<a>: Setting <file://test/>.username = 'test' PASS
URL: Setting <https://example.net>.hash = 'main' PASS
URL: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored PASS
<a>: Setting <https://example.net>.protocol = 's' FAIL
<a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored FAIL
<area>: Setting <sc://x/>.host = '\r' FAIL
URL: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts FAIL
URL: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error FAIL
<area>: Setting <https://example.net>.protocol = 's' FAIL
<area>: Setting <sc://test@test/>.host = '' FAIL
<area>: Setting <sc://x/>.host = '#' FAIL
<area>: Setting <http://example.net/>.hostname = '[::1.]' FAIL
<area>: Setting <sc:///>.password = 'x' PASS
<area>: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<a>: Setting <file://localhost/>.port = '12' FAIL
URL: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored FAIL
URL: Setting <https://example.net?lang=en-US#nav>.search = '?lang=fr' PASS
URL: Setting <a://example.net>.protocol = 'bC0+-.' PASS
<a>: Setting <http://example.net/>.host = '[::1.2.3.]' FAIL
<a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored PASS
<area>: Setting <a://example.net>.protocol = 'b' PASS
<area>: Setting <sc:///>.username = 'x' PASS
<area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme FAIL
URL: Setting <https://example.net>.protocol = 's' FAIL
URL: Setting <sc://x/>.port = '12' FAIL
<area>: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error FAIL
<area>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed PASS
<a>: Setting <https://example.net:4433>.port = '443' Default port number is removed PASS
<area>: Setting <https://example.net?lang=en-US#nav>.search = 'lang=fr' PASS
<a>: Setting <sc://test@test/>.host = '' FAIL
<a>: Setting <http://example.net>.pathname = '#' # needs to be encoded PASS
URL: Setting <sc:///>.username = 'x' PASS
<a>: Setting <https://example.net#nav>.pathname = 'home' PASS
<area>: Setting <http://example.net/path>.port = '8080\stuff' Stuff after a \ delimiter is ignored for special schemes PASS
<area>: Setting <file://localhost/>.port = '12' FAIL
URL: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username PASS
URL: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized PASS
<area>: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. FAIL
<area>: Setting <https://example.net#nav>.hash = 'main' PASS
<a>: Setting <sc://x/>.host = ' ' FAIL
URL: Setting <http://example.net>.host = '' The empty host is not valid for special schemes PASS
<area>: Setting <sc:///>.port = '12' PASS
<area>: Setting <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored FAIL
URL: Setting <sc://test:12/>.hostname = '' FAIL
<area>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored FAIL
<a>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is PASS
<a>: Setting <https://example.net>.port = '80' Default port number is only removed for the relevant scheme PASS
URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special FAIL
<a>: Setting <http://example.net>.username = 'me' PASS
<area>: Setting <sc://x/>.host = '' Non-special scheme FAIL
<area>: Setting <sc://x/>.hostname = '\n' FAIL
<a>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes FAIL
URL: Setting <http://me@example.net>.password = 'secret' PASS
URL: Setting <http://:secret@example.net>.password = '' PASS
URL: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value FAIL
URL: Setting <ssh://me@example.net>.protocol = 'file' FAIL
URL: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes FAIL
<a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special FAIL
<a>: Setting <http://example.net:8080>.hostname = 'example.com' PASS
URL: Setting <nonsense:///test>.protocol = 'https' FAIL
<area>: Setting <http://example.net>.username = 'me' PASS
<area>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes FAIL
<a>: Setting <file://test/>.port = '12' PASS
<a>: Setting <a://example.net>.protocol = '0b' No leading digit PASS
<a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme FAIL
<area>: Setting <https://example.net>.hash = 'main' PASS
<area>: Setting <sc://x/>.host = '\t' FAIL
URL: Setting <https://example.net#nav>.pathname = '../home' PASS
<a>: Setting <unix:/run/foo.socket?timeout=10>.pathname = '/var/log/../run/bar.socket' FAIL
<a>: Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username PASS
<area>: Setting <http://example.net>.password = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the userinfo encode set.`
<area>: Setting <sc://x/>.host = '?' FAIL
URL: Setting <http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<a>: Setting <http://example.net:8080>.hostname = '0x7F000001' IPv4 address syntax is normalized PASS
URL: Setting <sc://x/>.hostname = '@' FAIL
<area>: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored FAIL
<a>: Setting <sc://x/>.host = '\t' FAIL
<area>: Setting <a:/>.search = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.`
<a>: Setting <file://test/>.password = 'test' PASS
<a>: Setting <ssh://me@example.net>.protocol = 'gopher' FAIL
<area>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts FAIL
<area>: Setting <sc://x/>.host = ' ' FAIL
<area>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored FAIL
<a>: Setting <sc://x/>.host = '' Non-special scheme FAIL
URL: Setting <http://example.net/path>.host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<a>: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path PASS
URL: Setting <https://example.net?lang=en-US#nav>.search = '' PASS
URL: Setting <ftp://example.net>.protocol = 'test' FAIL
URL: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme FAIL
<a>: Setting <http://example.net/path>.port = '8080/stuff' Stuff after a / delimiter is ignored PASS
URL: Setting <sc://x/>.host = '' Non-special scheme FAIL
<a>: Setting <sc://x/>.host = '?' FAIL
<area>: Setting <http://me@example.net>.username = '' PASS
<a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable PASS
URL: Setting <sc://x/>.hostname = ' ' FAIL
<a>: Setting <http://example.net/path>.host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored PASS
<a>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified FAIL
<area>: Setting <https://example.net#nav>.search = 'lang=fr' PASS
<area>: Setting <file://y/>.host = 'x:123' FAIL
<area>: Setting <https://example.net?lang=en-US#nav>.search = '?' FAIL
URL: Setting <mailto:me@example.net>.pathname = '/foo' Cannot-be-a-base don’t have a path PASS
<a>: Setting <https://example.net>.host = 'example.com:443' Default port number is removed PASS
<area>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized PASS
<a>: Setting <http://example.net>.host = '[::0:01]:2' IPv6 address syntax is normalized FAIL
<a>: Setting <sc://x/>.host = '@' FAIL
URL: Setting <http://me:secret@example.net>.username = '' PASS
URL: Setting <sc://x/>.hostname = '\t' FAIL
URL: Setting <https://example.net:4433>.port = '443' Default port number is removed PASS
URL: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme PASS
URL: Setting <http://example.net/>.hostname = '[::1.2.3.]' FAIL
<area>: Setting <http://example.net:8080>.hostname = 'example.com' PASS
<a>: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes FAIL
URL: Setting <sc:///>.port = '12' PASS
URL: Setting <a:/>.pathname = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.`
<a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored FAIL
URL: Setting <view-source+http://example.net/path>.port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error FAIL
<a>: Setting <http://example.net>.host = 'example.com:8080' PASS
<a>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized PASS
URL: Setting <http://example.net>.username = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the userinfo encode set.`
<a>: Setting <http://example.net/>.hostname = '[::1.2.]' FAIL
URL: Setting <https://example.net?lang=en-US#nav>.hash = '' PASS
URL: Setting <http://example.net/>.host = '[google.com]' Broken IPv6 FAIL
<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main' PASS
URL: Setting <a://example.net>.protocol = '0b' No leading digit PASS
<a>: Setting <http://me@example.net>.password = 'secret' PASS
<a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized PASS
<area>: Setting <http://example.net>.pathname = '?' ? needs to be encoded PASS
<area>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored PASS
<area>: Setting <http://example.net>.username = '%c3%89té' Bytes already percent-encoded are left as-is. PASS
URL: Setting <sc://x/>.hostname = '?' FAIL
URL: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored PASS
<a>: Setting <sc:///>.password = 'x' PASS
<area>: Setting <http://example.net>.pathname = '#' # needs to be encoded PASS
URL: Setting <http://example.net/path>.host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored PASS
<a>: Setting <http://example.net>.username = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the userinfo encode set.`
URL: Setting <sc://x/>.hostname = '' Non-special scheme FAIL
<a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme FAIL
URL: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes FAIL
<a>: Setting <sc://x/>.host = '\r' FAIL
<a>: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is FAIL
<area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. FAIL
URL: Setting <http://example.net/>.hostname = '[::1.2.]' FAIL
URL: Setting <file://test/>.username = 'test' PASS
<area>: Setting <http://example.net:8080>.host = 'example.com' Port number is unchanged if not specified in the new value PASS
URL: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 FAIL
<a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored FAIL
<area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored PASS
URL: Setting <file://y/>.hostname = 'loc%41lhost' FAIL
<a>: Setting <http://example.net/path>.port = '8080?stuff' Stuff after a ? delimiter is ignored PASS
URL: Setting <https://example.net#nav>.hash = 'main' PASS
<a>: Setting <http://example.net>.port = '8080' PASS
<a>: Setting <sc://x/>.host = '\n' FAIL
<a>: Setting <mailto:me@example.net>.password = 'secret' Cannot-be-a-base means no password PASS
URL: Setting <http://example.net/path>.port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<a>: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored PASS
URL: Setting <https://example.net?lang=en-US>.hash = '##nav' PASS
<a>: Setting <http://me@example.net>.username = '' PASS
URL: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password PASS
URL: Setting <file://y/>.host = 'loc%41lhost' FAIL
<area>: Setting <https://example.net:4433>.port = '443' Default port number is removed PASS
<area>: Setting <http://example.net/>.hostname = '[::1.2.]' FAIL
<a>: Setting <https://example.net?lang=en-US>.search = '' PASS
URL: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored FAIL
URL: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr' FAIL
URL: Setting <http://example.net>.host = 'example.com:8080' PASS
URL: Setting <http://example.net>.hostname = '' The empty host is not valid for special schemes PASS
<area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased PASS
<area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected PASS
URL: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes FAIL
<a>: Setting <sc://x/>.port = '12' FAIL
<area>: Setting <http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error PASS
<area>: Setting <http://example.net:8080>.host = 'example.com:' Port number is unchanged if not specified FAIL
<a>: Setting <non-base:value>.port = '12' PASS
<area>: Setting <sc://test:12/>.host = '' FAIL
<area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored PASS
<area>: Setting <non-base:value>.port = '12' PASS
URL: Setting <sc://x/>.hostname = '#' FAIL
URL: Setting <sc://x/>.host = '\r' FAIL
<area>: Setting <sc://x/>.hostname = ' ' FAIL
URL: Setting <sc://x/>.hostname = '\r' FAIL
URL: Setting <sc://x/>.host = '#' FAIL
<a>: Setting <http://me:secret@example.net>.password = '' PASS
URL: Setting <http://example.net/>.host = '[::1.2.3.]' FAIL
<a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded PASS
<area>: Setting <sc://test:12/>.hostname = '' FAIL
<area>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes FAIL
<a>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes FAIL
<a>: Setting <http://:secret@example.net>.password = '' PASS
URL: Setting <http://example.net:8080>.hostname = 'example.com' PASS
<area>: Setting <sc://x/>.hostname = '\t' FAIL
<a>: Setting <view-source+http://example.net/foo>.host = '' The empty host is OK for non-special schemes FAIL
<a>: Setting <http://example.net>.host = 'example.com:80' Default port number is removed PASS
URL: Setting <https://example.net?lang=en-US#nav>.hash = '#main' PASS
<a>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host FAIL
<area>: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is PASS
URL: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is. PASS
<area>: Setting <http://me:secret@example.net>.username = '' PASS
<area>: Setting <http://example.net/>.hostname = '[::1.2.3.]' FAIL
URL: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored FAIL
<area>: Setting <https://example.net>.host = 'example.com:80' Default port number is only removed for the relevant scheme PASS
<a>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored FAIL
<a>: Setting <file://y/>.hostname = 'x:123' FAIL
<a>: Setting <file://y/>.host = 'loc%41lhost' FAIL
<area>: Setting <http://example.net/>.host = '[::1.2.3.]' FAIL
<area>: Setting <unix:/run/foo.socket>.username = 'me' No host means no username PASS
URL: Setting <a:/foo>.host = 'example.net' Path-only URLs can gain a host FAIL
<a>: Setting <http://example.net/>.hostname = '[::1.2.3.]' FAIL
<area>: Setting <http://example.net/>.host = '[::1.2.3.4x]' FAIL
URL: Setting <http://example.net>.username = 'me' PASS
URL: Setting <http://example.net>.password = 'secret' PASS
URL: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers PASS
URL: Setting <http://example.net>.search = '%c3%89té' Bytes already percent-encoded are left as-is PASS
<area>: Setting <http://example.net:8080/path>.hostname = 'example.com:' Stuff after a : delimiter is ignored FAIL
<area>: Setting <sc://x/>.host = '\n' FAIL
<a>: Setting <a:/>.pathname = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.`
URL: Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. FAIL
<area>: Setting <sc://x/>.hostname = '?' FAIL
<a>: Setting <unix:/run/foo.socket>.password = 'secret' No host means no password PASS
URL: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host PASS
URL: Setting <ssh://me@example.net>.protocol = 'gopher' FAIL
URL: Setting <http://:secret@example.net>.username = 'me' PASS
<a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers PASS
URL: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored FAIL
URL: Setting <http://example.net/>.host = '[::1.2.3.4x]' FAIL
<a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored FAIL
<area>: Setting <http://example.net/path>.host = 'example.com:65535' Port numbers are 16 bit integers PASS
URL: Setting <http://example.net/path>.port = '8080#stuff' Stuff after a # delimiter is ignored PASS
URL: Setting <a:/>.search = '�\t\n\r� !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\az{ }~���Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.`
URL: Setting <sc://test:12/>.host = '' FAIL
URL: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments. FAIL
URL: Setting <unix:/run/foo.socket>.username = 'me' No host means no username PASS
/url/url-origin.html
Subtest Results
OK
Origin parsing: <about:/../> against <about:blank> PASS
Origin parsing: <test.txt> against <http://www.example.com/test> PASS
Origin parsing: <中/test.txt> against <http://www.example.com/test> PASS
Origin parsing: <foo://> against <http://example.org/foo/bar> FAIL
Origin parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> PASS
Origin parsing: < \t> against <http://example.org/foo/bar> PASS
Origin parsing: <http://www/foo/%2E/html> against <about:blank> PASS
Origin parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> PASS
Origin parsing: <?x> against <sc://ñ> FAIL
Origin parsing: <./test.txt> against <http://www.example.com/test> PASS
Origin parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> FAIL
Origin parsing: <http:foo.com> against <http://example.org/foo/bar> PASS
Origin parsing: <wss:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <wss:/example.com/> against <about:blank> PASS
Origin parsing: <https:example.com/> against <about:blank> PASS
Origin parsing: <#i> against <sc:sd> FAIL
Origin parsing: <https:/example.com/> against <about:blank> PASS
Origin parsing: <wss:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <data:example.com/> against <about:blank> PASS
Origin parsing: <../i> against <sc://ho/pa> FAIL
Origin parsing: <#\> against <http://example.org/foo/bar> PASS
Origin parsing: <http://www.@pple.com> against <about:blank> PASS
Origin parsing: <http://999999999> against <http://other.com/> PASS
Origin parsing: <http://example.com/foo/../../..> against <about:blank> PASS
Origin parsing: <http://example.com/‥/foo> against <about:blank> PASS
Origin parsing: <ftp:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <sc://ñ> against <about:blank> FAIL
Origin parsing: <sc:\../> against <about:blank> FAIL
Origin parsing: <http://example.com//foo> against <about:blank> PASS
Origin parsing: <ftp:/example.com/> against <about:blank> PASS
Origin parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> FAIL
Origin parsing: <http://example.com/foo%2> against <about:blank> PASS
Origin parsing: <#i> against <sc://ho/pa> FAIL
Origin parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> FAIL
Origin parsing: <http://foo.com/\@> against <http://example.org/foo/bar> PASS
Origin parsing: <:> against <http://example.org/foo/bar> PASS
Origin parsing: <http:@www.example.com> against <about:blank> PASS
Origin parsing: <:foo.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/foo/../../../ton> against <about:blank> PASS
Origin parsing: <h\tt\nt\rp://h\to\ns\rt:9\t0\n0\r0/p\ta\nt\rh?q\tu\ne\rry#f\tr\na\rg> against <about:blank> PASS
Origin parsing: <http://example.com/foo/.> against <about:blank> PASS
Origin parsing: <https:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://256.256.256.256.256> against <http://other.com/> PASS
Origin parsing: <?i> against <sc://ho/pa> FAIL
Origin parsing: <http://a:b@www.example.com> against <about:blank> PASS
Origin parsing: <https:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: </> against <http://example.org/foo/bar> PASS
Origin parsing: <http://你好你好> against <http://other.com/> FAIL
Origin parsing: </test.txt> against <http://www.example.com/test> PASS
Origin parsing: <http://0Xc0.0250.01> against <http://other.com/> PASS
Origin parsing: <http:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <#β> against <http://example.org/foo/bar> PASS
Origin parsing: <c:/foo> against <http://example.org/foo/bar> FAIL
Origin parsing: </a/ /c> against <http://example.org/foo/bar> PASS
Origin parsing: <http://192.0x00A80001> against <about:blank> PASS
Origin parsing: <foo:/bar.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <http://www.google.com/foo?bar=baz#> against <about:blank> PASS
Origin parsing: <https://foo:80/> against <about:blank> PASS
Origin parsing: <http://192.168.257> against <http://other.com/> PASS
Origin parsing: <http://example.com/foo%00%51> against <about:blank> FAIL
Origin parsing: <#/> against <http://example.org/foo/bar> PASS
Origin parsing: <ftps:example.com/> against <about:blank> FAIL
Origin parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/foo/%2e> against <about:blank> PASS
Origin parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> PASS
Origin parsing: <http://@pple.com> against <about:blank> PASS
Origin parsing: <http://192.168.257.com> against <http://other.com/> PASS
Origin parsing: <http://0xffffffff> against <http://other.com/> PASS
Origin parsing: <http://example.com////../..> against <about:blank> PASS
Origin parsing: <//www.example2.com> against <http://www.example.com/test> PASS
Origin parsing: <http://:@www.example.com> against <about:blank> PASS
Origin parsing: <#> against <http://example.org/foo/bar> PASS
Origin parsing: <http::@c:29> against <http://example.org/foo/bar> PASS
Origin parsing: <gopher:example.com/> against <about:blank> PASS
Origin parsing: <wss:example.com/> against <about:blank> PASS
Origin parsing: <#i> against <sc:sd/sd> FAIL
Origin parsing: <git+https://github.com/foo/bar> against <about:blank> FAIL
Origin parsing: <http://foo:80/> against <about:blank> PASS
Origin parsing: <gopher:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/foo/bar/..> against <about:blank> PASS
Origin parsing: <mailto:/../> against <about:blank> FAIL
Origin parsing: < foo.com > against <http://example.org/foo/bar> PASS
Origin parsing: </a%2fc> against <http://example.org/foo/bar> PASS
Origin parsing: <ftp://foo:80/> against <about:blank> PASS
Origin parsing: <\t :foo.com \n> against <http://example.org/foo/bar> PASS
Origin parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> PASS
Origin parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> FAIL
Origin parsing: <gopher://foo:70/> against <about:blank> PASS
Origin parsing: <http://example.com\\foo\\bar> against <about:blank> PASS
Origin parsing: <??a=b&c=d> against <http://example.org/foo/bar> PASS
Origin parsing: <http://a:@www.example.com> against <about:blank> PASS
Origin parsing: <http://example.com/foo\t�%91> against <about:blank> PASS
Origin parsing: <http://example.com/././foo> against <about:blank> PASS
Origin parsing: <../i> against <sc:/pa/pa> FAIL
Origin parsing: <madeupscheme:example.com/> against <about:blank> FAIL
Origin parsing: </a/%2f/c> against <http://example.org/foo/bar> PASS
Origin parsing: <sc://ñ#x> against <about:blank> FAIL
Origin parsing: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> PASS
Origin parsing: <http://foo.bar/baz?qux#foo�bar> against <about:blank> PASS
Origin parsing: <http://example.com/foo%2zbar> against <about:blank> PASS
Origin parsing: <rsync://foo@host:911/sup> against <about:blank> FAIL
Origin parsing: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> PASS
Origin parsing: <mailto:/example.com/> against <about:blank> FAIL
Origin parsing: <#x> against <about:blank> PASS
Origin parsing: <.> against <http://www.example.com/test> PASS
Origin parsing: <sc:> against <https://example.org/foo/bar> FAIL
Origin parsing: <http:/:b@www.example.com> against <about:blank> PASS
Origin parsing: <data:/../> against <about:blank> PASS
Origin parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> PASS
Origin parsing: <..> against <http://www.example.com/test> PASS
Origin parsing: </i> against <sc:/pa/pa> FAIL
Origin parsing: <non-special://:@test/x> against <about:blank> FAIL
Origin parsing: <//foo/bar> against <http://example.org/foo/bar> PASS
Origin parsing: <../../test.txt> against <http://www.example.com/test> PASS
Origin parsing: <git://github.com/foo/bar.git> against <about:blank> FAIL
Origin parsing: <http:example.com/> against <about:blank> PASS
Origin parsing: <non-special://test:@test/x> against <about:blank> FAIL
Origin parsing: <ftp://foo:21/> against <about:blank> PASS
Origin parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> PASS
Origin parsing: <http://example\t.\norg> against <http://example.org/foo/bar> PASS
Origin parsing: <https://@@@example> against <http://doesnotmatter/> PASS
Origin parsing: <:\> against <http://example.org/foo/bar> PASS
Origin parsing: <http:> against <http://example.org/foo/bar> PASS
Origin parsing: <[61:24:74]:98> against <http://example.org/foo/bar> PASS
Origin parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> FAIL
Origin parsing: <../i> against <sc:///pa/pa> FAIL
Origin parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/foo/bar//..> against <about:blank> PASS
Origin parsing: <javascript:/../> against <about:blank> PASS
Origin parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> PASS
Origin parsing: </a/b/c> against <http://example.org/foo/bar> PASS
Origin parsing: <i> against <sc:/pa/pa> FAIL
Origin parsing: <i> against <sc://ho/pa> FAIL
Origin parsing: <sc://ñ.test/> against <about:blank> FAIL
Origin parsing: <a:\t foo.com> against <http://example.org/foo/bar> FAIL
Origin parsing: <?a=b&c=d> against <http://example.org/foo/bar> PASS
Origin parsing: <http://@www.example.com> against <about:blank> PASS
Origin parsing: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> PASS
Origin parsing: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> PASS
Origin parsing: <http://www.foo。bar.com> against <http://other.com/> PASS
Origin parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <:/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://GOO​⁠goo.com> against <http://other.com/> PASS
Origin parsing: <x> against <sc://ñ> FAIL
Origin parsing: <data:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> PASS
Origin parsing: <#i> against <sc:/pa/pa> FAIL
Origin parsing: <http://example.com/foo> against <about:blank> PASS
Origin parsing: <#> against <test:test?test> FAIL
Origin parsing: <wss://foo:443/> against <about:blank> PASS
Origin parsing: <#x> against <data:,> PASS
Origin parsing: <foo://///////> against <http://example.org/foo/bar> FAIL
Origin parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> FAIL
Origin parsing: <http://999999999.com> against <http://other.com/> PASS
Origin parsing: <http://www.google.com> against <about:blank> PASS
Origin parsing: <sc::a@example.net> against <about:blank> FAIL
Origin parsing: <http://[2001::1]> against <http://example.org/foo/bar> PASS
Origin parsing: </i> against <sc://ho/pa> FAIL
Origin parsing: <ws:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <:foo.com\> against <http://example.org/foo/bar> PASS
Origin parsing: <urn:ietf:rfc:2648> against <about:blank> FAIL
Origin parsing: <ftps:example.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <https://%e2%98%83> against <about:blank> FAIL
Origin parsing: <http://www/foo%2Ehtml> against <about:blank> PASS
Origin parsing: <https://test:@test> against <about:blank> PASS
Origin parsing: <ftp:example.com/> against <about:blank> PASS
Origin parsing: <http://256.com> against <http://other.com/> PASS
Origin parsing: <http://example.com/foo/bar//../..> against <about:blank> PASS
Origin parsing: </some/path> against <http://user@example.org/smth> PASS
Origin parsing: <ws://foo:815/> against <about:blank> PASS
Origin parsing: <http://\{}:`{}@h/`{}?`{}> against http://doesnotmatter/` PASS
Origin parsing: <http://256> against <http://other.com/> PASS
Origin parsing: <http://example.com/(%28:%3A%29)> against <about:blank> PASS
Origin parsing: <#i> against <sc:///pa/pa> FAIL
Origin parsing: <ftp://%e2%98%83> against <about:blank> FAIL
Origin parsing: <gopher://foo:443/> against <about:blank> PASS
Origin parsing: <http://example.com/foo\tbar> against <about:blank> PASS
Origin parsing: </some/path> against <http://user:pass@example.org:21/smth> PASS
Origin parsing: <http:/a:@www.example.com> against <about:blank> PASS
Origin parsing: <> against <http://user:pass@example.org:21/smth> PASS
Origin parsing: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> PASS
Origin parsing: <ws://foo:443/> against <about:blank> PASS
Origin parsing: <#x> against <mailto:x@x.com> FAIL
Origin parsing: <gopher:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/foo/..bar> against <about:blank> PASS
Origin parsing: <../aaa/test.txt> against <http://www.example.com/test> PASS
Origin parsing: <http://10000000000.com> against <http://other.com/> PASS
Origin parsing: <javascript:/example.com/> against <about:blank> PASS
Origin parsing: <http://example.com/foo%2©zbar> against <about:blank> PASS
Origin parsing: <http::b@www.example.com> against <about:blank> PASS
Origin parsing: <http://Go.com> against <http://other.com/> PASS
Origin parsing: <ftps:/example.com/> against <about:blank> FAIL
Origin parsing: <mailto:example.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <http://example.com/foo%> against <about:blank> PASS
Origin parsing: <https://:@test> against <about:blank> PASS
Origin parsing: <http://ExAmPlE.CoM> against <http://other.com/> PASS
Origin parsing: <http:\\foo.com\> against <http://example.org/foo/bar> PASS
Origin parsing: <http://[::127.0.0.1]> against <http://example.org/foo/bar> PASS
Origin parsing: <javascript:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <sc://ñ?x> against <about:blank> FAIL
Origin parsing: </:23> against <http://example.org/foo/bar> PASS
Origin parsing: <data:test# »> against <about:blank> PASS
Loading data… PASS
Origin parsing: <foo:/> against <http://example.org/foo/bar> FAIL
Origin parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> PASS
Origin parsing: <ws:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <::23> against <http://example.org/foo/bar> PASS
Origin parsing: <ftps:/example.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> PASS
Origin parsing: <foo:////://///> against <http://example.org/foo/bar> FAIL
Origin parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <::> against <http://example.org/foo/bar> PASS
Origin parsing: <http:a:@www.example.com> against <about:blank> PASS
Origin parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> PASS
Origin parsing: <http:\\www.google.com\foo> against <about:blank> PASS
Origin parsing: <?> against <http://example.org/foo/bar> PASS
Origin parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> PASS
Origin parsing: <mailto:/example.com/> against <http://example.org/foo/bar> FAIL
Origin parsing: <http://f:/c> against <http://example.org/foo/bar> PASS
Origin parsing: <mailto:example.com/> against <about:blank> FAIL
Origin parsing: <madeupscheme:/example.com/> against <about:blank> FAIL
Origin parsing: <http://f:\n/c> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/foo/bar/../ton> against <about:blank> PASS
Origin parsing: <ftp:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> FAIL
Origin parsing: <http://example.com/%20foo> against <about:blank> PASS
Origin parsing: </> against <http://www.example.com/test> PASS
Origin parsing: <tel:1234567890> against <http://example.org/foo/bar> FAIL
Origin parsing: <?i> against <sc:/pa/pa> FAIL
Origin parsing: <wss://foo:80/> against <about:blank> PASS
Origin parsing: <data:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/foo/%2e%2> against <about:blank> PASS
Origin parsing: <#x> against <sc://ñ> FAIL
Origin parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> FAIL
Origin parsing: <i> against <sc:///pa/pa> FAIL
Origin parsing: <../test.txt> against <http://www.example.com/test> PASS
Origin parsing: <http://example.com/‮/foo/‭/bar> against <about:blank> PASS
Origin parsing: <wss://foo:81/> against <about:blank> PASS
Origin parsing: <http://example.com/foo/./> against <about:blank> PASS
Origin parsing: <http:/@www.example.com> against <about:blank> PASS
Origin parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> PASS
Origin parsing: </i> against <sc:///pa/pa> FAIL
Origin parsing: <http://example.com/foo%41%7a> against <about:blank> PASS
Origin parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> PASS
Origin parsing: <http:/example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <ws:/example.com/> against <about:blank> PASS
Origin parsing: <ws://foo:81/> against <about:blank> PASS
Origin parsing: <ws:example.com/> against <about:blank> PASS
Origin parsing: <:a> against <http://example.org/foo/bar> PASS
Origin parsing: <https://foo:443/> against <about:blank> PASS
Origin parsing: <http://foo:💩@example.com/bar> against <http://other.com/> PASS
Origin parsing: <sc://�!"$&'()*+,-.;<=>^_\{ }~/> against about:blank`
Origin parsing: <gopher:/example.com/> against <about:blank> PASS
Origin parsing: <javascript:example.com/> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/@asdf%40> against <about:blank> PASS
Origin parsing: <http://::@c@d:2> against <http://example.org/foo/bar> PASS
Origin parsing: <http://example.com/你好你好> against <about:blank> PASS
Origin parsing: <> against <http://example.org/foo/bar> PASS
Origin parsing: <http://4294967295> against <http://other.com/> PASS
Origin parsing: <http://example.com/./.foo> against <about:blank> PASS
Origin parsing: <http://www.example2.com> against <http://www.example.com/test> PASS
Origin parsing: <ws://foo:80/> against <about:blank> PASS
Origin parsing: <:#> against <http://example.org/foo/bar> PASS
Origin parsing: <http:/a:b@www.example.com> against <about:blank> PASS
Origin parsing: <http://foo:81/> against <about:blank> PASS
Origin parsing: <javascript:example.com/> against <about:blank> PASS
Origin parsing: <http://example.com/%3A%3a%3C%3c> against <about:blank> PASS
Origin parsing: <httpa://foo:80/> against <about:blank> FAIL
Origin parsing: <wss://foo:815/> against <about:blank> PASS
Origin parsing: <#> against <test:test> FAIL
Origin parsing: <data:text/html,test#test> against <http://example.org/foo/bar> PASS
Origin parsing: <http:/example.com/> against <about:blank> PASS
Origin parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> PASS
Origin parsing: <http://f:0/c> against <http://example.org/foo/bar> FAIL
Origin parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> FAIL
Origin parsing: <http://example.com/foo/bar/../> against <about:blank> PASS
Origin parsing: <:23> against <http://example.org/foo/bar> PASS
Origin parsing: <http://:b@www.example.com> against <about:blank> PASS
Origin parsing: <http://[1:0::]> against <http://example.net/> PASS
Origin parsing: <data:/example.com/> against <about:blank> PASS
Origin parsing: <?i> against <sc:///pa/pa> FAIL
Origin parsing: <http:[61:27]/:foo> against <http://example.org/foo/bar> PASS
Origin parsing: <http:a:b@www.example.com> against <about:blank> PASS
Origin parsing: <#;?> against <http://example.org/foo/bar> PASS
/url/a-element-xhtml.xhtml
Subtest Results
ERROR
/url/a-element.html
Subtest Results
ERROR
/url/a-element-origin.html
Subtest Results
OK
Parsing origin: <about:/../> against <about:blank> PASS
Parsing origin: <javascript:/example.com/> against <about:blank> PASS
Parsing origin: <中/test.txt> against <http://www.example.com/test> PASS
Parsing origin: <foo://> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> PASS
Parsing origin: < \t> against <http://example.org/foo/bar> PASS
Parsing origin: <http://www/foo/%2E/html> against <about:blank> PASS
Parsing origin: <?x> against <sc://ñ> PASS
Parsing origin: <./test.txt> against <http://www.example.com/test> PASS
Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> PASS
Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> FAIL
Parsing origin: <http:foo.com> against <http://example.org/foo/bar> PASS
Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <wss:/example.com/> against <about:blank> PASS
Parsing origin: <https:example.com/> against <about:blank> PASS
Parsing origin: <#i> against <sc:sd> FAIL
Parsing origin: <https:/example.com/> against <about:blank> PASS
Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <data:example.com/> against <about:blank> PASS
Parsing origin: <../i> against <sc://ho/pa> FAIL
Parsing origin: <#\> against <http://example.org/foo/bar> PASS
Parsing origin: <http://www.@pple.com> against <about:blank> PASS
Parsing origin: <http://999999999> against <http://other.com/> PASS
Parsing origin: <http://example.com/foo/../../..> against <about:blank> PASS
Parsing origin: <rsync://foo@host:911/sup> against <about:blank> FAIL
Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/你好你好> against <about:blank> PASS
Parsing origin: <sc://ñ> against <about:blank> FAIL
Parsing origin: <http://4294967295> against <http://other.com/> PASS
Parsing origin: <http://www.example2.com> against <http://www.example.com/test> PASS
Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> PASS
Parsing origin: <http://example.com//foo> against <about:blank> PASS
Parsing origin: <ftp:/example.com/> against <about:blank> PASS
Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> FAIL
Parsing origin: <http://example.com/foo%2> against <about:blank> PASS
Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> PASS
Parsing origin: <:> against <http://example.org/foo/bar> PASS
Parsing origin: <http:@www.example.com> against <about:blank> PASS
Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> PASS
Parsing origin: <test.txt> against <http://www.example.com/test> PASS
Parsing origin: <:foo.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> PASS
Parsing origin: <h\tt\nt\rp://h\to\ns\rt:9\t0\n0\r0/p\ta\nt\rh?q\tu\ne\rry#f\tr\na\rg> against <about:blank> PASS
Parsing origin: <http://example.com/foo/.> against <about:blank> PASS
Parsing origin: <https:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> FAIL
Parsing origin: <http://a:b@www.example.com> against <about:blank> PASS
Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: </> against <http://example.org/foo/bar> PASS
Parsing origin: <http://你好你好> against <http://other.com/> FAIL
Parsing origin: <http://www/foo%2Ehtml> against <about:blank> PASS
Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> PASS
Parsing origin: <http:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <#β> against <http://example.org/foo/bar> PASS
Parsing origin: <c:/foo> against <http://example.org/foo/bar> FAIL
Parsing origin: </a/ /c> against <http://example.org/foo/bar> PASS
Parsing origin: <http://192.0x00A80001> against <about:blank> PASS
Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <git+https://github.com/foo/bar> against <about:blank> FAIL
Parsing origin: <#/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> PASS
Parsing origin: <https://foo:80/> against <about:blank> PASS
Parsing origin: <http://example.com/foo%00%51> against <about:blank> FAIL
Loading data… PASS
Parsing origin: <ftps:example.com/> against <about:blank> FAIL
Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/%2e> against <about:blank> PASS
Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> PASS
Parsing origin: <ws://foo:80/> against <about:blank> PASS
Parsing origin: <http://192.168.257.com> against <http://other.com/> PASS
Parsing origin: <http://0xffffffff> against <http://other.com/> PASS
Parsing origin: <http://example.com////../..> against <about:blank> PASS
Parsing origin: <//www.example2.com> against <http://www.example.com/test> PASS
Parsing origin: <http://:@www.example.com> against <about:blank> PASS
Parsing origin: <#> against <http://example.org/foo/bar> PASS
Parsing origin: <http::@c:29> against <http://example.org/foo/bar> PASS
Parsing origin: <urn:ietf:rfc:2648> against <about:blank> FAIL
Parsing origin: <http://999999999.com> against <http://other.com/> PASS
Parsing origin: <gopher:example.com/> against <about:blank> PASS
Parsing origin: <wss:example.com/> against <about:blank> PASS
Parsing origin: <#i> against <sc:sd/sd> FAIL
Parsing origin: <http://foo:80/> against <about:blank> PASS
Parsing origin: <data:test# »> against <about:blank> PASS
Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/bar/..> against <about:blank> PASS
Parsing origin: <mailto:/../> against <about:blank> FAIL
Parsing origin: < foo.com > against <http://example.org/foo/bar> PASS
Parsing origin: </a%2fc> against <http://example.org/foo/bar> PASS
Parsing origin: <ftp://foo:80/> against <about:blank> PASS
Parsing origin: <\t :foo.com \n> against <http://example.org/foo/bar> PASS
Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://256.256.256.256.256> against <http://other.com/> PASS
Parsing origin: <gopher://foo:70/> against <about:blank> PASS
Parsing origin: <http://example.com\\foo\\bar> against <about:blank> PASS
Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> PASS
Parsing origin: <http://a:@www.example.com> against <about:blank> PASS
Parsing origin: <ws:/example.com/> against <about:blank> PASS
Parsing origin: <http://example.com/././foo> against <about:blank> PASS
Parsing origin: <../i> against <sc:/pa/pa> FAIL
Parsing origin: <madeupscheme:example.com/> against <about:blank> FAIL
Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> PASS
Parsing origin: <sc://ñ#x> against <about:blank> FAIL
Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/‥/foo> against <about:blank> PASS
Parsing origin: <http://foo.bar/baz?qux#foo�bar> against <about:blank> PASS
Parsing origin: <http://example.com/foo%2zbar> against <about:blank> PASS
Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> PASS
Parsing origin: <mailto:/example.com/> against <about:blank> FAIL
Parsing origin: <#x> against <about:blank> PASS
Parsing origin: <http:/:b@www.example.com> against <about:blank> PASS
Parsing origin: <http://192.168.257> against <http://other.com/> PASS
Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> PASS
Parsing origin: <..> against <http://www.example.com/test> PASS
Parsing origin: </i> against <sc:/pa/pa> FAIL
Parsing origin: <non-special://:@test/x> against <about:blank> FAIL
Parsing origin: <//foo/bar> against <http://example.org/foo/bar> PASS
Parsing origin: <../../test.txt> against <http://www.example.com/test> PASS
Parsing origin: <git://github.com/foo/bar.git> against <about:blank> FAIL
Parsing origin: <http:example.com/> against <about:blank> PASS
Parsing origin: <non-special://test:@test/x> against <about:blank> FAIL
Parsing origin: <sc://ñ.test/> against <about:blank> FAIL
Parsing origin: <ftp://foo:21/> against <about:blank> PASS
Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> PASS
Parsing origin: <http://example\t.\norg> against <http://example.org/foo/bar> PASS
Parsing origin: <https://@@@example> against <http://doesnotmatter/> PASS
Parsing origin: <:\> against <http://example.org/foo/bar> PASS
Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> PASS
Parsing origin: <?i> against <sc://ho/pa> FAIL
Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> PASS
Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://10000000000.com> against <http://other.com/> PASS
Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/bar//..> against <about:blank> PASS
Parsing origin: <javascript:/../> against <about:blank> PASS
Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> PASS
Parsing origin: <i> against <sc://ho/pa> FAIL
Parsing origin: </a/b/c> against <http://example.org/foo/bar> PASS
Parsing origin: <i> against <sc:/pa/pa> FAIL
Parsing origin: <a:\t foo.com> against <http://example.org/foo/bar> FAIL
Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> PASS
Parsing origin: <http://@www.example.com> against <about:blank> PASS
Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> PASS
Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> PASS
Parsing origin: <http://[1:0::]> against <http://example.net/> PASS
Parsing origin: <http://www.foo。bar.com> against <http://other.com/> PASS
Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <:/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> PASS
Parsing origin: <x> against <sc://ñ> PASS
Parsing origin: <http://example.com/foo\t�%91> against <about:blank> PASS
Parsing origin: <data:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> PASS
Parsing origin: <#x> against <sc://ñ> PASS
Parsing origin: <#i> against <sc:/pa/pa> FAIL
Parsing origin: <http://example.com/foo> against <about:blank> PASS
Parsing origin: <wss://foo:443/> against <about:blank> PASS
Parsing origin: <wss://foo:81/> against <about:blank> PASS
Parsing origin: <#x> against <data:,> PASS
Parsing origin: <foo://///////> against <http://example.org/foo/bar> FAIL
Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> FAIL
Parsing origin: <sc:\../> against <about:blank> FAIL
Parsing origin: <http://www.google.com> against <about:blank> PASS
Parsing origin: <sc::a@example.net> against <about:blank> FAIL
Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> PASS
Parsing origin: <sc:> against <https://example.org/foo/bar> FAIL
Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <:foo.com\> against <http://example.org/foo/bar> PASS
Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <https://%e2%98%83> against <about:blank> FAIL
Parsing origin: <https://test:@test> against <about:blank> PASS
Parsing origin: <ftp:example.com/> against <about:blank> PASS
Parsing origin: <data:/../> against <about:blank> PASS
Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> PASS
Parsing origin: </some/path> against <http://user@example.org/smth> PASS
Parsing origin: <ws://foo:815/> against <about:blank> PASS
Parsing origin: <http://\{}:`{}@h/`{}?`{}> against http://doesnotmatter/` PASS
Parsing origin: <http://256> against <http://other.com/> PASS
Parsing origin: <#i> against <sc:///pa/pa> FAIL
Parsing origin: <gopher://foo:443/> against <about:blank> PASS
Parsing origin: <http://example.com/foo\tbar> against <about:blank> PASS
Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> PASS
Parsing origin: <http:/a:@www.example.com> against <about:blank> PASS
Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> PASS
Parsing origin: <ws://foo:443/> against <about:blank> PASS
Parsing origin: <#x> against <mailto:x@x.com> FAIL
Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/..bar> against <about:blank> PASS
Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> PASS
Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> PASS
Parsing origin: <http:> against <http://example.org/foo/bar> PASS
Parsing origin: <http::b@www.example.com> against <about:blank> PASS
Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> FAIL
Parsing origin: <http://Go.com> against <http://other.com/> PASS
Parsing origin: <ftps:/example.com/> against <about:blank> FAIL
Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://example.com/foo%> against <about:blank> PASS
Parsing origin: <https://:@test> against <about:blank> PASS
Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> PASS
Parsing origin: </i> against <sc://ho/pa> FAIL
Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> PASS
Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> PASS
Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <sc://ñ?x> against <about:blank> FAIL
Parsing origin: </:23> against <http://example.org/foo/bar> PASS
Parsing origin: <foo:/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://@pple.com> against <about:blank> PASS
Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> PASS
Parsing origin: </test.txt> against <http://www.example.com/test> PASS
Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <::23> against <http://example.org/foo/bar> PASS
Parsing origin: <.> against <http://www.example.com/test> PASS
Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://256.com> against <http://other.com/> PASS
Parsing origin: <foo:////://///> against <http://example.org/foo/bar> FAIL
Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> FAIL
Parsing origin: <::> against <http://example.org/foo/bar> PASS
Parsing origin: <http:a:@www.example.com> against <about:blank> PASS
Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> PASS
Parsing origin: <http:\\www.google.com\foo> against <about:blank> PASS
Parsing origin: <?> against <http://example.org/foo/bar> PASS
Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://f:/c> against <http://example.org/foo/bar> PASS
Parsing origin: <mailto:example.com/> against <about:blank> FAIL
Parsing origin: <> against <http://user:pass@example.org:21/smth> PASS
Parsing origin: <http://f:\n/c> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> PASS
Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> FAIL
Parsing origin: <#i> against <sc://ho/pa> FAIL
Parsing origin: <http://example.com/%20foo> against <about:blank> PASS
Parsing origin: </> against <http://www.example.com/test> PASS
Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> FAIL
Parsing origin: <?i> against <sc:/pa/pa> FAIL
Parsing origin: <sc://�!"$&'()*+,-.;<=>^_\{ }~/> against about:blank`
Parsing origin: <wss://foo:80/> against <about:blank> PASS
Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> PASS
Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> FAIL
Parsing origin: <i> against <sc:///pa/pa> FAIL
Parsing origin: <../test.txt> against <http://www.example.com/test> PASS
Parsing origin: <madeupscheme:/example.com/> against <about:blank> FAIL
Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> PASS
Parsing origin: <http://example.com/foo/./> against <about:blank> PASS
Parsing origin: <#> against <test:test?test> FAIL
Parsing origin: <http:/@www.example.com> against <about:blank> PASS
Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> PASS
Parsing origin: <http://example.com/foo%41%7a> against <about:blank> PASS
Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> PASS
Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <ws://foo:81/> against <about:blank> PASS
Parsing origin: <ws:example.com/> against <about:blank> PASS
Parsing origin: <:a> against <http://example.org/foo/bar> PASS
Parsing origin: <https://foo:443/> against <about:blank> PASS
Parsing origin: <ftp://%e2%98%83> against <about:blank> FAIL
Parsing origin: <gopher:/example.com/> against <about:blank> PASS
Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/@asdf%40> against <about:blank> PASS
Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> PASS
Parsing origin: <> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/./.foo> against <about:blank> PASS
Parsing origin: <../i> against <sc:///pa/pa> FAIL
Parsing origin: <:#> against <http://example.org/foo/bar> PASS
Parsing origin: </i> against <sc:///pa/pa> FAIL
Parsing origin: <http:/a:b@www.example.com> against <about:blank> PASS
Parsing origin: <http://foo:81/> against <about:blank> PASS
Parsing origin: <javascript:example.com/> against <about:blank> PASS
Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> PASS
Parsing origin: <httpa://foo:80/> against <about:blank> FAIL
Parsing origin: <wss://foo:815/> against <about:blank> PASS
Parsing origin: <#> against <test:test> FAIL
Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> PASS
Parsing origin: <http:/example.com/> against <about:blank> PASS
Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> PASS
Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> PASS
Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://example.com/foo/bar/../> against <about:blank> PASS
Parsing origin: <:23> against <http://example.org/foo/bar> PASS
Parsing origin: <http://:b@www.example.com> against <about:blank> PASS
Parsing origin: <data:/example.com/> against <about:blank> PASS
Parsing origin: <?i> against <sc:///pa/pa> FAIL
Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> PASS
Parsing origin: <http:a:b@www.example.com> against <about:blank> PASS
Parsing origin: <#;?> against <http://example.org/foo/bar> PASS
/url/a-element-origin-xhtml.xhtml
Subtest Results
OK
Parsing origin: <about:/../> against <about:blank> PASS
Parsing origin: <javascript:/example.com/> against <about:blank> PASS
Parsing origin: <中/test.txt> against <http://www.example.com/test> PASS
Parsing origin: <foo://> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://[2001::1]:80> against <http://example.org/foo/bar> PASS
Parsing origin: < \t> against <http://example.org/foo/bar> PASS
Parsing origin: <http://www/foo/%2E/html> against <about:blank> PASS
Parsing origin: <?x> against <sc://ñ> PASS
Parsing origin: <./test.txt> against <http://www.example.com/test> PASS
Parsing origin: <http://example.com/foo/bar//../..> against <about:blank> PASS
Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> FAIL
Parsing origin: <http:foo.com> against <http://example.org/foo/bar> PASS
Parsing origin: <wss:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <wss:/example.com/> against <about:blank> PASS
Parsing origin: <https:example.com/> against <about:blank> PASS
Parsing origin: <#i> against <sc:sd> FAIL
Parsing origin: <https:/example.com/> against <about:blank> PASS
Parsing origin: <wss:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <data:example.com/> against <about:blank> PASS
Parsing origin: <../i> against <sc://ho/pa> FAIL
Parsing origin: <#\> against <http://example.org/foo/bar> PASS
Parsing origin: <http://www.@pple.com> against <about:blank> PASS
Parsing origin: <http://999999999> against <http://other.com/> PASS
Parsing origin: <http://example.com/foo/../../..> against <about:blank> PASS
Parsing origin: <rsync://foo@host:911/sup> against <about:blank> FAIL
Parsing origin: <ftp:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/你好你好> against <about:blank> PASS
Parsing origin: <sc://ñ> against <about:blank> FAIL
Parsing origin: <http://4294967295> against <http://other.com/> PASS
Parsing origin: <http://www.example2.com> against <http://www.example.com/test> PASS
Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> PASS
Parsing origin: <http://example.com//foo> against <about:blank> PASS
Parsing origin: <ftp:/example.com/> against <about:blank> PASS
Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> FAIL
Parsing origin: <http://example.com/foo%2> against <about:blank> PASS
Parsing origin: <http://foo.com/\@> against <http://example.org/foo/bar> PASS
Parsing origin: <:> against <http://example.org/foo/bar> PASS
Parsing origin: <http:@www.example.com> against <about:blank> PASS
Parsing origin: <http://foo:💩@example.com/bar> against <http://other.com/> PASS
Parsing origin: <test.txt> against <http://www.example.com/test> PASS
Parsing origin: <:foo.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/../../../ton> against <about:blank> PASS
Parsing origin: <h\tt\nt\rp://h\to\ns\rt:9\t0\n0\r0/p\ta\nt\rh?q\tu\ne\rry#f\tr\na\rg> against <about:blank> PASS
Parsing origin: <http://example.com/foo/.> against <about:blank> PASS
Parsing origin: <https:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> FAIL
Parsing origin: <http://a:b@www.example.com> against <about:blank> PASS
Parsing origin: <https:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: </> against <http://example.org/foo/bar> PASS
Parsing origin: <http://你好你好> against <http://other.com/> FAIL
Parsing origin: <http://www/foo%2Ehtml> against <about:blank> PASS
Parsing origin: <http://0Xc0.0250.01> against <http://other.com/> PASS
Parsing origin: <http:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <#β> against <http://example.org/foo/bar> PASS
Parsing origin: <c:/foo> against <http://example.org/foo/bar> FAIL
Parsing origin: </a/ /c> against <http://example.org/foo/bar> PASS
Parsing origin: <http://192.0x00A80001> against <about:blank> PASS
Parsing origin: <foo:/bar.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <git+https://github.com/foo/bar> against <about:blank> FAIL
Parsing origin: <#/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://www.google.com/foo?bar=baz#> against <about:blank> PASS
Parsing origin: <https://foo:80/> against <about:blank> PASS
Parsing origin: <http://example.com/foo%00%51> against <about:blank> FAIL
Loading data… PASS
Parsing origin: <ftps:example.com/> against <about:blank> FAIL
Parsing origin: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/%2e> against <about:blank> PASS
Parsing origin: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> PASS
Parsing origin: <ws://foo:80/> against <about:blank> PASS
Parsing origin: <http://192.168.257.com> against <http://other.com/> PASS
Parsing origin: <http://0xffffffff> against <http://other.com/> PASS
Parsing origin: <http://example.com////../..> against <about:blank> PASS
Parsing origin: <//www.example2.com> against <http://www.example.com/test> PASS
Parsing origin: <http://:@www.example.com> against <about:blank> PASS
Parsing origin: <#> against <http://example.org/foo/bar> PASS
Parsing origin: <http::@c:29> against <http://example.org/foo/bar> PASS
Parsing origin: <urn:ietf:rfc:2648> against <about:blank> FAIL
Parsing origin: <http://999999999.com> against <http://other.com/> PASS
Parsing origin: <gopher:example.com/> against <about:blank> PASS
Parsing origin: <wss:example.com/> against <about:blank> PASS
Parsing origin: <#i> against <sc:sd/sd> FAIL
Parsing origin: <http://foo:80/> against <about:blank> PASS
Parsing origin: <data:test# »> against <about:blank> PASS
Parsing origin: <gopher:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/bar/..> against <about:blank> PASS
Parsing origin: <mailto:/../> against <about:blank> FAIL
Parsing origin: < foo.com > against <http://example.org/foo/bar> PASS
Parsing origin: </a%2fc> against <http://example.org/foo/bar> PASS
Parsing origin: <ftp://foo:80/> against <about:blank> PASS
Parsing origin: <\t :foo.com \n> against <http://example.org/foo/bar> PASS
Parsing origin: <http://foo.com:b@d/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://256.256.256.256.256> against <http://other.com/> PASS
Parsing origin: <gopher://foo:70/> against <about:blank> PASS
Parsing origin: <http://example.com\\foo\\bar> against <about:blank> PASS
Parsing origin: <??a=b&c=d> against <http://example.org/foo/bar> PASS
Parsing origin: <http://a:@www.example.com> against <about:blank> PASS
Parsing origin: <ws:/example.com/> against <about:blank> PASS
Parsing origin: <http://example.com/././foo> against <about:blank> PASS
Parsing origin: <../i> against <sc:/pa/pa> FAIL
Parsing origin: <madeupscheme:example.com/> against <about:blank> FAIL
Parsing origin: </a/%2f/c> against <http://example.org/foo/bar> PASS
Parsing origin: <sc://ñ#x> against <about:blank> FAIL
Parsing origin: <http://[0:0:0:0:0:0:13.1.68.3]> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/‥/foo> against <about:blank> PASS
Parsing origin: <http://foo.bar/baz?qux#foo�bar> against <about:blank> PASS
Parsing origin: <http://example.com/foo%2zbar> against <about:blank> PASS
Parsing origin: <http:\\a\b:c\d@foo.com\> against <http://example.org/foo/bar> PASS
Parsing origin: <mailto:/example.com/> against <about:blank> FAIL
Parsing origin: <#x> against <about:blank> PASS
Parsing origin: <http:/:b@www.example.com> against <about:blank> PASS
Parsing origin: <http://192.168.257> against <http://other.com/> PASS
Parsing origin: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> PASS
Parsing origin: <..> against <http://www.example.com/test> PASS
Parsing origin: </i> against <sc:/pa/pa> FAIL
Parsing origin: <non-special://:@test/x> against <about:blank> FAIL
Parsing origin: <//foo/bar> against <http://example.org/foo/bar> PASS
Parsing origin: <../../test.txt> against <http://www.example.com/test> PASS
Parsing origin: <git://github.com/foo/bar.git> against <about:blank> FAIL
Parsing origin: <http:example.com/> against <about:blank> PASS
Parsing origin: <non-special://test:@test/x> against <about:blank> FAIL
Parsing origin: <sc://ñ.test/> against <about:blank> FAIL
Parsing origin: <ftp://foo:21/> against <about:blank> PASS
Parsing origin: <http://www.google.com/foo?bar=baz# »> against <about:blank> PASS
Parsing origin: <http://example\t.\norg> against <http://example.org/foo/bar> PASS
Parsing origin: <https://@@@example> against <http://doesnotmatter/> PASS
Parsing origin: <:\> against <http://example.org/foo/bar> PASS
Parsing origin: <https://@test@test@example:800/> against <http://doesnotmatter/> PASS
Parsing origin: <?i> against <sc://ho/pa> FAIL
Parsing origin: <[61:24:74]:98> against <http://example.org/foo/bar> PASS
Parsing origin: <http://f:00000000000000/c> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://10000000000.com> against <http://other.com/> PASS
Parsing origin: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/bar//..> against <about:blank> PASS
Parsing origin: <javascript:/../> against <about:blank> PASS
Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> PASS
Parsing origin: <i> against <sc://ho/pa> FAIL
Parsing origin: </a/b/c> against <http://example.org/foo/bar> PASS
Parsing origin: <i> against <sc:/pa/pa> FAIL
Parsing origin: <a:\t foo.com> against <http://example.org/foo/bar> FAIL
Parsing origin: <?a=b&c=d> against <http://example.org/foo/bar> PASS
Parsing origin: <http://@www.example.com> against <about:blank> PASS
Parsing origin: <http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd> against <about:blank> PASS
Parsing origin: <http://user:pass@foo:21/bar;par?b#c> against <http://example.org/foo/bar> PASS
Parsing origin: <http://[1:0::]> against <http://example.net/> PASS
Parsing origin: <http://www.foo。bar.com> against <http://other.com/> PASS
Parsing origin: <madeupscheme:/example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <:/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://GOO​⁠goo.com> against <http://other.com/> PASS
Parsing origin: <x> against <sc://ñ> PASS
Parsing origin: <http://example.com/foo\t�%91> against <about:blank> PASS
Parsing origin: <data:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank> PASS
Parsing origin: <#x> against <sc://ñ> PASS
Parsing origin: <#i> against <sc:/pa/pa> FAIL
Parsing origin: <http://example.com/foo> against <about:blank> PASS
Parsing origin: <wss://foo:443/> against <about:blank> PASS
Parsing origin: <wss://foo:81/> against <about:blank> PASS
Parsing origin: <#x> against <data:,> PASS
Parsing origin: <foo://///////> against <http://example.org/foo/bar> FAIL
Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> FAIL
Parsing origin: <sc:\../> against <about:blank> FAIL
Parsing origin: <http://www.google.com> against <about:blank> PASS
Parsing origin: <sc::a@example.net> against <about:blank> FAIL
Parsing origin: <http://[2001::1]> against <http://example.org/foo/bar> PASS
Parsing origin: <sc:> against <https://example.org/foo/bar> FAIL
Parsing origin: <ws:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <:foo.com\> against <http://example.org/foo/bar> PASS
Parsing origin: <ftps:example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <https://%e2%98%83> against <about:blank> FAIL
Parsing origin: <https://test:@test> against <about:blank> PASS
Parsing origin: <ftp:example.com/> against <about:blank> PASS
Parsing origin: <data:/../> against <about:blank> PASS
Parsing origin: <http://example.com/(%28:%3A%29)> against <about:blank> PASS
Parsing origin: </some/path> against <http://user@example.org/smth> PASS
Parsing origin: <ws://foo:815/> against <about:blank> PASS
Parsing origin: <http://\{}:`{}@h/`{}?`{}> against http://doesnotmatter/` PASS
Parsing origin: <http://256> against <http://other.com/> PASS
Parsing origin: <#i> against <sc:///pa/pa> FAIL
Parsing origin: <gopher://foo:443/> against <about:blank> PASS
Parsing origin: <http://example.com/foo\tbar> against <about:blank> PASS
Parsing origin: </some/path> against <http://user:pass@example.org:21/smth> PASS
Parsing origin: <http:/a:@www.example.com> against <about:blank> PASS
Parsing origin: <http://foo/abcd#foo?bar> against <http://example.org/foo/bar> PASS
Parsing origin: <ws://foo:443/> against <about:blank> PASS
Parsing origin: <#x> against <mailto:x@x.com> FAIL
Parsing origin: <gopher:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/..bar> against <about:blank> PASS
Parsing origin: <../aaa/test.txt> against <http://www.example.com/test> PASS
Parsing origin: <http://example.com/foo%2©zbar> against <about:blank> PASS
Parsing origin: <http:> against <http://example.org/foo/bar> PASS
Parsing origin: <http::b@www.example.com> against <about:blank> PASS
Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> FAIL
Parsing origin: <http://Go.com> against <http://other.com/> PASS
Parsing origin: <ftps:/example.com/> against <about:blank> FAIL
Parsing origin: <mailto:example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://example.com/foo%> against <about:blank> PASS
Parsing origin: <https://:@test> against <about:blank> PASS
Parsing origin: <http://ExAmPlE.CoM> against <http://other.com/> PASS
Parsing origin: </i> against <sc://ho/pa> FAIL
Parsing origin: <http:\\foo.com\> against <http://example.org/foo/bar> PASS
Parsing origin: <http://[::127.0.0.1]> against <http://example.org/foo/bar> PASS
Parsing origin: <javascript:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <sc://ñ?x> against <about:blank> FAIL
Parsing origin: </:23> against <http://example.org/foo/bar> PASS
Parsing origin: <foo:/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://@pple.com> against <about:blank> PASS
Parsing origin: <http://a:b@c:29/d> against <http://example.org/foo/bar> PASS
Parsing origin: </test.txt> against <http://www.example.com/test> PASS
Parsing origin: <ws:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <::23> against <http://example.org/foo/bar> PASS
Parsing origin: <.> against <http://www.example.com/test> PASS
Parsing origin: <ftps:/example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://256.com> against <http://other.com/> PASS
Parsing origin: <foo:////://///> against <http://example.org/foo/bar> FAIL
Parsing origin: <madeupscheme:example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> FAIL
Parsing origin: <::> against <http://example.org/foo/bar> PASS
Parsing origin: <http:a:@www.example.com> against <about:blank> PASS
Parsing origin: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> PASS
Parsing origin: <http:\\www.google.com\foo> against <about:blank> PASS
Parsing origin: <?> against <http://example.org/foo/bar> PASS
Parsing origin: <foo://///////bar.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <mailto:/example.com/> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://f:/c> against <http://example.org/foo/bar> PASS
Parsing origin: <mailto:example.com/> against <about:blank> FAIL
Parsing origin: <> against <http://user:pass@example.org:21/smth> PASS
Parsing origin: <http://f:\n/c> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/bar/../ton> against <about:blank> PASS
Parsing origin: <ftp:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> FAIL
Parsing origin: <#i> against <sc://ho/pa> FAIL
Parsing origin: <http://example.com/%20foo> against <about:blank> PASS
Parsing origin: </> against <http://www.example.com/test> PASS
Parsing origin: <tel:1234567890> against <http://example.org/foo/bar> FAIL
Parsing origin: <?i> against <sc:/pa/pa> FAIL
Parsing origin: <sc://�!"$&'()*+,-.;<=>^_\{ }~/> against about:blank`
Parsing origin: <wss://foo:80/> against <about:blank> PASS
Parsing origin: <data:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/foo/%2e%2> against <about:blank> PASS
Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> FAIL
Parsing origin: <i> against <sc:///pa/pa> FAIL
Parsing origin: <../test.txt> against <http://www.example.com/test> PASS
Parsing origin: <madeupscheme:/example.com/> against <about:blank> FAIL
Parsing origin: <http://example.com/‮/foo/‭/bar> against <about:blank> PASS
Parsing origin: <http://example.com/foo/./> against <about:blank> PASS
Parsing origin: <#> against <test:test?test> FAIL
Parsing origin: <http:/@www.example.com> against <about:blank> PASS
Parsing origin: <http://example.com/foo/bar/../ton/../../a> against <about:blank> PASS
Parsing origin: <http://example.com/foo%41%7a> against <about:blank> PASS
Parsing origin: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> PASS
Parsing origin: <http:/example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <ws://foo:81/> against <about:blank> PASS
Parsing origin: <ws:example.com/> against <about:blank> PASS
Parsing origin: <:a> against <http://example.org/foo/bar> PASS
Parsing origin: <https://foo:443/> against <about:blank> PASS
Parsing origin: <ftp://%e2%98%83> against <about:blank> FAIL
Parsing origin: <gopher:/example.com/> against <about:blank> PASS
Parsing origin: <javascript:example.com/> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/@asdf%40> against <about:blank> PASS
Parsing origin: <http://::@c@d:2> against <http://example.org/foo/bar> PASS
Parsing origin: <> against <http://example.org/foo/bar> PASS
Parsing origin: <http://example.com/./.foo> against <about:blank> PASS
Parsing origin: <../i> against <sc:///pa/pa> FAIL
Parsing origin: <:#> against <http://example.org/foo/bar> PASS
Parsing origin: </i> against <sc:///pa/pa> FAIL
Parsing origin: <http:/a:b@www.example.com> against <about:blank> PASS
Parsing origin: <http://foo:81/> against <about:blank> PASS
Parsing origin: <javascript:example.com/> against <about:blank> PASS
Parsing origin: <http://example.com/%3A%3a%3C%3c> against <about:blank> PASS
Parsing origin: <httpa://foo:80/> against <about:blank> FAIL
Parsing origin: <wss://foo:815/> against <about:blank> PASS
Parsing origin: <#> against <test:test> FAIL
Parsing origin: <data:text/html,test#test> against <http://example.org/foo/bar> PASS
Parsing origin: <http:/example.com/> against <about:blank> PASS
Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> PASS
Parsing origin: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> PASS
Parsing origin: <http://f:0/c> against <http://example.org/foo/bar> FAIL
Parsing origin: <http://example.com/foo/bar/../> against <about:blank> PASS
Parsing origin: <:23> against <http://example.org/foo/bar> PASS
Parsing origin: <http://:b@www.example.com> against <about:blank> PASS
Parsing origin: <data:/example.com/> against <about:blank> PASS
Parsing origin: <?i> against <sc:///pa/pa> FAIL
Parsing origin: <http:[61:27]/:foo> against <http://example.org/foo/bar> PASS
Parsing origin: <http:a:b@www.example.com> against <about:blank> PASS
Parsing origin: <#;?> against <http://example.org/foo/bar> PASS

@domenic
Copy link
Member

domenic commented Feb 2, 2017

whatwg-url PR: jsdom/whatwg-url#71

All the new tests appear to pass, but a bunch of old ones have become invalidated, for the host and hostname setters. I'll only list host since hostname is analogous. As usual, "expected" = new WPTs, "actual" = jsdom/whatwg-url with the spec patch applied.

  1) Web platform tests setters host <sc://x/>.host = " " :

      AssertionError: 'sc://x/' == 'sc:///'
      + expected - actual

      -sc://x/
      +sc:///

  2) Web platform tests setters host <sc://x/>.host = "
" :

      AssertionError: 'sc://x/' == 'sc:///'
      + expected - actual

      -sc://x/
      +sc:///
" :) Web platform tests setters host <sc://x/>.host = "

      AssertionError: 'sc://x/' == 'sc:///'
      + expected - actual

      -sc://x/
      +sc:///

  4) Web platform tests setters host <sc://x/>.host = "#" :

      AssertionError: 'sc://x/' == 'sc:///'
      + expected - actual

      -sc://x/
      +sc:///

  5) Web platform tests setters host <sc://x/>.host = "/" :

      AssertionError: 'sc://x/' == 'sc:///'
      + expected - actual

      -sc://x/
      +sc:///

  6) Web platform tests setters host <sc://x/>.host = "?" :

      AssertionError: 'sc://x/' == 'sc:///'
      + expected - actual

      -sc://x/
      +sc:///

  7) Web platform tests setters host <view-source+http://example.net/foo>.host = "" The empty host is OK for non-special schemes:

      AssertionError: 'view-source+http://example.net/foo' == 'view-source+http:///foo'
      + expected - actual

      -view-source+http://example.net/foo
      +view-source+http:///foo

Also file URL host parsing.

See whatwg/url#224 for the corresponding URL Standard change.
@annevk annevk force-pushed the annevk/url-file-host-setter branch from 512b95e to 04b0796 Compare February 2, 2017 09:43
@annevk
Copy link
Member Author

annevk commented Feb 2, 2017

It turns out those are still valid. I found a small glitch in your jsdom/whatwg-url code.

annevk added a commit to whatwg/html that referenced this pull request Feb 2, 2017
This change depends on whatwg/url#224 landing
first.

Tests: web-platform-tests/wpt#4696.

Location API bits are not tested since we generally treat loading from
file URLs as out-of-scope of the web platform, but accounting for it
standards-wise seemed trivial enough.
@domenic
Copy link
Member

domenic commented Feb 2, 2017

Dang, I'm really losing my touch.

@annevk
Copy link
Member Author

annevk commented Feb 2, 2017

I'll wait with landing these until the changes in URL and HTML are also reviewed. Would be nice to keep everything synchronized somewhat.

@annevk annevk merged commit 0e6a90f into master Feb 8, 2017
annevk added a commit to whatwg/html that referenced this pull request Feb 8, 2017
This change builds on whatwg/url#224.

Tests: web-platform-tests/wpt#4696.

Location API bits are not tested since we generally treat loading from file URLs as out-of-scope for the web platform, but accounting for it standards-wise seemed trivial enough.
@annevk annevk deleted the annevk/url-file-host-setter branch February 8, 2017 18:32
alice pushed a commit to alice/html that referenced this pull request Jan 8, 2019
This change builds on whatwg/url#224.

Tests: web-platform-tests/wpt#4696.

Location API bits are not tested since we generally treat loading from file URLs as out-of-scope for the web platform, but accounting for it standards-wise seemed trivial enough.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants