From 1a15511ba38acbbe6a990b6b809f038d177aaf66 Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Sun, 30 Jan 2022 21:04:36 +0100 Subject: [PATCH 1/3] feat(ext/fetch): add Headers#getSetCookie --- ext/fetch/20_headers.js | 17 + test_util/wpt | 2 +- tools/wpt.ts | 6 +- tools/wpt/expectation.json | 1800 ++++++++++++++++++++++++++++++------ 4 files changed, 1545 insertions(+), 280 deletions(-) diff --git a/ext/fetch/20_headers.js b/ext/fetch/20_headers.js index b8fd8ab8356d3b..528782dbc04e69 100644 --- a/ext/fetch/20_headers.js +++ b/ext/fetch/20_headers.js @@ -286,6 +286,7 @@ class Headers { * @param {string} name */ delete(name) { + webidl.assertBranded(this, HeadersPrototype); const prefix = "Failed to execute 'delete' on 'Headers'"; webidl.requiredArguments(arguments.length, 1, { prefix }); name = webidl.converters["ByteString"](name, { @@ -314,6 +315,7 @@ class Headers { * @param {string} name */ get(name) { + webidl.assertBranded(this, HeadersPrototype); const prefix = "Failed to execute 'get' on 'Headers'"; webidl.requiredArguments(arguments.length, 1, { prefix }); name = webidl.converters["ByteString"](name, { @@ -329,10 +331,25 @@ class Headers { return getHeader(list, name); } + getSetCookie() { + webidl.assertBranded(this, HeadersPrototype); + const list = this[_headerList]; + + const entries = []; + for (let i = 0; i < list.length; i++) { + if (byteLowerCase(list[i][0]) === "set-cookie") { + ArrayPrototypePush(entries, list[i][1]); + } + } + + return entries; + } + /** * @param {string} name */ has(name) { + webidl.assertBranded(this, HeadersPrototype); const prefix = "Failed to execute 'has' on 'Headers'"; webidl.requiredArguments(arguments.length, 1, { prefix }); name = webidl.converters["ByteString"](name, { diff --git a/test_util/wpt b/test_util/wpt index 9f9c1d83e32965..17905990b9ea97 160000 --- a/test_util/wpt +++ b/test_util/wpt @@ -1 +1 @@ -Subproject commit 9f9c1d83e3296584cb301e6b560ddaa70abe1627 +Subproject commit 17905990b9ea9784d161a6259b3f24776acd6d2f diff --git a/tools/wpt.ts b/tools/wpt.ts index 5d0c2e7627d2ad..229ef3d3a118ef 100755 --- a/tools/wpt.ts +++ b/tools/wpt.ts @@ -367,7 +367,7 @@ async function update() { const currentExpectation = getExpectation(); - for (const result of Object.values(resultTests)) { + for (const [path, result] of Object.entries(resultTests)) { const { passed, failed, testSucceeded } = result; let finalExpectation: boolean | string[]; if (failed.length == 0 && testSucceeded) { @@ -743,6 +743,10 @@ function partitionTests(tests: TestToRun[]): TestToRun[][] { for (const test of tests) { // Paths looks like: /fetch/corb/img-html-correctly-labeled.sub-ref.html const key = test.path.split("/")[1]; + if (key === "WebCryptoAPI") { // run all WebCryptoAPI tests in parallel so they go faster + testsByKey[test.path] = [test]; + continue; + } if (!(key in testsByKey)) { testsByKey[key] = []; } diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json index ebec7caf79dfdd..7c260055d184b8 100644 --- a/tools/wpt/expectation.json +++ b/tools/wpt/expectation.json @@ -3,10 +3,54 @@ "getRandomValues.any.html": true, "getRandomValues.any.worker.html": true, "derive_bits_keys": { - "ecdh_bits.https.any.html": false, - "ecdh_bits.https.any.worker.html": false, - "ecdh_keys.https.any.html": false, - "ecdh_keys.https.any.worker.html": false, + "ecdh_bits.https.any.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 with null length", + "P-521 short result", + "P-521 non-multiple of 8 bits", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveBits usage for base key", + "P-521 base key is not a private key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key", + "P-521 asking for too many bits" + ], + "ecdh_bits.https.any.worker.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 with null length", + "P-521 short result", + "P-521 non-multiple of 8 bits", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveBits usage for base key", + "P-521 base key is not a private key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key", + "P-521 asking for too many bits" + ], + "ecdh_keys.https.any.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveKey usage for base key", + "P-521 base key is not a private key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key" + ], + "ecdh_keys.https.any.worker.html": [ + "P-521 good parameters", + "P-521 mixed case parameters", + "P-521 mismatched curves", + "P-521 public property of algorithm is not an ECDSA public key", + "P-521 no deriveKey usage for base key", + "P-521 base key is not a private key", + "P-521 public property value is a private key", + "P-521 public property value is a secret key" + ], "hkdf.https.any.html?1-1000": true, "hkdf.https.any.html?1001-2000": true, "hkdf.https.any.html?2001-3000": true, @@ -33,10 +77,70 @@ "pbkdf2.https.any.worker.html?6001-7000": true, "pbkdf2.https.any.worker.html?7001-8000": true, "pbkdf2.https.any.worker.html?8001-last": true, - "cfrg_curves_bits.https.any.html": false, - "cfrg_curves_bits.https.any.worker.html": false, - "cfrg_curves_keys.https.any.html": false, - "cfrg_curves_keys.https.any.worker.html": false + "cfrg_curves_bits.https.any.html": [ + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 with null length", + "X25519 short result", + "X25519 non-multiple of 8 bits", + "X25519 mismatched algorithms", + "X25519 no deriveBits usage for base key", + "X448 good parameters", + "X448 mixed case parameters", + "X448 with null length", + "X448 short result", + "X448 non-multiple of 8 bits", + "X448 mismatched algorithms", + "X448 no deriveBits usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key", + "X448 asking for too many bits" + ], + "cfrg_curves_bits.https.any.worker.html": [ + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 with null length", + "X25519 short result", + "X25519 non-multiple of 8 bits", + "X25519 mismatched algorithms", + "X25519 no deriveBits usage for base key", + "X448 good parameters", + "X448 mixed case parameters", + "X448 with null length", + "X448 short result", + "X448 non-multiple of 8 bits", + "X448 mismatched algorithms", + "X448 no deriveBits usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key", + "X448 asking for too many bits" + ], + "cfrg_curves_keys.https.any.html": [ + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 mismatched algorithms", + "X448 good parameters", + "X448 mixed case parameters", + "X448 mismatched algorithms", + "X448 no deriveKey usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key" + ], + "cfrg_curves_keys.https.any.worker.html": [ + "X25519 good parameters", + "X25519 mixed case parameters", + "X25519 mismatched algorithms", + "X448 good parameters", + "X448 mixed case parameters", + "X448 mismatched algorithms", + "X448 no deriveKey usage for base key", + "X448 base key is not a private key", + "X448 public property value is a private key", + "X448 public property value is a secret key" + ] }, "digest": { "digest.https.any.html": true, @@ -720,16 +824,33 @@ ], "import_export": { "ec_importKey.https.any.html": [ + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDH, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDH, namedCurve: P-384}, true, [])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDH, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDH, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", @@ -737,7 +858,10 @@ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDH, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDH, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", @@ -746,16 +870,33 @@ "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveBits])" ], "ec_importKey.https.any.worker.html": [ + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDSA, namedCurve: P-256}, true, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDSA, namedCurve: P-384}, true, [])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, true, [sign])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, true, [sign])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDSA, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDSA, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDSA, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDSA, namedCurve: P-521}, false, [sign])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDSA, namedCurve: P-521}, false, [sign])", + "Good parameters: P-256 bits (spki, buffer(59, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Good parameters: P-256 bits (raw, buffer(33, compressed), {name: ECDH, namedCurve: P-256}, true, [])", + "Good parameters: P-384 bits (spki, buffer(72, compressed), {name: ECDH, namedCurve: P-384}, true, [])", + "Good parameters: P-384 bits (raw, buffer(49, compressed), {name: ECDH, namedCurve: P-384}, true, [])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDH, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, true, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDH, namedCurve: P-521}, true, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveKey])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits, deriveKey])", @@ -763,7 +904,10 @@ "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, true, [deriveBits])", "Good parameters: P-521 bits (spki, buffer(158), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (spki, buffer(90, compressed), {name: ECDH, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(133), {name: ECDH, namedCurve: P-521}, false, [])", + "Good parameters: P-521 bits (raw, buffer(67, compressed), {name: ECDH, namedCurve: P-521}, false, [])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", "Good parameters: P-521 bits (jwk, object(kty, crv, x, y, d), {name: ECDH, namedCurve: P-521}, false, [deriveKey])", "Good parameters: P-521 bits (pkcs8, buffer(241), {name: ECDH, namedCurve: P-521}, false, [deriveBits, deriveKey])", @@ -778,10 +922,12 @@ "okp_importKey.https.any.html": [ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [])", "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [])", "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign])", "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])", "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [])", "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [])", "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign])", "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign])", "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])", @@ -789,6 +935,7 @@ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])", "Good parameters: X448 bits (spki, buffer(68), {name: X448}, true, [])", "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, true, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, true, [])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey])", "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey])", @@ -797,6 +944,7 @@ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])", "Good parameters: X448 bits (spki, buffer(68), {name: X448}, false, [])", "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, false, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, false, [])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey])", "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits, deriveKey])", @@ -807,10 +955,12 @@ "okp_importKey.https.any.worker.html": [ "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, true, [])", "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, true, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, true, [])", "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, true, [sign])", "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, true, [sign])", "Good parameters: Ed448 bits (spki, buffer(69), {name: Ed448}, false, [])", "Good parameters: Ed448 bits (jwk, object(kty, crv, x), {name: Ed448}, false, [])", + "Good parameters: Ed448 bits (raw, buffer(57), {name: Ed448}, false, [])", "Good parameters: Ed448 bits (pkcs8, buffer(73), {name: Ed448}, false, [sign])", "Good parameters: Ed448 bits (jwk, object(crv, d, x, kty), {name: Ed448}, false, [sign])", "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveKey])", @@ -818,6 +968,7 @@ "Good parameters: X25519 bits (jwk, object(crv, d, x, kty), {name: X25519}, true, [deriveBits])", "Good parameters: X448 bits (spki, buffer(68), {name: X448}, true, [])", "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, true, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, true, [])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveKey])", "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveKey])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, true, [deriveBits, deriveKey])", @@ -826,13 +977,22 @@ "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, true, [deriveBits])", "Good parameters: X448 bits (spki, buffer(68), {name: X448}, false, [])", "Good parameters: X448 bits (jwk, object(kty, crv, x), {name: X448}, false, [])", + "Good parameters: X448 bits (raw, buffer(56), {name: X448}, false, [])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveKey])", "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveKey])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits, deriveKey])", "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits, deriveKey])", "Good parameters: X448 bits (pkcs8, buffer(72), {name: X448}, false, [deriveBits])", "Good parameters: X448 bits (jwk, object(crv, d, x, kty), {name: X448}, false, [deriveBits])" - ] + ], + "okp_importKey_failures_Ed25519.https.any.html": false, + "okp_importKey_failures_Ed25519.https.any.worker.html": false, + "okp_importKey_failures_Ed448.https.any.html": false, + "okp_importKey_failures_Ed448.https.any.worker.html": false, + "okp_importKey_failures_X25519.https.any.html": false, + "okp_importKey_failures_X25519.https.any.worker.html": false, + "okp_importKey_failures_X448.https.any.html": false, + "okp_importKey_failures_X448.https.any.worker.html": false }, "randomUUID.https.any.html": true, "randomUUID.https.any.worker.html": true, @@ -1005,9 +1165,28 @@ "hmac.https.any.worker.html": true, "rsa_pkcs.https.any.html": true, "rsa_pkcs.https.any.worker.html": true, - "rsa_pss.https.any.html": true, - "rsa_pss.https.any.worker.html": true, + "rsa_pss.https.any.html": [ + "RSA-PSS with SHA-1 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-256 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-384 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-512 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-1, salted verification failure with wrong saltLength", + "RSA-PSS with SHA-256, salted verification failure with wrong saltLength", + "RSA-PSS with SHA-384, salted verification failure with wrong saltLength", + "RSA-PSS with SHA-512, salted verification failure with wrong saltLength" + ], + "rsa_pss.https.any.worker.html": [ + "RSA-PSS with SHA-1 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-256 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-384 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-512 and no salt verification failure with wrong saltLength", + "RSA-PSS with SHA-1, salted verification failure with wrong saltLength", + "RSA-PSS with SHA-256, salted verification failure with wrong saltLength", + "RSA-PSS with SHA-384, salted verification failure with wrong saltLength", + "RSA-PSS with SHA-512, salted verification failure with wrong saltLength" + ], "eddsa.https.any.html": [ + "Sign and verify using generated Ed448 keys.", "importVectorKeys step: EdDSA Ed448 verification", "importVectorKeys step: EdDSA Ed448 verification with altered signature after call", "importVectorKeys step: EdDSA Ed448 with altered data after call", @@ -1022,6 +1201,7 @@ "importVectorKeys step: EdDSA Ed448 verifying with wrong algorithm name" ], "eddsa.https.any.worker.html": [ + "Sign and verify using generated Ed448 keys.", "importVectorKeys step: EdDSA Ed448 verification", "importVectorKeys step: EdDSA Ed448 verification with altered signature after call", "importVectorKeys step: EdDSA Ed448 with altered data after call", @@ -1037,12 +1217,162 @@ ] }, "wrapKey_unwrapKey": { - "wrapKey_unwrapKey.https.any.worker.html": { - "ignore": true - }, - "wrapKey_unwrapKey.https.any.html": { - "ignore": true - } + "wrapKey_unwrapKey.https.any.worker.html": [ + "setup", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CTR", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CBC", + "Can wrap and unwrap Ed25519 public key keys using spki and AES-GCM", + "Can wrap and unwrap Ed25519 public key keys using jwk and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys using jwk and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap Ed25519 private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap X25519 public key keys using spki and AES-GCM", + "Can wrap and unwrap X25519 public key keys using jwk and AES-GCM", + "Can wrap and unwrap X25519 private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDSA public key keys using spki and AES-GCM", + "Can wrap and unwrap ECDSA public key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDSA private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDSA private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDSA private key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDSA private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap ECDSA private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap ECDH public key keys using spki and AES-GCM", + "Can wrap and unwrap ECDH public key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDH private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDH private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDH private key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDH private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap ECDH private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap HMAC keys using raw and AES-GCM", + "Can wrap and unwrap HMAC keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap HMAC keys using jwk and AES-GCM", + "Can wrap and unwrap HMAC keys as non-extractable using jwk and AES-GCM", + "Can unwrap HMAC non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CTR keys using raw and AES-GCM", + "Can wrap and unwrap AES-CTR keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-CTR keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CTR keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-CTR non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CBC keys using raw and AES-GCM", + "Can wrap and unwrap AES-CBC keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-CBC keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CBC keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-CBC non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-GCM keys using raw and AES-GCM", + "Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-GCM keys using jwk and AES-GCM", + "Can wrap and unwrap AES-GCM keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-GCM non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-KW keys using raw and AES-GCM", + "Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-KW keys using jwk and AES-GCM", + "Can wrap and unwrap AES-KW keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-KW non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-PSS public key keys using spki and AES-GCM", + "Can wrap and unwrap RSA-PSS public key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap RSA-PSS private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-OAEP public key keys using spki and AES-GCM", + "Can wrap and unwrap RSA-OAEP public key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap RSA-OAEP private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using spki and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using jwk and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using jwk and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap RSASSA-PKCS1-v1_5 private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-KW", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and RSA-OAEP" + ], + "wrapKey_unwrapKey.https.any.html": [ + "setup", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CTR", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CBC", + "Can wrap and unwrap Ed25519 public key keys using spki and AES-GCM", + "Can wrap and unwrap Ed25519 public key keys using jwk and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys using jwk and AES-GCM", + "Can wrap and unwrap Ed25519 private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap Ed25519 private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap X25519 public key keys using spki and AES-GCM", + "Can wrap and unwrap X25519 public key keys using jwk and AES-GCM", + "Can wrap and unwrap X25519 private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDSA public key keys using spki and AES-GCM", + "Can wrap and unwrap ECDSA public key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDSA private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDSA private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDSA private key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDSA private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap ECDSA private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap ECDH public key keys using spki and AES-GCM", + "Can wrap and unwrap ECDH public key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDH private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDH private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap ECDH private key keys using jwk and AES-GCM", + "Can wrap and unwrap ECDH private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap ECDH private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap HMAC keys using raw and AES-GCM", + "Can wrap and unwrap HMAC keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap HMAC keys using jwk and AES-GCM", + "Can wrap and unwrap HMAC keys as non-extractable using jwk and AES-GCM", + "Can unwrap HMAC non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CTR keys using raw and AES-GCM", + "Can wrap and unwrap AES-CTR keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-CTR keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CTR keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-CTR non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CBC keys using raw and AES-GCM", + "Can wrap and unwrap AES-CBC keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-CBC keys using jwk and AES-GCM", + "Can wrap and unwrap AES-CBC keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-CBC non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-GCM keys using raw and AES-GCM", + "Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-GCM keys using jwk and AES-GCM", + "Can wrap and unwrap AES-GCM keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-GCM non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap AES-KW keys using raw and AES-GCM", + "Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-GCM", + "Can wrap and unwrap AES-KW keys using jwk and AES-GCM", + "Can wrap and unwrap AES-KW keys as non-extractable using jwk and AES-GCM", + "Can unwrap AES-KW non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using spki and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using jwk and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using jwk and AES-GCM", + "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap RSASSA-PKCS1-v1_5 private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-PSS public key keys using spki and AES-GCM", + "Can wrap and unwrap RSA-PSS public key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-PSS private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap RSA-PSS private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-OAEP public key keys using spki and AES-GCM", + "Can wrap and unwrap RSA-OAEP public key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using pkcs8 and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys using jwk and AES-GCM", + "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using jwk and AES-GCM", + "Can unwrap RSA-OAEP private key non-extractable keys using jwk and AES-GCM", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-KW", + "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and RSA-OAEP" + ] }, "algorithm-discards-context.https.window.html": false }, @@ -1685,9 +2015,14 @@ }, "url": { "historical.any.html": [ - " and .searchParams should be undefined" + " and .searchParams should be undefined", + "URL: no structured serialize/deserialize support", + "URLSearchParams: no structured serialize/deserialize support" + ], + "historical.any.worker.html": [ + "URL: no structured serialize/deserialize support", + "URLSearchParams: no structured serialize/deserialize support" ], - "historical.any.worker.html": true, "idlharness.any.html": true, "idlharness.any.worker.html": true, "toascii.window.html": [ @@ -1753,6 +2088,12 @@ "xn--a.ß (using )", "xn--a.ß (using .host)", "xn--a.ß (using .hostname)", + "xn--ls8h= (using )", + "xn--ls8h= (using .host)", + "xn--ls8h= (using .hostname)", + "xn--ls8h= (using )", + "xn--ls8h= (using .host)", + "xn--ls8h= (using .hostname)", "xn--tešla (using )", "xn--tešla (using .host)", "xn--tešla (using .hostname)", @@ -1878,7 +2219,19 @@ "xn-- (using .hostname)", "xn-- (using )", "xn-- (using .host)", - "xn-- (using .hostname)" + "xn-- (using .hostname)", + "≠ (using .host)", + "≠ (using .hostname)", + "≠ (using .host)", + "≠ (using .hostname)", + "≮ (using .host)", + "≮ (using .hostname)", + "≮ (using .host)", + "≮ (using .hostname)", + "≯ (using .host)", + "≯ (using .hostname)", + "≯ (using .host)", + "≯ (using .hostname)" ], "url-constructor.any.html": [ "Parsing: against ", @@ -2028,8 +2381,12 @@ "urlsearchparams-append.any.worker.html": true, "urlsearchparams-constructor.any.html": true, "urlsearchparams-constructor.any.worker.html": true, - "urlsearchparams-delete.any.html": true, - "urlsearchparams-delete.any.worker.html": true, + "urlsearchparams-delete.any.html": [ + "Changing the query of a URL with an opaque path can impact the path" + ], + "urlsearchparams-delete.any.worker.html": [ + "Changing the query of a URL with an opaque path can impact the path" + ], "urlsearchparams-foreach.any.html": true, "urlsearchparams-foreach.any.worker.html": true, "urlsearchparams-get.any.html": true, @@ -2089,7 +2446,9 @@ "Input  with encoding utf-8", "Input − with encoding shift_jis", "Input − with encoding utf-8", - "Input á| with encoding utf-8" + "Input á| with encoding utf-8", + "Input \ud800 with encoding utf-8", + "Input \ud800 with encoding windows-1252" ], "url-setters-a-area.window.html": [ ": Setting .protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.", @@ -2526,241 +2885,1072 @@ ": Setting .hash = '%c3%89té' Bytes already percent-encoded are left as-is", ": Setting .hash = 'castle'", ": Setting .hash = 'castle'" - ] - }, - "fetch": { - "api": { - "request": { - "request-init-002.any.html": true, - "request-init-002.any.worker.html": true, - "request-init-stream.any.html": [ - "It is error to omit .duplex when the body is a ReadableStream.", - "It is error to set .duplex = 'full' when the body is null.", - "It is error to set .duplex = 'full' when the body is a string.", - "It is error to set .duplex = 'full' when the body is a Uint8Array.", - "It is error to set .duplex = 'full' when the body is a Blob.", - "It is error to set .duplex = 'full' when the body is a ReadableStream." - ], - "request-init-stream.any.worker.html": [ - "It is error to omit .duplex when the body is a ReadableStream.", - "It is error to set .duplex = 'full' when the body is null.", - "It is error to set .duplex = 'full' when the body is a string.", - "It is error to set .duplex = 'full' when the body is a Uint8Array.", - "It is error to set .duplex = 'full' when the body is a Blob.", - "It is error to set .duplex = 'full' when the body is a ReadableStream." - ], - "request-consume-empty.any.html": [ - "Consume empty FormData request body as text" - ], - "request-consume-empty.any.worker.html": [ - "Consume empty FormData request body as text" - ], - "request-consume.any.html": true, - "request-consume.any.worker.html": true, - "request-disturbed.any.html": [ - "Input request used for creating new request became disturbed even if body is not used" - ], - "request-disturbed.any.worker.html": [ - "Input request used for creating new request became disturbed even if body is not used" - ], - "request-error.any.html": [ - "RequestInit's window is not null", - "Input URL has credentials", - "RequestInit's mode is navigate", - "RequestInit's referrer is invalid", - "RequestInit's mode is no-cors and method is not simple", - "RequestInit's cache mode is only-if-cached and mode is not same-origin", - "Request with cache mode: only-if-cached and fetch mode cors", - "Request with cache mode: only-if-cached and fetch mode no-cors", - "Bad referrerPolicy init parameter value", - "Bad mode init parameter value", - "Bad credentials init parameter value", - "Bad cache init parameter value" - ], - "request-error.any.worker.html": [ - "RequestInit's window is not null", - "Input URL has credentials", - "RequestInit's mode is navigate", - "RequestInit's referrer is invalid", - "RequestInit's mode is no-cors and method is not simple", - "RequestInit's cache mode is only-if-cached and mode is not same-origin", - "Request with cache mode: only-if-cached and fetch mode cors", - "Request with cache mode: only-if-cached and fetch mode no-cors", - "Bad referrerPolicy init parameter value", - "Bad mode init parameter value", - "Bad credentials init parameter value", - "Bad cache init parameter value" - ], - "request-headers.any.html": [ - "Adding invalid request header \"Accept-Charset: KO\"", - "Adding invalid request header \"accept-charset: KO\"", - "Adding invalid request header \"ACCEPT-ENCODING: KO\"", - "Adding invalid request header \"Accept-Encoding: KO\"", - "Adding invalid request header \"Access-Control-Request-Headers: KO\"", - "Adding invalid request header \"Access-Control-Request-Method: KO\"", - "Adding invalid request header \"Connection: KO\"", - "Adding invalid request header \"Content-Length: KO\"", - "Adding invalid request header \"Cookie: KO\"", - "Adding invalid request header \"Cookie2: KO\"", - "Adding invalid request header \"Date: KO\"", - "Adding invalid request header \"DNT: KO\"", - "Adding invalid request header \"Expect: KO\"", - "Adding invalid request header \"Host: KO\"", - "Adding invalid request header \"Keep-Alive: KO\"", - "Adding invalid request header \"Origin: KO\"", - "Adding invalid request header \"Referer: KO\"", - "Adding invalid request header \"Set-Cookie: KO\"", - "Adding invalid request header \"TE: KO\"", - "Adding invalid request header \"Trailer: KO\"", - "Adding invalid request header \"Transfer-Encoding: KO\"", - "Adding invalid request header \"Upgrade: KO\"", - "Adding invalid request header \"Via: KO\"", - "Adding invalid request header \"Proxy-: KO\"", - "Adding invalid request header \"proxy-a: KO\"", - "Adding invalid request header \"Sec-: KO\"", - "Adding invalid request header \"sec-b: KO\"", - "Adding invalid no-cors request header \"Content-Type: KO\"", - "Adding invalid no-cors request header \"Potato: KO\"", - "Adding invalid no-cors request header \"proxy: KO\"", - "Adding invalid no-cors request header \"proxya: KO\"", - "Adding invalid no-cors request header \"sec: KO\"", - "Adding invalid no-cors request header \"secb: KO\"", - "Check that request constructor is filtering headers provided as init parameter", - "Check that no-cors request constructor is filtering headers provided as init parameter", - "Check that no-cors request constructor is filtering headers provided as part of request parameter" - ], - "request-headers.any.worker.html": [ - "Adding invalid request header \"Accept-Charset: KO\"", - "Adding invalid request header \"accept-charset: KO\"", - "Adding invalid request header \"ACCEPT-ENCODING: KO\"", - "Adding invalid request header \"Accept-Encoding: KO\"", - "Adding invalid request header \"Access-Control-Request-Headers: KO\"", - "Adding invalid request header \"Access-Control-Request-Method: KO\"", - "Adding invalid request header \"Connection: KO\"", - "Adding invalid request header \"Content-Length: KO\"", - "Adding invalid request header \"Cookie: KO\"", - "Adding invalid request header \"Cookie2: KO\"", - "Adding invalid request header \"Date: KO\"", - "Adding invalid request header \"DNT: KO\"", - "Adding invalid request header \"Expect: KO\"", - "Adding invalid request header \"Host: KO\"", - "Adding invalid request header \"Keep-Alive: KO\"", - "Adding invalid request header \"Origin: KO\"", - "Adding invalid request header \"Referer: KO\"", - "Adding invalid request header \"Set-Cookie: KO\"", - "Adding invalid request header \"TE: KO\"", - "Adding invalid request header \"Trailer: KO\"", - "Adding invalid request header \"Transfer-Encoding: KO\"", - "Adding invalid request header \"Upgrade: KO\"", - "Adding invalid request header \"Via: KO\"", - "Adding invalid request header \"Proxy-: KO\"", - "Adding invalid request header \"proxy-a: KO\"", - "Adding invalid request header \"Sec-: KO\"", - "Adding invalid request header \"sec-b: KO\"", - "Adding invalid no-cors request header \"Content-Type: KO\"", - "Adding invalid no-cors request header \"Potato: KO\"", - "Adding invalid no-cors request header \"proxy: KO\"", - "Adding invalid no-cors request header \"proxya: KO\"", - "Adding invalid no-cors request header \"sec: KO\"", - "Adding invalid no-cors request header \"secb: KO\"", - "Check that request constructor is filtering headers provided as init parameter", - "Check that no-cors request constructor is filtering headers provided as init parameter", - "Check that no-cors request constructor is filtering headers provided as part of request parameter" - ], - "request-init-contenttype.any.html": true, - "request-init-contenttype.any.worker.html": true, - "request-structure.any.html": [ - "Check destination attribute", - "Check referrer attribute", - "Check referrerPolicy attribute", - "Check mode attribute", - "Check credentials attribute", - "Check cache attribute", - "Check integrity attribute", - "Check isReloadNavigation attribute", - "Check isHistoryNavigation attribute", - "Check duplex attribute" - ], - "request-structure.any.worker.html": [ - "Check destination attribute", - "Check referrer attribute", - "Check referrerPolicy attribute", - "Check mode attribute", - "Check credentials attribute", - "Check cache attribute", - "Check integrity attribute", - "Check isReloadNavigation attribute", - "Check isHistoryNavigation attribute", - "Check duplex attribute" - ], - "forbidden-method.any.html": true, - "forbidden-method.any.worker.html": true - }, - "headers": { - "header-values-normalize.any.html": [ - "XMLHttpRequest with value %00", - "XMLHttpRequest with value %01", - "XMLHttpRequest with value %02", - "XMLHttpRequest with value %03", - "XMLHttpRequest with value %04", - "XMLHttpRequest with value %05", - "XMLHttpRequest with value %06", - "XMLHttpRequest with value %07", - "XMLHttpRequest with value %08", - "XMLHttpRequest with value %09", - "XMLHttpRequest with value %0A", - "XMLHttpRequest with value %0D", - "XMLHttpRequest with value %0E", - "XMLHttpRequest with value %0F", - "XMLHttpRequest with value %10", - "XMLHttpRequest with value %11", - "XMLHttpRequest with value %12", - "XMLHttpRequest with value %13", - "XMLHttpRequest with value %14", - "XMLHttpRequest with value %15", - "XMLHttpRequest with value %16", - "XMLHttpRequest with value %17", - "XMLHttpRequest with value %18", - "XMLHttpRequest with value %19", - "XMLHttpRequest with value %1A", - "XMLHttpRequest with value %1B", - "XMLHttpRequest with value %1C", - "XMLHttpRequest with value %1D", - "XMLHttpRequest with value %1E", - "XMLHttpRequest with value %1F", - "XMLHttpRequest with value %20", - "fetch() with value %01", - "fetch() with value %02", - "fetch() with value %03", - "fetch() with value %04", - "fetch() with value %05", - "fetch() with value %06", - "fetch() with value %07", - "fetch() with value %08", - "fetch() with value %0E", - "fetch() with value %0F", - "fetch() with value %10", - "fetch() with value %11", - "fetch() with value %12", - "fetch() with value %13", - "fetch() with value %14", - "fetch() with value %15", - "fetch() with value %16", - "fetch() with value %17", - "fetch() with value %18", - "fetch() with value %19", - "fetch() with value %1A", - "fetch() with value %1B", - "fetch() with value %1C", - "fetch() with value %1D", - "fetch() with value %1E", - "fetch() with value %1F" - ], - "header-values-normalize.any.worker.html": [ - "fetch() with value %01", - "fetch() with value %02", - "fetch() with value %03", - "fetch() with value %04", + ], + "IdnaTestV2.window.html": [ + "ToASCII(\"a‌b\") C1", + "ToASCII(\"A‌B\") C1", + "ToASCII(\"A‌b\") C1", + "ToASCII(\"xn--ab-j1t\") C1", + "ToASCII(\"a‍b\") C2", + "ToASCII(\"A‍B\") C2", + "ToASCII(\"A‍b\") C2", + "ToASCII(\"xn--ab-m1t\") C2", + "ToASCII(\"1.aß‌‍b‌‍cßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.ASS‌‍B‌‍CSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.ASS‌‍B‌‍CSSSSSSSSDΣΣSSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSŜSSZ\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.Ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.Ass‌‍b‌‍cssssssssdσσssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssŝssz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.Aß‌‍b‌‍cßßßßdςσßßßßßßßßeßßßßßßßßßßxßßßßßßßßßßyßßßßßßßß̂ßz\") C1; C2; A4_2 (ignored)", + "ToASCII(\"1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc\") C1; C2; A4_2 (ignored)", + "ToASCII(\"‌x‍n‌-‍-bß\") C1; C2", + "ToASCII(\"‌X‍N‌-‍-BSS\") C1; C2", + "ToASCII(\"‌x‍n‌-‍-bss\") C1; C2", + "ToASCII(\"‌X‍n‌-‍-Bss\") C1; C2", + "ToASCII(\"xn--xn--bss-7z6ccid\") C1; C2", + "ToASCII(\"‌X‍n‌-‍-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。‍2‍7\") 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" + ], + "url-constructor.any.html?exclude=(file|javascript|mailto)": [ + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: <..//path> against ", + "Parsing: against ", + "Parsing: <> against ", + "Parsing: against " + ], + "url-constructor.any.html?include=file": [ + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: <\\/localhost//pig> against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against " + ], + "url-constructor.any.html?include=javascript": true, + "url-constructor.any.html?include=mailto": true, + "url-constructor.any.worker.html?exclude=(file|javascript|mailto)": [ + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: <..//path> against ", + "Parsing: against ", + "Parsing: <> against ", + "Parsing: against " + ], + "url-constructor.any.worker.html?include=file": [ + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: <\\/localhost//pig> against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against ", + "Parsing: against " + ], + "url-constructor.any.worker.html?include=javascript": true, + "url-constructor.any.worker.html?include=mailto": true, + "url-setters-a-area.window.html?exclude=(file|javascript|mailto)": [ + ": Setting .protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.", + ": Setting .protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.", + ": Setting .protocol = 'b'", + ": Setting .protocol = 'b'", + ": Setting .protocol = 'B' Upper-case ASCII is lower-cased", + ": Setting .protocol = 'B' Upper-case ASCII is lower-cased", + ": Setting .protocol = 'é' Non-ASCII is rejected", + ": Setting .protocol = 'é' Non-ASCII is rejected", + ": Setting .protocol = '0b' No leading digit", + ": Setting .protocol = '0b' No leading digit", + ": Setting .protocol = '+b' No leading punctuation", + ": Setting .protocol = '+b' No leading punctuation", + ": Setting .protocol = 'bC0+-.'", + ": Setting .protocol = 'bC0+-.'", + ": Setting .protocol = 'b,c' Only some punctuation is acceptable", + ": Setting .protocol = 'b,c' Only some punctuation is acceptable", + ": Setting .protocol = 'bé' Non-ASCII is rejected", + ": Setting .protocol = 'bé' Non-ASCII is rejected", + ": Setting .protocol = 'file' Can’t switch from URL containing username/password/port to file", + ": Setting .protocol = 'file' Can’t switch from URL containing username/password/port to file", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'b' Can’t switch from special scheme to non-special", + ": Setting .protocol = 'b' Can’t switch from special scheme to non-special", + ": Setting .protocol = 's'", + ": Setting .protocol = 's'", + ": Setting .protocol = 'test'", + ": Setting .protocol = 'test'", + ": Setting .protocol = 'http' Can’t switch from non-special scheme to special", + ": Setting .protocol = 'http' Can’t switch from non-special scheme to special", + ": Setting .protocol = 'https'", + ": Setting .protocol = 'https'", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'file'", + ": Setting .protocol = 'https'", + ": Setting .protocol = 'https'", + ": Setting .protocol = 'https:foo : bar' Stuff after the first ':' is ignored", + ": Setting .protocol = 'https:foo : bar' Stuff after the first ':' is ignored", + ": Setting Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored", + ": Setting Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored", + ": Setting .protocol = 'https' Port is set to null if it is the default for new scheme.", + ": Setting .protocol = 'https' Port is set to null if it is the default for new scheme.", + ": Setting .protocol = 'h\r\ntt\tps' Tab and newline are stripped", + ": Setting .protocol = 'h\r\ntt\tps' Tab and newline are stripped", + ": Setting .protocol = 'https\r'", + ": Setting .protocol = 'https\r'", + ": Setting .protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op", + ": Setting .protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op", + ": Setting .protocol = 'https\f'", + ": Setting .protocol = 'https\f'", + ": Setting .protocol = 'https\u000e'", + ": Setting .protocol = 'https\u000e'", + ": Setting .protocol = 'https '", + ": Setting .protocol = 'https '", + ": Setting .username = 'me' No host means no username", + ": Setting .username = 'me' No host means no username", + ": Setting .username = 'me'", + ": Setting .username = 'me'", + ": Setting .username = 'me'", + ": Setting .username = 'me'", + ": Setting .username = ''", + ": Setting .username = ''", + ": Setting .username = ''", + ": Setting .username = ''", + ": Setting .username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.", + ": Setting .username = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.", + ": Setting .username = '%c3%89té' Bytes already percent-encoded are left as-is.", + ": Setting .username = '%c3%89té' Bytes already percent-encoded are left as-is.", + ": Setting .username = 'x'", + ": Setting .username = 'x'", + ": Setting .password = 'secret' No host means no password", + ": Setting .password = 'secret' No host means no password", + ": Setting .password = 'secret'", + ": Setting .password = 'secret'", + ": Setting .password = 'secret'", + ": Setting .password = 'secret'", + ": Setting .password = ''", + ": Setting .password = ''", + ": Setting .password = ''", + ": Setting .password = ''", + ": Setting .password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.", + ": Setting .password = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the userinfo encode set.", + ": Setting .password = '%c3%89té' Bytes already percent-encoded are left as-is.", + ": Setting .password = '%c3%89té' Bytes already percent-encoded are left as-is.", + ": Setting .password = 'x'", + ": Setting .password = 'x'", + ": Setting .host = '\u0000' Non-special scheme", + ": Setting .host = '\u0000' Non-special scheme", + ": Setting .host = '\t'", + ": Setting .host = '\t'", + ": Setting .host = '\n'", + ": Setting .host = '\n'", + ": Setting .host = '\r'", + ": Setting .host = '\r'", + ": Setting .host = ' '", + ": Setting .host = ' '", + ": Setting .host = '#'", + ": Setting .host = '#'", + ": Setting .host = '/'", + ": Setting .host = '/'", + ": Setting .host = '?'", + ": Setting .host = '?'", + ": Setting .host = '@'", + ": Setting .host = '@'", + ": Setting .host = 'ß'", + ": Setting .host = 'ß'", + ": Setting .host = 'ß' IDNA Nontransitional_Processing", + ": Setting .host = 'ß' IDNA Nontransitional_Processing", + ": Setting .host = 'example.net' Cannot-be-a-base means no host", + ": Setting .host = 'example.net' Cannot-be-a-base means no host", + ": Setting .host = 'example.com:8080'", + ": Setting .host = 'example.com:8080'", + ": Setting .host = 'example.com' Port number is unchanged if not specified in the new value", + ": Setting .host = 'example.com' Port number is unchanged if not specified in the new value", + ": Setting .host = 'example.com:' Port number is unchanged if not specified", + ": Setting .host = 'example.com:' Port number is unchanged if not specified", + ": Setting .host = '' The empty host is not valid for special schemes", + ": Setting .host = '' The empty host is not valid for special schemes", + ": Setting .host = '' The empty host is OK for non-special schemes", + ": Setting .host = '' The empty host is OK for non-special schemes", + ": Setting .host = 'example.net' Path-only URLs can gain a host", + ": Setting .host = 'example.net' Path-only URLs can gain a host", + ": Setting .host = '0x7F000001:8080' IPv4 address syntax is normalized", + ": Setting .host = '0x7F000001:8080' IPv4 address syntax is normalized", + ": Setting .host = '[::0:01]:2' IPv6 address syntax is normalized", + ": Setting .host = '[::0:01]:2' IPv6 address syntax is normalized", + ": Setting .host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416", + ": Setting .host = '[2001:db8::2]:4002' IPv6 literal address with port, crbug.com/1012416", + ": Setting .host = 'example.com:80' Default port number is removed", + ": Setting .host = 'example.com:80' Default port number is removed", + ": Setting .host = 'example.com:443' Default port number is removed", + ": Setting .host = 'example.com:443' Default port number is removed", + ": Setting .host = 'example.com:80' Default port number is only removed for the relevant scheme", + ": Setting .host = 'example.com:80' Default port number is only removed for the relevant scheme", + ": Setting .host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port", + ": Setting .host = 'example.com:80' Port number is removed if new port is scheme default and existing URL has a non-default port", + ": Setting .host = 'example.com/stuff' Stuff after a / delimiter is ignored", + ": Setting .host = 'example.com/stuff' Stuff after a / delimiter is ignored", + ": Setting .host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored", + ": Setting .host = 'example.com:8080/stuff' Stuff after a / delimiter is ignored", + ": Setting .host = 'example.com?stuff' Stuff after a ? delimiter is ignored", + ": Setting .host = 'example.com?stuff' Stuff after a ? delimiter is ignored", + ": Setting .host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored", + ": Setting .host = 'example.com:8080?stuff' Stuff after a ? delimiter is ignored", + ": Setting .host = 'example.com#stuff' Stuff after a # delimiter is ignored", + ": Setting .host = 'example.com#stuff' Stuff after a # delimiter is ignored", + ": Setting .host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored", + ": Setting .host = 'example.com:8080#stuff' Stuff after a # delimiter is ignored", + ": Setting .host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .host = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .host = 'example.com:8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + ": Setting .host = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .host = 'example.com:8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .host = 'example.com:65535' Port numbers are 16 bit integers", + ": Setting .host = 'example.com:65535' Port numbers are 16 bit integers", + ": Setting .host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.", + ": Setting .host = 'example.com:65536' Port numbers are 16 bit integers, overflowing is an error. Hostname is still set, though.", + ": Setting .host = '[google.com]' Broken IPv6", + ": Setting .host = '[google.com]' Broken IPv6", + ": Setting .host = '[::1.2.3.4x]'", + ": Setting .host = '[::1.2.3.4x]'", + ": Setting .host = '[::1.2.3.]'", + ": Setting .host = '[::1.2.3.]'", + ": Setting .host = '[::1.2.]'", + ": Setting .host = '[::1.2.]'", + ": Setting .host = '[::1.]'", + ": Setting .host = '[::1.]'", + ": Setting .host = ''", + ": Setting .host = ''", + ": Setting .host = ''", + ": Setting .host = ''", + ": Setting .host = '///bad.com' Leading / is not stripped", + ": Setting .host = '///bad.com' Leading / is not stripped", + ": Setting .host = '///bad.com' Leading / is not stripped", + ": Setting .host = '///bad.com' Leading / is not stripped", + ": Setting .hostname = '\u0000' Non-special scheme", + ": Setting .hostname = '\u0000' Non-special scheme", + ": Setting .hostname = '\t'", + ": Setting .hostname = '\t'", + ": Setting .hostname = '\n'", + ": Setting .hostname = '\n'", + ": Setting .hostname = '\r'", + ": Setting .hostname = '\r'", + ": Setting .hostname = ' '", + ": Setting .hostname = ' '", + ": Setting .hostname = '#'", + ": Setting .hostname = '#'", + ": Setting .hostname = '/'", + ": Setting .hostname = '/'", + ": Setting .hostname = '?'", + ": Setting .hostname = '?'", + ": Setting .hostname = '@'", + ": Setting .hostname = '@'", + ": Setting .hostname = 'example.net' Cannot-be-a-base means no host", + ": Setting .hostname = 'example.net' Cannot-be-a-base means no host", + ": Setting .hostname = 'example.com'", + ": Setting .hostname = 'example.com'", + ": Setting .hostname = '' The empty host is not valid for special schemes", + ": Setting .hostname = '' The empty host is not valid for special schemes", + ": Setting .hostname = '' The empty host is OK for non-special schemes", + ": Setting .hostname = '' The empty host is OK for non-special schemes", + ": Setting .hostname = 'example.net' Path-only URLs can gain a host", + ": Setting .hostname = 'example.net' Path-only URLs can gain a host", + ": Setting .hostname = '0x7F000001' IPv4 address syntax is normalized", + ": Setting .hostname = '0x7F000001' IPv4 address syntax is normalized", + ": Setting .hostname = '[::0:01]' IPv6 address syntax is normalized", + ": Setting .hostname = '[::0:01]' IPv6 address syntax is normalized", + ": Setting .hostname = 'example.com:8080' : delimiter invalidates entire value", + ": Setting .hostname = 'example.com:8080' : delimiter invalidates entire value", + ": Setting .hostname = 'example.com:' : delimiter invalidates entire value", + ": Setting .hostname = 'example.com:' : delimiter invalidates entire value", + ": Setting .hostname = 'example.com/stuff' Stuff after a / delimiter is ignored", + ": Setting .hostname = 'example.com/stuff' Stuff after a / delimiter is ignored", + ": Setting .hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored", + ": Setting .hostname = 'example.com?stuff' Stuff after a ? delimiter is ignored", + ": Setting .hostname = 'example.com#stuff' Stuff after a # delimiter is ignored", + ": Setting .hostname = 'example.com#stuff' Stuff after a # delimiter is ignored", + ": Setting .hostname = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .hostname = 'example.com\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + ": Setting .hostname = 'example.com\\stuff' \\ is not a delimiter for non-special schemes, but still forbidden in hosts", + ": Setting .hostname = '[google.com]' Broken IPv6", + ": Setting .hostname = '[google.com]' Broken IPv6", + ": Setting .hostname = '[::1.2.3.4x]'", + ": Setting .hostname = '[::1.2.3.4x]'", + ": Setting .hostname = '[::1.2.3.]'", + ": Setting .hostname = '[::1.2.3.]'", + ": Setting .hostname = '[::1.2.]'", + ": Setting .hostname = '[::1.2.]'", + ": Setting .hostname = '[::1.]'", + ": Setting .hostname = '[::1.]'", + ": Setting .hostname = ''", + ": Setting .hostname = ''", + ": Setting .hostname = ''", + ": Setting .hostname = ''", + ": Setting .hostname = 'h' Drop /. from path", + ": Setting .hostname = 'h' Drop /. from path", + ": Setting .hostname = ''", + ": Setting .hostname = ''", + ": Setting .hostname = '///bad.com' Leading / is not stripped", + ": Setting .hostname = '///bad.com' Leading / is not stripped", + ": Setting .hostname = '///bad.com' Leading / is not stripped", + ": Setting .hostname = '///bad.com' Leading / is not stripped", + ": Setting .port = '8080'", + ": Setting .port = '8080'", + ": Setting .port = '' Port number is removed if empty is the new value", + ": Setting .port = '' Port number is removed if empty is the new value", + ": Setting .port = '80' Default port number is removed", + ": Setting .port = '80' Default port number is removed", + ": Setting .port = '443' Default port number is removed", + ": Setting .port = '443' Default port number is removed", + ": Setting .port = '80' Default port number is only removed for the relevant scheme", + ": Setting .port = '80' Default port number is only removed for the relevant scheme", + ": Setting .port = '8080/stuff' Stuff after a / delimiter is ignored", + ": Setting .port = '8080/stuff' Stuff after a / delimiter is ignored", + ": Setting .port = '8080?stuff' Stuff after a ? delimiter is ignored", + ": Setting .port = '8080?stuff' Stuff after a ? delimiter is ignored", + ": Setting .port = '8080#stuff' Stuff after a # delimiter is ignored", + ": Setting .port = '8080#stuff' Stuff after a # delimiter is ignored", + ": Setting .port = '8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .port = '8080\\stuff' Stuff after a \\ delimiter is ignored for special schemes", + ": Setting .port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .port = '8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .port = '8080+2' Anything other than ASCII digit stops the port parser in a setter but is not an error", + ": Setting .port = '65535' Port numbers are 16 bit integers", + ": Setting .port = '65535' Port numbers are 16 bit integers", + ": Setting .port = '65536' Port numbers are 16 bit integers, overflowing is an error", + ": Setting .port = '65536' Port numbers are 16 bit integers, overflowing is an error", + ": Setting .port = 'randomstring' Setting port to a string that doesn't parse as a number", + ": Setting .port = 'randomstring' Setting port to a string that doesn't parse as a number", + ": Setting .port = '65536' Port numbers are 16 bit integers, overflowing is an error", + ": Setting .port = '65536' Port numbers are 16 bit integers, overflowing is an error", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .pathname = 'new value'", + ": Setting .pathname = 'new value'", + ": Setting .pathname = 'new value'", + ": Setting .pathname = 'new value'", + ": Setting .pathname = '' Non-special URLs can have their paths erased", + ": Setting .pathname = '' Non-special URLs can have their paths erased", + ": Setting .pathname = '' Non-special URLs with an empty host can have their paths erased", + ": Setting .pathname = '' Non-special URLs with an empty host can have their paths erased", + ": Setting .pathname = '' Path-only URLs cannot have their paths erased", + ": Setting .pathname = '' Path-only URLs cannot have their paths erased", + ": Setting .pathname = 'test' Path-only URLs always have an initial slash", + ": Setting .pathname = 'test' Path-only URLs always have an initial slash", + ": Setting .pathname = '/var/log/../run/bar.socket'", + ": Setting .pathname = '/var/log/../run/bar.socket'", + ": Setting .pathname = 'home'", + ": Setting .pathname = 'home'", + ": Setting .pathname = '../home'", + ": Setting .pathname = '../home'", + ": Setting .pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs", + ": Setting .pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is a segment delimiter for 'special' URLs", + ": Setting .pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs", + ": Setting .pathname = '\\a\\%2E\\b\\%2e.\\c' \\ is *not* a segment delimiter for non-'special' URLs", + ": Setting .pathname = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.", + ": Setting .pathname = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the default encode set. Tabs and newlines are removed.", + ": Setting .pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.", + ": Setting .pathname = '%2e%2E%c3%89té' Bytes already percent-encoded are left as-is, including %2E outside dotted segments.", + ": Setting .pathname = '?' ? needs to be encoded", + ": Setting .pathname = '?' ? needs to be encoded", + ": Setting .pathname = '#' # needs to be encoded", + ": Setting .pathname = '#' # needs to be encoded", + ": Setting .pathname = '?' ? needs to be encoded, non-special scheme", + ": Setting .pathname = '?' ? needs to be encoded, non-special scheme", + ": Setting .pathname = '#' # needs to be encoded, non-special scheme", + ": Setting .pathname = '#' # needs to be encoded, non-special scheme", + ": Setting .pathname = '/?é' ? doesn't mess up encoding", + ": Setting .pathname = '/?é' ? doesn't mess up encoding", + ": Setting .pathname = '/#é' # doesn't mess up encoding", + ": Setting .pathname = '/#é' # doesn't mess up encoding", + ": Setting .pathname = '/.//p' Serialize /. in path", + ": Setting .pathname = '/.//p' Serialize /. in path", + ": Setting .pathname = '/..//p'", + ": Setting .pathname = '/..//p'", + ": Setting .pathname = '//p'", + ": Setting .pathname = '//p'", + ": Setting .pathname = 'p' Drop /. from path", + ": Setting .pathname = 'p' Drop /. from path", + ": Setting .pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020", + ": Setting .pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020", + ": Setting .pathname = 'space '", + ": Setting .pathname = 'space '", + ": Setting .search = 'lang=fr'", + ": Setting .search = 'lang=fr'", + ": Setting .search = 'lang=fr'", + ": Setting .search = 'lang=fr'", + ": Setting .search = '?lang=fr'", + ": Setting .search = '?lang=fr'", + ": Setting .search = '??lang=fr'", + ": Setting .search = '??lang=fr'", + ": Setting .search = '?'", + ": Setting .search = '?'", + ": Setting .search = ''", + ": Setting .search = ''", + ": Setting .search = ''", + ": Setting .search = ''", + ": Setting .search = ''", + ": Setting .search = ''", + ": Setting .search = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.", + ": Setting .search = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' UTF-8 percent encoding with the query encode set. Tabs and newlines are removed.", + ": Setting .search = '%c3%89té' Bytes already percent-encoded are left as-is", + ": Setting .search = '%c3%89té' Bytes already percent-encoded are left as-is", + ": Setting .search = '' Drop trailing spaces from trailing opaque paths", + ": Setting .search = '' Drop trailing spaces from trailing opaque paths", + ": Setting .search = ''", + ": Setting .search = ''", + ": Setting .search = '' Do not drop trailing spaces from non-trailing opaque paths", + ": Setting .search = '' Do not drop trailing spaces from non-trailing opaque paths", + ": Setting .search = ''", + ": Setting .search = ''", + ": Setting .hash = 'main'", + ": Setting .hash = 'main'", + ": Setting .hash = 'main'", + ": Setting .hash = 'main'", + ": Setting .hash = '##nav'", + ": Setting .hash = '##nav'", + ": Setting .hash = '#main'", + ": Setting .hash = '#main'", + ": Setting .hash = '#'", + ": Setting .hash = '#'", + ": Setting .hash = ''", + ": Setting .hash = ''", + ": Setting .hash = '#foo bar'", + ": Setting .hash = '#foo bar'", + ": Setting .hash = '#foo\"bar'", + ": Setting .hash = '#foo\"bar'", + ": Setting .hash = '#foo: Setting .hash = '#foo: Setting .hash = '#foo>bar'", + ": Setting .hash = '#foo>bar'", + ": Setting .hash = '#foo`bar'", + ": Setting .hash = '#foo`bar'", + ": Setting .hash = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' Simple percent-encoding; tabs and newlines are removed", + ": Setting .hash = '\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~€Éé' Simple percent-encoding; tabs and newlines are removed", + ": Setting .hash = 'a\u0000b' Percent-encode NULLs in fragment", + ": Setting .hash = 'a\u0000b' Percent-encode NULLs in fragment", + ": Setting .hash = 'a\u0000b' Percent-encode NULLs in fragment", + ": Setting .hash = 'a\u0000b' Percent-encode NULLs in fragment", + ": Setting .hash = '%c3%89té' Bytes already percent-encoded are left as-is", + ": Setting .hash = '%c3%89té' Bytes already percent-encoded are left as-is", + ": Setting .hash = '' Drop trailing spaces from trailing opaque paths", + ": Setting .hash = '' Drop trailing spaces from trailing opaque paths", + ": Setting .hash = ''", + ": Setting .hash = ''", + ": Setting .hash = '' Do not drop trailing spaces from non-trailing opaque paths", + ": Setting .hash = '' Do not drop trailing spaces from non-trailing opaque paths", + ": Setting .hash = ''", + ": Setting .hash = ''" + ], + "url-setters-a-area.window.html?include=file": [ + ": Setting .protocol = 'http' Can’t switch from file URL with no host", + ": Setting .protocol = 'http' Can’t switch from file URL with no host", + ": Setting .protocol = 'https'", + ": Setting .protocol = 'https'", + ": Setting .protocol = 'wss'", + ": Setting .protocol = 'wss'", + ": Setting .protocol = 's'", + ": Setting .protocol = 's'", + ": Setting .username = 'me' No host means no username", + ": Setting .username = 'me' No host means no username", + ": Setting .username = 'test'", + ": Setting .username = 'test'", + ": Setting .password = 'secret' No host means no password", + ": Setting .password = 'secret' No host means no password", + ": Setting .password = 'test'", + ": Setting .password = 'test'", + ": Setting .host = 'x:123'", + ": Setting .host = 'x:123'", + ": Setting .host = 'loc%41lhost'", + ": Setting .host = 'loc%41lhost'", + ": Setting .host = ''", + ": Setting .host = ''", + ": Setting .hostname = 'x:123'", + ": Setting .hostname = 'x:123'", + ": Setting .hostname = 'loc%41lhost'", + ": Setting .hostname = 'loc%41lhost'", + ": Setting .hostname = ''", + ": Setting .hostname = ''", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .pathname = '' Special URLs cannot have their paths erased", + ": Setting .pathname = '' Special URLs cannot have their paths erased", + ": Setting .pathname = '\\\\' File URLs and (back)slashes", + ": Setting .pathname = '\\\\' File URLs and (back)slashes", + ": Setting .pathname = '//\\/' File URLs and (back)slashes", + ": Setting .pathname = '//\\/' File URLs and (back)slashes", + ": Setting .pathname = '//monkey/..//' File URLs and (back)slashes", + ": Setting .pathname = '//monkey/..//' File URLs and (back)slashes" + ], + "url-setters-a-area.window.html?include=javascript": [ + ": Setting .protocol = 'defuse'", + ": Setting .protocol = 'defuse'", + ": Setting .username = 'wario'", + ": Setting .username = 'wario'", + ": Setting .username = 'wario'", + ": Setting .username = 'wario'", + ": Setting .password = 'bowser'", + ": Setting .password = 'bowser'", + ": Setting .port = '12'", + ": Setting .port = '12'", + ": Setting .hash = 'castle'", + ": Setting .hash = 'castle'" + ], + "url-setters-a-area.window.html?include=mailto": [ + ": Setting .protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.", + ": Setting .protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.", + ": Setting .username = 'me' Cannot-be-a-base means no username", + ": Setting .username = 'me' Cannot-be-a-base means no username", + ": Setting .password = 'secret' Cannot-be-a-base means no password", + ": Setting .password = 'secret' Cannot-be-a-base means no password", + ": Setting .host = 'example.com' Cannot-be-a-base means no host", + ": Setting .host = 'example.com' Cannot-be-a-base means no host", + ": Setting .hostname = 'example.com' Cannot-be-a-base means no host", + ": Setting .hostname = 'example.com' Cannot-be-a-base means no host", + ": Setting .pathname = '/foo' Opaque paths cannot be set", + ": Setting .pathname = '/foo' Opaque paths cannot be set" + ], + "url-setters.any.html?exclude=(file|javascript|mailto)": [ + "URL: Setting .protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op", + "URL: Setting .protocol = 'https\f'", + "URL: Setting .protocol = 'https\u000e'", + "URL: Setting .protocol = 'https '", + "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 .pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020", + "URL: Setting .pathname = 'space '", + "URL: Setting .search = '' Drop trailing spaces from trailing opaque paths", + "URL: Setting .search = ''", + "URL: Setting .hash = '' Drop trailing spaces from trailing opaque paths", + "URL: Setting .hash = ''" + ], + "url-setters.any.html?include=file": [ + "URL: Setting .pathname = '\\\\' File URLs and (back)slashes", + "URL: Setting .pathname = '//\\/' File URLs and (back)slashes", + "URL: Setting .pathname = '//monkey/..//' File URLs and (back)slashes" + ], + "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 .protocol = 'https\u0000' Non-tab/newline C0 controls result in no-op", + "URL: Setting .protocol = 'https\f'", + "URL: Setting .protocol = 'https\u000e'", + "URL: Setting .protocol = 'https '", + "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 .pathname = 'space ' Non-special URLs with non-opaque paths percent-encode U+0020", + "URL: Setting .pathname = 'space '", + "URL: Setting .search = '' Drop trailing spaces from trailing opaque paths", + "URL: Setting .search = ''", + "URL: Setting .hash = '' Drop trailing spaces from trailing opaque paths", + "URL: Setting .hash = ''" + ], + "url-setters.any.worker.html?include=file": [ + "URL: Setting .pathname = '\\\\' File URLs and (back)slashes", + "URL: Setting .pathname = '//\\/' File URLs and (back)slashes", + "URL: Setting .pathname = '//monkey/..//' File URLs and (back)slashes" + ], + "url-setters.any.worker.html?include=javascript": true, + "url-setters.any.worker.html?include=mailto": true + }, + "fetch": { + "api": { + "request": { + "request-bad-port.any.html": { + "ignore": true + }, + "request-init-002.any.html": true, + "request-init-002.any.worker.html": true, + "request-init-stream.any.html": [ + "It is error to omit .duplex when the body is a ReadableStream.", + "It is error to set .duplex = 'full' when the body is null.", + "It is error to set .duplex = 'full' when the body is a string.", + "It is error to set .duplex = 'full' when the body is a Uint8Array.", + "It is error to set .duplex = 'full' when the body is a Blob.", + "It is error to set .duplex = 'full' when the body is a ReadableStream." + ], + "request-init-stream.any.worker.html": [ + "It is error to omit .duplex when the body is a ReadableStream.", + "It is error to set .duplex = 'full' when the body is null.", + "It is error to set .duplex = 'full' when the body is a string.", + "It is error to set .duplex = 'full' when the body is a Uint8Array.", + "It is error to set .duplex = 'full' when the body is a Blob.", + "It is error to set .duplex = 'full' when the body is a ReadableStream." + ], + "request-consume-empty.any.html": [ + "Consume empty FormData request body as text" + ], + "request-consume-empty.any.worker.html": [ + "Consume empty FormData request body as text" + ], + "request-consume.any.html": true, + "request-consume.any.worker.html": true, + "request-disturbed.any.html": [ + "Input request used for creating new request became disturbed even if body is not used" + ], + "request-disturbed.any.worker.html": [ + "Input request used for creating new request became disturbed even if body is not used" + ], + "request-error.any.html": [ + "RequestInit's window is not null", + "Input URL has credentials", + "RequestInit's mode is navigate", + "RequestInit's referrer is invalid", + "RequestInit's mode is no-cors and method is not simple", + "RequestInit's cache mode is only-if-cached and mode is not same-origin", + "Request with cache mode: only-if-cached and fetch mode cors", + "Request with cache mode: only-if-cached and fetch mode no-cors", + "Bad referrerPolicy init parameter value", + "Bad mode init parameter value", + "Bad credentials init parameter value", + "Bad cache init parameter value" + ], + "request-error.any.worker.html": [ + "RequestInit's window is not null", + "Input URL has credentials", + "RequestInit's mode is navigate", + "RequestInit's referrer is invalid", + "RequestInit's mode is no-cors and method is not simple", + "RequestInit's cache mode is only-if-cached and mode is not same-origin", + "Request with cache mode: only-if-cached and fetch mode cors", + "Request with cache mode: only-if-cached and fetch mode no-cors", + "Bad referrerPolicy init parameter value", + "Bad mode init parameter value", + "Bad credentials init parameter value", + "Bad cache init parameter value" + ], + "request-headers.any.html": [ + "Adding invalid request header \"Accept-Charset: KO\"", + "Adding invalid request header \"accept-charset: KO\"", + "Adding invalid request header \"ACCEPT-ENCODING: KO\"", + "Adding invalid request header \"Accept-Encoding: KO\"", + "Adding invalid request header \"Access-Control-Request-Headers: KO\"", + "Adding invalid request header \"Access-Control-Request-Method: KO\"", + "Adding invalid request header \"Access-Control-Request-Private-Network: KO\"", + "Adding invalid request header \"Connection: KO\"", + "Adding invalid request header \"Content-Length: KO\"", + "Adding invalid request header \"Cookie: KO\"", + "Adding invalid request header \"Cookie2: KO\"", + "Adding invalid request header \"Date: KO\"", + "Adding invalid request header \"DNT: KO\"", + "Adding invalid request header \"Expect: KO\"", + "Adding invalid request header \"Host: KO\"", + "Adding invalid request header \"Keep-Alive: KO\"", + "Adding invalid request header \"Origin: KO\"", + "Adding invalid request header \"Referer: KO\"", + "Adding invalid request header \"Set-Cookie: KO\"", + "Adding invalid request header \"TE: KO\"", + "Adding invalid request header \"Trailer: KO\"", + "Adding invalid request header \"Transfer-Encoding: KO\"", + "Adding invalid request header \"Upgrade: KO\"", + "Adding invalid request header \"Via: KO\"", + "Adding invalid request header \"Proxy-: KO\"", + "Adding invalid request header \"proxy-a: KO\"", + "Adding invalid request header \"Sec-: KO\"", + "Adding invalid request header \"sec-b: KO\"", + "Adding invalid no-cors request header \"Content-Type: KO\"", + "Adding invalid no-cors request header \"Potato: KO\"", + "Adding invalid no-cors request header \"proxy: KO\"", + "Adding invalid no-cors request header \"proxya: KO\"", + "Adding invalid no-cors request header \"sec: KO\"", + "Adding invalid no-cors request header \"secb: KO\"", + "Adding invalid no-cors request header \"Empty-Value: \"", + "Check that request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as part of request parameter" + ], + "request-headers.any.worker.html": [ + "Adding invalid request header \"Accept-Charset: KO\"", + "Adding invalid request header \"accept-charset: KO\"", + "Adding invalid request header \"ACCEPT-ENCODING: KO\"", + "Adding invalid request header \"Accept-Encoding: KO\"", + "Adding invalid request header \"Access-Control-Request-Headers: KO\"", + "Adding invalid request header \"Access-Control-Request-Method: KO\"", + "Adding invalid request header \"Access-Control-Request-Private-Network: KO\"", + "Adding invalid request header \"Connection: KO\"", + "Adding invalid request header \"Content-Length: KO\"", + "Adding invalid request header \"Cookie: KO\"", + "Adding invalid request header \"Cookie2: KO\"", + "Adding invalid request header \"Date: KO\"", + "Adding invalid request header \"DNT: KO\"", + "Adding invalid request header \"Expect: KO\"", + "Adding invalid request header \"Host: KO\"", + "Adding invalid request header \"Keep-Alive: KO\"", + "Adding invalid request header \"Origin: KO\"", + "Adding invalid request header \"Referer: KO\"", + "Adding invalid request header \"Set-Cookie: KO\"", + "Adding invalid request header \"TE: KO\"", + "Adding invalid request header \"Trailer: KO\"", + "Adding invalid request header \"Transfer-Encoding: KO\"", + "Adding invalid request header \"Upgrade: KO\"", + "Adding invalid request header \"Via: KO\"", + "Adding invalid request header \"Proxy-: KO\"", + "Adding invalid request header \"proxy-a: KO\"", + "Adding invalid request header \"Sec-: KO\"", + "Adding invalid request header \"sec-b: KO\"", + "Adding invalid no-cors request header \"Content-Type: KO\"", + "Adding invalid no-cors request header \"Potato: KO\"", + "Adding invalid no-cors request header \"proxy: KO\"", + "Adding invalid no-cors request header \"proxya: KO\"", + "Adding invalid no-cors request header \"sec: KO\"", + "Adding invalid no-cors request header \"secb: KO\"", + "Adding invalid no-cors request header \"Empty-Value: \"", + "Check that request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as init parameter", + "Check that no-cors request constructor is filtering headers provided as part of request parameter" + ], + "request-init-contenttype.any.html": true, + "request-init-contenttype.any.worker.html": true, + "request-structure.any.html": [ + "Check destination attribute", + "Check referrer attribute", + "Check referrerPolicy attribute", + "Check mode attribute", + "Check credentials attribute", + "Check cache attribute", + "Check integrity attribute", + "Check isReloadNavigation attribute", + "Check isHistoryNavigation attribute", + "Check duplex attribute" + ], + "request-structure.any.worker.html": [ + "Check destination attribute", + "Check referrer attribute", + "Check referrerPolicy attribute", + "Check mode attribute", + "Check credentials attribute", + "Check cache attribute", + "Check integrity attribute", + "Check isReloadNavigation attribute", + "Check isHistoryNavigation attribute", + "Check duplex attribute" + ], + "forbidden-method.any.html": true, + "forbidden-method.any.worker.html": true + }, + "headers": { + "header-values-normalize.any.html": [ + "XMLHttpRequest with value %00", + "XMLHttpRequest with value %01", + "XMLHttpRequest with value %02", + "XMLHttpRequest with value %03", + "XMLHttpRequest with value %04", + "XMLHttpRequest with value %05", + "XMLHttpRequest with value %06", + "XMLHttpRequest with value %07", + "XMLHttpRequest with value %08", + "XMLHttpRequest with value %09", + "XMLHttpRequest with value %0A", + "XMLHttpRequest with value %0D", + "XMLHttpRequest with value %0E", + "XMLHttpRequest with value %0F", + "XMLHttpRequest with value %10", + "XMLHttpRequest with value %11", + "XMLHttpRequest with value %12", + "XMLHttpRequest with value %13", + "XMLHttpRequest with value %14", + "XMLHttpRequest with value %15", + "XMLHttpRequest with value %16", + "XMLHttpRequest with value %17", + "XMLHttpRequest with value %18", + "XMLHttpRequest with value %19", + "XMLHttpRequest with value %1A", + "XMLHttpRequest with value %1B", + "XMLHttpRequest with value %1C", + "XMLHttpRequest with value %1D", + "XMLHttpRequest with value %1E", + "XMLHttpRequest with value %1F", + "XMLHttpRequest with value %20", + "fetch() with value %01", + "fetch() with value %02", + "fetch() with value %03", + "fetch() with value %04", + "fetch() with value %05", + "fetch() with value %06", + "fetch() with value %07", + "fetch() with value %08", + "fetch() with value %0E", + "fetch() with value %0F", + "fetch() with value %10", + "fetch() with value %11", + "fetch() with value %12", + "fetch() with value %13", + "fetch() with value %14", + "fetch() with value %15", + "fetch() with value %16", + "fetch() with value %17", + "fetch() with value %18", + "fetch() with value %19", + "fetch() with value %1A", + "fetch() with value %1B", + "fetch() with value %1C", + "fetch() with value %1D", + "fetch() with value %1E", + "fetch() with value %1F" + ], + "header-values-normalize.any.worker.html": [ + "fetch() with value %01", + "fetch() with value %02", + "fetch() with value %03", + "fetch() with value %04", "fetch() with value %05", "fetch() with value %06", "fetch() with value %07", @@ -2825,7 +4015,9 @@ "\"no-cors\" Headers object cannot have range/bytes 0- as header", "\"no-cors\" Headers object cannot have test/hi as header", "\"no-cors\" Headers object cannot have dpr/2 as header", - "\"no-cors\" Headers object cannot have downlink/1 as header", + "\"no-cors\" Headers object cannot have rtt/1.0 as header", + "\"no-cors\" Headers object cannot have downlink/-1.0 as header", + "\"no-cors\" Headers object cannot have ect/6g as header", "\"no-cors\" Headers object cannot have save-data/on as header", "\"no-cors\" Headers object cannot have viewport-width/100 as header", "\"no-cors\" Headers object cannot have width/100 as header", @@ -2851,7 +4043,9 @@ "\"no-cors\" Headers object cannot have range/bytes 0- as header", "\"no-cors\" Headers object cannot have test/hi as header", "\"no-cors\" Headers object cannot have dpr/2 as header", - "\"no-cors\" Headers object cannot have downlink/1 as header", + "\"no-cors\" Headers object cannot have rtt/1.0 as header", + "\"no-cors\" Headers object cannot have downlink/-1.0 as header", + "\"no-cors\" Headers object cannot have ect/6g as header", "\"no-cors\" Headers object cannot have save-data/on as header", "\"no-cors\" Headers object cannot have viewport-width/100 as header", "\"no-cors\" Headers object cannot have width/100 as header", @@ -2859,7 +4053,13 @@ ], "headers-normalize.any.worker.html": true, "headers-record.any.worker.html": true, - "headers-structure.any.worker.html": true + "headers-structure.any.worker.html": true, + "header-setcookie.any.html": [ + "Set-Cookie is a forbidden response header" + ], + "header-setcookie.any.worker.html": [ + "Set-Cookie is a forbidden response header" + ] }, "basic": { "request-head.any.html": true, @@ -3072,8 +4272,12 @@ "response-consume-empty.any.worker.html": [ "Consume empty FormData response body as text" ], - "response-consume-stream.any.html": true, - "response-consume-stream.any.worker.html": true, + "response-consume-stream.any.html": { + "ignore": true + }, + "response-consume-stream.any.worker.html": { + "ignore": true + }, "response-init-contenttype.any.html": true, "response-init-contenttype.any.worker.html": true, "response-static-json.any.html": true, @@ -3158,9 +4362,9 @@ "Request interface: attribute keepalive", "Request interface: attribute isReloadNavigation", "Request interface: attribute isHistoryNavigation", + "Request interface: attribute duplex", "Request interface: attribute body", "Request interface: attribute bodyUsed", - "Request interface: attribute duplex", "Request interface: new Request('about:blank') must inherit property \"destination\" with the proper type", "Request interface: new Request('about:blank') must inherit property \"referrer\" with the proper type", "Request interface: new Request('about:blank') must inherit property \"referrerPolicy\" with the proper type", @@ -3188,9 +4392,9 @@ "Request interface: attribute keepalive", "Request interface: attribute isReloadNavigation", "Request interface: attribute isHistoryNavigation", + "Request interface: attribute duplex", "Request interface: attribute body", "Request interface: attribute bodyUsed", - "Request interface: attribute duplex", "Request interface: new Request('about:blank') must inherit property \"destination\" with the proper type", "Request interface: new Request('about:blank') must inherit property \"referrer\" with the proper type", "Request interface: new Request('about:blank') must inherit property \"referrerPolicy\" with the proper type", @@ -3276,8 +4480,12 @@ "Blob-slice-overflow.any.worker.html": true, "Blob-slice.any.html": true, "Blob-slice.any.worker.html": true, - "Blob-stream.any.html": true, - "Blob-stream.any.worker.html": true, + "Blob-stream.any.html": { + "ignore": true + }, + "Blob-stream.any.worker.html": { + "ignore": true + }, "Blob-text.any.html": true, "Blob-text.any.worker.html": true, "Blob-in-worker.worker.html": true @@ -3495,7 +4703,18 @@ "Serializing a non-serializable platform object fails", "An object whose interface is deleted from the global must still deserialize", "A subclass instance will deserialize as its closest serializable superclass", - "A subclass instance will be received as its closest transferable superclass" + "Resizable ArrayBuffer", + "Growable SharedArrayBuffer", + "Length-tracking TypedArray", + "Length-tracking DataView", + "Serializing OOB TypedArray throws", + "Serializing OOB DataView throws", + "A subclass instance will be received as its closest transferable superclass", + "Resizable ArrayBuffer is transferable", + "Length-tracking TypedArray is transferable", + "Length-tracking DataView is transferable", + "Transferring OOB TypedArray throws", + "Transferring OOB DataView throws" ], "structured-clone.any.worker.html": [ "Blob basic", @@ -3521,7 +4740,18 @@ "Serializing a non-serializable platform object fails", "An object whose interface is deleted from the global must still deserialize", "A subclass instance will deserialize as its closest serializable superclass", - "A subclass instance will be received as its closest transferable superclass" + "Resizable ArrayBuffer", + "Growable SharedArrayBuffer", + "Length-tracking TypedArray", + "Length-tracking DataView", + "Serializing OOB TypedArray throws", + "Serializing OOB DataView throws", + "A subclass instance will be received as its closest transferable superclass", + "Resizable ArrayBuffer is transferable", + "Length-tracking TypedArray is transferable", + "Length-tracking DataView is transferable", + "Transferring OOB TypedArray throws", + "Transferring OOB DataView throws" ] } } @@ -4369,7 +5599,10 @@ "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", - "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]" + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]" ], "urlpattern.any.worker.html": [ "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]", @@ -4389,7 +5622,10 @@ "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", - "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]" + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]" ], "urlpattern.https.any.html": [ "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]", @@ -4409,7 +5645,10 @@ "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", - "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]" + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]" ], "urlpattern.https.any.worker.html": [ "Pattern: [{\"pathname\":\"/foo/:bar?\"}] Inputs: [{\"pathname\":\"/foo\"}]", @@ -4429,7 +5668,10 @@ "Pattern: [{\"pathname\":\"*{}**?\"}] Inputs: [{\"pathname\":\"foobar\"}]", "Pattern: [{\"pathname\":\"/foo/bar\"},{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO/BAR\"}]", "Pattern: [\"https://example.com:8080/foo?bar#baz\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", - "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]" + "Pattern: [\"/foo?bar#baz\",\"https://example.com:8080\",{\"ignoreCase\":true}] Inputs: [{\"pathname\":\"/FOO\",\"search\":\"BAR\",\"hash\":\"BAZ\",\"baseURL\":\"https://example.com:8080\"}]", + "Pattern: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}] Inputs: [{\"search\":\"foo\",\"baseURL\":\"https://example.com/a/+/b\"}]", + "Pattern: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}] Inputs: [{\"hash\":\"foo\",\"baseURL\":\"https://example.com/?q=*&v=?&hmm={}&umm=()\"}]", + "Pattern: [\"#foo\",\"https://example.com/?q=*&v=?&hmm={}&umm=()\"] Inputs: [\"https://example.com/?q=*&v=?&hmm={}&umm=()#foo\"]" ] }, "compression": { @@ -4704,15 +5946,15 @@ "Cache.put called with Request and Response from fetch()", "Cache.put with opaque-filtered HTTP 206 response", "Cache.put with HTTP 500 response", - "Cache.put with a VARY:* opaque response should not reject", - "caches from different buckets have different contents" + "Cache.put called multiple times with request URLs that differ only by a fragment", + "Cache.put with a VARY:* opaque response should not reject" ], "cache-put.https.any.worker.html": [ "Cache.put called with Request and Response from fetch()", "Cache.put with opaque-filtered HTTP 206 response", "Cache.put with HTTP 500 response", - "Cache.put with a VARY:* opaque response should not reject", - "caches from different buckets have different contents" + "Cache.put called multiple times with request URLs that differ only by a fragment", + "Cache.put with a VARY:* opaque response should not reject" ], "cache-storage-keys.https.any.html": false, "cache-storage-keys.https.any.worker.html": false, @@ -4728,7 +5970,9 @@ "CacheStorage.open with existing cache", "CacheStorage names are DOMStrings not USVStrings" ], - "common.https.window.html": true + "common.https.window.html": true, + "cache-storage-buckets.https.any.html": false, + "cache-storage-buckets.https.any.worker.html": false } }, "mimesniff": { From 26395c8a328331c113d4b282688ec6db28f82f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sun, 2 Jul 2023 01:51:41 +0200 Subject: [PATCH 2/3] revert unrelated changes --- tools/wpt.ts | 4 - tools/wpt/expectation.json | 165 ++----------------------------------- 2 files changed, 6 insertions(+), 163 deletions(-) diff --git a/tools/wpt.ts b/tools/wpt.ts index 4c4b7fb3e53550..29d3e3517e7536 100755 --- a/tools/wpt.ts +++ b/tools/wpt.ts @@ -776,10 +776,6 @@ function partitionTests(tests: TestToRun[]): TestToRun[][] { } // Paths looks like: /fetch/corb/img-html-correctly-labeled.sub-ref.html const key = test.path.split("/")[1]; - if (key === "WebCryptoAPI") { // run all WebCryptoAPI tests in parallel so they go faster - testsByKey[test.path] = [test]; - continue; - } if (!(key in testsByKey)) { testsByKey[key] = []; } diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json index 2fcca52b527a1f..ffd2d3eef6a1eb 100644 --- a/tools/wpt/expectation.json +++ b/tools/wpt/expectation.json @@ -2187,162 +2187,12 @@ ] }, "wrapKey_unwrapKey": { - "wrapKey_unwrapKey.https.any.worker.html": [ - "setup", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CTR", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CBC", - "Can wrap and unwrap Ed25519 public key keys using spki and AES-GCM", - "Can wrap and unwrap Ed25519 public key keys using jwk and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys using jwk and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap Ed25519 private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap X25519 public key keys using spki and AES-GCM", - "Can wrap and unwrap X25519 public key keys using jwk and AES-GCM", - "Can wrap and unwrap X25519 private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDSA public key keys using spki and AES-GCM", - "Can wrap and unwrap ECDSA public key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDSA private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDSA private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDSA private key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDSA private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap ECDSA private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap ECDH public key keys using spki and AES-GCM", - "Can wrap and unwrap ECDH public key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDH private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDH private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDH private key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDH private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap ECDH private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap HMAC keys using raw and AES-GCM", - "Can wrap and unwrap HMAC keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap HMAC keys using jwk and AES-GCM", - "Can wrap and unwrap HMAC keys as non-extractable using jwk and AES-GCM", - "Can unwrap HMAC non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CTR keys using raw and AES-GCM", - "Can wrap and unwrap AES-CTR keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-CTR keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CTR keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-CTR non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CBC keys using raw and AES-GCM", - "Can wrap and unwrap AES-CBC keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-CBC keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CBC keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-CBC non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-GCM keys using raw and AES-GCM", - "Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-GCM keys using jwk and AES-GCM", - "Can wrap and unwrap AES-GCM keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-GCM non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-KW keys using raw and AES-GCM", - "Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-KW keys using jwk and AES-GCM", - "Can wrap and unwrap AES-KW keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-KW non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-PSS public key keys using spki and AES-GCM", - "Can wrap and unwrap RSA-PSS public key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap RSA-PSS private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-OAEP public key keys using spki and AES-GCM", - "Can wrap and unwrap RSA-OAEP public key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap RSA-OAEP private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using spki and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using jwk and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using jwk and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap RSASSA-PKCS1-v1_5 private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-KW", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and RSA-OAEP" - ], - "wrapKey_unwrapKey.https.any.html": [ - "setup", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CTR", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-CBC", - "Can wrap and unwrap Ed25519 public key keys using spki and AES-GCM", - "Can wrap and unwrap Ed25519 public key keys using jwk and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys using jwk and AES-GCM", - "Can wrap and unwrap Ed25519 private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap Ed25519 private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap X25519 public key keys using spki and AES-GCM", - "Can wrap and unwrap X25519 public key keys using jwk and AES-GCM", - "Can wrap and unwrap X25519 private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDSA public key keys using spki and AES-GCM", - "Can wrap and unwrap ECDSA public key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDSA private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDSA private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDSA private key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDSA private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap ECDSA private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap ECDH public key keys using spki and AES-GCM", - "Can wrap and unwrap ECDH public key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDH private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDH private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap ECDH private key keys using jwk and AES-GCM", - "Can wrap and unwrap ECDH private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap ECDH private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap HMAC keys using raw and AES-GCM", - "Can wrap and unwrap HMAC keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap HMAC keys using jwk and AES-GCM", - "Can wrap and unwrap HMAC keys as non-extractable using jwk and AES-GCM", - "Can unwrap HMAC non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CTR keys using raw and AES-GCM", - "Can wrap and unwrap AES-CTR keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-CTR keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CTR keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-CTR non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CBC keys using raw and AES-GCM", - "Can wrap and unwrap AES-CBC keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-CBC keys using jwk and AES-GCM", - "Can wrap and unwrap AES-CBC keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-CBC non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-GCM keys using raw and AES-GCM", - "Can wrap and unwrap AES-GCM keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-GCM keys using jwk and AES-GCM", - "Can wrap and unwrap AES-GCM keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-GCM non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap AES-KW keys using raw and AES-GCM", - "Can wrap and unwrap AES-KW keys as non-extractable using raw and AES-GCM", - "Can wrap and unwrap AES-KW keys using jwk and AES-GCM", - "Can wrap and unwrap AES-KW keys as non-extractable using jwk and AES-GCM", - "Can unwrap AES-KW non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using spki and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 public key keys using jwk and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys using jwk and AES-GCM", - "Can wrap and unwrap RSASSA-PKCS1-v1_5 private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap RSASSA-PKCS1-v1_5 private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-PSS public key keys using spki and AES-GCM", - "Can wrap and unwrap RSA-PSS public key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-PSS private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap RSA-PSS private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-OAEP public key keys using spki and AES-GCM", - "Can wrap and unwrap RSA-OAEP public key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using pkcs8 and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys using jwk and AES-GCM", - "Can wrap and unwrap RSA-OAEP private key keys as non-extractable using jwk and AES-GCM", - "Can unwrap RSA-OAEP private key non-extractable keys using jwk and AES-GCM", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and AES-KW", - "Can wrap and unwrap X25519 private key keys as non-extractable using pkcs8 and RSA-OAEP" - ] + "wrapKey_unwrapKey.https.any.worker.html": { + "ignore": true + }, + "wrapKey_unwrapKey.https.any.html": { + "ignore": true + } }, "algorithm-discards-context.https.window.html": false }, @@ -3797,9 +3647,6 @@ "fetch": { "api": { "request": { - "request-bad-port.any.html": { - "ignore": true - }, "request-init-002.any.html": true, "request-init-002.any.worker.html": true, "request-init-stream.any.html": [ From 75b626319258c00886e88e64c5565db702dcb3d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Sun, 2 Jul 2023 02:33:56 +0200 Subject: [PATCH 3/3] update expectations.json --- tools/wpt/expectation.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json index ffd2d3eef6a1eb..b418608e739232 100644 --- a/tools/wpt/expectation.json +++ b/tools/wpt/expectation.json @@ -4874,8 +4874,6 @@ ] }, "idlharness.any.html": [ - "Headers interface: operation getSetCookie()", - "Headers interface: new Headers() must inherit property \"getSetCookie()\" with the proper type", "Request interface: attribute destination", "Request interface: attribute referrer", "Request interface: attribute referrerPolicy", @@ -4907,8 +4905,6 @@ "Window interface: operation fetch(RequestInfo, optional RequestInit)" ], "idlharness.any.worker.html": [ - "Headers interface: operation getSetCookie()", - "Headers interface: new Headers() must inherit property \"getSetCookie()\" with the proper type", "Request interface: attribute destination", "Request interface: attribute referrer", "Request interface: attribute referrerPolicy",