Re: [url-tests] URL: test host parsing of URLs with unknown schemes (#4406)

# Chrome (unstable channel) #
Testing web-platform-tests at revision 290faf8b4a8297fb8030a0d75c11e3bec52eb60d
Using browser at version 55.0.2883.75
Starting 10 test iterations
All results were stable

## All results ##

<details>

<summary><a href="http://w3c-test.org/submissions/4406/url/url-constructor.html">/url/url-constructor.html</a></summary>


| Subtest | Results |
|---------|---------|
|         | ERROR   |

</details>

<details>

<summary><a href="http://w3c-test.org/submissions/4406/url/url-setters.html">/url/url-setters.html</a></summary>


|                                                                                    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`                                                                                               | FAIL    |
| `<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 <sc://x/>.host = '\t'`                                                                                                                                          | 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/>.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    |
| `<a>: Setting <ssh://me@example.net>.protocol = 'file'`                                                                                                                       | FAIL    |
| `<area>: Setting <ssh://me@example.net>.protocol = 'gopher'`                                                                                                                  | FAIL    |
| `<a>: Setting <sc://x/>.hostname = '@'`                                                                                                                                       | FAIL    |
| `<a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special`                                                                       | 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.` | FAIL    |
| `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 <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`                             | FAIL    |
| `<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    |
| `<area>: Setting <a://example.net>.protocol = '+b' No leading punctuation`                                                                                                    | 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.`                | 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'`                                                                                                                               | FAIL    |
| `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    |
| `<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+-.'`                                                                                                                          | FAIL    |
| `<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 <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.`        | FAIL    |
| `<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    |
| `<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    |
| `<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    |
| `<area>: Setting <http://example.net>.host = '0x7F000001:8080' IPv4 address syntax is normalized`                                                                             | PASS    |
| `<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`                             | FAIL    |
| `<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`                                                                                               | FAIL    |
| `URL: Setting <https://example.net>.host = 'example.com:443' Default port number is removed`                                                                                  | PASS    |
| `<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 <a:/>.hash = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~€Éé' Simple percent-encoding; nuls, tabs, and newlines are removed`                          | FAIL    |
| `URL: Setting <a://example.net>.protocol = 'b'`                                                                                                                               | FAIL    |
| `<a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.`                                                       | FAIL    |
| `<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 <https://example.net>.port = '80' Default port number is only removed for the relevant scheme`                                                                  | PASS    |
| `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`                                                                                      | FAIL    |
| `<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/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`                                                                                                     | FAIL    |
| `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`                                                                                                         | FAIL    |
| `<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    |
| `<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`                                                                                                       | FAIL    |
| `<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 <http://example.net>.password = '\t\n\r !"#$%&'()*+,-./09:;<=>?@AZ[\]^_\`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.`                   | 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'`                                                                                                                       | 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`                                                                                                         | FAIL    |
| `<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.`                                                    | FAIL    |
| `<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`                                                                                                       | FAIL    |
| `<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`                                                                                                        | FAIL    |
| `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.`                                                       | FAIL    |
| `<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    |
| `<area>: Setting <a://example.net>.protocol = '0b' No leading digit`                                                                                                          | 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 <a://example.net>.protocol = 'bé' Non-ASCII is rejected`                                                                                                        | FAIL    |
| `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    |
| `<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 <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    |
| `<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 <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`                                                                                         | FAIL    |
| `<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 <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.`                   | FAIL    |
| `<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 <sc://x/>.hostname = '/'`                                                                                                                                       | FAIL    |
| `<area>: Setting <a://example.net>.protocol = 'bC0+-.'`                                                                                                                       | 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/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://x/>.host = '#'`                                                                                                                                        | FAIL    |
| `<area>: Setting <http://example.net/>.hostname = '[::1.]'`                                                                                                                   | FAIL    |
| `<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    |
| `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+-.'`                                                                                                                          | FAIL    |
| `<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'`                                                                                                                            | FAIL    |
| `URL: Setting <https://example.net>.protocol = 's'`                                                                                                                           | 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 <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    |
| `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 <http://example.net/path>.hostname = 'example.com:8080' Stuff after a : delimiter is ignored`                                                                | 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 <http://example.net/>.hostname = '[::1.]'`                                                                                                                      | FAIL    |
| `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    |
| `URL: Setting <http://example.net>.port = '8080'`                                                                                                                             | PASS    |
| `<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 <a://example.net>.protocol = '0b' No leading digit`                                                                                                             | 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.`                | FAIL    |
| `<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.`     | 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`                                                                   | 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    |
| `<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`                                                                                         | 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`                                                                      | FAIL    |
| `<area>: Setting <https://example.net#nav>.search = 'lang=fr'`                                                                                                                | PASS    |
| `<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 <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://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.`                   | FAIL    |
| `<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`                                                                                                             | FAIL    |
| `<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    |
| `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.`                   | FAIL    |
| `URL: Setting <sc://x/>.hostname = '' 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    |
| `<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    |
| `<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 <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 <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`                                                                                            | FAIL    |
| `<area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected`                                                                                                      | FAIL    |
| `URL: Setting <view-source+http://example.net/foo>.hostname = '' The empty host is OK for non-special schemes`                                                                | 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    |
| `<area>: Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored`                                                       | 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 <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    |
| `<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.`    | 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'`                                                                                                                   | 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.`        | 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    |

</details>

<details>

<summary><a href="http://w3c-test.org/submissions/4406/url/url-origin.html">/url/url-origin.html</a></summary>


|                                                    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: <./test.txt> against <http://www.example.com/test>`                                           | PASS    |
| `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: <http://example.com//foo> against <about:blank>`                                             | PASS    |
| `Origin parsing: <ftp:/example.com/> against <about:blank>`                                                    | PASS    |
| `Origin parsing: <http://example.com/foo%2> against <about:blank>`                                             | PASS    |
| `Origin parsing: <#i> against <sc://ho/pa>`                                                                    | 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: <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: <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: <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#foobar> against <about:blank>`                                       | PASS    |
| `Origin parsing: <http://example.com/foo%2zbar> against <about:blank>`                                         | PASS    |
| `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: <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: <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: <ftps:example.com/> against <http://example.org/foo/bar>`                                     | 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: <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: </: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: <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: <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>`                                      | FAIL    |
| `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: <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    |

</details>

<details>

<summary><a href="http://w3c-test.org/submissions/4406/url/a-element-xhtml.xhtml">/url/a-element-xhtml.xhtml</a></summary>


| Subtest | Results |
|---------|---------|
|         | ERROR   |

</details>

<details>

<summary><a href="http://w3c-test.org/submissions/4406/url/a-element.html">/url/a-element.html</a></summary>


| Subtest | Results |
|---------|---------|
|         | ERROR   |

</details>

<details>

<summary><a href="http://w3c-test.org/submissions/4406/url/a-element-origin.html">/url/a-element-origin.html</a></summary>


|                                                    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: <./test.txt> against <http://www.example.com/test>`                                           | PASS    |
| `Parsing origin: <http://example.com/foo/bar//../..> against <about:blank>`                                    | PASS    |
| `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: <ftp:example.com/> against <http://example.org/foo/bar>`                                      | PASS    |
| `Parsing origin: <http://example.com/你好你> against <about:blank>`                                              | PASS    |
| `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: <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: <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: <#/> 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: <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: <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#foobar> 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: <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: <#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: <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://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: <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: </: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: <::> 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: <#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>`                                      | FAIL    |
| `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: <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: <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    |

</details>

<details>

<summary><a href="http://w3c-test.org/submissions/4406/url/a-element-origin-xhtml.xhtml">/url/a-element-origin-xhtml.xhtml</a></summary>


|                                                    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: <./test.txt> against <http://www.example.com/test>`                                           | PASS    |
| `Parsing origin: <http://example.com/foo/bar//../..> against <about:blank>`                                    | PASS    |
| `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: <ftp:example.com/> against <http://example.org/foo/bar>`                                      | PASS    |
| `Parsing origin: <http://example.com/你好你> against <about:blank>`                                              | PASS    |
| `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: <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: <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: <#/> 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: <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: <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#foobar> 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: <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: <#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: <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://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: <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: </: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: <::> 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: <#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>`                                      | FAIL    |
| `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: <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: <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    |

</details>


View on GitHub: https://github.com/w3c/web-platform-tests/pull/4406#issuecomment-274134145

Received on Tuesday, 24 January 2017 11:36:14 UTC