|
|
@@ -525,7 +525,7 @@
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- "comment": "Stuff after a \\ delimiter is ignored",
|
|
|
+ "comment": "Stuff after a \\ delimiter is ignored for special schemes",
|
|
|
"href": "http://example.net/path",
|
|
|
"new_value": "example.com\\stuff",
|
|
|
"expected": {
|
|
|
@@ -613,8 +613,173 @@
|
|
|
}
|
|
|
}
|
|
|
],
|
|
|
- "hostname": [],
|
|
|
- "port": [],
|
|
|
+ "hostname": [
|
|
|
+ {
|
|
|
+ "comment": "Cannot-be-a-base means no host",
|
|
|
+ "href": "mailto:me@example.net",
|
|
|
+ "new_value": "example.com",
|
|
|
+ "expected": {
|
|
|
+ "href": "mailto:me@example.net",
|
|
|
+ "host": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Cannot-be-a-base means no password",
|
|
|
+ "href": "data:text/plain,Stuff",
|
|
|
+ "new_value": "example.net",
|
|
|
+ "expected": {
|
|
|
+ "href": "data:text/plain,Stuff",
|
|
|
+ "host": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "href": "http://example.net:8080",
|
|
|
+ "new_value": "example.com",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.com:8080/",
|
|
|
+ "host": "example.com:8080",
|
|
|
+ "hostname": "example.com",
|
|
|
+ "port": "8080"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "The empty host is not valid for special schemes",
|
|
|
+ "href": "http://example.net",
|
|
|
+ "new_value": "",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.net/",
|
|
|
+ "host": "example.net"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "The empty host is OK for non-special schemes",
|
|
|
+ "href": "view-source+http://example.net/foo",
|
|
|
+ "new_value": "",
|
|
|
+ "expected": {
|
|
|
+ "href": "view-source+http:///foo",
|
|
|
+ "host": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Path-only URLs can gain a host",
|
|
|
+ "href": "a:/foo",
|
|
|
+ "new_value": "example.net",
|
|
|
+ "expected": {
|
|
|
+ "href": "a://example.net/foo",
|
|
|
+ "host": "example.net"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Path-only URLs can gain a host",
|
|
|
+ "href": "a:/foo",
|
|
|
+ "new_value": "example.net",
|
|
|
+ "expected": {
|
|
|
+ "href": "a://example.net/foo",
|
|
|
+ "host": "example.net"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "IPv4 address syntax is normalized",
|
|
|
+ "href": "http://example.net:8080",
|
|
|
+ "new_value": "0x7F000001",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://127.0.0.1:8080/",
|
|
|
+ "host": "127.0.0.1:8080",
|
|
|
+ "hostname": "127.0.0.1",
|
|
|
+ "port": "8080"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "IPv6 address syntax is normalized",
|
|
|
+ "href": "http://example.net",
|
|
|
+ "new_value": "[::0:01]",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://[::1]/",
|
|
|
+ "host": "[::1]",
|
|
|
+ "hostname": "[::1]",
|
|
|
+ "port": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Stuff after a : delimiter is ignored",
|
|
|
+ "href": "http://example.net/path",
|
|
|
+ "new_value": "example.com:8080",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.com/path",
|
|
|
+ "host": "example.com",
|
|
|
+ "hostname": "example.com",
|
|
|
+ "port": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Stuff after a : delimiter is ignored",
|
|
|
+ "href": "http://example.net:8080/path",
|
|
|
+ "new_value": "example.com:",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.com:8080/path",
|
|
|
+ "host": "example.com:8080",
|
|
|
+ "hostname": "example.com",
|
|
|
+ "port": "8080"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Stuff after a / delimiter is ignored",
|
|
|
+ "href": "http://example.net/path",
|
|
|
+ "new_value": "example.com/stuff",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.com/path",
|
|
|
+ "host": "example.com",
|
|
|
+ "hostname": "example.com",
|
|
|
+ "port": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Stuff after a ? delimiter is ignored",
|
|
|
+ "href": "http://example.net/path",
|
|
|
+ "new_value": "example.com?stuff",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.com/path",
|
|
|
+ "host": "example.com",
|
|
|
+ "hostname": "example.com",
|
|
|
+ "port": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Stuff after a # delimiter is ignored",
|
|
|
+ "href": "http://example.net/path",
|
|
|
+ "new_value": "example.com#stuff",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.com/path",
|
|
|
+ "host": "example.com",
|
|
|
+ "hostname": "example.com",
|
|
|
+ "port": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "Stuff after a \\ delimiter is ignored for special schemes",
|
|
|
+ "href": "http://example.net/path",
|
|
|
+ "new_value": "example.com\\stuff",
|
|
|
+ "expected": {
|
|
|
+ "href": "http://example.com/path",
|
|
|
+ "host": "example.com",
|
|
|
+ "hostname": "example.com",
|
|
|
+ "port": ""
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain",
|
|
|
+ "href": "view-source+http://example.net/path",
|
|
|
+ "new_value": "example.com\\stuff",
|
|
|
+ "expected": {
|
|
|
+ "href": "view-source+http://example.net/path",
|
|
|
+ "host": "example.net",
|
|
|
+ "hostname": "example.net",
|
|
|
+ "port": ""
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "port": [
|
|
|
+ ],
|
|
|
"pathname": [],
|
|
|
"search": [],
|
|
|
"hash": []
|