- From: W3C commit bot <web-platform-tests-notifications@w3.org>
- Date: Fri, 17 Feb 2017 13:17:02 GMT
- To: public-web-platform-tests-notifications@w3.org
# Firefox (nightly channel) # Testing web-platform-tests at revision 388f156591dc6d66ff807bec30ede016dc542c7f Using browser at version BuildID 20170123125947; SourceStamp 36486fdc3813ef7943ae5b07b4128866d1938a6c Starting 10 test iterations All results were stable ## All results ## <details> <summary>1 test ran</summary> <details> <summary><a href="http://w3c-test.org/submissions/4910/url/url-setters.html">/url/url-setters.html</a></summary> | Subtest | Results | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| | | OK | | `URL: Setting <javascript:alert(1)>.hash = 'castle'` | PASS | | `<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` | PASS | | `URL: Setting <sc://x/>.host = '' Non-special scheme` | 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]'` | PASS | | `<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'` | FAIL | | `URL: Setting <https://example.net>.search = ''` | PASS | | `<area>: Setting <file://hi/x>.hostname = ''` | 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` | FAIL | | `<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 | | `URL: Setting <http://example.net/>.hostname = '[::1.2.]'` | PASS | | `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.]'` | PASS | | `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` | PASS | | `<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.]'` | PASS | | `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 | | `<area>: Setting <http://example.net/>.hostname = '[::1.2.3.4x]'` | PASS | | `<area>: Setting <ssh://me@example.net>.protocol = 'gopher'` | FAIL | | `<a>: Setting <sc://x/>.hostname = '@'` | FAIL | | `URL: Setting <http://example.net:8080>.port = '80' Default port number is removed` | PASS | | `URL: Setting <http://example.net/>.host = '[::1.2.]'` | PASS | | `<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 | | `<a>: Setting <sc://x/>.hostname = '' Non-special scheme` | FAIL | | `<area>: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'` | PASS | | `<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 | | `<a>: Setting <http://example.net/>.host = '[::1.2.]'` | PASS | | `<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 | | `<a>: Setting <a:/>.search = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.` | FAIL | | `<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` | FAIL | | `<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'` | PASS | | `<a>: Setting <javascript://x/>.password = 'bowser'` | FAIL | | `<area>: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value` | PASS | | `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.` | FAIL | | `<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'` | PASS | | `<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.` | PASS | | `<a>: Setting <a:/>.pathname = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.` | FAIL | | `URL: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored` | PASS | | `<area>: Setting <file://test/>.port = '12'` | FAIL | | `<area>: Setting <sc://x/>.host = '/'` | FAIL | | `<area>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored` | PASS | | `<a>: Setting <http://example.net/>.host = '[google.com]' Broken IPv6` | PASS | | `<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 | | `<area>: Setting <file://hi/x>.host = ''` | 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.` | FAIL | | `<a>: Setting <http://me:secret@example.net>.username = ''` | FAIL | | `URL: Setting <http://example.net>.hash = '%c3%89té' Bytes already percent-encoded are left as-is` | PASS | | `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` | PASS | | `<a>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs` | FAIL | | `<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'` | FAIL | | `<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.]'` | PASS | | `<area>: Setting <http://example.net/home?lang=fr#nav>.pathname = '\a\%2E\b\%2e.\c' \ is a segment delimiter for 'special' URLs` | FAIL | | `<area>: Setting <javascript:alert(1)>.hash = 'castle'` | PASS | | `<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` | PASS | | `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.` | PASS | | `<area>: Setting <sc://x/>.host = '' Non-special scheme` | 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]'` | PASS | | `<a>: Setting <javascript://x/>.port = '12'` | 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 = '?'` | PASS | | `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'` | PASS | | `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 <javascript:alert(1)>.username = 'wario'` | 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.]'` | PASS | | `URL: Setting <https://example.net#nav>.pathname = 'home'` | PASS | | `URL: Setting <http://example.net/>.hostname = '[::1.]'` | PASS | | `<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` | PASS | | `<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` | PASS | | `<area>: Setting <javascript://x/>.username = 'wario'` | 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'` | FAIL | | `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 = '#'` | PASS | | `<a>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.` | PASS | | `<a>: Setting <javascript:alert(1)>.protocol = 'defuse'` | 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` | PASS | | `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'` | FAIL | | `<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 = '#'` | PASS | | `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.` | FAIL | | `<area>: Setting <data:text/plain,Stuff>.hostname = 'example.net' Cannot-be-a-base means no password` | PASS | | `URL: Setting <file://hi/x>.host = ''` | PASS | | `URL: Setting <a:/>.hash = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' Simple percent-encoding; nuls, tabs, and newlines are removed` | FAIL | | `<a>: Setting <ssh://me@example.net>.protocol = 'file'` | FAIL | | `<area>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored` | PASS | | `<a>: Setting <ftp://example.net>.protocol = 'test'` | FAIL | | `URL: Setting <sc:///>.password = 'x'` | PASS | | `URL: Setting <file://test/>.password = 'test'` | FAIL | | `URL: Setting <file://y/>.hostname = 'x:123'` | FAIL | | `<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'` | 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` | PASS | | `<area>: Setting <http://example.net/>.host = '[::1.2.]'` | PASS | | `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 = '?'` | PASS | | `<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` | PASS | | `<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 | | `URL: Setting <http://example.net>.username = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.` | FAIL | | `<a>: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored` | PASS | | `URL: Setting <sc://x/>.hostname = '' Non-special scheme` | 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.` | PASS | | `<a>: Setting <https://example.net>.search = ''` | PASS | | `<a>: Setting <file://y/>.hostname = 'loc%41lhost'` | PASS | | `<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 = ''` | FAIL | | `<area>: Setting <a:/foo>.hostname = 'example.net' Path-only URLs can gain a host` | FAIL | | `URL: Setting <file://test/>.port = '12'` | FAIL | | `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 = '#'` | PASS | | `<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` | PASS | | `<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 <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'` | FAIL | | `<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` | FAIL | | `URL: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored` | PASS | | `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` | PASS | | `<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]'` | PASS | | `<area>: Setting <https://example.net?lang=en-US>.hash = '##nav'` | PASS | | `<area>: Setting <file://y/>.host = 'loc%41lhost'` | PASS | | `<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 <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 | | `URL: Setting <http://example.net>.password = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.` | FAIL | | `<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'` | FAIL | | `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>.password = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.` | FAIL | | `<a>: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored` | PASS | | `<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 | | `<area>: Setting <http://example.net>.password = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.` | FAIL | | `URL: Setting <http://example.net:8080/path>.port = '65536' Port numbers are 16 bit integers, overflowing is an error` | PASS | | `<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.]'` | PASS | | `<area>: Setting <sc:///>.password = 'x'` | PASS | | `<a>: Setting <file://hi/x>.host = ''` | 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'` | PASS | | `URL: Setting <http://example.net/path>.host = 'example.com#stuff' Stuff after a # delimiter is ignored` | PASS | | `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.]'` | PASS | | `<a>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored` | PASS | | `URL: Setting <javascript://x/>.password = 'bowser'` | FAIL | | `<area>: Setting <a://example.net>.protocol = 'b'` | PASS | | `<area>: Setting <javascript://x/>.port = '12'` | FAIL | | `<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` | PASS | | `<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 | | `<area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host` | PASS | | `<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'` | PASS | | `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` | PASS | | `<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 | | `<a>: Setting <non-base:value>.port = '12'` | PASS | | `<area>: Setting <sc://x/>.hostname = '\n'` | 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.` | FAIL | | `<a>: Setting <http://example.net/path>.host = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes` | PASS | | `URL: Setting <http://me@example.net>.password = 'secret'` | PASS | | `URL: Setting <http://:secret@example.net>.password = ''` | FAIL | | `URL: Setting <http://example.net:8080>.port = '' Port number is removed if empty is the new value` | PASS | | `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` | PASS | | `<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 | | `URL: Setting <file://hi/x>.hostname = ''` | PASS | | `<a>: Setting <file://test/>.port = '12'` | FAIL | | `<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 <a:/>.hash = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' Simple percent-encoding; nuls, tabs, and newlines are removed` | FAIL | | `<area>: Setting <https://example.net>.hash = 'main'` | PASS | | `<a>: Setting <file://y/>.hostname = 'x:123'` | FAIL | | `<area>: Setting <sc://x/>.host = '\t'` | FAIL | | `URL: Setting <https://example.net#nav>.pathname = '../home'` | PASS | | `<a>: Setting <a:/>.hash = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' Simple percent-encoding; nuls, tabs, and newlines are removed` | FAIL | | `<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 <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` | PASS | | `<a>: Setting <sc://x/>.host = '\t'` | FAIL | | `URL: Setting <javascript:alert(1)>.protocol = 'defuse'` | PASS | | `<area>: Setting <a:/>.pathname = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.` | FAIL | | `<a>: Setting <file://test/>.password = 'test'` | FAIL | | `<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` | PASS | | `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` | FAIL | | `URL: Setting <https://example.net?lang=en-US#nav>.search = ''` | PASS | | `URL: Setting <ftp://example.net>.protocol = 'test'` | FAIL | | `URL: Setting <a:/>.search = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.` | 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 | | `<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 | | `<area>: Setting <sc://x/>.hostname = '' Non-special scheme` | FAIL | | `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` | PASS | | `<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 = '?'` | PASS | | `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` | FAIL | | `<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 = ''` | FAIL | | `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.]'` | PASS | | `<area>: Setting <http://example.net:8080>.hostname = 'example.com'` | PASS | | `<a>: Setting <sc://x/>.hostname = ' '` | FAIL | | `<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 | | `<a>: Setting <http://example.net/path>.hostname = 'example.com#stuff' Stuff after a # delimiter is ignored` | PASS | | `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 <a://example.net>.protocol = '0b' No leading digit` | PASS | | `<a>: Setting <http://example.net/>.hostname = '[::1.2.]'` | PASS | | `<a>: Setting <http://example.net>.username = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.` | FAIL | | `URL: Setting <https://example.net?lang=en-US#nav>.hash = ''` | PASS | | `<a>: Setting <javascript://x/>.username = 'wario'` | FAIL | | `URL: Setting <http://example.net/>.host = '[google.com]' Broken IPv6` | PASS | | `<a>: Setting <https://example.net?lang=en-US#nav>.hash = '#main'` | PASS | | `<a>: Setting <http://me@example.net>.password = 'secret'` | PASS | | `<a>: Setting <http://example.net>.hostname = '[::0:01]' IPv6 address syntax is normalized` | FAIL | | `<a>: Setting <sc://x/>.host = '' Non-special scheme` | FAIL | | `<a>: Setting <javascript:alert(1)>.hash = 'castle'` | 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 <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` | PASS | | `<area>: Setting <http://example.net>.pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.` | 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 <file://test/>.username = 'test'` | FAIL | | `<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` | PASS | | `<a>: Setting <http://example.net/path>.host = 'example.com/stuff' Stuff after a / delimiter is ignored` | PASS | | `<area>: Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the first ':' is ignored` | PASS | | `URL: Setting <file://y/>.hostname = 'loc%41lhost'` | PASS | | `<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 <a://example.net>.protocol = 'é' Non-ASCII is rejected` | 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'` | PASS | | `<area>: Setting <https://example.net:4433>.port = '443' Default port number is removed` | PASS | | `<area>: Setting <http://example.net/>.hostname = '[::1.2.]'` | PASS | | `<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` | PASS | | `URL: Setting <https://example.net?lang=en-US#nav>.search = '??lang=fr'` | PASS | | `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` | 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.]'` | PASS | | `<a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded` | PASS | | `<area>: Setting <http://example.net>.username = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~Éé' UTF-8 percent encoding with the userinfo encode set.` | FAIL | | `<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` | PASS | | `<a>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes` | PASS | | `<area>: Setting <javascript://x/>.password = 'bowser'` | FAIL | | `<a>: Setting <http://:secret@example.net>.password = ''` | FAIL | | `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 <javascript:alert(1)>.protocol = 'defuse'` | PASS | | `<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.` | FAIL | | `<area>: Setting <http://me:secret@example.net>.username = ''` | FAIL | | `<area>: Setting <http://example.net/>.hostname = '[::1.2.3.]'` | PASS | | `<a>: Setting <javascript:alert(1)>.username = 'wario'` | PASS | | `URL: Setting <http://example.net/path>.hostname = 'example.com/stuff' Stuff after a / delimiter is ignored` | PASS | | `<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 | | `URL: Setting <javascript:alert(1)>.username = 'wario'` | PASS | | `URL: Setting <javascript://x/>.username = 'wario'` | FAIL | | `<a>: Setting <file://y/>.host = 'loc%41lhost'` | PASS | | `<area>: Setting <http://example.net/>.host = '[::1.2.3.]'` | PASS | | `<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.]'` | PASS | | `<area>: Setting <http://example.net/>.host = '[::1.2.3.4x]'` | PASS | | `URL: Setting <http://example.net>.username = 'me'` | PASS | | `URL: Setting <http://example.net>.password = 'secret'` | FAIL | | `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 | | `<a>: Setting <file://hi/x>.hostname = ''` | 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 | | `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'` | FAIL | | `<a>: Setting <http://example.net/path>.port = '65535' Port numbers are 16 bit integers` | PASS | | `URL: Setting <javascript://x/>.port = '12'` | FAIL | | `URL: Setting <http://example.net/path>.hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored` | PASS | | `URL: Setting <http://example.net/>.host = '[::1.2.3.4x]'` | PASS | | `<a>: Setting <http://example.net/path>.host = 'example.com?stuff' Stuff after a ? delimiter is ignored` | PASS | | `<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 <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.` | PASS | | `URL: Setting <unix:/run/foo.socket>.username = 'me' No host means no username` | PASS | </details> </details> View on GitHub: https://github.com/w3c/web-platform-tests/pull/4910#issuecomment-280646526
Received on Friday, 17 February 2017 13:17:19 UTC