diff --git a/Cargo.lock b/Cargo.lock
index 56d2417419e8e6..983b01477d2a7e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3907,6 +3907,124 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "icu_collections"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_locid_transform_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"
+
+[[package]]
+name = "icu_normalizer"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "utf16_iter",
+ "utf8_iter",
+ "write16",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"
+
+[[package]]
+name = "icu_properties"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locid_transform",
+ "icu_properties_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"
+
+[[package]]
+name = "icu_provider"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_provider_macros",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_provider_macros"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "ident_case"
version = "1.0.1"
@@ -3933,6 +4051,27 @@ dependencies = [
"unicode-normalization",
]
+[[package]]
+name = "idna"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
[[package]]
name = "if_chain"
version = "1.0.2"
@@ -4402,6 +4541,12 @@ version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+[[package]]
+name = "litemap"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"
+
[[package]]
name = "litrs"
version = "0.4.1"
@@ -7488,6 +7633,16 @@ dependencies = [
"unicode-width",
]
+[[package]]
+name = "tinystr"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
[[package]]
name = "tinyvec"
version = "1.6.0"
@@ -7890,12 +8045,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
[[package]]
name = "url"
-version = "2.4.1"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
+checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada"
dependencies = [
"form_urlencoded",
- "idna 0.4.0",
+ "idna 1.0.3",
"percent-encoding",
"serde",
]
@@ -7918,12 +8073,24 @@ version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+[[package]]
+name = "utf16_iter"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246"
+
[[package]]
name = "utf8-width"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3"
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
[[package]]
name = "utf8parse"
version = "0.2.1"
@@ -8523,6 +8690,18 @@ version = "0.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
+[[package]]
+name = "write16"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936"
+
+[[package]]
+name = "writeable"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51"
+
[[package]]
name = "wtf8"
version = "0.1.0"
@@ -8713,6 +8892,28 @@ dependencies = [
"uuid",
]
+[[package]]
+name = "zerovec"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.87",
+]
+
[[package]]
name = "zip"
version = "2.1.6"
diff --git a/Cargo.toml b/Cargo.toml
index 9d625f082a7a23..a599af39099333 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -200,8 +200,7 @@ tower-http = { version = "0.6.1", features = ["decompression-br", "decompression
tower-lsp = { package = "deno_tower_lsp", version = "0.1.0", features = ["proposed"] }
tower-service = "0.3.2"
twox-hash = "=1.6.3"
-# Upgrading past 2.4.1 may cause WPT failures
-url = { version = "< 2.5.0", features = ["serde", "expose_internals"] }
+url = { version = "=2.5.3", features = ["serde", "expose_internals"] }
uuid = { version = "1.3.0", features = ["v4"] }
webpki-root-certs = "0.26.5"
webpki-roots = "0.26"
diff --git a/tests/specs/doc/invalid_url/invalid_url.out b/tests/specs/doc/invalid_url/invalid_url.out
index 038c53177a336c..17974318c7f019 100644
--- a/tests/specs/doc/invalid_url/invalid_url.out
+++ b/tests/specs/doc/invalid_url/invalid_url.out
@@ -1,4 +1,4 @@
error: Invalid URL 'https://raw.githubusercontent.com%2Fdyedgreen%2Fdeno-sqlite%2Frework_api%2Fmod.ts'
Caused by:
- invalid domain character
+ invalid international domain name
diff --git a/tests/wpt/runner/expectation.json b/tests/wpt/runner/expectation.json
index 23cc85b498811f..aedf1dc85a99bd 100644
--- a/tests/wpt/runner/expectation.json
+++ b/tests/wpt/runner/expectation.json
@@ -3741,18 +3741,12 @@
"ab--c.ß (using .hostname)",
"ab--c.ß (using .host)",
"ab--c.ß (using .hostname)",
- ".example (using URL)",
- ".example (using URL.host)",
- ".example (using URL.hostname)",
".example (using )",
".example (using .host)",
".example (using .hostname)",
".example (using )",
".example (using .host)",
".example (using .hostname)",
- "xn--1ug.example (using URL)",
- "xn--1ug.example (using URL.host)",
- "xn--1ug.example (using URL.hostname)",
"xn--1ug.example (using )",
"xn--1ug.example (using .host)",
"xn--1ug.example (using .hostname)",
@@ -3874,18 +3868,8 @@
],
"url-searchparams.any.html": true,
"url-searchparams.any.worker.html": true,
- "url-setters-stripping.any.html": [
- "Setting port with leading U+0000 (https:)",
- "Setting port with leading U+001F (https:)",
- "Setting port with leading U+0000 (wpt++:)",
- "Setting port with leading U+001F (wpt++:)"
- ],
- "url-setters-stripping.any.worker.html": [
- "Setting port with leading U+0000 (https:)",
- "Setting port with leading U+001F (https:)",
- "Setting port with leading U+0000 (wpt++:)",
- "Setting port with leading U+001F (wpt++:)"
- ],
+ "url-setters-stripping.any.html": true,
+ "url-setters-stripping.any.worker.html": true,
"url-tojson.any.html": true,
"url-tojson.any.worker.html": true,
"urlencoded-parser.any.html": true,
@@ -3894,12 +3878,8 @@
"urlsearchparams-append.any.worker.html": true,
"urlsearchparams-constructor.any.html": true,
"urlsearchparams-constructor.any.worker.html": true,
- "urlsearchparams-delete.any.html": [
- "Changing the query of a URL with an opaque path can impact the path if the URL has no fragment"
- ],
- "urlsearchparams-delete.any.worker.html": [
- "Changing the query of a URL with an opaque path can impact the path if the URL has no fragment"
- ],
+ "urlsearchparams-delete.any.html": true,
+ "urlsearchparams-delete.any.worker.html": true,
"urlsearchparams-foreach.any.html": true,
"urlsearchparams-foreach.any.worker.html": true,
"urlsearchparams-get.any.html": true,
@@ -3932,182 +3912,7 @@
"Input − with encoding utf-8",
"Input á| with encoding utf-8"
],
- "IdnaTestV2.window.html": [
- "ToASCII(\"ab\") C1",
- "ToASCII(\"AB\") C1",
- "ToASCII(\"Ab\") C1",
- "ToASCII(\"xn--ab-j1t\") C1",
- "ToASCII(\"ab\") C2",
- "ToASCII(\"AB\") C2",
- "ToASCII(\"Ab\") C2",
- "ToASCII(\"xn--ab-m1t\") C2",
- "ToASCII(\"1.aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.ASSBCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.ASSBCSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.Assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.Assbcssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.Aßbcßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc\") C1; C2; A4_2 (ignored)",
- "ToASCII(\"xn--bß\") C1; C2",
- "ToASCII(\"XN--BSS\") C1; C2",
- "ToASCII(\"xn--bss\") C1; C2",
- "ToASCII(\"Xn--Bss\") C1; C2",
- "ToASCII(\"xn--xn--bss-7z6ccid\") C1; C2",
- "ToASCII(\"Xn--Bß\") C1; C2",
- "ToASCII(\"xn--xn--b-pqa5796ccahd\") C1; C2",
- "ToASCII(\"ஹ\") C2",
- "ToASCII(\"xn--dmc225h\") C2",
- "ToASCII(\"\") C2",
- "ToASCII(\"xn--1ug\") C2",
- "ToASCII(\"ஹ\") C1",
- "ToASCII(\"xn--dmc025h\") C1",
- "ToASCII(\"\") C1",
- "ToASCII(\"xn--0ug\") C1",
- "ToASCII(\"ۯۯ\") C1",
- "ToASCII(\"xn--cmba004q\") C1",
- "ToASCII(\"ß۫。\") C2",
- "ToASCII(\"SS۫。\") C2",
- "ToASCII(\"ss۫。\") C2",
- "ToASCII(\"Ss۫。\") C2",
- "ToASCII(\"xn--ss-59d.xn--1ug\") C2",
- "ToASCII(\"xn--zca012a.xn--1ug\") C2",
- "ToASCII(\"긃.榶-\") C1; V3 (ignored)",
- "ToASCII(\"긃.榶-\") C1; V3 (ignored)",
- "ToASCII(\"xn--0ug3307c.xn----d87b\") C1; V3 (ignored)",
- "ToASCII(\"Å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"Å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"Å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"Å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"xn----1fa1788k.xn--0ug\") C1; V3 (ignored)",
- "ToASCII(\"å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"å둄-.\") C1; V3 (ignored)",
- "ToASCII(\"ꡦᡑ1.。𐋣-\") C2; V3 (ignored); A4_2 (ignored)",
- "ToASCII(\"xn--1-o7j663bdl7m..xn----381i\") C2; V3 (ignored); A4_2 (ignored)",
- "ToASCII(\"1.䰹-。웈\") C2; V3 (ignored)",
- "ToASCII(\"1.䰹-。웈\") C2; V3 (ignored)",
- "ToASCII(\"1.xn----tgnz80r.xn--kp5b\") C2; V3 (ignored)",
- "ToASCII(\"-3.ヌᢕ\") C2; V3 (ignored)",
- "ToASCII(\"-3.xn--fbf739aq5o\") C2; V3 (ignored)",
- "ToASCII(\"ς-。𝟭-\") C1; V3 (ignored)",
- "ToASCII(\"ς-。1-\") C1; V3 (ignored)",
- "ToASCII(\"Σ-。1-\") C1; V3 (ignored)",
- "ToASCII(\"σ-。1-\") C1; V3 (ignored)",
- "ToASCII(\"xn----zmb.xn--1--i1t\") C1; V3 (ignored)",
- "ToASCII(\"xn----xmb.xn--1--i1t\") C1; V3 (ignored)",
- "ToASCII(\"Σ-。𝟭-\") C1; V3 (ignored)",
- "ToASCII(\"σ-。𝟭-\") C1; V3 (ignored)",
- "ToASCII(\"ᡯ⚉姶🄉.۷🎪\") C2; P1; V6",
- "ToASCII(\"𝟵隁⯮.᠍\") C1",
- "ToASCII(\"9隁⯮.᠍\") C1",
- "ToASCII(\"xn--9-mfs8024b.xn--0ug\") C1",
- "ToASCII(\"ß꫶ᢥ.⊶ⴡⴖ\") C1",
- "ToASCII(\"ss꫶ᢥ.⊶ⴡⴖ\") C1",
- "ToASCII(\"xn--ss-4ep585bkm5p.xn--ifh802b6a\") C1",
- "ToASCII(\"xn--zca682johfi89m.xn--ifh802b6a\") C1",
- "ToASCII(\"ß꫶ᢥ.⊶ⴡⴖ\") C1",
- "ToASCII(\"ss꫶ᢥ.⊶ⴡⴖ\") C1",
- "ToASCII(\"-。\") C2; V3 (ignored)",
- "ToASCII(\"-。\") C2; V3 (ignored)",
- "ToASCII(\"-.xn--1ug\") C2; V3 (ignored)",
- "ToASCII(\"ς-.ⴣ𦟙\") C2; V3 (ignored)",
- "ToASCII(\"σ-.ⴣ𦟙\") C2; V3 (ignored)",
- "ToASCII(\"xn----zmb048s.xn--rlj2573p\") C2; V3 (ignored)",
- "ToASCII(\"xn----xmb348s.xn--rlj2573p\") C2; V3 (ignored)",
- "ToASCII(\"鱊。\") C1",
- "ToASCII(\"xn--rt6a.xn--0ug\") C1",
- "ToASCII(\"ⴚ。ς\") C1",
- "ToASCII(\"ⴚ。σ\") C1",
- "ToASCII(\"xn--0ug262c.xn--4xa\") C1",
- "ToASCII(\"xn--0ug262c.xn--3xa\") C1",
- "ToASCII(\"ⴚ。ς\") C1",
- "ToASCII(\"ⴚ。σ\") C1",
- "ToASCII(\"⾕。꥓̐ꡎ\") C1; C2",
- "ToASCII(\"⾕。꥓̐ꡎ\") C1; C2",
- "ToASCII(\"谷。꥓̐ꡎ\") C1; C2",
- "ToASCII(\"xn--1ug0273b.xn--0sa359l6n7g13a\") C1; C2",
- "ToASCII(\"。\") C1; C2",
- "ToASCII(\"xn--1ug.xn--0ug\") C1; C2",
- "ToASCII(\"。。\") C1; A4_2 (ignored)",
- "ToASCII(\"xn--0ug..\") C1; A4_2 (ignored)",
- "ToASCII(\"ᡲ-𝟹.ß--\") C1; V3 (ignored)",
- "ToASCII(\"ᡲ-3.ß--\") C1; V3 (ignored)",
- "ToASCII(\"ᡲ-3.SS--\") C1; V3 (ignored)",
- "ToASCII(\"ᡲ-3.ss--\") C1; V3 (ignored)",
- "ToASCII(\"ᡲ-3.Ss--\") C1; V3 (ignored)",
- "ToASCII(\"xn---3-p9o.xn--ss---276a\") C1; V3 (ignored)",
- "ToASCII(\"xn---3-p9o.xn-----fia9303a\") C1; V3 (ignored)",
- "ToASCII(\"ᡲ-𝟹.SS--\") C1; V3 (ignored)",
- "ToASCII(\"ᡲ-𝟹.ss--\") C1; V3 (ignored)",
- "ToASCII(\"ᡲ-𝟹.Ss--\") C1; V3 (ignored)",
- "ToASCII(\"𝟙。𝟸⁷\") C2",
- "ToASCII(\"1。27\") C2",
- "ToASCII(\"1.xn--27-l1tb\") C2",
- "ToASCII(\".ßⴉ-\") C1; V3 (ignored)",
- "ToASCII(\".ssⴉ-\") C1; V3 (ignored)",
- "ToASCII(\".Ssⴉ-\") C1; V3 (ignored)",
- "ToASCII(\"xn--0ug.xn--ss--bi1b\") C1; V3 (ignored)",
- "ToASCII(\"xn--0ug.xn----pfa2305a\") C1; V3 (ignored)",
- "ToASCII(\"ⴏ󠅋-.ⴉ\") C2; V3 (ignored)",
- "ToASCII(\"xn----3vs.xn--1ug532c\") C2; V3 (ignored)",
- "ToASCII(\"ⴏ󠅋-.ⴉ\") C2; V3 (ignored)",
- "ToASCII(\"。ⴖͦ.\") C1; A4_2 (ignored)",
- "ToASCII(\".xn--hva754s.xn--0ug\") C1; A4_2 (ignored)",
- "ToASCII(\"攌꯭。ᢖ-ⴘ\") C2",
- "ToASCII(\"xn--1ug592ykp6b.xn----mck373i\") C2",
- "ToASCII(\"ꖨ.16.3툒۳\") C1",
- "ToASCII(\"ꖨ.16.3툒۳\") C1",
- "ToASCII(\"xn--0ug2473c.16.xn--3-nyc0117m\") C1",
- "ToASCII(\"𝟏𝨙⸖.\") C2",
- "ToASCII(\"1𝨙⸖.\") C2",
- "ToASCII(\"xn--1-5bt6845n.xn--1ug\") C2",
- "ToASCII(\"-.ⴞ𐋷\") C2; V3 (ignored)",
- "ToASCII(\"xn----ugn.xn--mlj8559d\") C2; V3 (ignored)",
- "ToASCII(\"嬃𝍌.ୄ\") C2",
- "ToASCII(\"嬃𝍌.ୄ\") C2",
- "ToASCII(\"xn--b6s0078f.xn--0ic557h\") C2",
- "ToASCII(\".F\") C2",
- "ToASCII(\".f\") C2",
- "ToASCII(\"xn--1ug.f\") C2",
- "ToASCII(\"㨲。ß\") C2",
- "ToASCII(\"㨲。ß\") C2",
- "ToASCII(\"㨲。SS\") C2",
- "ToASCII(\"㨲。ss\") C2",
- "ToASCII(\"㨲。Ss\") C2",
- "ToASCII(\"xn--1ug914h.ss\") C2",
- "ToASCII(\"xn--1ug914h.xn--zca\") C2",
- "ToASCII(\"㨲。SS\") C2",
- "ToASCII(\"㨲。ss\") C2",
- "ToASCII(\"㨲。Ss\") C2",
- "ToASCII(\"璼𝨭。󠇟\") C1",
- "ToASCII(\"璼𝨭。󠇟\") C1",
- "ToASCII(\"xn--gky8837e.xn--0ug\") C1",
- "ToASCII(\".\") C1",
- "ToASCII(\"xn--0ug.xn--0ug\") C1",
- "ToASCII(\"𝟠4󠇗𝈻.𐋵⛧\") C2",
- "ToASCII(\"84󠇗𝈻.𐋵⛧\") C2",
- "ToASCII(\"xn--84-s850a.xn--1uga573cfq1w\") C2",
- "ToASCII(\"󠆪。ß𑓃\") C1; C2",
- "ToASCII(\"󠆪。ß𑓃\") C1; C2",
- "ToASCII(\"󠆪。SS𑓃\") C1; C2",
- "ToASCII(\"󠆪。ss𑓃\") C1; C2",
- "ToASCII(\"󠆪。Ss𑓃\") C1; C2",
- "ToASCII(\"xn--0ugb.xn--ss-bh7o\") C1; C2",
- "ToASCII(\"xn--0ugb.xn--zca0732l\") C1; C2",
- "ToASCII(\"󠆪。SS𑓃\") C1; C2",
- "ToASCII(\"󠆪。ss𑓃\") C1; C2",
- "ToASCII(\"󠆪。Ss𑓃\") C1; C2",
- "ToASCII(\"。ヶ䒩.ꡪ\") C1; A4_2 (ignored)",
- "ToASCII(\".xn--0ug287dj0o.xn--gd9a\") C1; A4_2 (ignored)",
- "ToASCII(\"梉。\") C1",
- "ToASCII(\"xn--7zv.xn--0ug\") C1",
- "ToASCII(\"𐋷。\") C2",
- "ToASCII(\"xn--r97c.xn--1ug\") C2"
- ],
+ "IdnaTestV2.window.html": true,
"javascript-urls.window.html": false,
"url-constructor.any.html?exclude=(file|javascript|mailto)": [
"Parsing: without base",
@@ -4760,21 +4565,11 @@
": Setting .pathname = '/foo' Opaque paths cannot be set"
],
"url-setters.any.html?exclude=(file|javascript|mailto)": [
- "URL: Setting .host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
- "URL: Setting .host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
"URL: Setting .hostname = 'example.com:8080' : delimiter invalidates entire value",
"URL: Setting .hostname = 'example.com:' : delimiter invalidates entire value",
"URL: Setting .hostname = 'h' Drop /. from path",
"URL: Setting .hostname = ''",
- "URL: Setting .port = 'randomstring' Setting port to a string that doesn't parse as a number",
- "URL: Setting .pathname = '' Non-special URLs can have their paths erased",
- "URL: Setting .pathname = '' Non-special URLs with an empty host can have their paths erased",
- "URL: Setting .pathname = '/.//p' Serialize /. in path",
- "URL: Setting .pathname = '/..//p'",
- "URL: Setting .pathname = '//p'",
- "URL: Setting .pathname = 'p' Drop /. from path",
- "URL: Setting .search = '' Do not drop trailing spaces from non-trailing opaque paths",
- "URL: Setting .search = ''"
+ "URL: Setting .pathname = '' Non-special URLs with an empty host can have their paths erased"
],
"url-setters.any.html?include=file": [
"URL: Setting .pathname = '\\\\' File URLs and (back)slashes",
@@ -4784,21 +4579,11 @@
"url-setters.any.html?include=javascript": true,
"url-setters.any.html?include=mailto": true,
"url-setters.any.worker.html?exclude=(file|javascript|mailto)": [
- "URL: Setting .host = 'example.com:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
- "URL: Setting .host = '[::1]:invalid' Anything other than ASCII digit stops the port parser in a setter but is not an error",
"URL: Setting .hostname = 'example.com:8080' : delimiter invalidates entire value",
"URL: Setting .hostname = 'example.com:' : delimiter invalidates entire value",
"URL: Setting .hostname = 'h' Drop /. from path",
"URL: Setting .hostname = ''",
- "URL: Setting .port = 'randomstring' Setting port to a string that doesn't parse as a number",
- "URL: Setting .pathname = '' Non-special URLs can have their paths erased",
- "URL: Setting .pathname = '' Non-special URLs with an empty host can have their paths erased",
- "URL: Setting .pathname = '/.//p' Serialize /. in path",
- "URL: Setting .pathname = '/..//p'",
- "URL: Setting .pathname = '//p'",
- "URL: Setting .pathname = 'p' Drop /. from path",
- "URL: Setting .search = '' Do not drop trailing spaces from non-trailing opaque paths",
- "URL: Setting .search = ''"
+ "URL: Setting .pathname = '' Non-special URLs with an empty host can have their paths erased"
],
"url-setters.any.worker.html?include=file": [
"URL: Setting .pathname = '\\\\' File URLs and (back)slashes",
@@ -5187,6 +4972,12 @@
"Parsing origin: against ",
"Parsing origin: against ",
"Parsing origin: against ",
+ "Parsing origin: against ",
+ "Parsing origin: against ",
+ "Parsing origin: against ",
+ "Parsing origin: against ",
+ "Parsing origin: against ",
+ "Parsing origin: against ",
"Parsing origin: against "
],
"a-element.html?exclude=(file|javascript|mailto)": [
@@ -5884,6 +5675,13 @@
"Parsing: //example.org/../path/../../> against ",
"Parsing: //example.org/../path/../../path> against ",
"Parsing: \\/\\//example.org/../path> against ",
+ "Parsing: against ",
+ "Parsing: against ",
+ "Parsing: against ",
+ "Parsing: against ",
+ "Parsing: against ",
+ "Parsing: against ",
+ "Parsing: against ",
"Parsing: against "
],
"a-element.html?include=file": [
@@ -6641,7 +6439,10 @@
"window.open(): stun://test:test should throw",
"XHR: stun://[:1] should throw",
"Location's href: stun://[:1] should throw",
- "window.open(): stun://[:1] should throw"
+ "window.open(): stun://[:1] should throw",
+ "XHR: non-special://host\\a should throw",
+ "Location's href: non-special://host\\a should throw",
+ "window.open(): non-special://host\\a should throw"
],
"url-statics-parse.any.html": true,
"url-statics-parse.any.worker.html": true
@@ -12105,114 +11906,10 @@
"worker-request-animation-frame.html": false
},
"urlpattern": {
- "urlpattern-compare.any.html": [
- "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
- "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
- "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
- "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
- "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
- "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
- "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
- "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
- "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
- "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
- ],
- "urlpattern-compare.any.worker.html": [
- "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
- "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
- "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
- "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
- "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
- "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
- "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
- "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
- "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
- "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
- ],
- "urlpattern-compare.https.any.html": [
- "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
- "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
- "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
- "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
- "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
- "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
- "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
- "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
- "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
- "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
- ],
- "urlpattern-compare.https.any.worker.html": [
- "Component: pathname Left: {\"pathname\":\"/foo/a\"} Right: {\"pathname\":\"/foo/b\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/b\"} Right: {\"pathname\":\"/foo/bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/bar\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/\"} Right: {\"pathname\":\"/foo/:bar\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:bar\"} Right: {\"pathname\":\"/foo/*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/(bar)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}\"} Right: {\"pathname\":\"/foo/{bar}+\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}+\"} Right: {\"pathname\":\"/foo/{bar}?\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}?\"} Right: {\"pathname\":\"/foo/{bar}*\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/(123)\"} Right: {\"pathname\":\"/foo/(12)\"}",
- "Component: pathname Left: {\"pathname\":\"/foo/:b\"} Right: {\"pathname\":\"/foo/:a\"}",
- "Component: pathname Left: {\"pathname\":\"*/foo\"} Right: {\"pathname\":\"*\"}",
- "Component: port Left: {\"port\":\"9\"} Right: {\"port\":\"100\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo/{:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"fo{o/:bar}?/baz\"}",
- "Component: pathname Left: {\"pathname\":\"foo/:bar?/baz\"} Right: {\"pathname\":\"foo{/:bar/}?baz\"}",
- "Component: pathname Left: \"https://a.example.com/b?a\" Right: \"https://b.example.com/a?b\"",
- "Component: pathname Left: {\"pathname\":\"/foo/{bar}/baz\"} Right: {\"pathname\":\"/foo/bar/baz\"}",
- "Component: protocol Left: {\"protocol\":\"a\"} Right: {\"protocol\":\"b\"}",
- "Component: username Left: {\"username\":\"a\"} Right: {\"username\":\"b\"}",
- "Component: password Left: {\"password\":\"a\"} Right: {\"password\":\"b\"}",
- "Component: hostname Left: {\"hostname\":\"a\"} Right: {\"hostname\":\"b\"}",
- "Component: search Left: {\"search\":\"a\"} Right: {\"search\":\"b\"}",
- "Component: hash Left: {\"hash\":\"a\"} Right: {\"hash\":\"b\"}"
- ],
+ "urlpattern-compare.any.html": false,
+ "urlpattern-compare.any.worker.html": false,
+ "urlpattern-compare.https.any.html": false,
+ "urlpattern-compare.https.any.worker.html": false,
"urlpattern.any.html": [
"Pattern: [{\"hostname\":\"bad\\\\:hostname\"}] Inputs: undefined",
"Pattern: [] Inputs: []",
diff --git a/tests/wpt/suite b/tests/wpt/suite
index e78446e34a1921..f4c5e40b830cb5 160000
--- a/tests/wpt/suite
+++ b/tests/wpt/suite
@@ -1 +1 @@
-Subproject commit e78446e34a1921371658a5df08c71d83f50a2a2f
+Subproject commit f4c5e40b830cb5811d9838a03b1e95e0c9d4323f